From 7acad5e9311304c11ce11fbc32d6c862e65e0924 Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 22 Jan 2024 09:42:40 +0000 Subject: [PATCH] Fix prepare stmt error 4016 --- deps/oblib/src/lib/number/ob_number_v2.cpp | 6 +++++- src/sql/engine/expr/ob_number_format_models.cpp | 6 +++++- src/sql/resolver/prepare/ob_prepare_resolver.cpp | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/deps/oblib/src/lib/number/ob_number_v2.cpp b/deps/oblib/src/lib/number/ob_number_v2.cpp index 94d4d4f373..9efb632b72 100644 --- a/deps/oblib/src/lib/number/ob_number_v2.cpp +++ b/deps/oblib/src/lib/number/ob_number_v2.cpp @@ -3539,7 +3539,11 @@ int ObNumber::to_sci_str_(ObString &num_str, char *buf, } buf[digit_start_pos] = '1'; buf[digit_start_pos + 1] = '.'; - ++pow_size; + if ('-' == pow_str[1]) { + --pow_size; + } else { + ++pow_size; + } } } } diff --git a/src/sql/engine/expr/ob_number_format_models.cpp b/src/sql/engine/expr/ob_number_format_models.cpp index 864b52fdbd..2c52e6512d 100644 --- a/src/sql/engine/expr/ob_number_format_models.cpp +++ b/src/sql/engine/expr/ob_number_format_models.cpp @@ -1696,7 +1696,11 @@ int ObNFMBase::num_str_to_sci(const common::ObString &num_str, const int32_t sca if (decimal_appear) { buf[digit_start_pos + 1] = '.'; } - ++pow_size; + if ('-' == pow_str[1]) { + --pow_size; + } else { + ++pow_size; + } } } } diff --git a/src/sql/resolver/prepare/ob_prepare_resolver.cpp b/src/sql/resolver/prepare/ob_prepare_resolver.cpp index 8626d51d72..c338554d36 100644 --- a/src/sql/resolver/prepare/ob_prepare_resolver.cpp +++ b/src/sql/resolver/prepare/ob_prepare_resolver.cpp @@ -54,7 +54,7 @@ int ObPrepareResolver::resolve(const ParseNode &parse_tree) prepare_stmt->set_prepare_sql(stmt_expr); } } else { - ret = OB_ERR_UNEXPECTED; + ret = OB_ERR_PARSER_SYNTAX; LOG_WARN("invalid name node", K(name_node->type_), K(ret)); } }