Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/sqlparser.lib.php')
-rw-r--r--libraries/sqlparser.lib.php141
1 files changed, 70 insertions, 71 deletions
diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php
index f940be116b..daac5c71dd 100644
--- a/libraries/sqlparser.lib.php
+++ b/libraries/sqlparser.lib.php
@@ -222,7 +222,7 @@ function PMA_SQP_parse($sql)
$sql = str_replace("\r\n", "\n", $sql);
$sql = str_replace("\r", "\n", $sql);
- $len = $pmaString->strlen($sql);
+ $len = /*overload*/mb_strlen($sql);
if ($len == 0) {
return array();
}
@@ -277,7 +277,7 @@ function PMA_SQP_parse($sql)
$this_was_quote = false;
while ($count2 < $len) {
- $c = $pmaString->substr($sql, $count2, 1);
+ $c = /*overload*/mb_substr($sql, $count2, 1);
$count1 = $count2;
$previous_was_space = $this_was_space;
@@ -309,12 +309,12 @@ function PMA_SQP_parse($sql)
// MySQL style #
// C style /* */
// ANSI style --
- $next_c = $pmaString->substr($sql, $count2 + 1, 1);
+ $next_c = /*overload*/mb_substr($sql, $count2 + 1, 1);
if (($c == '#')
|| (($count2 + 1 < $len) && ($c == '/') && ($next_c == '*'))
|| (($count2 + 2 == $len) && ($c == '-') && ($next_c == '-'))
|| (($count2 + 2 < $len) && ($c == '-') && ($next_c == '-')
- && (($pmaString->substr($sql, $count2 + 2, 1) <= ' ')))
+ && ((/*overload*/mb_substr($sql, $count2 + 2, 1) <= ' ')))
) {
$count2++;
$pos = 0;
@@ -322,22 +322,22 @@ function PMA_SQP_parse($sql)
switch ($c) {
case '#':
$type = 'mysql';
- $pos = $pmaString->strpos($sql, "\n", $count2);
+ $pos = /*overload*/mb_strpos($sql, "\n", $count2);
break;
case '-':
$type = 'ansi';
- $pos = $pmaString->strpos($sql, "\n", $count2);
+ $pos = /*overload*/mb_strpos($sql, "\n", $count2);
break;
case '/':
$type = 'c';
- $pos = $pmaString->strpos($sql, '*/', $count2);
+ $pos = /*overload*/mb_strpos($sql, '*/', $count2);
$pos += 2;
break;
default:
break;
} // end switch
$count2 = ($pos < $count2) ? $len : $pos;
- $str = $pmaString->substr(
+ $str = /*overload*/mb_substr(
$sql, $count1, $count2 - $count1
);
PMA_SQP_arrayAdd(
@@ -347,14 +347,14 @@ function PMA_SQP_parse($sql)
} // end if
// Checks for something inside quotation marks
- if ($pmaString->strpos($quote_list, $c) !== false) {
+ if (/*overload*/mb_strpos($quote_list, $c) !== false) {
$startquotepos = $count2;
$quotetype = $c;
$count2++;
$pos = $count2;
do {
$oldpos = $pos;
- $pos = $pmaString->strpos(
+ $pos = /*overload*/mb_strpos(
' ' . $sql, $quotetype, $oldpos + 1
) - 1;
// ($pos === false)
@@ -371,7 +371,7 @@ function PMA_SQP_parse($sql)
*
* SELECT * FROM `table`
*/
- $pos_quote_separator = $pmaString->strpos(
+ $pos_quote_separator = /*overload*/mb_strpos(
' ' . $sql, $GLOBALS['sql_delimiter'], $oldpos + 1
) - 1;
if ($pos_quote_separator < 0) {
@@ -381,9 +381,9 @@ function PMA_SQP_parse($sql)
$pos = $len;
} else {
$len += 1;
- $sql = $pmaString->substr(
+ $sql = /*overload*/mb_substr(
$sql, 0, $pos_quote_separator
- ) . '`' . $pmaString->substr(
+ ) . '`' . /*overload*/mb_substr(
$sql, $pos_quote_separator
);
$sql_array['raw'] = $sql;
@@ -420,8 +420,8 @@ function PMA_SQP_parse($sql)
$pos ++;
continue;
} elseif (($pos + 1 < $len)
- && ($pmaString->substr($sql, $pos, 1) == $quotetype)
- && ($pmaString->substr($sql, $pos + 1, 1) == $quotetype)
+ && (/*overload*/mb_substr($sql, $pos, 1) == $quotetype)
+ && (/*overload*/mb_substr($sql, $pos + 1, 1) == $quotetype)
) {
$pos = $pos + 2;
continue;
@@ -449,25 +449,25 @@ function PMA_SQP_parse($sql)
default:
break;
} // end switch
- $data = $pmaString->substr($sql, $count1, $count2 - $count1);
+ $data = /*overload*/mb_substr($sql, $count1, $count2 - $count1);
PMA_SQP_arrayAdd($sql_array, $type, $data, $arraysize, $count2);
continue;
}
// Checks for brackets
- if ($pmaString->strpos($bracket_list, $c) !== false) {
+ if (/*overload*/mb_strpos($bracket_list, $c) !== false) {
// All bracket tokens are only one item long
$this_was_bracket = true;
$count2++;
- if ($pmaString->strpos('([{', $c) !== false) {
+ if (/*overload*/mb_strpos('([{', $c) !== false) {
$type_type = 'open';
} else {
$type_type = 'close';
}
- if ($pmaString->strpos('()', $c) !== false) {
+ if (/*overload*/mb_strpos('()', $c) !== false) {
$type_style = 'round';
- } elseif ($pmaString->strpos('[]', $c) !== false) {
+ } elseif (/*overload*/mb_strpos('[]', $c) !== false) {
$type_style = 'square';
} else {
$type_style = 'curly';
@@ -498,7 +498,7 @@ function PMA_SQP_parse($sql)
if ($pmaString->isSqlIdentifier($c, false)
|| $c == '@'
|| ($c == '.'
- && $pmaString->isDigit($pmaString->substr($sql, $count2 + 1, 1))
+ && $pmaString->isDigit(/*overload*/mb_substr($sql, $count2 + 1, 1))
&& ($previous_was_space || $previous_was_bracket
|| $previous_was_listsep))
) {
@@ -526,7 +526,7 @@ function PMA_SQP_parse($sql)
$is_digit
&& $c == '0'
&& $count2 < $len
- && $pmaString->substr($sql, $count2, 1) == 'x'
+ && /*overload*/mb_substr($sql, $count2, 1) == 'x'
);
$is_float_digit = $c == '.';
$is_float_digit_exponent = false;
@@ -558,11 +558,11 @@ function PMA_SQP_parse($sql)
while (($count2 < $len)
&& $pmaString->isSqlIdentifier(
- $pmaString->substr($sql, $count2, 1),
+ /*overload*/mb_substr($sql, $count2, 1),
($is_sql_variable || $is_digit)
)
) {
- $c2 = $pmaString->substr($sql, $count2, 1);
+ $c2 = /*overload*/mb_substr($sql, $count2, 1);
if ($is_sql_variable && ($c2 == '.')) {
$count2++;
continue;
@@ -576,7 +576,7 @@ function PMA_SQP_parse($sql)
$debugstr = __('Invalid Identifer')
. ' @ ' . ($count1+1) . "\n"
. 'STR: ' . htmlspecialchars(
- $pmaString->substr(
+ /*overload*/mb_substr(
$sql, $count1, $count2 - $count1
)
);
@@ -612,7 +612,7 @@ function PMA_SQP_parse($sql)
} // end while
$l = $count2 - $count1;
- $str = $pmaString->substr($sql, $count1, $l);
+ $str = /*overload*/mb_substr($sql, $count1, $l);
if ($is_digit || $is_float_digit || $is_hex_digit) {
$type = 'digit';
@@ -636,10 +636,10 @@ function PMA_SQP_parse($sql)
}
// Checks for punct
- if ($pmaString->strpos($allpunct_list, $c) !== false) {
+ if (/*overload*/mb_strpos($allpunct_list, $c) !== false) {
while (($count2 < $len)
- && $pmaString->strpos(
- $allpunct_list, $pmaString->substr(
+ && /*overload*/mb_strpos(
+ $allpunct_list, /*overload*/mb_substr(
$sql, $count2, 1
)
) !== false
@@ -650,7 +650,7 @@ function PMA_SQP_parse($sql)
if ($l == 1) {
$punct_data = $c;
} else {
- $punct_data = $pmaString->substr($sql, $count1, $l);
+ $punct_data = /*overload*/mb_substr($sql, $count1, $l);
}
// Special case, sometimes, although two characters are
@@ -702,15 +702,15 @@ function PMA_SQP_parse($sql)
} elseif (($last2 == '/*')
|| (($last2 == '--')
&& ($count2 == $len
- || $pmaString->substr($sql, $count2, 1) <= ' '))
+ || /*overload*/mb_substr($sql, $count2, 1) <= ' '))
) {
$count2 -= 2;
- $punct_data = $pmaString->substr(
+ $punct_data = /*overload*/mb_substr(
$sql, $count1, $count2 - $count1
);
} elseif (($last == '-') || ($last == '+') || ($last == '!')) {
$count2--;
- $punct_data = $pmaString->substr(
+ $punct_data = /*overload*/mb_substr(
$sql, $count1, $count2 - $count1
);
} elseif ($last != '~') {
@@ -737,7 +737,7 @@ function PMA_SQP_parse($sql)
$count2++;
$debugstr = 'C1 C2 LEN: ' . $count1 . ' ' . $count2 . ' ' . $len . "\n"
- . 'STR: ' . $pmaString->substr(
+ . 'STR: ' . /*overload*/mb_substr(
$sql, $count1, $count2 - $count1
) . "\n";
PMA_SQP_bug($debugstr, $sql);
@@ -759,7 +759,7 @@ function PMA_SQP_parse($sql)
$d_prev = '';
$d_cur = '';
$d_next_upper = $t_next == 'alpha'
- ? $pmaString->strtoupper($d_next)
+ ? /*overload*/mb_strtoupper($d_next)
: $d_next;
$d_prev_upper = '';
$d_cur_upper = '';
@@ -777,7 +777,7 @@ function PMA_SQP_parse($sql)
$t_next = $sql_array[$i + 1]['type'];
$d_next = $sql_array[$i + 1]['data'];
$d_next_upper
- = $t_next == 'alpha' ? $pmaString->strtoupper($d_next) : $d_next;
+ = $t_next == 'alpha' ? /*overload*/mb_strtoupper($d_next) : $d_next;
} else {
$t_next = '';
$d_next = '';
@@ -874,7 +874,7 @@ function PMA_SQP_parse($sql)
} elseif (in_array($d_cur, $mysql_charsets)
|| in_array($d_cur, $mysql_collations_flat)
|| ($d_cur{0} == '_'
- && in_array($pmaString->substr($d_cur, 1), $mysql_charsets))
+ && in_array(/*overload*/mb_substr($d_cur, 1), $mysql_charsets))
) {
$t_suffix = '_charset';
} else {
@@ -921,13 +921,13 @@ function PMA_SQP_typeCheck($toCheck, $whatWeWant)
/** @var PMA_String $pmaString */
$pmaString = $GLOBALS['PMA_String'];
- if ($pmaString->strpos($whatWeWant, $typeSeparator) !== false) {
+ if (/*overload*/mb_strpos($whatWeWant, $typeSeparator) !== false) {
return false;
}
return strncmp(
$whatWeWant, $toCheck,
- $pmaString->strpos($toCheck, $typeSeparator)
+ /*overload*/mb_strpos($toCheck, $typeSeparator)
) == 0;
}
@@ -1233,7 +1233,7 @@ function PMA_SQP_analyze($arr)
}
// ==============================================================
if ($arr[$i]['type'] == 'alpha_functionName') {
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($upper_data =='EXTRACT') {
$in_extract = true;
$number_of_brackets_in_extract = 0;
@@ -1248,7 +1248,7 @@ function PMA_SQP_analyze($arr)
if ($arr[$i]['type'] == 'alpha_reservedWord') {
// We don't know what type of query yet, so run this
if ($subresult['querytype'] == '') {
- $subresult['querytype'] = $pmaString->strtoupper($arr[$i]['data']);
+ $subresult['querytype'] = /*overload*/mb_strtoupper($arr[$i]['data']);
} // end if (querytype was empty)
// Check if we support this type of query
@@ -1259,7 +1259,7 @@ function PMA_SQP_analyze($arr)
} // end if (query not supported)
// upper once
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
/**
* @todo reset for each query?
*/
@@ -1394,7 +1394,7 @@ function PMA_SQP_analyze($arr)
);
if (isset($alias_for_select_expr)
- && $pmaString->strlen($alias_for_select_expr)
+ && /*overload*/mb_strlen($alias_for_select_expr)
) {
// we had found an alias for this select expression
$subresult['select_expr'][$current_select_expr]['alias']
@@ -1469,7 +1469,7 @@ function PMA_SQP_analyze($arr)
'table_true_name' => ''
);
if (isset($alias_for_table_ref)
- && $pmaString->strlen($alias_for_table_ref)
+ && /*overload*/mb_strlen($alias_for_table_ref)
) {
$subresult['table_ref'][$current_table_ref]['table_alias']
= $alias_for_table_ref;
@@ -1514,7 +1514,7 @@ function PMA_SQP_analyze($arr)
$truename = $subresult['table_ref'][$tr]['table_true_name'];
for ($se=0; $se <= $current_select_expr; $se++) {
if (isset($alias)
- && $pmaString->strlen($alias)
+ && /*overload*/mb_strlen($alias)
&& $subresult['select_expr'][$se]['table_true_name'] == $alias
) {
$subresult['select_expr'][$se]['table_true_name']
@@ -1669,7 +1669,7 @@ function PMA_SQP_analyze($arr)
}
if ($arr[$i]['type'] == 'alpha_reservedWord') {
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($upper_data == 'SELECT' && $number_of_brackets > 0) {
$in_subquery = true;
@@ -1725,7 +1725,7 @@ function PMA_SQP_analyze($arr)
}
if ($upper_data == 'LIMIT' && ! $in_subquery) {
- $section_before_limit = $pmaString->substr(
+ $section_before_limit = /*overload*/mb_substr(
$arr['raw'], 0, $arr[$i]['pos'] - 5
);
$in_limit = true;
@@ -1744,7 +1744,7 @@ function PMA_SQP_analyze($arr)
&& $subresult['queryflags']['select_from'] == 1
&& ($i + 1) < $size
&& $arr[$i + 1]['type'] == 'alpha_reservedWord'
- && $pmaString->strtoupper($arr[$i + 1]['data']) == 'ANALYSE'
+ && /*overload*/mb_strtoupper($arr[$i + 1]['data']) == 'ANALYSE'
) {
$subresult['queryflags']['is_analyse'] = 1;
}
@@ -1756,7 +1756,7 @@ function PMA_SQP_analyze($arr)
&& $subresult['queryflags']['select_from'] == 1
&& ($i + 1) < $size
&& $arr[$i + 1]['type'] == 'alpha_reservedWord'
- && $pmaString->strtoupper($arr[$i + 1]['data']) == 'OUTFILE'
+ && /*overload*/mb_strtoupper($arr[$i + 1]['data']) == 'OUTFILE'
) {
$subresult['queryflags']['is_export'] = 1;
}
@@ -1773,7 +1773,7 @@ function PMA_SQP_analyze($arr)
&& !isset($subresult['queryflags']['is_group'])
&& ($i + 1) < $size
&& $arr[$i + 1]['type'] == 'alpha_functionName'
- && $pmaString->strtoupper($arr[$i + 1]['data']) == 'COUNT'
+ && /*overload*/mb_strtoupper($arr[$i + 1]['data']) == 'COUNT'
) {
$subresult['queryflags']['is_count'] = 1;
}
@@ -1831,12 +1831,12 @@ function PMA_SQP_analyze($arr)
&& ($i + 1) < $size
&& $arr[$i + 1]['type'] == 'alpha_reservedWord'
&& in_array(
- $pmaString->strtoupper($arr[$i + 1]['data']),
+ /*overload*/mb_strtoupper($arr[$i + 1]['data']),
$arrayKeyWords
)
&& ($i + 2) < $size
&& $arr[$i + 2]['type'] == 'alpha_reservedWord'
- && $pmaString->strtoupper($arr[$i + 2]['data']) == 'DISTINCT'
+ && /*overload*/mb_strtoupper($arr[$i + 2]['data']) == 'DISTINCT'
) {
$subresult['queryflags']['is_group'] = 1;
}
@@ -1887,7 +1887,7 @@ function PMA_SQP_analyze($arr)
// We use $GLOBALS['PMA_String']->substr() to be charset-safe;
// otherwise if the table name contains accents, the unsorted
// query would be missing some characters.
- $unsorted_query = $GLOBALS['PMA_String']->substr(
+ $unsorted_query = /*overload*/mb_substr(
$arr['raw'], 0, $arr[$i]['pos'] - 8
);
$in_order_by = true;
@@ -1916,7 +1916,7 @@ function PMA_SQP_analyze($arr)
$sep = ' ';
if ($arr[$i]['type'] == 'alpha_functionName') {
$sep='';
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($upper_data =='GROUP_CONCAT') {
$in_group_concat = true;
$number_of_brackets_in_group_concat = 0;
@@ -1953,11 +1953,11 @@ function PMA_SQP_analyze($arr)
// for the presence of INSERT|LOAD DATA
if ($arr[$i]['type'] == 'alpha_identifier'
- && $pmaString->strtoupper($arr[$i]['data']) == 'DATA'
+ && /*overload*/mb_strtoupper($arr[$i]['data']) == 'DATA'
&& ($i - 1) >= 0
&& $arr[$i - 1]['type'] == 'alpha_reservedWord'
&& in_array(
- $pmaString->strtoupper($arr[$i - 1]['data']),
+ /*overload*/mb_strtoupper($arr[$i - 1]['data']),
array("INSERT", "LOAD")
)
) {
@@ -1967,7 +1967,7 @@ function PMA_SQP_analyze($arr)
// for the presence of SUM|AVG|STD|STDDEV|MIN|MAX|BIT_OR|BIT_AND
if ($arr[$i]['type'] == 'alpha_functionName'
- && in_array($pmaString->strtoupper($arr[$i]['data']), $arrayFunctions)
+ && in_array(/*overload*/mb_strtoupper($arr[$i]['data']), $arrayFunctions)
&& isset($subresult['queryflags']['select_from'])
&& $subresult['queryflags']['select_from'] == 1
&& !isset($subresult['queryflags']['is_group'])
@@ -2070,7 +2070,7 @@ function PMA_SQP_analyze($arr)
for ($i = 0; $i < $size; $i++) {
if ($arr[$i]['type'] == 'alpha_reservedWord') {
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($upper_data == 'NOT' && $in_timestamp_options) {
if (! isset($create_table_fields)) {
@@ -2133,7 +2133,7 @@ function PMA_SQP_analyze($arr)
if (isset($arr[$i+1])
&& $arr[$i+1]['type'] == 'alpha_reservedWord'
) {
- $second_upper_data = $pmaString->strtoupper($arr[$i+1]['data']);
+ $second_upper_data = /*overload*/mb_strtoupper($arr[$i+1]['data']);
if ($second_upper_data == 'DELETE') {
$clause = 'on_delete';
}
@@ -2147,10 +2147,9 @@ function PMA_SQP_analyze($arr)
if (isset($clause)
&& ($arr[$i+2]['type'] == 'alpha_reservedWord'
|| ($arr[$i+2]['type'] == 'alpha_identifier'
- && $pmaString->strtoupper($arr[$i+2]['data'])=='NO'))
+ && /*overload*/mb_strtoupper($arr[$i+2]['data'])=='NO'))
) {
- $third_upper_data = $pmaString
- ->strtoupper($arr[$i+2]['data']);
+ $third_upper_data = /*overload*/mb_strtoupper($arr[$i+2]['data']);
if ($third_upper_data == 'CASCADE'
|| $third_upper_data == 'RESTRICT'
) {
@@ -2160,7 +2159,7 @@ function PMA_SQP_analyze($arr)
) {
if ($arr[$i+3]['type'] == 'alpha_reservedWord') {
$value = $third_upper_data . '_'
- . $pmaString->strtoupper($arr[$i+3]['data']);
+ . /*overload*/mb_strtoupper($arr[$i+3]['data']);
}
} elseif ($third_upper_data == 'CURRENT_TIMESTAMP') {
if ($clause == 'on_update'
@@ -2204,7 +2203,7 @@ function PMA_SQP_analyze($arr)
}
if (($arr[$i]['type'] == 'alpha_columnAttrib')) {
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($seen_create_table && $in_create_table_fields) {
if ($upper_data == 'DEFAULT') {
$seen_default = true;
@@ -2220,7 +2219,7 @@ function PMA_SQP_analyze($arr)
if (($arr[$i]['type'] == 'alpha_columnType')
|| ($arr[$i]['type'] == 'alpha_functionName' && $seen_create_table)
) {
- $upper_data = $pmaString->strtoupper($arr[$i]['data']);
+ $upper_data = /*overload*/mb_strtoupper($arr[$i]['data']);
if ($seen_create_table && $in_create_table_fields
&& isset($current_identifier)
) {
@@ -2475,12 +2474,12 @@ function PMA_SQP_format(
$infunction = false;
$keyword_brackets_2before = isset(
$keywords_with_brackets_2before[
- $pmaString->strtoupper($arr[$i - 2]['data'])
+ /*overload*/mb_strtoupper($arr[$i - 2]['data'])
]
);
$keyword_brackets_1before = isset(
$keywords_with_brackets_1before[
- $pmaString->strtoupper($arr[$i - 1]['data'])
+ /*overload*/mb_strtoupper($arr[$i - 1]['data'])
]
);
// Make sure this array is sorted!
@@ -2613,7 +2612,7 @@ function PMA_SQP_format(
// select * from mysql.user where binary user="root"
// binary is marked as alpha_columnAttrib
// but should be marked as a reserved word
- if ($pmaString->strtoupper($arr[$i]['data']) == 'BINARY'
+ if (/*overload*/mb_strtoupper($arr[$i]['data']) == 'BINARY'
&& $typearr[3] == 'alpha_identifier'
) {
$after .= ' ';
@@ -2629,7 +2628,7 @@ function PMA_SQP_format(
// as an identifier name)
if ($mode != 'query_only') {
- $arr[$i]['data'] = $pmaString->strtoupper($arr[$i]['data']);
+ $arr[$i]['data'] = /*overload*/mb_strtoupper($arr[$i]['data']);
}
list($before, $in_priv_list) = PMA_SQP_format_getBeforeAndInPrivList(
@@ -2747,7 +2746,7 @@ function PMA_SQP_format_getBeforeAndInPrivList(
if (!((($typearr[1] != 'alpha_reservedWord')
|| (($typearr[1] == 'alpha_reservedWord')
- && isset($keywords_no_newline[$GLOBALS['PMA_String']->strtoupper($data)])))
+ && isset($keywords_no_newline[/*overload*/mb_strtoupper($data)])))
&& ($typearr[1] != 'punct_level_plus')
&& (!isset($keywords_no_newline[$arr[$index]['data']])))
) {
@@ -2909,7 +2908,7 @@ function PMA_SQP_isKeyWord($column)
{
global $PMA_SQPdata_forbidden_word;
return in_array(
- $GLOBALS['PMA_String']->strtoupper($column),
+ /*overload*/mb_strtoupper($column),
$PMA_SQPdata_forbidden_word
);
}