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

Skip to content

Commit 8911f97

Browse files
committed
Small improvements and cleanup.
1 parent 3bc8da5 commit 8911f97

4 files changed

Lines changed: 126 additions & 174 deletions

File tree

source/core/annotations/ut_annotation_manager.pkb

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,18 @@ create or replace package body ut_annotation_manager as
5858
begin
5959
open l_result for
6060
q'[select s.name, s.text
61-
from ]'||l_sources_view||q'[ s
62-
where s.type = :a_object_type
63-
and s.owner = :a_object_owner
64-
and s.name
65-
in (select x.name
66-
from ]'||l_sources_view||q'[ x
67-
where x.type = :a_object_type
68-
and x.owner = :a_object_owner
69-
and x.text like '%--%\%%' escape '\'
70-
)
71-
order by name, line]'
61+
from (select s.name, s.text, s.line,
62+
max(case when s.text like '%--%\%%' escape '\'
63+
and regexp_like(s.text,'--\s*%')
64+
then 'Y' else 'N' end
65+
)
66+
over(partition by s.name) is_annotated
67+
from ]'||l_sources_view||q'[ s
68+
where s.type = :a_object_type
69+
and s.owner = :a_object_owner
70+
) s
71+
where s.is_annotated = 'Y'
72+
order by s.name, s.line]'
7273
using a_object_type, a_object_owner, a_object_type, a_object_owner;
7374

7475
return l_result;
@@ -81,25 +82,25 @@ create or replace package body ut_annotation_manager as
8182
begin
8283
l_card := ut_utils.scale_cardinality(cardinality(a_objects_to_refresh));
8384
open l_result for
84-
q'[select /*+ cardinality( r ]'||l_card||q'[ )*/
85-
s.name, s.text
86-
from table(:a_objects_to_refresh) r
87-
join ]'||l_sources_view||q'[ s
88-
on s.name = r.object_name
89-
where s.type = :a_object_type
90-
and s.owner = :a_object_owner
91-
and s.name
92-
in (select /*+ cardinality( t ]'||l_card||q'[ )*/
93-
x.name
94-
from table(:a_objects_to_refresh) t
95-
join ]'||l_sources_view||q'[ x
96-
on x.name = t.object_name
97-
where x.type = :a_object_type
98-
and x.owner = :a_object_owner
99-
and x.text like '%--%\%%' escape '\'
100-
)
101-
order by name, line]'
102-
using a_objects_to_refresh, a_object_type, a_object_owner, a_objects_to_refresh, a_object_type, a_object_owner;
85+
q'[select s.name, s.text
86+
from (select /*+ cardinality( r ]'||l_card||q'[ )*/
87+
s.name, s.text, s.line,
88+
max(case when s.text like '%--%\%%' escape '\'
89+
and regexp_like(s.text,'--\s*%')
90+
then 'Y' else 'N' end
91+
)
92+
over(partition by s.name) is_annotated
93+
from table(:a_objects_to_refresh) r
94+
join ]'||l_sources_view||q'[ s
95+
on s.name = r.object_name
96+
and s.owner = r.object_owner
97+
and s.type = r.object_type
98+
where s.type = :a_object_type
99+
and s.owner = :a_object_owner
100+
) s
101+
where s.is_annotated = 'Y'
102+
order by s.name, s.line]'
103+
using a_objects_to_refresh, a_object_type, a_object_owner;
103104

104105
return l_result;
105106
end;

source/core/types/ut_logical_suites.tps

Lines changed: 0 additions & 19 deletions
This file was deleted.

source/core/ut_suite_builder.pkb

Lines changed: 95 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -517,32 +517,6 @@ create or replace package body ut_suite_builder is
517517
a_suite_items( a_suite_items.last ) := l_test;
518518
end;
519519

520-
procedure propagate_before_after_each(
521-
a_suite in out nocopy ut_logical_suite,
522-
a_before_each_list tt_executables,
523-
a_after_each_list tt_executables
524-
) is
525-
l_test ut_test;
526-
l_context ut_logical_suite;
527-
begin
528-
if a_suite.items is not null then
529-
for i in 1 .. a_suite.items.count loop
530-
if a_suite.items(i) is of (ut_test) then
531-
l_test := treat( a_suite.items(i) as ut_test);
532-
l_test.before_each_list := convert_list(a_before_each_list) multiset union all l_test.before_each_list;
533-
set_seq_no(l_test.before_each_list);
534-
l_test.after_each_list := l_test.after_each_list multiset union all convert_list(a_after_each_list);
535-
set_seq_no(l_test.after_each_list);
536-
a_suite.items(i) := l_test;
537-
elsif a_suite.items(i) is of (ut_logical_suite) then
538-
l_context := treat(a_suite.items(i) as ut_logical_suite);
539-
propagate_before_after_each( l_context, a_before_each_list, a_after_each_list);
540-
a_suite.items(i) := l_context;
541-
end if;
542-
end loop;
543-
end if;
544-
end;
545-
546520
procedure propagate_before_after_each(
547521
a_suite_items in out nocopy ut_suite_items,
548522
a_before_each_list tt_executables,
@@ -929,113 +903,110 @@ create or replace package body ut_suite_builder is
929903
a_suite_data_cursor sys_refcursor
930904
) is
931905
type t_item_levels is table of ut_suite_items index by binary_integer;
906+
c_bulk_limit constant pls_integer := 1000;
932907
l_items_at_level t_item_levels;
933908
l_rows tt_cached_suites;
934-
l_tests ut_suite_items := ut_suite_items();
935-
l_logical_suites ut_logical_suites := ut_logical_suites();
909+
l_test ut_test;
910+
l_logical_suite ut_logical_suite;
936911
l_level pls_integer;
937912
l_prev_level pls_integer;
938913
l_idx integer;
939914
begin
940915
a_suites := ut_suite_items();
941916
loop
942-
if l_idx is null then
943-
fetch a_suite_data_cursor bulk collect into l_rows limit 1000;
944-
l_tests.delete;
945-
l_tests.extend(l_rows.count);
946-
l_logical_suites.delete;
947-
l_logical_suites.extend(l_rows.count);
948-
for i in 1 .. l_rows.count loop
949-
case l_rows(i).self_type
950-
when 'UT_TEST' then
951-
l_tests(i) :=
952-
ut_test(
953-
self_type => l_rows(i).self_type,
954-
object_owner => l_rows(i).object_owner, object_name => lower(l_rows(i).object_name),
955-
name => lower(l_rows(i).name), description => l_rows(i).description, path => l_rows(i).path,
956-
rollback_type => l_rows(i).rollback_type, disabled_flag => l_rows(i).disabled_flag,
957-
line_no => l_rows(i).line_no, parse_time => l_rows(i).parse_time,
958-
start_time => null, end_time => null, result => null, warnings => l_rows(i).warnings,
959-
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
960-
before_each_list => sort_by_seq_no(l_rows(i).before_each_list), before_test_list => sort_by_seq_no(l_rows(i).before_test_list),
961-
item => l_rows(i).item,
962-
after_test_list => sort_by_seq_no(l_rows(i).after_test_list), after_each_list => sort_by_seq_no(l_rows(i).after_each_list),
963-
all_expectations => ut_expectation_results(), failed_expectations => ut_expectation_results(),
964-
parent_error_stack_trace => null, expected_error_codes => l_rows(i).expected_error_codes
965-
);
966-
when 'UT_SUITE' then
967-
l_logical_suites(i) :=
968-
ut_suite(
969-
self_type => l_rows(i).self_type,
970-
object_owner => l_rows(i).object_owner, object_name => lower(l_rows(i).object_name),
971-
name => lower(l_rows(i).name), description => l_rows(i).description, path => l_rows(i).path,
972-
rollback_type => l_rows(i).rollback_type, disabled_flag => l_rows(i).disabled_flag,
973-
line_no => l_rows(i).line_no, parse_time => l_rows(i).parse_time,
974-
start_time => null, end_time => null, result => null, warnings => l_rows(i).warnings,
975-
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
976-
items => ut_suite_items(),
977-
before_all_list => sort_by_seq_no(l_rows(i).before_all_list), after_all_list => sort_by_seq_no(l_rows(i).after_all_list)
978-
);
979-
when 'UT_SUITE_CONTEXT' then
980-
l_logical_suites(i) :=
981-
ut_suite_context(
982-
self_type => l_rows(i).self_type,
983-
object_owner => l_rows(i).object_owner, object_name => lower(l_rows(i).object_name),
984-
name => lower(l_rows(i).name), description => l_rows(i).description, path => l_rows(i).path,
985-
rollback_type => l_rows(i).rollback_type, disabled_flag => l_rows(i).disabled_flag,
986-
line_no => l_rows(i).line_no, parse_time => l_rows(i).parse_time,
987-
start_time => null, end_time => null, result => null, warnings => l_rows(i).warnings,
988-
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
989-
items => ut_suite_items(),
990-
before_all_list => sort_by_seq_no(l_rows(i).before_all_list), after_all_list => sort_by_seq_no(l_rows(i).after_all_list)
991-
);
992-
when 'UT_LOGICAL_SUITE' then
993-
l_logical_suites(i) :=
994-
ut_logical_suite(
995-
self_type => l_rows(i).self_type,
996-
object_owner => l_rows(i).object_owner, object_name => lower(l_rows(i).object_name),
997-
name => lower(l_rows(i).name), description => l_rows(i).description, path => l_rows(i).path,
998-
rollback_type => l_rows(i).rollback_type, disabled_flag => l_rows(i).disabled_flag,
999-
line_no => l_rows(i).line_no, parse_time => l_rows(i).parse_time,
1000-
start_time => null, end_time => null, result => null, warnings => l_rows(i).warnings,
1001-
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
1002-
items => ut_suite_items()
1003-
);
1004-
end case;
1005-
end loop;
1006-
l_idx := l_rows.first;
1007-
end if;
1008-
exit when l_idx is null;
1009-
l_level := length(l_rows(l_idx).path) - length( replace(l_rows(l_idx).path, '.') ) + 1;
917+
fetch a_suite_data_cursor bulk collect into l_rows limit c_bulk_limit;
918+
exit when l_rows.count = 0;
1010919

