diff --git a/src/common/pl/plpgsql/src/gram.y b/src/common/pl/plpgsql/src/gram.y index ddfac99f1572a030760c5551addc8e99afae5cde..a8fabc1bbcaedec9a5fb94af61053cec7cba3dbe 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 c04e981bf3d5a50321e5ae991fe98c0f2d73e716..4a817411b0110447ecf12fd2d45df0a23adcb14d 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 55c6720f2fa05c439287d3d4224cd88030d1ba39..30839c585bf82310eb5f8a9860951996a5943701 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 db7c49b1aed05ff87d9c217c8e65eb22e5bf3fde..2cab9db60654a1d2e7fa15e003f0a2ff79968117 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;