From 4a4745e3094cef6e448ecc0ccbdeaf6215c6097e Mon Sep 17 00:00:00 2001 From: chenxiaobin19 <1025221611@qq.com> Date: Fri, 21 Apr 2023 17:40:32 +0800 Subject: [PATCH] fix plsql_show_all_error bug --- src/common/pl/plpgsql/src/gram.y | 1 - src/common/pl/plpgsql/src/pl_scanner.cpp | 1 + .../regress/expected/plsql_show_all_error.out | 27 +++++++++++++++++++ src/test/regress/sql/plsql_show_all_error.sql | 12 +++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/common/pl/plpgsql/src/gram.y b/src/common/pl/plpgsql/src/gram.y index ddfac99f15..a8fabc1bbc 100755 --- a/src/common/pl/plpgsql/src/gram.y +++ b/src/common/pl/plpgsql/src/gram.y @@ -9799,7 +9799,6 @@ make_execsql_stmt(int firsttoken, int location) HeapTuple rel_tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(rel_oid)); if (!HeapTupleIsValid(rel_tuple)) { yyerror("invalid type's rel tuple for insert.", true); - u_sess->plsql_cxt.have_error = true; } else { plpgsql_append_source_text(&ds, location, values_end_loc); diff --git a/src/common/pl/plpgsql/src/pl_scanner.cpp b/src/common/pl/plpgsql/src/pl_scanner.cpp index c04e981bf3..4a817411b0 100644 --- a/src/common/pl/plpgsql/src/pl_scanner.cpp +++ b/src/common/pl/plpgsql/src/pl_scanner.cpp @@ -606,6 +606,7 @@ void plpgsql_yyerror(const char* message, bool isError) { char* yytext = u_sess->plsql_cxt.curr_compile_context->core_yy->scanbuf + plpgsql_yylloc; int errstate = 0; + u_sess->plsql_cxt.have_error = true; #ifndef ENABLE_MULTIPLE_NODES if (u_sess->attr.attr_common.plsql_show_all_error && !isError) { errstate = NOTICE; diff --git a/src/test/regress/expected/plsql_show_all_error.out b/src/test/regress/expected/plsql_show_all_error.out index 55c6720f2f..30839c585b 100644 --- a/src/test/regress/expected/plsql_show_all_error.out +++ b/src/test/regress/expected/plsql_show_all_error.out @@ -1826,4 +1826,31 @@ $$ language plpgsql; ERROR: unsupported insert into table from non record type. at or near "i" LINE 6: insert into insert_table values i; ^ +truncate dbe_pldeveloper.gs_errors; +create table tab_1139605(id int,a1 int); +create function fun_1139605()return int +as +b int; +begin +select a1 into b,c from tab_1139605 where id=1; +return b; +end; +/ +NOTICE: syntax error at or near "from" +LINE 3: select a1 into b,c from tab_1139605 where id=1; + ^ +QUERY: DECLARE b int; +begin +select a1 into b,c from tab_1139605 where id=1; +return b; +end +ERROR: Debug mod,create procedure has error. +DETAIL: N/A +CONTEXT: compilation of PL/pgSQL function "fun_1139605" near line 2 +select count(*) from dbe_pldeveloper.gs_errors; + count +------- + 1 +(1 row) + set plsql_show_all_error to off; diff --git a/src/test/regress/sql/plsql_show_all_error.sql b/src/test/regress/sql/plsql_show_all_error.sql index db7c49b1ae..2cab9db606 100644 --- a/src/test/regress/sql/plsql_show_all_error.sql +++ b/src/test/regress/sql/plsql_show_all_error.sql @@ -1177,4 +1177,16 @@ return 1; end; $$ language plpgsql; +truncate dbe_pldeveloper.gs_errors; +create table tab_1139605(id int,a1 int); +create function fun_1139605()return int +as +b int; +begin +select a1 into b,c from tab_1139605 where id=1; +return b; +end; +/ +select count(*) from dbe_pldeveloper.gs_errors; + set plsql_show_all_error to off; -- Gitee