Reversed SQL_ANSI_MODE per Monty's request.

parent fef4e752
...@@ -7,3 +7,4 @@ sasha@work.mysql.com ...@@ -7,3 +7,4 @@ sasha@work.mysql.com
serg@serg.mysql.com serg@serg.mysql.com
tim@threads.polyesthetic.msg tim@threads.polyesthetic.msg
tim@work.mysql.com tim@work.mysql.com
jcole@abel.spaceapes.com
...@@ -22080,11 +22080,6 @@ or ...@@ -22080,11 +22080,6 @@ or
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' and host="%.loc.gov"; mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' and host="%.loc.gov";
@end example @end example
@item SQL_ANSI_MODE = 0 | 1
@cindex ANSI mode, SQL_ANSI_MODE
If set to @code{1}, the connection will be in ANSI mode, as described in
@ref{ANSI mode}.
@item SQL_AUTO_IS_NULL = 0 | 1 @item SQL_AUTO_IS_NULL = 0 | 1
If set to @code{1} (default) then one can find the last inserted row If set to @code{1} (default) then one can find the last inserted row
for a table with an auto_increment row with the following construct: for a table with an auto_increment row with the following construct:
...@@ -42110,10 +42105,6 @@ not yet 100 % confident in this code. ...@@ -42110,10 +42105,6 @@ not yet 100 % confident in this code.
@node News-3.23.35, News-3.23.34a, News-3.23.x, News-3.23.x @node News-3.23.35, News-3.23.34a, News-3.23.x, News-3.23.x
@appendixsubsec Changes in release 3.23.35 @appendixsubsec Changes in release 3.23.35
@itemize @bullet @itemize @bullet
@item
Added SQL_ANSI_MODE. You can now switch to ANSI mode for only your
connection by running @code{SET SQL_ANSI_MODE=1}, and you can turn
ANSI mode off with @code{SET SQL_ANSI_MODE=0}.
@end itemize @end itemize
@node News-3.23.34a, News-3.23.34, News-3.23.35, News-3.23.x @node News-3.23.34a, News-3.23.34, News-3.23.35, News-3.23.x
...@@ -472,9 +472,7 @@ int main(int argc,char **argv) ...@@ -472,9 +472,7 @@ int main(int argc,char **argv)
int error; int error;
MY_INIT(argv[0]); MY_INIT(argv[0]);
start_value=4934807L; best_t1=5181754L; best_t2=1469522L; best_type=0; start_value=5315771L; best_t1=6916833L; best_t2=3813748L; best_type=3; /* mode=5839 add=5 type: 0 */
/* mode=4999 add=7 type: 0 */
if (get_options(argc,(char **) argv)) if (get_options(argc,(char **) argv))
exit(1); exit(1);
......
...@@ -270,7 +270,6 @@ static SYMBOL symbols[] = { ...@@ -270,7 +270,6 @@ static SYMBOL symbols[] = {
{ "SLAVE", SYM(SLAVE),0,0}, { "SLAVE", SYM(SLAVE),0,0},
{ "SMALLINT", SYM(SMALLINT),0,0}, { "SMALLINT", SYM(SMALLINT),0,0},
{ "SONAME", SYM(UDF_SONAME_SYM),0,0}, { "SONAME", SYM(UDF_SONAME_SYM),0,0},
{ "SQL_ANSI_MODE", SYM(SQL_ANSI_MODE),0,0},
{ "SQL_AUTO_IS_NULL", SYM(SQL_AUTO_IS_NULL),0,0}, { "SQL_AUTO_IS_NULL", SYM(SQL_AUTO_IS_NULL),0,0},
{ "SQL_BIG_RESULT", SYM(SQL_BIG_RESULT),0,0}, { "SQL_BIG_RESULT", SYM(SQL_BIG_RESULT),0,0},
{ "SQL_BIG_SELECTS", SYM(SQL_BIG_SELECTS),0,0}, { "SQL_BIG_SELECTS", SYM(SQL_BIG_SELECTS),0,0},
......
...@@ -539,8 +539,6 @@ extern struct show_var_st init_vars[]; ...@@ -539,8 +539,6 @@ extern struct show_var_st init_vars[];
extern struct show_var_st status_vars[]; extern struct show_var_st status_vars[];
extern enum db_type default_table_type; extern enum db_type default_table_type;
extern uchar global_state_map[256];
#ifndef __WIN__ #ifndef __WIN__
extern pthread_t signal_thread; extern pthread_t signal_thread;
#endif #endif
......
...@@ -135,10 +135,6 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0), ...@@ -135,10 +135,6 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0),
} }
#endif #endif
// copy global state map into thread
for(int x=0; x < 256; x++)
state_map[x] = global_state_map[x];
#ifdef __WIN__ #ifdef __WIN__
real_id = 0 ; real_id = 0 ;
#endif #endif
......
...@@ -285,9 +285,6 @@ class THD :public ilink { ...@@ -285,9 +285,6 @@ class THD :public ilink {
ulong slave_proxy_id; // in slave thread we need to know in behalf of which ulong slave_proxy_id; // in slave thread we need to know in behalf of which
// thread the query is being run to replicate temp tables properly // thread the query is being run to replicate temp tables properly
// thread-specific state map for lex parser
uchar state_map[256];
THD(); THD();
~THD(); ~THD();
bool store_globals(); bool store_globals();
......
...@@ -75,7 +75,7 @@ inline int lex_casecmp(const char *s, const char *t, uint len) ...@@ -75,7 +75,7 @@ inline int lex_casecmp(const char *s, const char *t, uint len)
#include "lex_hash.h" #include "lex_hash.h"
uchar global_state_map[256]; static uchar state_map[256];
void lex_init(void) void lex_init(void)
...@@ -89,49 +89,42 @@ void lex_init(void) ...@@ -89,49 +89,42 @@ void lex_init(void)
VOID(pthread_key_create(&THR_LEX,NULL)); VOID(pthread_key_create(&THR_LEX,NULL));
/* Fill global_state_map with states to get a faster parser */ /* Fill state_map with states to get a faster parser */
for (i=0; i < 256 ; i++) for (i=0; i < 256 ; i++)
{ {
if (isalpha(i)) if (isalpha(i))
global_state_map[i]=(uchar) STATE_IDENT; state_map[i]=(uchar) STATE_IDENT;
else if (isdigit(i)) else if (isdigit(i))
global_state_map[i]=(uchar) STATE_NUMBER_IDENT; state_map[i]=(uchar) STATE_NUMBER_IDENT;
#if defined(USE_MB) && defined(USE_MB_IDENT) #if defined(USE_MB) && defined(USE_MB_IDENT)
else if (use_mb(default_charset_info) && my_ismbhead(default_charset_info, i)) else if (use_mb(default_charset_info) && my_ismbhead(default_charset_info, i))
global_state_map[i]=(uchar) STATE_IDENT; state_map[i]=(uchar) STATE_IDENT;
#endif #endif
else if (!isgraph(i)) else if (!isgraph(i))
global_state_map[i]=(uchar) STATE_SKIP; state_map[i]=(uchar) STATE_SKIP;
else else
global_state_map[i]=(uchar) STATE_CHAR; state_map[i]=(uchar) STATE_CHAR;
} }
global_state_map[(uchar)'_']= state_map[(uchar)'_']=state_map[(uchar)'$']=(uchar) STATE_IDENT;
global_state_map[(uchar)'$']=(uchar) STATE_IDENT; state_map[(uchar)'\'']=state_map[(uchar)'"']=(uchar) STATE_STRING;
global_state_map[(uchar)'\'']= state_map[(uchar)'-']=state_map[(uchar)'+']=(uchar) STATE_SIGNED_NUMBER;
global_state_map[(uchar)'"']=(uchar) STATE_STRING; state_map[(uchar)'.']=(uchar) STATE_REAL_OR_POINT;
global_state_map[(uchar)'-']= state_map[(uchar)'>']=state_map[(uchar)'=']=state_map[(uchar)'!']= (uchar) STATE_CMP_OP;
global_state_map[(uchar)'+']=(uchar) STATE_SIGNED_NUMBER; state_map[(uchar)'<']= (uchar) STATE_LONG_CMP_OP;
global_state_map[(uchar)'.']=(uchar) STATE_REAL_OR_POINT; state_map[(uchar)'&']=state_map[(uchar)'|']=(uchar) STATE_BOOL;
global_state_map[(uchar)'>']= state_map[(uchar)'#']=(uchar) STATE_COMMENT;
global_state_map[(uchar)'=']= state_map[(uchar)';']=(uchar) STATE_COLON;
global_state_map[(uchar)'!']= (uchar) STATE_CMP_OP; state_map[(uchar)':']=(uchar) STATE_SET_VAR;
global_state_map[(uchar)'<']= (uchar) STATE_LONG_CMP_OP; state_map[0]=(uchar) STATE_EOL;
global_state_map[(uchar)'&']=global_state_map[(uchar)'|']=(uchar) STATE_BOOL; state_map[(uchar)'\\']= (uchar) STATE_ESCAPE;
global_state_map[(uchar)'#']=(uchar) STATE_COMMENT; state_map[(uchar)'/']= (uchar) STATE_LONG_COMMENT;
global_state_map[(uchar)';']=(uchar) STATE_COLON; state_map[(uchar)'*']= (uchar) STATE_END_LONG_COMMENT;
global_state_map[(uchar)':']=(uchar) STATE_SET_VAR; state_map[(uchar)'@']= (uchar) STATE_USER_END;
global_state_map[0]=(uchar) STATE_EOL; state_map[(uchar) '`']= (uchar) STATE_USER_VARIABLE_DELIMITER;
global_state_map[(uchar)'\\']= (uchar) STATE_ESCAPE;
global_state_map[(uchar)'/']= (uchar) STATE_LONG_COMMENT;
global_state_map[(uchar)'*']= (uchar) STATE_END_LONG_COMMENT;
global_state_map[(uchar)'@']= (uchar) STATE_USER_END;
global_state_map[(uchar) '`']= (uchar) STATE_USER_VARIABLE_DELIMITER;
if (thd_startup_options & OPTION_ANSI_MODE) if (thd_startup_options & OPTION_ANSI_MODE)
{ {
global_state_map[(uchar) '"'] = STATE_USER_VARIABLE_DELIMITER; state_map[(uchar) '"'] = STATE_USER_VARIABLE_DELIMITER;
} }
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -425,7 +418,6 @@ int yylex(void *arg) ...@@ -425,7 +418,6 @@ int yylex(void *arg)
uint length; uint length;
enum lex_states state,prev_state; enum lex_states state,prev_state;
LEX *lex=current_lex; LEX *lex=current_lex;
uchar *state_map = lex->thd->state_map;
YYSTYPE *yylval=(YYSTYPE*) arg; YYSTYPE *yylval=(YYSTYPE*) arg;
lex->yylval=yylval; // The global state lex->yylval=yylval; // The global state
......
...@@ -394,7 +394,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); ...@@ -394,7 +394,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token END %token END
%token THEN_SYM %token THEN_SYM
%token SQL_ANSI_MODE
%token SQL_BIG_TABLES %token SQL_BIG_TABLES
%token SQL_BIG_SELECTS %token SQL_BIG_SELECTS
%token SQL_SELECT_LIMIT %token SQL_SELECT_LIMIT
...@@ -2609,18 +2608,6 @@ option_value: ...@@ -2609,18 +2608,6 @@ option_value:
else else
Lex->options|= OPTION_NOT_AUTO_COMMIT; Lex->options|= OPTION_NOT_AUTO_COMMIT;
} }
| SQL_ANSI_MODE equal NUM
{
if(atoi($3.str) == 0)
{
Lex->options &= ~(OPTION_ANSI_MODE);
Lex->thd->state_map[(uchar) '"'] = STATE_STRING;
} else {
Lex->options |= OPTION_ANSI_MODE;
Lex->thd->state_map[(uchar) '"'] = STATE_USER_VARIABLE_DELIMITER;
}
}
| SQL_SELECT_LIMIT equal ULONG_NUM | SQL_SELECT_LIMIT equal ULONG_NUM
{ {
Lex->select_limit= $3; Lex->select_limit= $3;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment