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