add mock statements

This commit is contained in:
Charles0429
2024-07-10 11:30:10 +00:00
committed by ob-robot
parent 806e30570b
commit 3f677b4d80
7 changed files with 128 additions and 0 deletions

View File

@ -2543,6 +2543,8 @@ typedef enum ObItemType
// select into outfile // select into outfile
T_BUFFER_SIZE, T_BUFFER_SIZE,
T_PARTITION_EXPR, T_PARTITION_EXPR,
T_CACHE_INDEX,
T_LOAD_INDEX_INTO_CACHE,
T_MAX //Attention: add a new type before T_MAX T_MAX //Attention: add a new type before T_MAX
} ObItemType; } ObItemType;

View File

@ -572,6 +572,8 @@ int ObCmdExecutor::execute(ObExecContext &ctx, ObICmd &cmd)
} }
case stmt::T_REPAIR_TABLE: case stmt::T_REPAIR_TABLE:
case stmt::T_CHECKSUM_TABLE: case stmt::T_CHECKSUM_TABLE:
case stmt::T_CACHE_INDEX:
case stmt::T_LOAD_INDEX_INTO_CACHE:
case stmt::T_FLUSH_PRIVILEGES: { case stmt::T_FLUSH_PRIVILEGES: {
DEFINE_EXECUTE_CMD(ObMockStmt, ObMockExecutor); DEFINE_EXECUTE_CMD(ObMockStmt, ObMockExecutor);
break; break;

View File

@ -554,6 +554,7 @@ END_P SET_VAR DELIMITER
%type <node> ttl_definition ttl_expr ttl_unit %type <node> ttl_definition ttl_expr ttl_unit
%type <node> id_dot_id id_dot_id_dot_id %type <node> id_dot_id id_dot_id_dot_id
%type <node> opt_table_list opt_repair_mode opt_repair_option_list repair_option repair_option_list opt_checksum_option %type <node> opt_table_list opt_repair_mode opt_repair_option_list repair_option repair_option_list opt_checksum_option
%type <node> cache_index_stmt load_index_into_cache_stmt tbl_index_list tbl_index tbl_partition_list opt_tbl_partition_list tbl_index_or_partition_list tbl_index_or_partition opt_ignore_leaves key_cache_name
%start sql_stmt %start sql_stmt
%% %%
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -18665,6 +18666,111 @@ CHECKSUM TABLE opt_table_list opt_checksum_option
(void)$4; (void)$4;
malloc_terminal_node($$, result->malloc_pool_, T_CHECKSUM_TABLE); malloc_terminal_node($$, result->malloc_pool_, T_CHECKSUM_TABLE);
} }
| cache_index_stmt
{
$$ = $1;
malloc_terminal_node($$, result->malloc_pool_, T_CACHE_INDEX);
}
| load_index_into_cache_stmt
{
$$ = $1;
malloc_terminal_node($$, result->malloc_pool_, T_LOAD_INDEX_INTO_CACHE);
}
;
load_index_into_cache_stmt:
LOAD INDEX INTO CACHE tbl_index_or_partition_list opt_ignore_leaves
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $5, $6);
}
;
cache_index_stmt:
CACHE INDEX tbl_index_list IN key_cache_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $3, $5);
}
| CACHE INDEX normal_relation_factor PARTITION '(' tbl_partition_list ')' IN key_cache_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 3, $3, $6, $9);
}
;
key_cache_name:
normal_relation_factor
{
$$ = $1;
};
tbl_index_list:
tbl_index
{
$$ = $1;
}
| tbl_index_list ',' tbl_index
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $1, $3);
}
;
tbl_index:
normal_relation_factor opt_key_or_index opt_index_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 3, $1, $2, $3);
}
;
tbl_partition_list:
ALL
{
malloc_terminal_node($$, result->malloc_pool_, T_INT);
$$->value_ = 1;
}
| name_list
{
$$ = $1;
}
;
opt_tbl_partition_list:
PARTITION '(' tbl_partition_list ')'
{
$$ = $3;
}
| /*empty*/
{ $$ = NULL; }
;
tbl_index_or_partition_list:
tbl_index_or_partition
{
$$ = $1;
}
| tbl_index_or_partition_list ',' tbl_index_or_partition
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $1, $3);
}
;
opt_ignore_leaves:
IGNORE LEAVES
{
malloc_terminal_node($$, result->malloc_pool_, T_INT);
$$->value_ = 1;
}
| /*empty*/
{ $$ = NULL; }
;
tbl_index_or_partition:
normal_relation_factor opt_key_or_index '(' name_list ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 3, $1, $2, $4);
}
| normal_relation_factor opt_tbl_partition_list
{
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $1, $2);
}
; ;
opt_sql_throttle_for_priority: opt_sql_throttle_for_priority:

