fix handling invalid character in identifier

This commit is contained in:
wjhh2008
2023-09-22 03:10:14 +00:00
committed by ob-robot
parent e4e09ecfb6
commit c13243ff23
54 changed files with 229 additions and 146 deletions

View File

@ -189,7 +189,7 @@ int TestFastParser::parse(const ObString &sql)
{
ObSQLMode mode = SMO_DEFAULT;
ParseResult parse_result;
ObCollationType connection_collation = CS_TYPE_UTF8MB4_GENERAL_CI;
ObCharsets4Parser charsets4parser;
if (lib::is_oracle_mode()) {
parse_result.sql_mode_ = (DEFAULT_ORACLE_MODE | SMO_ORACLE);
mode = (DEFAULT_ORACLE_MODE | SMO_ORACLE);
@ -197,14 +197,14 @@ int TestFastParser::parse(const ObString &sql)
parse_result.sql_mode_ = DEFAULT_MYSQL_MODE;
mode = DEFAULT_MYSQL_MODE;
}
ObParser parser(allocator_, mode, connection_collation);
ObParser parser(allocator_, mode, charsets4parser);
MEMSET(&parse_result, 0, sizeof(parse_result));
int ret1 = parser.parse(sql, parse_result, FP_MODE);
int64_t param_num = 0;
char *no_param_sql_ptr = NULL;
int64_t no_param_sql_len = 0;
ParamList *p_list = NULL;
FPContext fp_ctx(connection_collation);
FPContext fp_ctx(charsets4parser);
fp_ctx.enable_batched_multi_stmt_ = false;
fp_ctx.is_udr_mode_ = false;
int ret2 = ObFastParser::parse(sql, fp_ctx, allocator_,

View File

@ -57,7 +57,7 @@ void TestPLParser::TearDown()
TEST_F(TestPLParser, basic_test)
{
ObPLParser parser(allocator_, CS_TYPE_UTF8MB4_BIN);
ObPLParser parser(allocator_, ObCharsets4Parser());
ParseResult parse_result;
// const char *query_str = "CREATE PROCEDURE sp (a varchar(10), b int(10)) BEGIN DECLARE c int default 1; DECLARE d, e varchar(11); IF 1=1 THEN select * from t1; ELSE IF 2=1 THEN select * from t1; ELSE select 1; END IF; END";
// const char *query_str = "create procedure sp() begin declare i bigint; if(i=1) then select 1 from dual; end if; end";

View File

@ -61,7 +61,7 @@ TEST_F(TestSqlParameterization, parameterize_sql)
ObString stmt = ObString::make_string("select * from t1 where c1 = 3 group by 2 order by 1");
ObSEArray<const ObPCParam *, OB_PC_NOT_PARAM_COUNT> not_params;
ObFastParserResult fp_result;
FPContext fp_ctx(ObCharset::get_system_collation());
FPContext fp_ctx(ObCharsets4Parser());
fp_ctx.sql_mode_ = SMO_DEFAULT;
if (OB_FAIL(ObSqlParameterization::fast_parser(allocator,
fp_ctx,