From ec268010bfc8d9d7cb48b652c99feaad4b22f3f0 Mon Sep 17 00:00:00 2001 From: obdev Date: Thu, 24 Nov 2022 15:07:40 +0000 Subject: [PATCH] check sqlstate valid in resolver stage --- src/pl/ob_pl_resolver.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/pl/ob_pl_resolver.cpp b/src/pl/ob_pl_resolver.cpp index cff72c0d06..5b28e53b29 100644 --- a/src/pl/ob_pl_resolver.cpp +++ b/src/pl/ob_pl_resolver.cpp @@ -5344,6 +5344,11 @@ int ObPLResolver::resolve_signal(const ObStmtNodeTree *parse_tree, ObPLSignalStm if (!lib::is_oracle_mode() && SQL_STATE != value->type_) { ret = OB_ERR_SP_BAD_CONDITION_TYPE; LOG_WARN("SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE", K(value->type_), K(ret)); + } else if (!is_sqlstate_valid(value->sql_state_, value->str_len_) + || is_sqlstate_completion(value->sql_state_)) { + ret = OB_ER_SP_BAD_SQLSTATE; + LOG_USER_ERROR(OB_ER_SP_BAD_SQLSTATE, static_cast(value->str_len_), value->sql_state_); + LOG_WARN("Bad SQLSTATE", K(ret)); } else { stmt->set_value(*value); stmt->set_ob_error_code(value->error_code_);