summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2004-04-30 20:08:38 +0400
committerunknown <sergefp@mysql.com>2004-04-30 20:08:38 +0400
commit47322bf9b8e7eed66181d1b88cfd1a5d3ce2ea91 (patch)
tree43445abd0bf56119b887c15b0bed2c5b1184813d
parent85f85a85480a9282219394032965e757632c14c2 (diff)
downloadmariadb-git-47322bf9b8e7eed66181d1b88cfd1a5d3ce2ea91.tar.gz
WL#1622 "SQL Syntax for Prepared Statements" - cosmetic code review fixes
mysql-test/r/ps.result: Added check if multiple SQL statements inside a PS are disabled mysql-test/t/ps.test: Added check if multiple SQL statements inside a PS are disabled
-rw-r--r--mysql-test/r/ps.result6
-rw-r--r--mysql-test/t/ps.test11
-rw-r--r--sql/sql_class.cc8
-rw-r--r--sql/sql_yacc.yy19
4 files changed, 30 insertions, 14 deletions
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index 14af3c32292..d16f24b34c6 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -83,4 +83,10 @@ NULL
NULL
NULL
NULL
+prepare stmt6 from 'select 1; select2';
+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 '; select2' at line 1
+prepare stmt6 from 'insert into t1 values (5,"five"); select2';
+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 '; select2' at line 1
+explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';
+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 'from 'insert into t1 values (5,"five"); select2'' at line 1
drop table t1;
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index ab698174161..dc9f054da0d 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -75,5 +75,16 @@ execute stmt5 using @nullvar;
set @nullvar2=NULL;
execute stmt5 using @nullvar2;
+# Check that multiple SQL statements are disabled inside PREPARE
+--error 1064
+prepare stmt6 from 'select 1; select2';
+
+--error 1064
+prepare stmt6 from 'insert into t1 values (5,"five"); select2';
+
+# This shouldn't parse
+--error 1064
+explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';
+
drop table t1;
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 87b6c49a4b7..bf2dbb3fc5c 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1282,8 +1282,8 @@ static void delete_statement_as_hash_key(void *key)
delete (Statement *) key;
}
-byte *get_stmt_name_hash_key(Statement *entry, uint *length,
- my_bool not_used __attribute__((unused)))
+static byte *get_stmt_name_hash_key(Statement *entry, uint *length,
+ my_bool not_used __attribute__((unused)))
{
*length=(uint) entry->name.length;
return (byte*) entry->name.str;
@@ -1303,8 +1303,8 @@ Statement_map::Statement_map() :
get_statement_id_as_hash_key,
delete_statement_as_hash_key, MYF(0));
hash_init(&names_hash, &my_charset_bin, START_NAME_HASH_SIZE, 0, 0,
- (hash_get_key) get_stmt_name_hash_key,
- NULL,MYF(0));
+ (hash_get_key) get_stmt_name_hash_key,
+ NULL,MYF(0));
}
int Statement_map::insert(Statement *statement)
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 247bec84e8e..afd461e0383 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -805,13 +805,13 @@ deallocate:
DEALLOCATE_SYM PREPARE_SYM ident
{
THD *thd=YYTHD;
- LEX *lex= thd->lex;
+ LEX *lex= thd->lex;
if (thd->command == COM_PREPARE)
{
yyerror(ER(ER_SYNTAX_ERROR));
YYABORT;
}
- lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
+ lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;
lex->prepared_stmt_name= $3;
};
@@ -819,29 +819,28 @@ prepare:
PREPARE_SYM ident FROM TEXT_STRING_sys
{
THD *thd=YYTHD;
- LEX *lex= thd->lex;
+ LEX *lex= thd->lex;
if (thd->command == COM_PREPARE)
{
yyerror(ER(ER_SYNTAX_ERROR));
YYABORT;
}
- lex->sql_command= SQLCOM_PREPARE;
+ lex->sql_command= SQLCOM_PREPARE;
lex->prepared_stmt_name= $2;
lex->prepared_stmt_code= $4;
};
-
execute:
EXECUTE_SYM ident
{
THD *thd=YYTHD;
- LEX *lex= thd->lex;
+ LEX *lex= thd->lex;
if (thd->command == COM_PREPARE)
{
yyerror(ER(ER_SYNTAX_ERROR));
YYABORT;
}
- lex->sql_command= SQLCOM_EXECUTE;
+ lex->sql_command= SQLCOM_EXECUTE;
lex->prepared_stmt_name= $2;
}
execute_using
@@ -854,8 +853,8 @@ execute_using:
;
execute_var_list:
- execute_var_list ',' execute_var_ident
- | execute_var_ident
+ execute_var_list ',' execute_var_ident
+ | execute_var_ident
;
execute_var_ident: '@' ident_or_text
@@ -864,7 +863,7 @@ execute_var_ident: '@' ident_or_text
LEX_STRING *lexstr= (LEX_STRING*)sql_memdup(&$2, sizeof(LEX_STRING));
if (!lexstr || lex->prepared_stmt_params.push_back(lexstr))
YYABORT;
- }
+ }
;
/* help */