!4140 修复嵌套函数step与continue问题

Merge pull request !4140 from 李秦朗/continue_into
This commit is contained in:
opengauss_bot
2023-09-14 02:22:18 +00:00
committed by Gitee
3 changed files with 5 additions and 79 deletions

View File

@ -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;
}
}

View File

@ -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 | <UNKNOWN> | | f
test.a | int4 | 0 | | f
test.b | varchar | <UNKNOWN> | | f
test.c | timestamp | Sat Jan 01 00:00:00 2000 | | f
r | Row | [ (null), (null), (null),] | | f
rec | Rec | <UNKNOWN> | | f
b_tmp | text | <UNKNOWN> | | 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 | <UNKNOWN> | | f
t_tmp | tsquery | <UNKNOWN> | | 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));

View File

@ -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);