From 48664555589674457880e1b202c0339ea3b15180 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 14 Feb 2002 15:04:14 +0200 Subject: [PATCH] Don't give warnings for empty statements with comments --- Docs/manual.texi | 3 +++ mysql-test/t/comments.test | 3 ++- sql/mysql_priv.h | 3 ++- sql/sql_lex.cc | 2 ++ sql/sql_lex.h | 2 +- sql/sql_parse.cc | 4 ++++ sql/sql_yacc.yy | 12 ++++++++++-- 7 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Docs/manual.texi b/Docs/manual.texi index eb727cef882..a93d5b2194b 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -46890,6 +46890,9 @@ not yet 100% confident in this code. @appendixsubsec Changes in release 3.23.49 @itemize @bullet @item +Don't give warning for statement that is only a comment; This is needed for +@code{mysqldump --disable-keys} to work. +@item Fixed unlikely caching bug when doing a join without keys. In this case the last used field for a table always returned @code{NULL}. @item diff --git a/mysql-test/t/comments.test b/mysql-test/t/comments.test index a85419c0295..2fc6237907c 100644 --- a/mysql-test/t/comments.test +++ b/mysql-test/t/comments.test @@ -5,7 +5,7 @@ select 1+2/*hello*/+3; select 1 /* long multi line comment */; -!$1065 /* empty query */; +!$1065 ; select 1 /*!32301 +1 */; select 1 /*!52301 +1 */; select 1--1; @@ -15,3 +15,4 @@ select 1 --2 +1; select 1 # The rest of the row will be ignored ; +/* line with only comment */; 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(¤t_thd->net,ER_EMPTY_QUERY); - YYABORT; + YYABORT; + } + else + { + thd->lex.sql_command = SQLCOM_EMPTY_QUERY; + } } | verb_clause END_OF_INPUT {}