diff options
author | unknown <monty@hundin.mysql.fi> | 2002-02-14 15:25:26 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-02-14 15:25:26 +0200 |
commit | 9d5d3834c076edcd398ee3834a7c62db030a6bdf (patch) | |
tree | da15a27ce23289c1ae9aa0f50729df8122716ad8 /sql | |
parent | d0634d18fc0217944e05e4e08822adce9cd49aa7 (diff) | |
parent | 96acf01eee876b86e453ef882c4f974287f5dcb6 (diff) | |
download | mariadb-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.h | 3 | ||||
-rw-r--r-- | sql/sql_lex.cc | 2 | ||||
-rw-r--r-- | sql/sql_lex.h | 2 | ||||
-rw-r--r-- | sql/sql_parse.cc | 4 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 12 |
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(¤t_thd->net,ER_EMPTY_QUERY); - YYABORT; + YYABORT; + } + else + { + thd->lex.sql_command = SQLCOM_EMPTY_QUERY; + } } | verb_clause END_OF_INPUT {} |