View File

@ -37,6 +37,12 @@ int ObMockResolver::resolve(const ParseNode& parse_tree)
case T_CHECKSUM_TABLE: case T_CHECKSUM_TABLE:
mock_stmt->set_stmt_type(stmt::T_CHECKSUM_TABLE); mock_stmt->set_stmt_type(stmt::T_CHECKSUM_TABLE);
break; break;
case T_CACHE_INDEX:
mock_stmt->set_stmt_type(stmt::T_CACHE_INDEX);
break;
case T_LOAD_INDEX_INTO_CACHE:
mock_stmt->set_stmt_type(stmt::T_LOAD_INDEX_INTO_CACHE);
break;
default: default:
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected parse tree type", K(ret), K(parse_tree.type_)); LOG_WARN("unexpected parse tree type", K(ret), K(parse_tree.type_));

View File

@ -1221,6 +1221,14 @@ int ObResolver::resolve(IsPrepared if_prepared, const ParseNode &parse_tree, ObS
REGISTER_STMT_RESOLVER(Mock); REGISTER_STMT_RESOLVER(Mock);
break; break;
} }
case T_CACHE_INDEX: {
REGISTER_STMT_RESOLVER(Mock);
break;
}
case T_LOAD_INDEX_INTO_CACHE: {
REGISTER_STMT_RESOLVER(Mock);
break;
}
default: { default: {
ret = OB_NOT_SUPPORTED; ret = OB_NOT_SUPPORTED;
const char *type_name = get_type_name(parse_tree.type_); const char *type_name = get_type_name(parse_tree.type_);

View File

@ -2332,6 +2332,8 @@ stmt::StmtType ObResolverUtils::get_stmt_type_by_item_type(const ObItemType item
SET_STMT_TYPE(T_SHOW_OPEN_TABLES); SET_STMT_TYPE(T_SHOW_OPEN_TABLES);
SET_STMT_TYPE(T_REPAIR_TABLE); SET_STMT_TYPE(T_REPAIR_TABLE);
SET_STMT_TYPE(T_CHECKSUM_TABLE); SET_STMT_TYPE(T_CHECKSUM_TABLE);
SET_STMT_TYPE(T_CACHE_INDEX);
SET_STMT_TYPE(T_LOAD_INDEX_INTO_CACHE);
#undef SET_STMT_TYPE #undef SET_STMT_TYPE
case T_ROLLBACK: case T_ROLLBACK:
case T_COMMIT: { case T_COMMIT: {

View File

@ -355,6 +355,8 @@ OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_CHECK_AND_PUT, err_stmt_type_priv, 354)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_CHECK_AND_DELETE, err_stmt_type_priv, 355) OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_CHECK_AND_DELETE, err_stmt_type_priv, 355)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_HYBRID_BATCH, err_stmt_type_priv, 356) OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_HYBRID_BATCH, err_stmt_type_priv, 356)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_OTHER, err_stmt_type_priv, 357) OB_STMT_TYPE_DEF_UNKNOWN_AT(T_HBASE_OTHER, err_stmt_type_priv, 357)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_CACHE_INDEX, no_priv_needed, 358)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_LOAD_INDEX_INTO_CACHE, no_priv_needed, 359)
OB_STMT_TYPE_DEF_UNKNOWN_AT(T_MAX, err_stmt_type_priv, 500) OB_STMT_TYPE_DEF_UNKNOWN_AT(T_MAX, err_stmt_type_priv, 500)
#endif #endif