From d3b64bd1a2fe17a7e1867df29b6555082021971b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 9 Aug 2007 17:31:00 -0600 Subject: [PATCH] Bug#25930 (CREATE TABLE x SELECT ... parses columns wrong when ran with ANSI_QUOTES mode) This patch contains a test case only, showing that the bug has been fixed. The issue was related to parsing <"blah">, where the lexical analyser would not properly delimit the start and end of the token. Properly making the token boundaries has been fixed in sql_lex.cc with the patch for bug 25411 : see the Lex_input_stream class. mysql-test/r/parser.result: Test case for Bug#25930, which was fixed by Bug#25411 mysql-test/t/parser.test: Test case for Bug#25930, which was fixed by Bug#25411 --- mysql-test/r/parser.result | 10 ++++++++++ mysql-test/t/parser.test | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/mysql-test/r/parser.result b/mysql-test/r/parser.result index cb44a235f25..76326f65f08 100644 --- a/mysql-test/r/parser.result +++ b/mysql-test/r/parser.result @@ -273,6 +273,16 @@ create table VAR_SAMP(a int); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_SAMP(a int)' at line 1 create table VAR_SAMP (a int); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VAR_SAMP (a int)' at line 1 +DROP TABLE IF EXISTS table_25930_a; +DROP TABLE IF EXISTS table_25930_b; +SET SQL_MODE = 'ANSI_QUOTES'; +CREATE TABLE table_25930_a ( "blah" INT ); +CREATE TABLE table_25930_b SELECT "blah" - 1 FROM table_25930_a; +desc table_25930_b; +Field Type Null Key Default Extra +"blah" - 1 bigint(12) YES NULL +DROP TABLE table_25930_a; +DROP TABLE table_25930_b; SET @@sql_mode=@save_sql_mode; select pi(3.14); ERROR 42000: Incorrect parameter count in the call to native function 'pi' diff --git a/mysql-test/t/parser.test b/mysql-test/t/parser.test index 65aa9dbb89b..79c9129bb74 100644 --- a/mysql-test/t/parser.test +++ b/mysql-test/t/parser.test @@ -363,6 +363,28 @@ create table VAR_SAMP(a int); --error ER_PARSE_ERROR create table VAR_SAMP (a int); +# +# Bug#25930 (CREATE TABLE x SELECT ... parses columns wrong when ran with +# ANSI_QUOTES mode) +# + +--disable_warnings +DROP TABLE IF EXISTS table_25930_a; +DROP TABLE IF EXISTS table_25930_b; +--enable_warnings + +SET SQL_MODE = 'ANSI_QUOTES'; +CREATE TABLE table_25930_a ( "blah" INT ); +CREATE TABLE table_25930_b SELECT "blah" - 1 FROM table_25930_a; + +# The lexer used to chop the first <">, +# not marking the start of the token "blah" correctly. +desc table_25930_b; + +DROP TABLE table_25930_a; +DROP TABLE table_25930_b; + + SET @@sql_mode=@save_sql_mode; #=============================================================================