implement sql_mode NO_BACKSLASH_ESCAPES

This commit is contained in:
Monk-Liu
2021-11-29 11:36:40 +08:00
committed by LINxiansheng
parent a2b5b77779
commit bd258f9338
5 changed files with 171 additions and 151 deletions

View File

@ -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

View File

@ -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)
{ {

View File

@ -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

View File

@ -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"