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); \
|
is_true = (SMO_HIGH_NOT_PRECEDENCE & mode); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define IS_NO_BACKSLASH_ESCAPES(mode, is_true) \
|
||||||
|
{ \
|
||||||
|
is_true = (SMO_NO_BACKSLASH_ESCAPES & mode); \
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -69,7 +69,8 @@ ObSQLMode SUPPORT_MODE = SMO_STRICT_ALL_TABLES
|
|||||||
| SMO_NO_UNSIGNED_SUBTRACTION
|
| SMO_NO_UNSIGNED_SUBTRACTION
|
||||||
| SMO_NO_KEY_OPTIONS
|
| SMO_NO_KEY_OPTIONS
|
||||||
| SMO_NO_TABLE_OPTIONS
|
| SMO_NO_TABLE_OPTIONS
|
||||||
| SMO_NO_FIELD_OPTIONS;
|
| SMO_NO_FIELD_OPTIONS
|
||||||
|
| SMO_NO_BACKSLASH_ESCAPES;
|
||||||
|
|
||||||
bool is_sql_mode_supported(ObSQLMode mode)
|
bool is_sql_mode_supported(ObSQLMode mode)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -574,7 +574,10 @@ FALSE {
|
|||||||
COPY_STR_NODE_TO_TMP_LITERAL(yylval->node);
|
COPY_STR_NODE_TO_TMP_LITERAL(yylval->node);
|
||||||
bool is_real_escape = true;
|
bool is_real_escape = true;
|
||||||
CHECK_REAL_ESCAPE(is_real_escape);
|
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);
|
HANDLE_FALSE_ESCAPE(p);
|
||||||
} else {
|
} else {
|
||||||
HANDLE_ESCAPE(p);
|
HANDLE_ESCAPE(p);
|
||||||
@ -695,7 +698,11 @@ FALSE {
|
|||||||
check_value(yylval);
|
check_value(yylval);
|
||||||
bool is_real_escape = true;
|
bool is_real_escape = true;
|
||||||
CHECK_REAL_ESCAPE(is_real_escape);
|
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);
|
HANDLE_FALSE_ESCAPE(p);
|
||||||
} else {
|
} else {
|
||||||
HANDLE_ESCAPE(p);
|
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
|
#undef YY_DECL
|
||||||
#endif
|
#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"
|
#line 72274 "../../../src/sql/parser/sql_parser_mysql_mode_lex.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user