Lets handle better comments, current detection still doesn't work with comments inside checked SQL commands, but I thing checking these would be overhead (bug #978114).

This commit is contained in:
Michal Čihař
2004-06-25 21:15:18 +00:00
parent bb12e03b3a
commit ef61073c6c
2 changed files with 11 additions and 4 deletions

View File

@@ -15,6 +15,9 @@ $Source$
* libraries/display_export.lib.php: Add back key checking disabling.
* libraries/export/sql.php: Brand new CREATE query rewriter from LinuxTag,
fixes bug #979635.
* read_dump.php: Lets handle better comments, current detection still
doesn't work with comments inside checked SQL commands, but I thing
checking these would be overhead (bug #978114).
2004-06-25 Alexander M. Turek <rabus@users.sourceforge.net>
* queryframe.php: Undefined index errors.

View File

@@ -240,7 +240,8 @@ if ($sql_query != '') {
// Only one query to run
if ($pieces_count == 1 && !empty($pieces[0]['query'])) {
$sql_query = $pieces[0]['query'];
if (preg_match('@^(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $sql_query)) {
// .*? bellow is non greedy expansion, just in case somebody wants to understand it...
if (preg_match('@^((-- |#)^[\n]*|/\*.*?\*/)*(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $sql_query)) {
$reload = 1;
}
require('./sql.php');
@@ -259,7 +260,8 @@ if ($sql_query != '') {
for ($i = 0; $i < $count; $i++) {
$a_sql_query = $pieces[$i]['query'];
if ($i == $count - 1 && preg_match('@^(SELECT|SHOW)@i', $a_sql_query)) {
// .*? bellow is non greedy expansion, just in case somebody wants to understand it...
if ($i == $count - 1 && preg_match('@^((-- |#)^[\n]*|/\*.*?\*/)*(SELECT|SHOW)@i', $a_sql_query)) {
$complete_query = $sql_query;
$display_query = $sql_query;
$sql_query = $a_sql_query;
@@ -304,11 +306,13 @@ if ($sql_query != '') {
}
// If a 'USE <db>' SQL-clause was found and the query succeeded, set our current $db to the new one
if ($result != FALSE && preg_match('@^USE[[:space:]]*([^[:space]+)@i', $a_sql_query, $match)) {
// .*? bellow is non greedy expansion, just in case somebody wants to understand it...
if ($result != FALSE && preg_match('@^((-- |#)^[\n]*|/\*.*?\*/)*USE[[:space:]]*([^[:space]+)@i', $a_sql_query, $match)) {
$db = trim($match[0]);
}
if (!isset($reload) && preg_match('@^(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $a_sql_query)) {
// .*? bellow is non greedy expansion, just in case somebody wants to understand it...
if (!isset($reload) && preg_match('@^((-- |#)^[\n]*|/\*.*?\*/)*(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $a_sql_query)) {
$reload = 1;
}
} // end for