Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a1ee462

Browse files
authored
Merge branch 'develop' into fix/invalid_html_tag
2 parents 6017d09 + b94cae8 commit a1ee462

3 files changed

Lines changed: 25 additions & 14 deletions

File tree

source/core/ut_utils.pkb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -437,28 +437,29 @@ procedure append_to_clob(a_src_clob in out nocopy clob, a_clob_table t_clob_tab,
437437
procedure save_dbms_output_to_cache is
438438
l_status number;
439439
l_line varchar2(32767);
440-
l_line_no integer := 1;
440+
l_offset integer := 0;
441441
l_lines ut_varchar2_rows := ut_varchar2_rows();
442442
c_lines_limit constant integer := 100;
443443
pragma autonomous_transaction;
444444

445-
procedure flush_lines is
445+
procedure flush_lines(a_lines ut_varchar2_rows, a_offset integer) is
446446
begin
447447
insert into ut_dbms_output_cache (seq_no,text)
448-
select rownum, column_value
449-
from table(l_lines);
450-
l_lines.delete;
448+
select rownum+a_offset, column_value
449+
from table(a_lines);
451450
end;
452451
begin
453452
loop
454453
dbms_output.get_line(line => l_line, status => l_status);
455454
exit when l_status = 1;
456455
l_lines := l_lines multiset union all ut_utils.convert_collection(ut_utils.clob_to_table(l_line||chr(7),4000));
457456
if l_lines.count > c_lines_limit then
458-
flush_lines();
457+
flush_lines(l_lines, l_offset);
458+
l_offset := l_offset + l_lines.count;
459+
l_lines.delete;
459460
end if;
460461
end loop;
461-
flush_lines();
462+
flush_lines(l_lines, l_offset);
462463
commit;
463464
end;
464465

source/core/ut_utils.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ create or replace package ut_utils authid definer is
2121
*
2222
*/
2323

24-
gc_version constant varchar2(50) := 'v3.1.2.1939-develop';
24+
gc_version constant varchar2(50) := 'v3.1.2.1946-develop';
2525

2626
/* Constants: Event names */
2727
subtype t_event_name is varchar2(30);

test/api/test_ut_runner.pkb

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,25 +180,35 @@ end;';
180180
procedure run_keep_dbms_output_buffer is
181181
l_expected dbmsoutput_linesarray;
182182
l_actual dbmsoutput_linesarray;
183-
l_lines number := 100;
183+
l_results ut3.ut_varchar2_list;
184+
l_lines number := 10000;
184185
begin
185186
--Arrange
186187
create_test_spec();
187188
create_test_body(0);
189+
188190
l_expected := dbmsoutput_linesarray(
189191
'A text placed into DBMS_OUTPUT',
190192
'Another line',
191193
lpad('A very long line',10000,'a')
192194
);
193-
dbms_output.put_line(l_expected(1));
194-
dbms_output.put_line(l_expected(2));
195-
dbms_output.put_line(l_expected(3));
195+
for i in 1 .. 300 loop
196+
l_expected.extend;
197+
l_expected(l_expected.last) := 'line '||i;
198+
end loop;
199+
200+
for i in 1 .. l_expected.count loop
201+
dbms_output.put_line(l_expected(i));
202+
end loop;
203+
196204
--Act
197-
ut3.ut.run('test_cache');
205+
select *
206+
bulk collect into l_results
207+
from table(ut3.ut.run('test_cache'));
198208

199209
--Assert
200210
dbms_output.get_lines(lines => l_actual, numlines => l_lines);
201-
for i in 1 .. l_expected.count loop
211+
for i in 1 .. l_lines loop
202212
ut.expect(l_actual(i)).to_equal(l_expected(i));
203213
end loop;
204214
drop_test_package();

0 commit comments

Comments
 (0)