@@ -568,6 +568,36 @@ def trace_session_correct_with_jit(node: PostgresNode):
568568 result = node_read_file_one_line (node , f"/pg_uprobe/trace_file.txt_{ conn .pid } " )
569569 validate_each_session_trace_result (json .loads (result ), conn .pid )
570570
571+ def trace_session_correct_fetch_zero_desc (node : PostgresNode ):
572+ with node .connect ("postgres" , autocommit = True ) as conn :
573+ start_session_trace (conn )
574+
575+ conn .execute ("CREATE FUNCTION create_temp_tab() RETURNS text \
576+ LANGUAGE plpgsql AS $$ \
577+ BEGIN \
578+ CREATE TEMP TABLE new_table (f1 float); \
579+ INSERT INTO new_table SELECT invert(0.0); \
580+ RETURN 'foo'; \
581+ END $$;" )
582+ conn .execute ("BEGIN" )
583+ conn .execute ("DECLARE ctt CURSOR FOR SELECT create_temp_tab()" )
584+ conn .execute ("SAVEPOINT s1" )
585+ try :
586+ conn .execute ("FETCH ctt" )
587+ except :
588+ pass
589+ conn .execute ("ROLLBACK TO s1" )
590+ try :
591+ conn .execute ("FETCH ctt" )
592+ except :
593+ pass
594+ conn .execute ("COMMIT" )
595+
596+ stop_session_trace (conn )
597+
598+ result = node_read_file_one_line (node , f"/pg_uprobe/trace_file.txt_{ conn .pid } " )
599+ validate_each_session_trace_result (json .loads (result ), conn .pid )
600+
571601def run_tests (node : PostgresNode ):
572602 test_wrapper (node , trace_current_session_trace )
573603 test_wrapper (node , trace_current_session_trace_non_sleep_buffer_locks )
@@ -585,4 +615,5 @@ def run_tests(node: PostgresNode):
585615 test_wrapper (node , trace_session_plpgsql_functions_exceptions )
586616 test_wrapper (node , trace_session_correct_executor_finish )
587617 test_wrapper (node , trace_session_fetch )
588- test_wrapper (node , trace_session_correct_with_jit )
618+ test_wrapper (node , trace_session_correct_with_jit )
619+ test_wrapper (node , trace_session_correct_fetch_zero_desc )
0 commit comments