implement sql_mode NO_BACKSLASH_ESCAPES
This commit is contained in:
5
deps/oblib/src/common/sql_mode/ob_sql_mode.h
vendored
5
deps/oblib/src/common/sql_mode/ob_sql_mode.h
vendored
@ -130,6 +130,11 @@ typedef uint64_t ObSQLMode;
|
||||
is_true = (SMO_HIGH_NOT_PRECEDENCE & mode); \
|
||||
}
|
||||
|
||||
#define IS_NO_BACKSLASH_ESCAPES(mode, is_true) \
|
||||
{ \
|
||||
is_true = (SMO_NO_BACKSLASH_ESCAPES & mode); \
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -69,7 +69,8 @@ ObSQLMode SUPPORT_MODE = SMO_STRICT_ALL_TABLES
|
||||
| SMO_NO_UNSIGNED_SUBTRACTION
|
||||
| SMO_NO_KEY_OPTIONS
|
||||
| SMO_NO_TABLE_OPTIONS
|
||||
| SMO_NO_FIELD_OPTIONS;
|
||||
| SMO_NO_FIELD_OPTIONS
|
||||
| SMO_NO_BACKSLASH_ESCAPES;
|
||||
|
||||
bool is_sql_mode_supported(ObSQLMode mode)
|
||||
{
|
||||
|
||||
@ -574,7 +574,10 @@ FALSE {
|
||||
COPY_STR_NODE_TO_TMP_LITERAL(yylval->node);
|
||||
bool is_real_escape = true;
|
||||
CHECK_REAL_ESCAPE(is_real_escape);
|
||||
if (!is_real_escape) {
|
||||
ObSQLMode mode = p->sql_mode_;
|
||||
bool is_no_backslash_escapes = false;
|
||||
IS_NO_BACKSLASH_ESCAPES(mode, is_no_backslash_escapes);
|
||||
if (!is_real_escape || is_no_backslash_escapes) {
|
||||
HANDLE_FALSE_ESCAPE(p);
|
||||
} else {
|
||||
HANDLE_ESCAPE(p);
|
||||
@ -695,7 +698,11 @@ FALSE {
|
||||
check_value(yylval);
|
||||
bool is_real_escape = true;
|
||||
CHECK_REAL_ESCAPE(is_real_escape);
|
||||
if (!is_real_escape) {
|
||||
//check sql_mode
|
||||
ObSQLMode mode = p->sql_mode_;
|
||||
bool is_no_backslash_escapes = false;
|
||||
IS_NO_BACKSLASH_ESCAPES(mode, is_no_backslash_escapes);
|
||||
if (!is_real_escape || is_no_backslash_escapes) {
|
||||
HANDLE_FALSE_ESCAPE(p);
|
||||
} else {
|
||||
HANDLE_ESCAPE(p);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -72267,7 +72267,7 @@ extern int obsql_mysql_yylex \
|
||||
#undef YY_DECL
|
||||
#endif
|
||||
|
||||
#line 1472 "../../../src/sql/parser/sql_parser_mysql_mode.l"
|
||||
#line 1479 "../../../src/sql/parser/sql_parser_mysql_mode.l"
|
||||
|
||||
|
||||
#line 72274 "../../../src/sql/parser/sql_parser_mysql_mode_lex.h"
|
||||
|
||||
Reference in New Issue
Block a user