diff --git a/libraries/common.lib.php b/libraries/common.lib.php
index 665298b49..6f7064a6b 100644
--- a/libraries/common.lib.php
+++ b/libraries/common.lib.php
@@ -1039,6 +1039,9 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
} else {
// Parse SQL if needed
$parsed_sql = PMA_SQP_parse($query_base);
+ if (PMA_SQP_isError()) {
+ unset($parsed_sql);
+ }
}
// Analyze it
@@ -1242,8 +1245,8 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view
}
echo '
' . "\n";
- // If we are in an Ajax request, we have most probably been called in
- // PMA_ajaxResponse(). Hence, collect the buffer contents and return it
+ // If we are in an Ajax request, we have most probably been called in
+ // PMA_ajaxResponse(). Hence, collect the buffer contents and return it
// to PMA_ajaxResponse(), which will encode it for JSON.
if( $GLOBALS['is_ajax_request'] == true && !isset($GLOBALS['buffer_message']) ) {
$buffer_contents = ob_get_contents();
diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index 16ac8c9d9..bb16bbf7f 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -717,10 +717,6 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $
$GLOBALS['mime_map'] = PMA_getMIME($db, $table);
}
- if ($is_display['sort_lnk'] == '1') {
- $select_expr = $analyzed_sql[0]['select_expr_clause'];
- }
-
// See if we have to highlight any header fields of a WHERE query.
// Uses SQL-Parser results.
$highlight_columns = array();
@@ -1299,7 +1295,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// reset $class from $data_inline_edit_class to '' as we can't edit binary data
$class = '';
-
+
if (stristr($field_flags, 'BINARY')) {
if (!isset($row[$i]) || is_null($row[$i])) {
$vertical_display['data'][$row_no][$i] = '
NULL | ' . "\n";
@@ -2094,7 +2090,7 @@ function PMA_displayTable(&$dt_result, &$the_disp_mode, $analyzed_sql)
'submit_mult_change', __('Change'), 'b_edit.png');
PMA_buttonOrImage('submit_mult', 'mult_submit',
'submit_mult_delete', $delete_text, 'b_drop.png');
- if ($analyzed_sql[0]['querytype'] == 'SELECT') {
+ if (isset($analyzed_sql[0]) && $analyzed_sql[0]['querytype'] == 'SELECT') {
PMA_buttonOrImage('submit_mult', 'mult_submit',
'submit_mult_export', __('Export'),
'b_tblexport.png');
@@ -2352,7 +2348,7 @@ function PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed
}
// continue the tag started before calling this function:
- $result = $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . $nowrap
+ $result = $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . $nowrap
. ' ' . ($is_field_truncated ? ' truncated' : '')
. ($transform_function != $default_function ? ' transformed' : '')
. (isset($map[$meta->name]) ? ' relation' : '')
diff --git a/libraries/import/ods.php b/libraries/import/ods.php
index 7df7edcbf..c0db7afbf 100644
--- a/libraries/import/ods.php
+++ b/libraries/import/ods.php
@@ -90,7 +90,7 @@ $rows = array();
/* Iterate over tables */
foreach ($sheets as $sheet) {
- $col_names_in_first_row = $_REQUEST['ods_col_names'];
+ $col_names_in_first_row = isset($_REQUEST['ods_col_names']);
/* Iterate over rows */
foreach ($sheet as $row) {
diff --git a/libraries/schema/User_Schema.class.php b/libraries/schema/User_Schema.class.php
index 8636d0285..54ef5d490 100644
--- a/libraries/schema/User_Schema.class.php
+++ b/libraries/schema/User_Schema.class.php
@@ -216,9 +216,6 @@ class PMA_User_Schema
. ' AND pdf_page_number = \'' . PMA_sqlAddslashes($this->choosenPage) . '\'';
$page_rs = PMA_query_as_controluser($page_query, FALSE, $query_default_option);
$array_sh_page = array();
- $draginit = '';
- $reset_draginit = '';
- $i = 0;
while ($temp_sh_page = @PMA_DBI_fetch_assoc($page_rs)) {
$array_sh_page[] = $temp_sh_page;
}
@@ -229,7 +226,7 @@ class PMA_User_Schema
if (!isset($_POST['with_field_names']) && !isset($_POST['showwysiwyg'])) {
$with_field_names = TRUE;
}
- $this->_displayScratchboardTables($array_sh_page,$draginit,$reset_draginit);
+ $this->_displayScratchboardTables($array_sh_page);
?>
$temp_sh_page) {
$drag_x = $temp_sh_page['x'];
$drag_y = $temp_sh_page['y'];
- $draginit2 = ' Drag.init(getElement("table_' . $i . '"), null, 0, parseInt(myid.style.width)-2, 0, parseInt(myid.style.height)-5);' . "\n";
+ $draginit2 .= ' Drag.init(getElement("table_' . $i . '"), null, 0, parseInt(myid.style.width)-2, 0, parseInt(myid.style.height)-5);' . "\n";
$draginit .= ' getElement("table_' . $i . '").onDrag = function (x, y) { document.edcoord.elements["c_table_' . $i . '[x]"].value = parseInt(x); document.edcoord.elements["c_table_' . $i . '[y]"].value = parseInt(y) }' . "\n";
$draginit .= ' getElement("table_' . $i . '").style.left = "' . $drag_x . 'px";' . "\n";
$draginit .= ' getElement("table_' . $i . '").style.top = "' . $drag_y . 'px";' . "\n";
diff --git a/libraries/sqlparser.data.php b/libraries/sqlparser.data.php
index 8af645874..dffd6b166 100644
--- a/libraries/sqlparser.data.php
+++ b/libraries/sqlparser.data.php
@@ -17,7 +17,7 @@
* (It's slower to have PHP do the count).
*
* It's easier to use only uppercase for proper sorting. In case of
- * doubt, use the DEBUG code after this function's definition.
+ * doubt, use the test case to verify.
*
* @package phpMyAdmin
*/
@@ -210,7 +210,6 @@ $PMA_SQPdata_function_name = array (
'MOD',
'MONTH',
'MONTHNAME',
- 'NOW',
'MPOINTFROMTEXT', // MPointFromText()
'MPOINTFROMWKB', // MPointFromWKB()
'MPOLYFROMTEXT', // MPolyFromText()
@@ -338,18 +337,7 @@ $PMA_SQPdata_function_name = array (
*
* @global integer MySQL attributes count
*/
-$PMA_SQPdata_function_name_cnt = 299;
-
-/*
- * DEBUG
-$test_PMA_SQPdata_function_name = $PMA_SQPdata_function_name;
-sort($PMA_SQPdata_function_name);
-if ($PMA_SQPdata_function_name != $test_PMA_SQPdata_function_name) {
- echo 'sort properly like this ';
- print_r($PMA_SQPdata_function_name);
- echo ' ';
-}
- */
+$PMA_SQPdata_function_name_cnt = 298;
/**
* @global array MySQL attributes
@@ -698,24 +686,7 @@ $PMA_SQPdata_reserved_word = array (
*
* @global integer MySQL reserved words count
*/
-$PMA_SQPdata_reserved_word_cnt = 291;
-/**
- * The previous array must be sorted so that the binary search work.
- * Sometimes a word is not added in the correct order, so
- * this debugging code shows the problem. The same should be
- * done for all arrays.
- */
-/*
-$original = $PMA_SQPdata_reserved_word;
-sort($PMA_SQPdata_reserved_word);
-$difference = array_diff_assoc($original, $PMA_SQPdata_reserved_word);
-echo ' ';
-print_r($difference);
-echo ' ';
-echo ' ';
-print_r($PMA_SQPdata_reserved_word);
-echo ' ';
-*/
+$PMA_SQPdata_reserved_word_cnt = 289;
/**
* words forbidden to be used as column or table name wihtout quotes
@@ -1047,9 +1018,9 @@ $PMA_SQPdata_forbidden_word = array (
'RAID_TYPE',
'RANGE', // 5.1
'READ',
+ 'READS',
'READ_ONLY', // 5.1
'READ_WRITE', // 5.1
- 'READS',
'REAL',
'RECOVER',
'REDUNDANT',
@@ -1286,10 +1257,4 @@ $PMA_SQPdata_column_type = array (
*/
$PMA_SQPdata_column_type_cnt = 54;
-/*
- * check counts
-foreach ($GLOBALS as $n => $a) {
- echo is_array($a) ? $n . ': ' . count($a) . ' ' : '';
-}
- */
?>
diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php
index d8967d9ce..b8b2bbafa 100644
--- a/libraries/sqlparser.lib.php
+++ b/libraries/sqlparser.lib.php
@@ -43,7 +43,9 @@ if (! defined('PMA_MINIMUM_COMMON')) {
* Include data for the SQL Parser
*/
require_once './libraries/sqlparser.data.php';
- require_once './libraries/mysql_charsets.lib.php';
+ if (!defined('TESTSUITE')) {
+ require_once './libraries/mysql_charsets.lib.php';
+ }
if (!isset($mysql_charsets)) {
$mysql_charsets = array();
$mysql_charsets_count = 0;
@@ -2091,8 +2093,8 @@ if (! defined('PMA_MINIMUM_COMMON')) {
$docu = TRUE;
break;
} // end switch
- // inner_sql is a span that exists for all cases
- // of $cfg['SQP']['fmtType'] to make possible a replacement
+ // inner_sql is a span that exists for all cases
+ // of $cfg['SQP']['fmtType'] to make possible a replacement
// for inline editing
$str .= ' ';
$close_docu_link = false;
diff --git a/po/cs.po b/po/cs.po
index c350a2748..079553c8a 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -5384,7 +5384,7 @@ msgstr "MySQL vrátil prázdný výsledek (tj. nulový počet řádků)."
#: libraries/import.lib.php:1110
msgid ""
"The following structures have either been created or altered. Here you can:"
-msgstr "Následující tabulkybyly vytvořeny nebo změněny. Teď můžete:"
+msgstr "Následující tabulky byly vytvořeny nebo změněny. Teď můžete:"
#: libraries/import.lib.php:1111
msgid "View a structure`s contents by clicking on its name"
diff --git a/test/AllTests.php b/test/AllTests.php
index b77f3ecfc..338f83d58 100644
--- a/test/AllTests.php
+++ b/test/AllTests.php
@@ -51,6 +51,7 @@ require_once './test/PMA_foreignKeySupported_test.php';
require_once './test/PMA_headerLocation_test.php';
require_once './test/PMA_Message_test.php';
require_once './test/PMA_whichCrlf_test.php';
+require_once './test/PMA_SQL_parser_data_test.php';
class AllTests
{
diff --git a/test/PMA_SQL_parser_data_test.php b/test/PMA_SQL_parser_data_test.php
new file mode 100644
index 000000000..45fa07cb7
--- /dev/null
+++ b/test/PMA_SQL_parser_data_test.php
@@ -0,0 +1,68 @@
+assertEquals($difference, array());
+ }
+
+ private function assertParserData($name)
+ {
+ $this->assertSorted($GLOBALS[$name]);
+ $this->assertEquals(count($GLOBALS[$name]), $GLOBALS[$name . '_cnt']);
+ }
+
+ public function testPMA_SQPdata_function_name()
+ {
+ $this->assertParserData('PMA_SQPdata_function_name');
+ }
+
+ public function testPMA_SQPdata_column_attrib()
+ {
+ $this->assertParserData('PMA_SQPdata_column_attrib');
+ }
+
+ public function testPMA_SQPdata_reserved_word()
+ {
+ $this->assertParserData('PMA_SQPdata_reserved_word');
+ }
+
+ public function testPMA_SQPdata_forbidden_word()
+ {
+ $this->assertParserData('PMA_SQPdata_forbidden_word');
+ }
+
+ public function testPMA_SQPdata_column_type()
+ {
+ $this->assertParserData('PMA_SQPdata_column_type');
+ }
+
+}
+?>
diff --git a/test/PMA_SQL_parser_test.php b/test/PMA_SQL_parser_test.php
new file mode 100644
index 000000000..2774ba10d
--- /dev/null
+++ b/test/PMA_SQL_parser_test.php
@@ -0,0 +1,181 @@
+assertEquals(PMA_SQP_getErrorString(), $error);
+ $this->assertEquals($parsed_sql, $expected);
+ }
+
+ public function testParse_1()
+ {
+ $this->assertParser('SELECT 1;', array (
+ 'raw' => 'SELECT 1;',
+ 0 =>
+ array (
+ 'type' => 'alpha_reservedWord',
+ 'data' => 'SELECT',
+ 'pos' => 6,
+ 'forbidden' => true,
+ ),
+ 1 =>
+ array (
+ 'type' => 'digit_integer',
+ 'data' => '1',
+ 'pos' => 8,
+ ),
+ 2 =>
+ array (
+ 'type' => 'punct_queryend',
+ 'data' => ';',
+ 'pos' => 0,
+ ),
+ 'len' => 3,
+ ));
+ }
+
+ public function testParse_2()
+ {
+ $this->assertParser('SELECT * from aaa;', array (
+ 'raw' => 'SELECT * from aaa;',
+ 0 =>
+ array (
+ 'type' => 'alpha_reservedWord',
+ 'data' => 'SELECT',
+ 'pos' => 6,
+ 'forbidden' => true,
+ ),
+ 1 =>
+ array (
+ 'type' => 'punct',
+ 'data' => '*',
+ 'pos' => 0,
+ ),
+ 2 =>
+ array (
+ 'type' => 'alpha_reservedWord',
+ 'data' => 'from',
+ 'pos' => 13,
+ 'forbidden' => true,
+ ),
+ 3 =>
+ array (
+ 'type' => 'alpha_identifier',
+ 'data' => 'aaa',
+ 'pos' => 17,
+ 'forbidden' => false,
+ ),
+ 4 =>
+ array (
+ 'type' => 'punct_queryend',
+ 'data' => ';',
+ 'pos' => 0,
+ ),
+ 'len' => 5,
+ ));
+ }
+
+ public function testParse_3()
+ {
+ $this->assertParser('SELECT * from `aaa`;', array (
+ 'raw' => 'SELECT * from `aaa`;',
+ 0 =>
+ array (
+ 'type' => 'alpha_reservedWord',
+ 'data' => 'SELECT',
+ 'pos' => 6,
+ 'forbidden' => true,
+ ),
+ 1 =>
+ array (
+ 'type' => 'punct',
+ 'data' => '*',
+ 'pos' => 0,
+ ),
+ 2 =>
+ array (
+ 'type' => 'alpha_reservedWord',
+ 'data' => 'from',
+ 'pos' => 13,
+ 'forbidden' => true,
+ ),
+ 3 =>
+ array (
+ 'type' => 'quote_backtick',
+ 'data' => '`aaa`',
+ 'pos' => 0,
+ ),
+ 4 =>
+ array (
+ 'type' => 'punct_queryend',
+ 'data' => ';',
+ 'pos' => 0,
+ ),
+ 'len' => 5,
+ ));
+ }
+
+ public function testParse_4()
+ {
+ $this->assertParser('SELECT * from `aaa;', array (
+ 'raw' => 'SELECT * from `aaa;',
+ 0 =>
+ array (
+ 'type' => 'alpha',
+ 'data' => 'SELECT',
+ 'pos' => 6,
+ ),
+ 1 =>
+ array (
+ 'type' => 'punct',
+ 'data' => '*',
+ 'pos' => 0,
+ ),
+ 2 =>
+ array (
+ 'type' => 'alpha',
+ 'data' => 'from',
+ 'pos' => 13,
+ ),
+ ),
+'There seems to be an error in your SQL query. The MySQL server error output below, if there is any, may also help you in diagnosing the problem
+
+ERROR: Unclosed quote @ 14
+STR: `
+SQL: SELECT * from `aaa;
+
+');
+ }
+}
+?>
|