fix parse bug

This commit is contained in:
chimyue 2024-12-05 07:45:44 +00:00 committed by ob-robot
parent e472494db5
commit 7fda92db95
5 changed files with 18 additions and 23 deletions

View File

@ -34,9 +34,9 @@ namespace jit
uint64_t ObLLVMDIType::get_size_bits()
{
return OB_ISNULL(v_) ? 0 : v_->getSizeInBits();
}
uint64_t ObLLVMDIType::get_align_bits()
}
uint64_t ObLLVMDIType::get_align_bits()
{
return OB_ISNULL(v_) ? 0 : v_->getAlignInBits();
}
@ -161,9 +161,9 @@ int ObLLVMDIHelper::create_local_variable(const ObString &name, uint32_t arg_no,
} else {
var_ptr = (arg_no > 0) ?
jc_->dbuilder_.createParameterVariable(sp, StringRef(name.ptr(), name.length()),
arg_no, file, line, type.get_v(), true) :
jc_->dbuilder_.createAutoVariable(sp, StringRef(name.ptr(), name.length()),
file, line, type.get_v(), true);
arg_no, file, line, type.get_v(), true) :
jc_->dbuilder_.createAutoVariable(sp, StringRef(name.ptr(), name.length()),
file, line, type.get_v(), true);
if (OB_ISNULL(var_ptr)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("failed to create local variable", K(name), K(ret));
@ -221,9 +221,9 @@ int ObLLVMDIHelper::create_pointer_type(ObLLVMDIType &pointee_type,
int ret = OB_SUCCESS;
DIType *pte_type = pointee_type.get_v();
DIType *ptr_type = NULL;
if (OB_ISNULL(jc_)) {
ret = OB_NOT_INIT;
LOG_WARN("jc is NULL", K(ret));
if (OB_ISNULL(jc_)) {
ret = OB_NOT_INIT;
LOG_WARN("jc is NULL", K(ret));
} else if (OB_ISNULL(ptr_type = jc_->dbuilder_.createPointerType(pte_type, 64, 64))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("failed to create pointer type", K(ret));

View File

@ -62,7 +62,7 @@ enum SelectParserOffset
PARSE_SELECT_FETCH_TEMP, //use to temporary store fetch clause in parser
PARSE_SELECT_WITH_CHECK_OPTION,
PARSE_SELECT_INTO_EXTRA,// ATTENTION!! SELECT_INTO_EXTRA must be the last one
PARSE_SELECT_MAX_IDX
PARSE_SELECT_MAX_IDX // = 24, ATTENTION!! adjust malloc_select_node(node, malloc_pool) after adding a new enum value
};
enum GrantParseOffset

View File

@ -1008,8 +1008,8 @@ for (int32_t _i = 0; _i < _yyleng; ++_i) {
NULL, \
NULL, \
NULL, \
NULL, \
NULL);
NULL, /* PARSE_SELECT_WITH_CHECK_OPTION */ \
NULL /* PARSE_SELECT_INTO_EXTRA */);
// only used by setup_token_pos_info_and_dup_string for now
#define check_ret(stmt, loc, extra) \
@ -1391,11 +1391,7 @@ do {\
set_node->children_[0] = left_body; \
set_node->children_[1] = right_body; \
set_node->value_ = 2; \
select_node = new_non_terminal_node(result->malloc_pool_, T_SELECT, PARSE_SELECT_MAX_IDX, NULL, NULL, NULL, NULL, NULL, \
NULL, NULL, NULL, NULL, NULL, \
NULL, NULL, NULL, NULL, NULL, \
NULL, NULL, NULL, NULL, NULL, \
NULL, NULL, NULL); \
malloc_select_node(select_node, result->malloc_pool_); \
if (OB_ISNULL(select_node)) { \
if (OB_PARSER_SUCCESS == result->extra_errno_) { \
result->extra_errno_ = OB_PARSER_ERR_NO_MEMORY; \

View File

@ -47,8 +47,7 @@ extern int easy_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
malloc_terminal_node(display_node, result->malloc_pool_, display_type); \
} \
malloc_non_terminal_node(explain_stmt, result->malloc_pool_, T_EXPLAIN, 5, \
type_node, display_node, stmt, into_table, set_statement_id);
type_node, display_node, into_table, set_statement_id, stmt);
%}
%destructor {destroy_tree($$);}<node>
@ -14551,7 +14550,7 @@ explain_or_desc relation_factor opt_desc_column_option
| explain_or_desc FORMAT COMP_EQ format_name explainable_stmt
{
(void)($1);
malloc_non_terminal_node($$, result->malloc_pool_, T_EXPLAIN, 5, $4, NULL, $5, NULL, NULL);
malloc_non_terminal_node($$, result->malloc_pool_, T_EXPLAIN, 5, $4, NULL, NULL, NULL, $5);
}
;

View File

@ -19,9 +19,9 @@ using namespace sql;
using namespace common;
const static int64_t EXPLAIN_FORMAT = 0;
const static int64_t EXPLAIN_DISPLAY_OPTION = 1;
const static int64_t EXPLAIN_CHILD_STMT = 2;
const static int64_t EXPLAIN_INTO_TABLE = 3;
const static int64_t EXPLAIN_STMT_ID = 4;
const static int64_t EXPLAIN_INTO_TABLE = 2;
const static int64_t EXPLAIN_STMT_ID = 3;
const static int64_t EXPLAIN_CHILD_STMT = 4;
int ObExplainResolver::resolve(const ParseNode &parse_tree)
{
int ret = OB_SUCCESS;