diff --git a/ChangeLog b/ChangeLog index c5b31f48f..b051a2428 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ phpMyAdmin - ChangeLog $Id$ $HeadURL$ ++ [import] support handling of DELIMITER to mimic mysql CLI, thanks to fb1 - bug #1674914 [structure] changing definition of a TIMESTAMP field - bug #1615530 [upload] added more specific error message if field upload fails - [gui] avoid displaying a wide selector in server selection diff --git a/libraries/import/sql.php b/libraries/import/sql.php index 7c2b164f4..7f7c2f044 100644 --- a/libraries/import/sql.php +++ b/libraries/import/sql.php @@ -1,5 +1,6 @@ = ($len - 11) || $buffer[$p8 + 9] > ' ') { + $p8 = 2147483647; + } + $i = min ($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8); + unset($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8); if ($i == 2147483647) { $i = $oi; if (!$finished) { @@ -201,6 +207,15 @@ if (isset($plugin_list)) { continue; } } + // Change delimiter, if redefined, and skip it (don't send to server!) + if ((substr($buffer, $i, 9) == "DELIMITER") && ($buffer[$i + 9] <= ' ') && ($i<$len-11) && (!(strpos($buffer,"\n",$i+11)===FALSE) )) { + $new_line_pos = strpos($buffer, "\n", $i + 10); + $sql_delimiter = substr($buffer, $i+10, $new_line_pos - $i -10); + $i= $new_line_pos + 1; + // Next query part will start here + $start_pos = $i; + continue; + } // End of SQL if ($found_delimiter || ($finished && ($i == $len - 1))) { @@ -233,6 +248,7 @@ if (isset($plugin_list)) { $start_pos = $i; } } + } // End of parser loop } // End of import loop // Commit any possible data in buffers