Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a855617f
Commit
a855617f
authored
Mar 12, 2001
by
jcole@tetra.spaceapes.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added SQL_ANSI_MODE.
parent
2505d667
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
89 additions
and
34 deletions
+89
-34
Docs/manual.texi
Docs/manual.texi
+21
-3
sql/gen_lex_hash.cc
sql/gen_lex_hash.cc
+5
-3
sql/lex.h
sql/lex.h
+1
-0
sql/mysql_priv.h
sql/mysql_priv.h
+2
-0
sql/sql_class.h
sql/sql_class.h
+4
-1
sql/sql_lex.cc
sql/sql_lex.cc
+32
-24
sql/sql_parse.cc
sql/sql_parse.cc
+4
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+20
-3
No files found.
Docs/manual.texi
View file @
a855617f
...
...
@@ -895,7 +895,8 @@ Changes in release 4.0.x (Development; Alpha)
Changes in release 3.23.x (Stable)
* News-3.23.34a::
* News-3.23.35:: Changes in release 3.23.35
* News-3.23.34a:: Changes in release 3.23.34a
* News-3.23.34:: Changes in release 3.23.34
* News-3.23.33:: Changes in release 3.23.33
* News-3.23.32:: Changes in release 3.23.32
...
...
@@ -22066,6 +22067,11 @@ or
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' and host="%.loc.gov";
@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
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:
...
...
@@ -42048,7 +42054,9 @@ users uses this code as the rest of the code and because of this we are
not yet 100 % confident in this code.
@menu
* News-3.23.34a::
* News-3.23.35:: Changes in release 3.23.35
* News-3.23.34a:: Changes in release 3.23.34a
* News-3.23.34:: Changes in release 3.23.34
* News-3.23.33:: Changes in release 3.23.33
* News-3.23.32:: Changes in release 3.23.32
...
...
@@ -42086,9 +42094,19 @@ not yet 100 % confident in this code.
* News-3.23.0:: Changes in release 3.23.0
@end menu
@node News-3.23.34a, News-3.23.34, 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
@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
@node News-3.23.34a, News-3.23.34, News-3.23.35, News-3.23.x
@appendixsubsec Changes in release 3.23.34a
@itemize @bullet
@item
Add extra files to distribution to allow one to compile Innobase.
@end itemize
sql/gen_lex_hash.cc
View file @
a855617f
...
...
@@ -254,7 +254,7 @@ you have to change 'main' to print out the new function\n");
if
(
write_warning
)
fprintf
(
stderr
,
"Fatal error when generating hash for symbols
\n
\
Didn't find suitable values for perfect hashing:
\n
\
You have to edit gen_lex_has
e
.cc to generate a new hashing function.
\n
\
You have to edit gen_lex_has
h
.cc to generate a new hashing function.
\n
\
You can try running gen_lex_hash with --search to find a suitable value
\n
\
Symbol array size = %d
\n
"
,
function_mod
);
return
-
1
;
...
...
@@ -472,8 +472,10 @@ int main(int argc,char **argv)
int
error
;
MY_INIT
(
argv
[
0
]);
start_value
=
5315771L
;
best_t1
=
6916833L
;
best_t2
=
3813748L
;
best_type
=
3
;
/* mode=5839 add=5 type: 0 */
if
(
get_options
(
argc
,(
char
**
)
argv
))
start_value
=
4934807L
;
best_t1
=
5181754L
;
best_t2
=
1469522L
;
best_type
=
0
;
/* mode=4999 add=7 type: 0 */
if
(
get_options
(
argc
,(
char
**
)
argv
))
exit
(
1
);
make_max_length_table
();
...
...
sql/lex.h
View file @
a855617f
...
...
@@ -270,6 +270,7 @@ static SYMBOL symbols[] = {
{
"SLAVE"
,
SYM
(
SLAVE
),
0
,
0
},
{
"SMALLINT"
,
SYM
(
SMALLINT
),
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_BIG_RESULT"
,
SYM
(
SQL_BIG_RESULT
),
0
,
0
},
{
"SQL_BIG_SELECTS"
,
SYM
(
SQL_BIG_SELECTS
),
0
,
0
},
...
...
sql/mysql_priv.h
View file @
a855617f
...
...
@@ -539,6 +539,8 @@ extern struct show_var_st init_vars[];
extern
struct
show_var_st
status_vars
[];
extern
enum
db_type
default_table_type
;
extern
uchar
global_state_map
[
256
];
#ifndef __WIN__
extern
pthread_t
signal_thread
;
#endif
...
...
sql/sql_class.h
View file @
a855617f
...
...
@@ -280,7 +280,10 @@ public:
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-specific state map for lex parser
uchar
state_map
[
256
];
THD
();
~
THD
();
bool
store_globals
();
...
...
sql/sql_lex.cc
View file @
a855617f
...
...
@@ -75,7 +75,7 @@ inline int lex_casecmp(const char *s, const char *t, uint len)
#include "lex_hash.h"
static
uchar
state_map
[
256
];
uchar
global_
state_map
[
256
];
void
lex_init
(
void
)
...
...
@@ -89,42 +89,49 @@ void lex_init(void)
VOID
(
pthread_key_create
(
&
THR_LEX
,
NULL
));
/* Fill state_map with states to get a faster parser */
/* Fill
global_
state_map with states to get a faster parser */
for
(
i
=
0
;
i
<
256
;
i
++
)
{
if
(
isalpha
(
i
))
state_map
[
i
]
=
(
uchar
)
STATE_IDENT
;
global_
state_map
[
i
]
=
(
uchar
)
STATE_IDENT
;
else
if
(
isdigit
(
i
))
state_map
[
i
]
=
(
uchar
)
STATE_NUMBER_IDENT
;
global_
state_map
[
i
]
=
(
uchar
)
STATE_NUMBER_IDENT
;
#if defined(USE_MB) && defined(USE_MB_IDENT)
else
if
(
use_mb
(
default_charset_info
)
&&
my_ismbhead
(
default_charset_info
,
i
))
state_map
[
i
]
=
(
uchar
)
STATE_IDENT
;
global_
state_map
[
i
]
=
(
uchar
)
STATE_IDENT
;
#endif
else
if
(
!
isgraph
(
i
))
state_map
[
i
]
=
(
uchar
)
STATE_SKIP
;
global_
state_map
[
i
]
=
(
uchar
)
STATE_SKIP
;
else
state_map
[
i
]
=
(
uchar
)
STATE_CHAR
;
global_
state_map
[
i
]
=
(
uchar
)
STATE_CHAR
;
}
state_map
[(
uchar
)
'_'
]
=
state_map
[(
uchar
)
'$'
]
=
(
uchar
)
STATE_IDENT
;
state_map
[(
uchar
)
'\''
]
=
state_map
[(
uchar
)
'"'
]
=
(
uchar
)
STATE_STRING
;
state_map
[(
uchar
)
'-'
]
=
state_map
[(
uchar
)
'+'
]
=
(
uchar
)
STATE_SIGNED_NUMBER
;
state_map
[(
uchar
)
'.'
]
=
(
uchar
)
STATE_REAL_OR_POINT
;
state_map
[(
uchar
)
'>'
]
=
state_map
[(
uchar
)
'='
]
=
state_map
[(
uchar
)
'!'
]
=
(
uchar
)
STATE_CMP_OP
;
state_map
[(
uchar
)
'<'
]
=
(
uchar
)
STATE_LONG_CMP_OP
;
state_map
[(
uchar
)
'&'
]
=
state_map
[(
uchar
)
'|'
]
=
(
uchar
)
STATE_BOOL
;
state_map
[(
uchar
)
'#'
]
=
(
uchar
)
STATE_COMMENT
;
state_map
[(
uchar
)
';'
]
=
(
uchar
)
STATE_COLON
;
state_map
[(
uchar
)
':'
]
=
(
uchar
)
STATE_SET_VAR
;
state_map
[
0
]
=
(
uchar
)
STATE_EOL
;
state_map
[(
uchar
)
'\\'
]
=
(
uchar
)
STATE_ESCAPE
;
state_map
[(
uchar
)
'/'
]
=
(
uchar
)
STATE_LONG_COMMENT
;
state_map
[(
uchar
)
'*'
]
=
(
uchar
)
STATE_END_LONG_COMMENT
;
state_map
[(
uchar
)
'@'
]
=
(
uchar
)
STATE_USER_END
;
state_map
[(
uchar
)
'`'
]
=
(
uchar
)
STATE_USER_VARIABLE_DELIMITER
;
global_state_map
[(
uchar
)
'_'
]
=
global_state_map
[(
uchar
)
'$'
]
=
(
uchar
)
STATE_IDENT
;
global_state_map
[(
uchar
)
'\''
]
=
global_state_map
[(
uchar
)
'"'
]
=
(
uchar
)
STATE_STRING
;
global_state_map
[(
uchar
)
'-'
]
=
global_state_map
[(
uchar
)
'+'
]
=
(
uchar
)
STATE_SIGNED_NUMBER
;
global_state_map
[(
uchar
)
'.'
]
=
(
uchar
)
STATE_REAL_OR_POINT
;
global_state_map
[(
uchar
)
'>'
]
=
global_state_map
[(
uchar
)
'='
]
=
global_state_map
[(
uchar
)
'!'
]
=
(
uchar
)
STATE_CMP_OP
;
global_state_map
[(
uchar
)
'<'
]
=
(
uchar
)
STATE_LONG_CMP_OP
;
global_state_map
[(
uchar
)
'&'
]
=
global_state_map
[(
uchar
)
'|'
]
=
(
uchar
)
STATE_BOOL
;
global_state_map
[(
uchar
)
'#'
]
=
(
uchar
)
STATE_COMMENT
;
global_state_map
[(
uchar
)
';'
]
=
(
uchar
)
STATE_COLON
;
global_state_map
[(
uchar
)
':'
]
=
(
uchar
)
STATE_SET_VAR
;
global_state_map
[
0
]
=
(
uchar
)
STATE_EOL
;
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
)
{
state_map
[(
uchar
)
'"'
]
=
STATE_USER_VARIABLE_DELIMITER
;
global_
state_map
[(
uchar
)
'"'
]
=
STATE_USER_VARIABLE_DELIMITER
;
}
DBUG_VOID_RETURN
;
}
...
...
@@ -418,6 +425,7 @@ int yylex(void *arg)
uint
length
;
enum
lex_states
state
,
prev_state
;
LEX
*
lex
=
current_lex
;
uchar
*
state_map
=
lex
->
thd
->
state_map
;
YYSTYPE
*
yylval
=
(
YYSTYPE
*
)
arg
;
lex
->
yylval
=
yylval
;
// The global state
...
...
sql/sql_parse.cc
View file @
a855617f
...
...
@@ -512,6 +512,10 @@ pthread_handler_decl(handle_one_connection,arg)
return
0
;
}
// copy global state map into thread
for
(
int
x
=
0
;
x
<
256
;
x
++
)
thd
->
state_map
[
x
]
=
global_state_map
[
x
];
do
{
int
error
;
...
...
sql/sql_yacc.yy
View file @
a855617f
...
...
@@ -394,6 +394,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token END
%token THEN_SYM
%token SQL_ANSI_MODE
%token SQL_BIG_TABLES
%token SQL_BIG_SELECTS
%token SQL_SELECT_LIMIT
...
...
@@ -2603,6 +2604,18 @@ option_value:
else
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
{
Lex->select_limit= $3;
...
...
@@ -2697,16 +2710,20 @@ text_or_password:
}
set_option:
SQL_BIG_TABLES
{ $$= OPTION_BIG_TABLES; }
SQL_BIG_TABLES
{ $$= OPTION_BIG_TABLES; }
| SQL_BIG_SELECTS { $$= OPTION_BIG_SELECTS; }
| SQL_LOG_OFF { $$= OPTION_LOG_OFF; }
| SQL_LOG_UPDATE
{
$$= (opt_sql_bin_update)? OPTION_UPDATE_LOG|OPTION_BIN_LOG: OPTION_UPDATE_LOG ;
$$= (opt_sql_bin_update)?
OPTION_UPDATE_LOG|OPTION_BIN_LOG:
OPTION_UPDATE_LOG ;
}
| SQL_LOG_BIN
{
$$= (opt_sql_bin_update)? OPTION_UPDATE_LOG|OPTION_BIN_LOG: OPTION_BIN_LOG ;
$$= (opt_sql_bin_update)?
OPTION_UPDATE_LOG|OPTION_BIN_LOG:
OPTION_BIN_LOG ;
}
| SQL_WARNINGS { $$= OPTION_WARNINGS; }
| SQL_LOW_PRIORITY_UPDATES { $$= OPTION_LOW_PRIORITY_UPDATES; }
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment