Skip to content

Commit 6c0b6e6

Browse files
committed
Fixes to new data-buffer implementation.
1 parent 521fe47 commit 6c0b6e6

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

source/core/output_buffers/ut_output_bulk_buffer.tpb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ create or replace type body ut_output_bulk_buffer is
4949
select /*+ no_parallel */ self.output_id, self.last_write_message_id + rownum, t.column_value, a_item_type
5050
from table(a_text_list) t
5151
where t.column_value is not null or a_item_type is not null;
52-
self.last_write_message_id := self.last_write_message_id + SQL%rowcount;
52+
self.last_write_message_id := self.last_write_message_id + sql%rowcount;
5353
commit;
5454
end;
5555

@@ -87,15 +87,16 @@ create or replace type body ut_output_bulk_buffer is
8787
exit when l_data%notfound;
8888
end loop;
8989
close l_data;
90+
self.remove_buffer_info();
9091
end;
9192

9293
overriding member function get_lines_cursor(a_initial_timeout number := null, a_timeout_sec number := null) return sys_refcursor is
93-
lc_init_wait_sec constant number := coalesce(a_initial_timeout, 30 );
94+
lc_init_wait_sec constant number := coalesce(a_initial_timeout, 10 );
9495
l_already_waited_sec number(10,2) := 0;
9596
l_sleep_time number(2,1);
9697
l_exists integer;
9798
l_finished boolean := false;
98-
l_data_produced boolean;
99+
l_data_produced boolean := false;
99100
l_producer_active boolean := false;
100101
l_producer_started boolean := false;
101102
l_producer_finished boolean := false;
@@ -115,11 +116,13 @@ create or replace type body ut_output_bulk_buffer is
115116
l_producer_active := (self.get_lock_status() <> 0);
116117
l_producer_started := (l_producer_active or l_data_produced ) or l_producer_started;
117118
l_producer_finished := (l_producer_started and not l_producer_active) or l_producer_finished;
118-
119119
l_finished :=
120120
self.timeout_producer_not_finished(l_producer_finished, l_already_waited_sec, a_timeout_sec)
121121
or self.timeout_producer_not_started(l_producer_started, l_already_waited_sec, lc_init_wait_sec)
122122
or l_producer_finished;
123+
124+
dbms_lock.sleep(l_sleep_time);
125+
l_already_waited_sec := l_already_waited_sec + l_sleep_time;
123126
end loop;
124127

125128
open l_results for
@@ -152,8 +155,8 @@ create or replace type body ut_output_bulk_buffer is
152155
exit when l_data%notfound;
153156
end loop;
154157
close l_data;
155-
return;
156158
self.remove_buffer_info();
159+
return;
157160
end;
158161

159162
end;

0 commit comments

Comments
 (0)