diff --git a/src/common/pl/plpgsql/src/pl_debugger.cpp b/src/common/pl/plpgsql/src/pl_debugger.cpp index d2676b8b5..e931fc454 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 = need_continue_into ? false : true; + func->debug->stop_next_stmt = (need_continue_into && !is_stepinto) ? false : true; } } diff --git a/src/test/regress/expected/pl_debugger_client.out b/src/test/regress/expected/pl_debugger_client.out index 9d994e05a..e46163a37 100755 --- a/src/test/regress/expected/pl_debugger_client.out +++ b/src/test/regress/expected/pl_debugger_client.out @@ -661,54 +661,12 @@ select * from tmp_holder; 2:12: raise info 'pi_return : %',pi_return ; (6 rows) -select funcname, lineno, query from dbe_pldebugger.continue(); - funcname | lineno | query -------------+--------+--------------- - test_debug | 15 | cnt := 0; -(1 row) - -select * from dbe_pldebugger.info_locals(); - varname | vartype | value | package_name | isconst ------------+-----------+----------------------------+--------------+--------- - x | int4 | 1 | | f - sql_stmt | varchar | | | f - test.a | int4 | 0 | | f - test.b | varchar | | | f - test.c | timestamp | Sat Jan 01 00:00:00 2000 | | f - r | Row | [ (null), (null), (null),] | | f - rec | Rec | | | f - b_tmp | text | | | f - cnt | int4 | 0 | | f - a_tmp | int4 | 0 | | f - cur | refcursor | {name: +| | f - | | is_open: f +| | - | | found: f +| | - | | not_found: f +| | - | | row_count: 0} | | - n_tmp | numeric | | | f - t_tmp | tsquery | | | f - criterion | int4 | 0 | | f - cur_arg | refcursor | {name: +| | f - | | is_open: f +| | - | | found: f +| | - | | not_found: f +| | - | | row_count: 0} | | - index_1 | int4 | 0 | | f -(16 rows) - select funcname, lineno, query from dbe_pldebugger.continue(); funcname | lineno | query ------------+--------+------------------------------------------------ test_debug | 31 | SELECT b FROM test where a = 7 INTO b_tmp; (1 row) -select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); - frameno | funcname | lineno | query ----------+-------------+--------+------------------------------------------------ - 0 | test_debug | 31 | SELECT b FROM test where a = 7 INTO b_tmp; - 1 | test_debug4 | 7 | call test_debug(a); -(2 rows) - select * from dbe_pldebugger.info_locals(); varname | vartype | value | package_name | isconst -----------+-----------+--------------------------------------------------------+--------------+--------- @@ -859,12 +817,6 @@ begin insert into tmp_holder select breakpointno || ':' || lineno || ':' || query from dbe_pldebugger.info_breakpoints(); end; $$; -select funcname, lineno, query from dbe_pldebugger.finish(); - funcname | lineno | query -------------+--------+--------------- - test_debug | 15 | cnt := 0; -(1 row) - select funcname, lineno, query from dbe_pldebugger.finish(); funcname | lineno | query ------------+--------+------------------------------------------------ @@ -956,20 +908,6 @@ select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); 1 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); (2 rows) -select funcname, lineno, query from dbe_pldebugger.continue(); - funcname | lineno | query -----------------------+--------+--------------------------------- - test_debug_recursive | 3 | return query select ct, pr; -(1 row) - -select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); - frameno | funcname | lineno | query ----------+----------------------+--------+------------------------------------------------------------------------------- - 0 | test_debug_recursive | 3 | return query select ct, pr; - 1 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); - 2 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); -(3 rows) - select funcname, lineno, query from dbe_pldebugger.continue(); funcname | lineno | query ----------------------+--------+------------------------------------------------------------------------------- @@ -985,15 +923,15 @@ select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); (3 rows) select funcname, lineno, query from dbe_pldebugger.continue(); - funcname | lineno | query -----------------------+--------+--------------------------------- - test_debug_recursive | 3 | return query select ct, pr; + funcname | lineno | query +----------------------+--------+------------------------------------------------------------------------------- + test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); (1 row) select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); frameno | funcname | lineno | query ---------+----------------------+--------+------------------------------------------------------------------------------- - 0 | test_debug_recursive | 3 | return query select ct, pr; + 0 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); 1 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); 2 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); 3 | test_debug_recursive | 5 | return query select * from test_debug_recursive(ct+ 1, pr * (ct+ 1)); diff --git a/src/test/regress/sql/pl_debugger_client.sql b/src/test/regress/sql/pl_debugger_client.sql index 1e2873fe8..3f0034531 100644 --- a/src/test/regress/sql/pl_debugger_client.sql +++ b/src/test/regress/sql/pl_debugger_client.sql @@ -218,12 +218,6 @@ select * from dbe_pldebugger.info_locals(); select funcname, lineno, query from dbe_pldebugger.continue(); -select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); - -select * from dbe_pldebugger.info_locals(); - -select funcname, lineno, query from dbe_pldebugger.continue(); - select funcname, lineno, query from dbe_pldebugger.continue(); -- test with finish without encountered breakpoint @@ -269,8 +263,6 @@ select funcname, lineno, query from dbe_pldebugger.finish(); select funcname, lineno, query from dbe_pldebugger.finish(); -select funcname, lineno, query from dbe_pldebugger.finish(); - -- test recursive debug select pg_sleep(1); @@ -313,10 +305,6 @@ select funcname, lineno, query from dbe_pldebugger.continue(); select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); -select funcname, lineno, query from dbe_pldebugger.continue(); - -select frameno, funcname, lineno, query from dbe_pldebugger.backtrace(); - select * from dbe_pldebugger.info_locals(); select * from dbe_pldebugger.info_locals(0);