backporte some bugfixes from trunk intp QA_2_10:
- bug #1567317 [sqp] Syntax highlighter: extra spaces - bug #1239401 [sqp] table dot numeric field name - bug #1672789 [sqp] Undefined offset: 4 in sqlparser.lib.php #1674 - bug #1682044 [export] Export file even if file not selected - bug #1664212 querywindow loses url encoded characters + [config] clean cookies on phpMyAdmin upgrade - bug #1674972 [export] no export with %afm% - bug #1667887 HTML maxlength - bug #1679055 #1050 - Table '<table name>' already exists
This commit is contained in:
11
ChangeLog
11
ChangeLog
@@ -11,11 +11,22 @@ $HeadURL$
|
|||||||
- bug #1541147 [js] '#' in database names not correctly handled by queywindow.js
|
- bug #1541147 [js] '#' in database names not correctly handled by queywindow.js
|
||||||
- bug #1671403 [parser] using "client" as table name
|
- bug #1671403 [parser] using "client" as table name
|
||||||
- bug #1672379 [core] Call to undefined function PMA_removeCookie()
|
- bug #1672379 [core] Call to undefined function PMA_removeCookie()
|
||||||
|
- bug [core] undefined variable in libraries/tbl_replace_fields.inc.php
|
||||||
|
- bug [gui] query window icon did not work, thanks to Jürgen Wind - windkiel
|
||||||
. [general] use PMA_getenv('PHP_SELF')
|
. [general] use PMA_getenv('PHP_SELF')
|
||||||
- bug #1676033 [core] pow(int,int) causes overflow
|
- bug #1676033 [core] pow(int,int) causes overflow
|
||||||
- bug #1680952 [core] undefined function PMA_getUvaCondition()
|
- bug #1680952 [core] undefined function PMA_getUvaCondition()
|
||||||
- bug #1596328 [export] drop support for POSTGRESQL compatibility mode
|
- bug #1596328 [export] drop support for POSTGRESQL compatibility mode
|
||||||
- bug #1609443 [privileges] Grant all priv. on wildcard name (fix message)
|
- bug #1609443 [privileges] Grant all priv. on wildcard name (fix message)
|
||||||
|
- bug #1567317 [sqp] Syntax highlighter: extra spaces
|
||||||
|
- bug #1239401 [sqp] table dot numeric field name
|
||||||
|
- bug #1672789 [sqp] Undefined offset: 4 in sqlparser.lib.php #1674
|
||||||
|
- bug #1682044 [export] Export file even if file not selected
|
||||||
|
- bug #1664212 querywindow loses url encoded characters
|
||||||
|
+ [config] clean cookies on phpMyAdmin upgrade
|
||||||
|
- bug #1674972 [export] no export with %afm%
|
||||||
|
- bug #1667887 HTML maxlength
|
||||||
|
- bug #1679055 #1050 - Table '<table name>' already exists
|
||||||
|
|
||||||
2.10.0.3 (not released yet)
|
2.10.0.3 (not released yet)
|
||||||
=====================
|
=====================
|
||||||
|
70
export.php
70
export.php
@@ -22,8 +22,39 @@ if (!isset($export_list[$type])) {
|
|||||||
die('Bad type!');
|
die('Bad type!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* valid compression methods
|
||||||
|
*/
|
||||||
|
$compression_methods = array(
|
||||||
|
'zip',
|
||||||
|
'gzip',
|
||||||
|
'bzip',
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init and variable checking
|
||||||
|
*/
|
||||||
|
$compression = false;
|
||||||
|
$onserver = false;
|
||||||
|
$save_on_server = false;
|
||||||
|
$buffer_needed = false;
|
||||||
|
if (empty($_REQUEST['asfile'])) {
|
||||||
|
$asfile = false;
|
||||||
|
} else {
|
||||||
|
$asfile = true;
|
||||||
|
if (in_array($_REQUEST['compression'], $compression_methods)) {
|
||||||
|
$compression = $_REQUEST['compression'];
|
||||||
|
$buffer_needed = true;
|
||||||
|
}
|
||||||
|
if (empty($_REQUEST['onserver'])) {
|
||||||
|
$onserver = $_REQUEST['onserver'];
|
||||||
|
// Will we save dump on server?
|
||||||
|
$save_on_server = ! empty($cfg['SaveDir']) && $onserver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Does export require to be into file?
|
// Does export require to be into file?
|
||||||
if (isset($export_list[$type]['force_file']) && ! isset($asfile)) {
|
if (isset($export_list[$type]['force_file']) && $asfile) {
|
||||||
$message = $strExportMustBeFile;
|
$message = $strExportMustBeFile;
|
||||||
$GLOBALS['show_error_header'] = true;
|
$GLOBALS['show_error_header'] = true;
|
||||||
$js_to_run = 'functions.js';
|
$js_to_run = 'functions.js';
|
||||||
@@ -44,7 +75,7 @@ if (isset($export_list[$type]['force_file']) && ! isset($asfile)) {
|
|||||||
// Generate error url and check for needed variables
|
// Generate error url and check for needed variables
|
||||||
if ($export_type == 'server') {
|
if ($export_type == 'server') {
|
||||||
$err_url = 'server_export.php?' . PMA_generate_common_url();
|
$err_url = 'server_export.php?' . PMA_generate_common_url();
|
||||||
} elseif ($export_type == 'database' && isset($db) && strlen($db)) {
|
} elseif ($export_type == 'database' && strlen($db)) {
|
||||||
$err_url = 'db_export.php?' . PMA_generate_common_url($db);
|
$err_url = 'db_export.php?' . PMA_generate_common_url($db);
|
||||||
// Check if we have something to export
|
// Check if we have something to export
|
||||||
if (isset($table_select)) {
|
if (isset($table_select)) {
|
||||||
@@ -52,7 +83,7 @@ if ($export_type == 'server') {
|
|||||||
} else {
|
} else {
|
||||||
$tables = array();
|
$tables = array();
|
||||||
}
|
}
|
||||||
} elseif ($export_type == 'table' && isset($db) && strlen($db) && isset($table) && strlen($table)) {
|
} elseif ($export_type == 'table' && strlen($db) && strlen($table)) {
|
||||||
$err_url = 'tbl_export.php?' . PMA_generate_common_url($db, $table);
|
$err_url = 'tbl_export.php?' . PMA_generate_common_url($db, $table);
|
||||||
} else {
|
} else {
|
||||||
die('Bad parameters!');
|
die('Bad parameters!');
|
||||||
@@ -163,22 +194,6 @@ function PMA_exportOutputHandler($line)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
} // end of the 'PMA_exportOutputHandler()' function
|
} // end of the 'PMA_exportOutputHandler()' function
|
||||||
|
|
||||||
// Will we save dump on server?
|
|
||||||
$save_on_server = isset($cfg['SaveDir']) && !empty($cfg['SaveDir']) && !empty($onserver);
|
|
||||||
|
|
||||||
// Ensure compressed formats are associated with the download feature
|
|
||||||
if (empty($asfile)) {
|
|
||||||
if ($save_on_server) {
|
|
||||||
$asfile = TRUE;
|
|
||||||
} elseif (isset($compression) && ($compression == 'zip' | $compression == 'gzip' | $compression == 'bzip')) {
|
|
||||||
$asfile = TRUE;
|
|
||||||
} else {
|
|
||||||
$asfile = FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$asfile = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Defines the default <CR><LF> format. For SQL always use \n as MySQL wants this on all platforms.
|
// Defines the default <CR><LF> format. For SQL always use \n as MySQL wants this on all platforms.
|
||||||
if ($what == 'sql') {
|
if ($what == 'sql') {
|
||||||
$crlf = "\n";
|
$crlf = "\n";
|
||||||
@@ -194,11 +209,8 @@ $output_charset_conversion = $asfile &&
|
|||||||
&& isset($charset_of_file) && $charset_of_file != $charset
|
&& isset($charset_of_file) && $charset_of_file != $charset
|
||||||
&& $type != 'xls';
|
&& $type != 'xls';
|
||||||
|
|
||||||
// Set whether we will need buffering
|
|
||||||
$buffer_needed = isset($compression) && ($compression == 'zip' | $compression == 'gzip' | $compression == 'bzip');
|
|
||||||
|
|
||||||
// Use on fly compression?
|
// Use on fly compression?
|
||||||
$onfly_compression = $GLOBALS['cfg']['CompressOnFly'] && isset($compression) && ($compression == 'gzip' | $compression == 'bzip');
|
$onfly_compression = $GLOBALS['cfg']['CompressOnFly'] && ($compression == 'gzip' | $compression == 'bzip');
|
||||||
if ($onfly_compression) {
|
if ($onfly_compression) {
|
||||||
$memory_limit = trim(@ini_get('memory_limit'));
|
$memory_limit = trim(@ini_get('memory_limit'));
|
||||||
// 2 MB as default
|
// 2 MB as default
|
||||||
@@ -261,12 +273,12 @@ if ($asfile) {
|
|||||||
// If dump is going to be compressed, set correct encoding or mime_type and add
|
// If dump is going to be compressed, set correct encoding or mime_type and add
|
||||||
// compression to extension
|
// compression to extension
|
||||||
$content_encoding = '';
|
$content_encoding = '';
|
||||||
if (isset($compression) && $compression == 'bzip') {
|
if ($compression == 'bzip') {
|
||||||
$filename .= '.bz2';
|
$filename .= '.bz2';
|
||||||
// browsers don't like this:
|
// browsers don't like this:
|
||||||
//$content_encoding = 'x-bzip2';
|
//$content_encoding = 'x-bzip2';
|
||||||
$mime_type = 'application/x-bzip2';
|
$mime_type = 'application/x-bzip2';
|
||||||
} elseif (isset($compression) && $compression == 'gzip') {
|
} elseif ($compression == 'gzip') {
|
||||||
$filename .= '.gz';
|
$filename .= '.gz';
|
||||||
// Needed to avoid recompression by server modules like mod_gzip.
|
// Needed to avoid recompression by server modules like mod_gzip.
|
||||||
// It seems necessary to check about zlib.output_compression
|
// It seems necessary to check about zlib.output_compression
|
||||||
@@ -275,7 +287,7 @@ if ($asfile) {
|
|||||||
$content_encoding = 'x-gzip';
|
$content_encoding = 'x-gzip';
|
||||||
$mime_type = 'application/x-gzip';
|
$mime_type = 'application/x-gzip';
|
||||||
}
|
}
|
||||||
} elseif (isset($compression) && $compression == 'zip') {
|
} elseif ($compression == 'zip') {
|
||||||
$filename .= '.zip';
|
$filename .= '.zip';
|
||||||
$mime_type = 'application/zip';
|
$mime_type = 'application/zip';
|
||||||
}
|
}
|
||||||
@@ -564,7 +576,7 @@ if (!empty($asfile)) {
|
|||||||
|
|
||||||
// Do the compression
|
// Do the compression
|
||||||
// 1. as a gzipped file
|
// 1. as a gzipped file
|
||||||
if (isset($compression) && $compression == 'zip') {
|
if ($compression == 'zip') {
|
||||||
if (@function_exists('gzcompress')) {
|
if (@function_exists('gzcompress')) {
|
||||||
$zipfile = new zipfile();
|
$zipfile = new zipfile();
|
||||||
$zipfile -> addFile($dump_buffer, substr($filename, 0, -4));
|
$zipfile -> addFile($dump_buffer, substr($filename, 0, -4));
|
||||||
@@ -572,7 +584,7 @@ if (!empty($asfile)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 2. as a bzipped file
|
// 2. as a bzipped file
|
||||||
elseif (isset($compression) && $compression == 'bzip') {
|
elseif ($compression == 'bzip') {
|
||||||
if (@function_exists('bzcompress')) {
|
if (@function_exists('bzcompress')) {
|
||||||
$dump_buffer = bzcompress($dump_buffer);
|
$dump_buffer = bzcompress($dump_buffer);
|
||||||
if ($dump_buffer === -8) {
|
if ($dump_buffer === -8) {
|
||||||
@@ -583,7 +595,7 @@ if (!empty($asfile)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 3. as a gzipped file
|
// 3. as a gzipped file
|
||||||
elseif (isset($compression) && $compression == 'gzip') {
|
elseif ($compression == 'gzip') {
|
||||||
if (@function_exists('gzencode')) {
|
if (@function_exists('gzencode')) {
|
||||||
// without the optional parameter level because it bug
|
// without the optional parameter level because it bug
|
||||||
$dump_buffer = gzencode($dump_buffer);
|
$dump_buffer = gzencode($dump_buffer);
|
||||||
|
@@ -2605,6 +2605,22 @@ if (get_magic_quotes_gpc()) {
|
|||||||
PMA_arrayWalkRecursive($_REQUEST, 'stripslashes', true);
|
PMA_arrayWalkRecursive($_REQUEST, 'stripslashes', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clean cookies on new install or upgrade
|
||||||
|
* when changing something with increment the cookie version
|
||||||
|
*/
|
||||||
|
$pma_cookie_version = 4;
|
||||||
|
if (isset($_COOKIE)
|
||||||
|
&& (! isset($_COOKIE['pmaCookieVer'])
|
||||||
|
|| $_COOKIE['pmaCookieVer'] < $pma_cookie_version)) {
|
||||||
|
// delete all cookies
|
||||||
|
foreach($_COOKIE as $cookie_name => $tmp) {
|
||||||
|
PMA_removeCookie($cookie_name);
|
||||||
|
}
|
||||||
|
$_COOKIE = array();
|
||||||
|
PMA_setCookie('pmaCookieVer', $pma_cookie_version);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* include deprecated grab_globals only if required
|
* include deprecated grab_globals only if required
|
||||||
*/
|
*/
|
||||||
|
@@ -224,6 +224,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
$punct_listsep = ',';
|
$punct_listsep = ',';
|
||||||
$punct_level_plus = '(';
|
$punct_level_plus = '(';
|
||||||
$punct_level_minus = ')';
|
$punct_level_minus = ')';
|
||||||
|
$punct_user = '@';
|
||||||
$digit_floatdecimal = '.';
|
$digit_floatdecimal = '.';
|
||||||
$digit_hexset = 'x';
|
$digit_hexset = 'x';
|
||||||
$bracket_list = '()[]{}';
|
$bracket_list = '()[]{}';
|
||||||
@@ -244,11 +245,34 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
$quote_list = '\'"`';
|
$quote_list = '\'"`';
|
||||||
$arraysize = 0;
|
$arraysize = 0;
|
||||||
|
|
||||||
|
$previous_was_space = false;
|
||||||
|
$this_was_space = false;
|
||||||
|
$previous_was_bracket = false;
|
||||||
|
$this_was_bracket = false;
|
||||||
|
$previous_was_punct = false;
|
||||||
|
$this_was_punct = false;
|
||||||
|
$previous_was_listsep = false;
|
||||||
|
$this_was_listsep = false;
|
||||||
|
$previous_was_quote = false;
|
||||||
|
$this_was_quote = false;
|
||||||
|
|
||||||
while ($count2 < $len) {
|
while ($count2 < $len) {
|
||||||
$c = PMA_substr($sql, $count2, 1);
|
$c = PMA_substr($sql, $count2, 1);
|
||||||
$count1 = $count2;
|
$count1 = $count2;
|
||||||
|
|
||||||
|
$previous_was_space = $this_was_space;
|
||||||
|
$this_was_space = false;
|
||||||
|
$previous_was_bracket = $this_was_bracket;
|
||||||
|
$this_was_bracket = false;
|
||||||
|
$previous_was_punct = $this_was_punct;
|
||||||
|
$this_was_punct = false;
|
||||||
|
$previous_was_listsep = $this_was_listsep;
|
||||||
|
$this_was_listsep = false;
|
||||||
|
$previous_was_quote = $this_was_quote;
|
||||||
|
$this_was_quote = false;
|
||||||
|
|
||||||
if (($c == "\n")) {
|
if (($c == "\n")) {
|
||||||
|
$this_was_space = true;
|
||||||
$count2++;
|
$count2++;
|
||||||
PMA_SQP_arrayAdd($sql_array, 'white_newline', '', $arraysize);
|
PMA_SQP_arrayAdd($sql_array, 'white_newline', '', $arraysize);
|
||||||
continue;
|
continue;
|
||||||
@@ -256,6 +280,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
|
|
||||||
// Checks for white space
|
// Checks for white space
|
||||||
if (PMA_STR_isSpace($c)) {
|
if (PMA_STR_isSpace($c)) {
|
||||||
|
$this_was_space = true;
|
||||||
$count2++;
|
$count2++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -337,12 +362,15 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
switch ($quotetype) {
|
switch ($quotetype) {
|
||||||
case '\'':
|
case '\'':
|
||||||
$type .= 'single';
|
$type .= 'single';
|
||||||
|
$this_was_quote = true;
|
||||||
break;
|
break;
|
||||||
case '"':
|
case '"':
|
||||||
$type .= 'double';
|
$type .= 'double';
|
||||||
|
$this_was_quote = true;
|
||||||
break;
|
break;
|
||||||
case '`':
|
case '`':
|
||||||
$type .= 'backtick';
|
$type .= 'backtick';
|
||||||
|
$this_was_quote = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -355,6 +383,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
// Checks for brackets
|
// Checks for brackets
|
||||||
if (PMA_STR_strInStr($c, $bracket_list)) {
|
if (PMA_STR_strInStr($c, $bracket_list)) {
|
||||||
// All bracket tokens are only one item long
|
// All bracket tokens are only one item long
|
||||||
|
$this_was_bracket = true;
|
||||||
$count2++;
|
$count2++;
|
||||||
$type_type = '';
|
$type_type = '';
|
||||||
if (PMA_STR_strInStr($c, '([{')) {
|
if (PMA_STR_strInStr($c, '([{')) {
|
||||||
@@ -378,7 +407,17 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Checks for identifier (alpha or numeric)
|
// Checks for identifier (alpha or numeric)
|
||||||
if (PMA_STR_isSqlIdentifier($c, FALSE) || ($c == '@') || ($c == '.' && PMA_STR_isDigit(PMA_substr($sql, $count2 + 1, 1)))) {
|
if (PMA_STR_isSqlIdentifier($c, false)
|
||||||
|
|| $c == '@'
|
||||||
|
|| ($c == '.'
|
||||||
|
&& PMA_STR_isDigit(PMA_substr($sql, $count2 + 1, 1))
|
||||||
|
&& ($previous_was_space || $previous_was_bracket || $previous_was_listsep))) {
|
||||||
|
|
||||||
|
/* DEBUG
|
||||||
|
echo PMA_substr($sql, $count2);
|
||||||
|
echo '<hr />';
|
||||||
|
*/
|
||||||
|
|
||||||
$count2 ++;
|
$count2 ++;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -386,10 +425,11 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
* FROM 'user'@'%' or TO 'user'@'%'
|
* FROM 'user'@'%' or TO 'user'@'%'
|
||||||
* in this case, the @ is wrongly marked as alpha_variable
|
* in this case, the @ is wrongly marked as alpha_variable
|
||||||
*/
|
*/
|
||||||
|
$is_identifier = $previous_was_punct;
|
||||||
$is_sql_variable = ($c == '@');
|
$is_sql_variable = $c == '@' && ! $previous_was_quote;
|
||||||
$is_digit = (!$is_sql_variable) && PMA_STR_isDigit($c);
|
$is_user = $c == '@' && $previous_was_quote;
|
||||||
$is_hex_digit = ($is_digit) && ($c == '.') && ($c == '0') && ($count2 < $len) && (PMA_substr($sql, $count2, 1) == 'x');
|
$is_digit = !$is_identifier && !$is_sql_variable && PMA_STR_isDigit($c);
|
||||||
|
$is_hex_digit = $is_digit && $c == '0' && $count2 < $len && PMA_substr($sql, $count2, 1) == 'x';
|
||||||
$is_float_digit = $c == '.';
|
$is_float_digit = $c == '.';
|
||||||
$is_float_digit_exponent = FALSE;
|
$is_float_digit_exponent = FALSE;
|
||||||
|
|
||||||
@@ -455,7 +495,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
$str = PMA_substr($sql, $count1, $l);
|
$str = PMA_substr($sql, $count1, $l);
|
||||||
|
|
||||||
$type = '';
|
$type = '';
|
||||||
if ($is_digit) {
|
if ($is_digit || $is_float_digit || $is_hex_digit) {
|
||||||
$type = 'digit';
|
$type = 'digit';
|
||||||
if ($is_float_digit) {
|
if ($is_float_digit) {
|
||||||
$type .= '_float';
|
$type .= '_float';
|
||||||
@@ -464,12 +504,12 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
} else {
|
} else {
|
||||||
$type .= '_integer';
|
$type .= '_integer';
|
||||||
}
|
}
|
||||||
|
} elseif ($is_user) {
|
||||||
|
$type = 'punct_user';
|
||||||
|
} elseif ($is_sql_variable != FALSE) {
|
||||||
|
$type = 'alpha_variable';
|
||||||
} else {
|
} else {
|
||||||
if ($is_sql_variable != FALSE) {
|
$type = 'alpha';
|
||||||
$type = 'alpha_variable';
|
|
||||||
} else {
|
|
||||||
$type = 'alpha';
|
|
||||||
}
|
|
||||||
} // end if... else....
|
} // end if... else....
|
||||||
PMA_SQP_arrayAdd($sql_array, $type, $str, $arraysize);
|
PMA_SQP_arrayAdd($sql_array, $type, $str, $arraysize);
|
||||||
|
|
||||||
@@ -478,9 +518,9 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
|
|
||||||
// Checks for punct
|
// Checks for punct
|
||||||
if (PMA_STR_strInStr($c, $allpunct_list)) {
|
if (PMA_STR_strInStr($c, $allpunct_list)) {
|
||||||
while (($count2 < $len) && PMA_STR_strInStr(PMA_substr($sql, $count2, 1), $allpunct_list)) {
|
//while (($count2 < $len) && PMA_STR_strInStr(PMA_substr($sql, $count2, 1), $allpunct_list)) {
|
||||||
$count2++;
|
$count2++;
|
||||||
}
|
//}
|
||||||
$l = $count2 - $count1;
|
$l = $count2 - $count1;
|
||||||
if ($l == 1) {
|
if ($l == 1) {
|
||||||
$punct_data = $c;
|
$punct_data = $c;
|
||||||
@@ -498,8 +538,10 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
break;
|
break;
|
||||||
case $punct_qualifier:
|
case $punct_qualifier:
|
||||||
$t_suffix = '_qualifier';
|
$t_suffix = '_qualifier';
|
||||||
|
$this_was_punct = true;
|
||||||
break;
|
break;
|
||||||
case $punct_listsep:
|
case $punct_listsep:
|
||||||
|
$this_was_listsep = true;
|
||||||
$t_suffix = '_listsep';
|
$t_suffix = '_listsep';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1671,7 +1713,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
// ON UPDATE CURRENT_TIMESTAMP
|
// ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
|
||||||
if ($upper_data == 'ON') {
|
if ($upper_data == 'ON') {
|
||||||
if ($arr[$i+1]['type'] == 'alpha_reservedWord') {
|
if (isset($arr[$i+1]) && $arr[$i+1]['type'] == 'alpha_reservedWord') {
|
||||||
$second_upper_data = strtoupper($arr[$i+1]['data']);
|
$second_upper_data = strtoupper($arr[$i+1]['data']);
|
||||||
if ($second_upper_data == 'DELETE') {
|
if ($second_upper_data == 'DELETE') {
|
||||||
$clause = 'on_delete';
|
$clause = 'on_delete';
|
||||||
@@ -2062,6 +2104,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
$after .= ' ';
|
$after .= ' ';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'punct_user':
|
||||||
case 'punct_qualifier':
|
case 'punct_qualifier':
|
||||||
$before = '';
|
$before = '';
|
||||||
$after = '';
|
$after = '';
|
||||||
@@ -2255,11 +2298,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'alpha_variable':
|
case 'alpha_variable':
|
||||||
// other workaround for a problem similar to the one
|
$after = ' ';
|
||||||
// explained below for quote_single
|
|
||||||
if (!$in_priv_list && $typearr[3] != 'quote_backtick') {
|
|
||||||
$after = ' ';
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'quote_double':
|
case 'quote_double':
|
||||||
case 'quote_single':
|
case 'quote_single':
|
||||||
@@ -2268,7 +2307,7 @@ if ( ! defined( 'PMA_MINIMUM_COMMON' ) ) {
|
|||||||
// the @ is incorrectly marked as alpha_variable
|
// the @ is incorrectly marked as alpha_variable
|
||||||
// in the parser, and here, the '%' gets a blank before,
|
// in the parser, and here, the '%' gets a blank before,
|
||||||
// which is a syntax error
|
// which is a syntax error
|
||||||
if ($typearr[1] !='alpha_variable') {
|
if ($typearr[1] != 'punct_user') {
|
||||||
$before .= ' ';
|
$before .= ' ';
|
||||||
}
|
}
|
||||||
if ($infunction && $typearr[3] == 'punct_bracket_close_round') {
|
if ($infunction && $typearr[3] == 'punct_bracket_close_round') {
|
||||||
|
@@ -172,11 +172,11 @@ if ( ! empty( $query_history_latest ) && ! empty( $query_history_latest_db ) ) {
|
|||||||
'table' => isset($query_history_latest_table) ? $query_history_latest_table : '',
|
'table' => isset($query_history_latest_table) ? $query_history_latest_table : '',
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql_query = urldecode($query_history_latest);
|
$sql_query = $query_history_latest;
|
||||||
$db = $query_history_latest_db;
|
$db = $query_history_latest_db;
|
||||||
$table = $query_history_latest_table;
|
$table = $query_history_latest_table;
|
||||||
} elseif ( ! empty( $query_history_latest ) ) {
|
} elseif ( ! empty( $query_history_latest ) ) {
|
||||||
$sql_query = urldecode($query_history_latest);
|
$sql_query = $query_history_latest;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($sql_query)) {
|
if (isset($sql_query)) {
|
||||||
@@ -310,7 +310,7 @@ if ( count( $_sql_history ) > 0
|
|||||||
. htmlspecialchars( $query['table'] ) . '\';'
|
. htmlspecialchars( $query['table'] ) . '\';'
|
||||||
.' document.getElementById(\'hiddenqueryform\').submit();'
|
.' document.getElementById(\'hiddenqueryform\').submit();'
|
||||||
.' return false;">[' . htmlspecialchars( $query['db'] ) . '] '
|
.' return false;">[' . htmlspecialchars( $query['db'] ) . '] '
|
||||||
. urldecode( $sql ) . '</a>' . "\n";
|
. htmlspecialchars($sql) . '</a>' . "\n";
|
||||||
|
|
||||||
echo '</li>' . "\n";
|
echo '</li>' . "\n";
|
||||||
}
|
}
|
||||||
|
@@ -839,19 +839,14 @@ foreach ($loop_array as $vrowcount => $vrow) {
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ($len < 4) {
|
// field size should be at least 4 and max 40
|
||||||
$fieldsize = $maxlength = 4;
|
$fieldsize = min(max($len, 4), 40);
|
||||||
} else {
|
|
||||||
$fieldsize = (($len > 40) ? 40 : $len);
|
|
||||||
$maxlength = $len;
|
|
||||||
}
|
|
||||||
echo "\n";
|
echo "\n";
|
||||||
?>
|
?>
|
||||||
<td>
|
<td>
|
||||||
<?php echo $backup_field . "\n"; ?>
|
<?php echo $backup_field . "\n"; ?>
|
||||||
<input type="text" name="fields<?php echo $field_name_appendix; ?>"
|
<input type="text" name="fields<?php echo $field_name_appendix; ?>"
|
||||||
value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>"
|
value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>"
|
||||||
maxlength="<?php echo $maxlength; ?>"
|
|
||||||
class="textfield" <?php echo $unnillify_trigger; ?>
|
class="textfield" <?php echo $unnillify_trigger; ?>
|
||||||
tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"
|
tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"
|
||||||
id="field_<?php echo ($idindex); ?>_3" />
|
id="field_<?php echo ($idindex); ?>_3" />
|
||||||
@@ -908,19 +903,8 @@ foreach ($loop_array as $vrowcount => $vrow) {
|
|||||||
|
|
||||||
} // end elseif ( binary or blob)
|
} // end elseif ( binary or blob)
|
||||||
else {
|
else {
|
||||||
// For char or varchar, respect the maximum length (M); for other
|
// field size should be at least 4 and max 40
|
||||||
// types (int or float), the length is not a limit on the values that
|
$fieldsize = min(max($len, 4), 40);
|
||||||
// can be entered, so let's be generous (20) (we could also use the
|
|
||||||
// real limits for each numeric type)
|
|
||||||
// 2004-04-07, it turned out that 20 was not generous enough
|
|
||||||
// for the maxlength
|
|
||||||
if ($is_char) {
|
|
||||||
$fieldsize = (($len > 40) ? 40 : $len);
|
|
||||||
$maxlength = $len;
|
|
||||||
} else {
|
|
||||||
$fieldsize = 20;
|
|
||||||
$maxlength = 99;
|
|
||||||
} // end if... else...
|
|
||||||
?>
|
?>
|
||||||
<td>
|
<td>
|
||||||
<?php
|
<?php
|
||||||
@@ -941,7 +925,6 @@ foreach ($loop_array as $vrowcount => $vrow) {
|
|||||||
?>
|
?>
|
||||||
<input type="text" name="fields<?php echo $field_name_appendix; ?>"
|
<input type="text" name="fields<?php echo $field_name_appendix; ?>"
|
||||||
value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>"
|
value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>"
|
||||||
maxlength="<?php echo $maxlength; ?>"
|
|
||||||
class="textfield" <?php echo $unnillify_trigger; ?>
|
class="textfield" <?php echo $unnillify_trigger; ?>
|
||||||
tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"
|
tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"
|
||||||
id="field_<?php echo ($idindex); ?>_3" />
|
id="field_<?php echo ($idindex); ?>_3" />
|
||||||
|
@@ -194,9 +194,19 @@ if (isset($submit_num_fields)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
require './' . $cfg['DefaultTabTable'];
|
$message = $strTable . ' '
|
||||||
$abort = true;
|
. htmlspecialchars(PMA_backquote($db) . '.' . PMA_backquote($table))
|
||||||
exit();
|
. ' ' . $strHasBeenCreated;
|
||||||
|
$display_query = $sql_query;
|
||||||
|
unset($sql_query);
|
||||||
|
|
||||||
|
// do not switch to sql.php - as there is no row to be displayed on a new table
|
||||||
|
if ($cfg['DefaultTabTable'] === 'sql.php') {
|
||||||
|
require './tbl_structure.php';
|
||||||
|
} else {
|
||||||
|
require './' . $cfg['DefaultTabTable'];
|
||||||
|
}
|
||||||
|
exit;
|
||||||
} else {
|
} else {
|
||||||
PMA_mysqlDie('', '', '', $err_url, false);
|
PMA_mysqlDie('', '', '', $err_url, false);
|
||||||
// garvin: An error happened while inserting/updating a table definition.
|
// garvin: An error happened while inserting/updating a table definition.
|
||||||
|
@@ -39,16 +39,21 @@ if (isset($sql_query)) {
|
|||||||
$sql_query .= ' FROM ' . $analyzed_sql[0]['from_clause'];
|
$sql_query .= ' FROM ' . $analyzed_sql[0]['from_clause'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($primary_key) && is_array($primary_key)) {
|
$wheres = array();
|
||||||
$sql_query .= ' WHERE ';
|
|
||||||
$conj = '';
|
if (isset($primary_key) && is_array($primary_key)
|
||||||
foreach ($primary_key AS $i => $key) {
|
&& count($primary_key) > 0) {
|
||||||
$sql_query .= $conj . '( ' . $key . ' ) ';
|
$wheres[] = '(' . implode(') OR (',$primary_key) . ')';
|
||||||
$conj = 'OR ';
|
|
||||||
}
|
|
||||||
} elseif (!empty($analyzed_sql[0]['where_clause'])) {
|
|
||||||
$sql_query .= ' WHERE ' . $analyzed_sql[0]['where_clause'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($analyzed_sql[0]['where_clause'])) {
|
||||||
|
$wheres[] = $analyzed_sql[0]['where_clause'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($wheres) > 0 ) {
|
||||||
|
$sql_query .= ' WHERE (' . implode(') AND (', $wheres) . ')';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($analyzed_sql[0]['group_by_clause'])) {
|
if (!empty($analyzed_sql[0]['group_by_clause'])) {
|
||||||
$sql_query .= ' GROUP BY ' . $analyzed_sql[0]['group_by_clause'];
|
$sql_query .= ' GROUP BY ' . $analyzed_sql[0]['group_by_clause'];
|
||||||
}
|
}
|
||||||
|
@@ -91,7 +91,7 @@ if (!empty($submit_mult)) {
|
|||||||
$single_table = TRUE;
|
$single_table = TRUE;
|
||||||
|
|
||||||
$primary_key = array();
|
$primary_key = array();
|
||||||
$sql_query = urldecode($sql_query);
|
//$sql_query = urldecode($sql_query);
|
||||||
// garvin: As we got the fields to be edited from the 'rows_to_delete' checkbox, we use the index of it as the
|
// garvin: As we got the fields to be edited from the 'rows_to_delete' checkbox, we use the index of it as the
|
||||||
// indicating primary key. Then we built the array which is used for the tbl_change.php script.
|
// indicating primary key. Then we built the array which is used for the tbl_change.php script.
|
||||||
foreach ($rows_to_delete AS $i_primary_key => $del_query) {
|
foreach ($rows_to_delete AS $i_primary_key => $del_query) {
|
||||||
|
Reference in New Issue
Block a user