summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2002-02-14 15:25:26 +0200
committerunknown <monty@hundin.mysql.fi>2002-02-14 15:25:26 +0200
commit9d5d3834c076edcd398ee3834a7c62db030a6bdf (patch)
treeda15a27ce23289c1ae9aa0f50729df8122716ad8 /sql
parentd0634d18fc0217944e05e4e08822adce9cd49aa7 (diff)
parent96acf01eee876b86e453ef882c4f974287f5dcb6 (diff)
downloadmariadb-git-9d5d3834c076edcd398ee3834a7c62db030a6bdf.tar.gz
Merge work:/home/bk/mysql into hundin.mysql.fi:/my/bk/mysql
Diffstat (limited to 'sql')
-rw-r--r--sql/mysql_priv.h3
-rw-r--r--sql/sql_lex.cc2
-rw-r--r--sql/sql_lex.h2
-rw-r--r--sql/sql_parse.cc4
-rw-r--r--sql/sql_yacc.yy12
5 files changed, 19 insertions, 4 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 072cbf540af..657ca3274cd 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -158,7 +158,8 @@ void kill_one_thread(THD *thd, ulong id);
#define OPTION_LOW_PRIORITY_UPDATES 8192
#define OPTION_WARNINGS 16384
#define OPTION_AUTO_IS_NULL 32768
-#define OPTION_SAFE_UPDATES 65536L*2
+#define OPTION_FOUND_COMMENT 65536L
+#define OPTION_SAFE_UPDATES OPTION_FOUND_COMMENT*2
#define OPTION_BUFFER_RESULT OPTION_SAFE_UPDATES*2
#define OPTION_BIN_LOG OPTION_BUFFER_RESULT*2
#define OPTION_NOT_AUTO_COMMIT OPTION_BIN_LOG*2
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 7c3b933bbd7..a3c3db8947e 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -734,6 +734,7 @@ int yylex(void *arg)
return(TEXT_STRING);
case STATE_COMMENT: // Comment
+ lex->options|= OPTION_FOUND_COMMENT;
while ((c = yyGet()) != '\n' && c) ;
yyUnget(); // Safety against eof
state = STATE_START; // Try again
@@ -745,6 +746,7 @@ int yylex(void *arg)
break;
}
yySkip(); // Skip '*'
+ lex->options|= OPTION_FOUND_COMMENT;
if (yyPeek() == '!') // MySQL command in comment
{
ulong version=MYSQL_VERSION_ID;
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 7555d605e35..2b889d356bb 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -53,7 +53,7 @@ enum enum_sql_command {
SQLCOM_BEGIN, SQLCOM_LOAD_MASTER_TABLE, SQLCOM_CHANGE_MASTER,
SQLCOM_RENAME_TABLE, SQLCOM_BACKUP_TABLE, SQLCOM_RESTORE_TABLE,
SQLCOM_RESET, SQLCOM_PURGE, SQLCOM_SHOW_BINLOGS,
- SQLCOM_SHOW_OPEN_TABLES, SQLCOM_DO,
+ SQLCOM_SHOW_OPEN_TABLES, SQLCOM_DO, SQLCOM_EMPTY_QUERY,
SQLCOM_END
};
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 9b439081d50..fa4a4fd4f3b 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1181,6 +1181,10 @@ mysql_execute_command(void)
res=mysql_do(thd, *lex->insert_list);
break;
+ case SQLCOM_EMPTY_QUERY:
+ send_ok(&thd->net);
+ break;
+
case SQLCOM_PURGE:
{
if (check_process_priv(thd))
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 08fab22629a..54a03d4a714 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -544,9 +544,17 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
query:
END_OF_INPUT
{
- if (!current_thd->bootstrap)
+ THD *thd=current_thd;
+ if (!thd->bootstrap &&
+ (!(thd->lex.options & OPTION_FOUND_COMMENT)))
+ {
send_error(&current_thd->net,ER_EMPTY_QUERY);
- YYABORT;
+ YYABORT;
+ }
+ else
+ {
+ thd->lex.sql_command = SQLCOM_EMPTY_QUERY;
+ }
}
| verb_clause END_OF_INPUT {}