diff --git a/src/common/pl/plpgsql/src/pl_debugger.cpp b/src/common/pl/plpgsql/src/pl_debugger.cpp index d9d7269f7..d2676b8b5 100644 --- a/src/common/pl/plpgsql/src/pl_debugger.cpp +++ b/src/common/pl/plpgsql/src/pl_debugger.cpp @@ -190,7 +190,7 @@ void check_debug(PLpgSQL_function* func, PLpgSQL_execstate* estate) /* maintain session's debug server is on base turn on function */ u_sess->plsql_cxt.cur_debug_server = func->debug; } - func->debug->stop_next_stmt = true; + func->debug->stop_next_stmt = need_continue_into ? false : true; } } diff --git a/src/test/regress/expected/pl_debugger_client.out b/src/test/regress/expected/pl_debugger_client.out index 4c9d95ff2..9d994e05a 100755 --- a/src/test/regress/expected/pl_debugger_client.out +++ b/src/test/regress/expected/pl_debugger_client.out @@ -1559,22 +1559,23 @@ select funcname, lineno, query from dbe_pldebugger.continue(); "anonymous block" | 8 | k = test_increment(3); (1 row) -select funcname, lineno, query from dbe_pldebugger.step(); - funcname | lineno | query -----------------+--------+----------------- - test_increment | 5 | x := x + 1; -(1 row) - -select funcname, lineno, query from dbe_pldebugger.next(); +insert into tmp_holder select * from dbe_pldebugger.add_breakpoint((select oid from pg_proc where proname='test_increment'), 6); -- ok +select funcname, lineno, query from dbe_pldebugger.continue(); funcname | lineno | query ----------------+--------+----------------- test_increment | 6 | y := y * 2; (1 row) +select funcname, lineno, query from dbe_pldebugger.step(); + funcname | lineno | query +----------------+--------+--------------- + test_increment | 7 | RETURN y; +(1 row) + select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); frameno | funcname | lineno | query ---------+-------------------+--------+---------------------------- - 0 | test_increment | 6 | y := y * 2; + 0 | test_increment | 7 | RETURN y; 1 | "anonymous block" | 8 | k = test_increment(3); (2 rows) @@ -1614,5 +1615,6 @@ select * from tmp_holder; true true true -(8 rows) + 2 +(9 rows) diff --git a/src/test/regress/sql/pl_debugger_client.sql b/src/test/regress/sql/pl_debugger_client.sql index aca8125d5..1e2873fe8 100644 --- a/src/test/regress/sql/pl_debugger_client.sql +++ b/src/test/regress/sql/pl_debugger_client.sql @@ -483,8 +483,9 @@ insert into tmp_holder select * from dbe_pldebugger.enable_breakpoint(1); -- ok insert into tmp_holder select * from dbe_pldebugger.delete_breakpoint(0); -- ok select funcname, lineno, query from dbe_pldebugger.next(); select funcname, lineno, query from dbe_pldebugger.continue(); +insert into tmp_holder select * from dbe_pldebugger.add_breakpoint((select oid from pg_proc where proname='test_increment'), 6); -- ok +select funcname, lineno, query from dbe_pldebugger.continue(); select funcname, lineno, query from dbe_pldebugger.step(); -select funcname, lineno, query from dbe_pldebugger.next(); select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); select * from dbe_pldebugger.info_locals(); select funcname, lineno, query from dbe_pldebugger.finish();