1011-
if l_level > 1 then
1012-
if l_prev_level > l_level then
1013-
l_logical_suites(l_idx).items := l_items_at_level(l_prev_level);
1014-
l_items_at_level(l_prev_level).delete;
1015-
end if;
1016-
if not l_items_at_level.exists(l_level) then
1017-
l_items_at_level(l_level) := ut_suite_items();
1018-
end if;
1019-
l_items_at_level(l_level).extend;
1020-
if l_tests(l_idx) is not null then
1021-
l_items_at_level(l_level)(l_items_at_level(l_level).last) := l_tests(l_idx);
1022-
else
1023-
l_items_at_level(l_level)(l_items_at_level(l_level).last) := l_logical_suites(l_idx);
1024-
end if;
1025-
else
1026-
if l_prev_level > l_level then
1027-
l_logical_suites(l_idx).items := l_items_at_level(l_prev_level);
1028-
l_items_at_level(l_prev_level).delete;
1029-
end if;
1030-
a_suites.extend;
1031-
if l_tests(l_idx) is not null then
1032-
a_suites(a_suites.last) := l_tests(l_idx);
920+
l_idx := l_rows.first;
921+
loop
922+
l_test := null;
923+
l_logical_suite := null;
924+
case l_rows(l_idx).self_type
925+
when 'UT_TEST' then
926+
l_test :=
927+
ut_test(
928+
self_type => l_rows(l_idx).self_type,
929+
object_owner => l_rows(l_idx).object_owner, object_name => lower(l_rows(l_idx).object_name),
930+
name => lower(l_rows(l_idx).name), description => l_rows(l_idx).description, path => l_rows(l_idx).path,
931+
rollback_type => l_rows(l_idx).rollback_type, disabled_flag => l_rows(l_idx).disabled_flag,
932+
line_no => l_rows(l_idx).line_no, parse_time => l_rows(l_idx).parse_time,
933+
start_time => null, end_time => null, result => null, warnings => l_rows(l_idx).warnings,
934+
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
935+
before_each_list => sort_by_seq_no(l_rows(l_idx).before_each_list), before_test_list => sort_by_seq_no(l_rows(l_idx).before_test_list),
936+
item => l_rows(l_idx).item,
937+
after_test_list => sort_by_seq_no(l_rows(l_idx).after_test_list), after_each_list => sort_by_seq_no(l_rows(l_idx).after_each_list),
938+
all_expectations => ut_expectation_results(), failed_expectations => ut_expectation_results(),
939+
parent_error_stack_trace => null, expected_error_codes => l_rows(l_idx).expected_error_codes
940+
);
941+
when 'UT_SUITE' then
942+
l_logical_suite :=
943+
ut_suite(
944+
self_type => l_rows(l_idx).self_type,
945+
object_owner => l_rows(l_idx).object_owner, object_name => lower(l_rows(l_idx).object_name),
946+
name => lower(l_rows(l_idx).name), description => l_rows(l_idx).description, path => l_rows(l_idx).path,
947+
rollback_type => l_rows(l_idx).rollback_type, disabled_flag => l_rows(l_idx).disabled_flag,
948+
line_no => l_rows(l_idx).line_no, parse_time => l_rows(l_idx).parse_time,
949+
start_time => null, end_time => null, result => null, warnings => l_rows(l_idx).warnings,
950+
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
951+
items => ut_suite_items(),
952+
before_all_list => sort_by_seq_no(l_rows(l_idx).before_all_list), after_all_list => sort_by_seq_no(l_rows(l_idx).after_all_list)
953+
);
954+
when 'UT_SUITE_CONTEXT' then
955+
l_logical_suite :=
956+
ut_suite_context(
957+
self_type => l_rows(l_idx).self_type,
958+
object_owner => l_rows(l_idx).object_owner, object_name => lower(l_rows(l_idx).object_name),
959+
name => lower(l_rows(l_idx).name), description => l_rows(l_idx).description, path => l_rows(l_idx).path,
960+
rollback_type => l_rows(l_idx).rollback_type, disabled_flag => l_rows(l_idx).disabled_flag,
961+
line_no => l_rows(l_idx).line_no, parse_time => l_rows(l_idx).parse_time,
962+
start_time => null, end_time => null, result => null, warnings => l_rows(l_idx).warnings,
963+
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
964+
items => ut_suite_items(),
965+
before_all_list => sort_by_seq_no(l_rows(l_idx).before_all_list), after_all_list => sort_by_seq_no(l_rows(l_idx).after_all_list)
966+
);
967+
when 'UT_LOGICAL_SUITE' then
968+
l_logical_suite :=
969+
ut_logical_suite(
970+
self_type => l_rows(l_idx).self_type,
971+
object_owner => l_rows(l_idx).object_owner, object_name => lower(l_rows(l_idx).object_name),
972+
name => lower(l_rows(l_idx).name), description => l_rows(l_idx).description, path => l_rows(l_idx).path,
973+
rollback_type => l_rows(l_idx).rollback_type, disabled_flag => l_rows(l_idx).disabled_flag,
974+
line_no => l_rows(l_idx).line_no, parse_time => l_rows(l_idx).parse_time,
975+
start_time => null, end_time => null, result => null, warnings => l_rows(l_idx).warnings,
976+
results_count => ut_results_counter(), transaction_invalidators => ut_varchar2_list(),
977+
items => ut_suite_items()
978+
);
979+
end case;
980+
981+
l_level := length(l_rows(l_idx).path) - length( replace(l_rows(l_idx).path, '.') ) + 1;
982+
983+
if l_level > 1 then
984+
if l_prev_level > l_level then
985+
l_logical_suite.items := l_items_at_level(l_prev_level);
986+
l_items_at_level(l_prev_level).delete;
987+
end if;
988+
if not l_items_at_level.exists(l_level) then
989+
l_items_at_level(l_level) := ut_suite_items();
990+
end if;
991+
l_items_at_level(l_level).extend;
992+
if l_test is not null then
993+
l_items_at_level(l_level)(l_items_at_level(l_level).last) := l_test;
994+
else
995+
l_items_at_level(l_level)(l_items_at_level(l_level).last) := l_logical_suite;
996+
end if;
1033997
else
1034-
a_suites(a_suites.last) := l_logical_suites(l_idx);
998+
if l_prev_level > l_level then
999+
l_logical_suite.items := l_items_at_level(l_prev_level);
1000+
l_items_at_level(l_prev_level).delete;
1001+
end if;
1002+
a_suites.extend;
1003+
a_suites(a_suites.last) := l_logical_suite;
10351004
end if;
1036-
end if;
1037-
l_prev_level := l_level;
1038-
l_idx := l_rows.next(l_idx);
1005+
l_prev_level := l_level;
1006+
l_idx := l_rows.next(l_idx);
1007+
exit when l_idx is null;
1008+
end loop;
1009+
exit when l_rows.count < c_bulk_limit;
10391010
end loop;
10401011
copy_list_reverse_order( a_suites );
10411012
close a_suite_data_cursor;
@@ -1066,7 +1037,7 @@ create or replace package body ut_suite_builder is
10661037
open l_result for
10671038
q'[with
10681039
suite_items as (
1069-
select c.*
1040+
select /*+ cardinality(c 100) */ c.*
10701041
from ]'||l_ut_owner||q'[.ut_suite_cache c
10711042
where 1 = 1 ]'||case when not a_skip_all_objects then q'[
10721043
and exists
@@ -1093,7 +1064,7 @@ create or replace package body ut_suite_builder is
10931064
),
10941065
gen as (
10951066
select rownum as pos
1096-
from xmltable('1 to 100')
1067+
from xmltable('1 to 20')
10971068
),
10981069
suitepaths as (
10991070
select distinct substr(path,1,instr(path,'.',-1)-1) as suitepath,

source/install.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ alter session set current_schema = &&ut3_owner;
7070
@@install_component.sql 'core/types/ut_executable_test.tps'
7171
@@install_component.sql 'core/types/ut_test.tps'
7272
@@install_component.sql 'core/types/ut_logical_suite.tps'
73-
@@install_component.sql 'core/types/ut_logical_suites.tps'
7473
@@install_component.sql 'core/types/ut_suite.tps'
7574
@@install_component.sql 'core/types/ut_suite_context.tps'
7675
@@install_component.sql 'core/types/ut_file_mapping.tps'

0 commit comments

Comments
 (0)