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

Skip to content

Commit 54ff178

Browse files
committed
Replaced conditional install with conditional compilation
For 12.2 code coverage, all source and tables are pre-created now. Upgrade from 12.1 to 12.2 will only require schema-recompile for utPLSQL to work. Resolves #803
1 parent daaceb4 commit 54ff178

7 files changed

Lines changed: 204 additions & 67 deletions
Lines changed: 160 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,163 @@
1+
declare
2+
l_tab_exist number;
13
begin
2-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
3-
dbms_plsql_code_coverage.create_coverage_tables(force_it => true);
4-
$else
5-
null;
6-
$end
4+
select count(*) into l_tab_exist from
5+
(select table_name from all_tables where table_name = 'DBMSPCC_BLOCKS' and owner = sys_context('USERENV','CURRENT_SCHEMA')
6+
union all
7+
select synonym_name from all_synonyms where synonym_name = 'DBMSPCC_BLOCKS' and owner = sys_context('USERENV','CURRENT_SCHEMA'));
8+
if l_tab_exist = 0 then
9+
execute immediate q'[
10+
create table dbmspcc_blocks (
11+
run_id number(38, 0),
12+
object_id number(38, 0),
13+
block number(38, 0),
14+
line number(38, 0),
15+
col number(38, 0),
16+
covered number(1, 0),
17+
not_feasible number(1, 0)
18+
)]';
19+
execute immediate q'[
20+
create unique index dbmspcc_blocks_pk on
21+
dbmspcc_blocks (
22+
run_id,
23+
object_id,
24+
block
25+
)]';
26+
execute immediate q'[
27+
alter table dbmspcc_blocks modify (
28+
line
29+
constraint dbmspcc_blocks_line_nn not null enable
30+
)]';
31+
execute immediate q'[
32+
alter table dbmspcc_blocks modify (
33+
col
34+
constraint dbmspcc_blocks_col_nn not null enable
35+
)]';
36+
execute immediate q'[
37+
alter table dbmspcc_blocks modify (
38+
covered
39+
constraint dbmspcc_blocks_covered_nn not null enable
40+
)]';
41+
execute immediate q'[
42+
alter table dbmspcc_blocks modify (
43+
not_feasible
44+
constraint dbmspcc_blocks_not_feasible_nn not null enable
45+
)]';
46+
execute immediate q'[
47+
alter table dbmspcc_blocks
48+
add constraint dbmspcc_blocks_block_ck check ( block >= 0 ) enable]';
49+
execute immediate q'[
50+
alter table dbmspcc_blocks
51+
add constraint dbmspcc_blocks_line_ck check ( line >= 0 ) enable]';
52+
execute immediate q'[
53+
alter table dbmspcc_blocks
54+
add constraint dbmspcc_blocks_col_ck check ( col >= 0 ) enable]';
55+
execute immediate q'[
56+
alter table dbmspcc_blocks
57+
add constraint dbmspcc_blocks_covered_ck check ( covered in (
58+
0,
59+
1
60+
) ) enable]';
61+
execute immediate q'[
62+
alter table dbmspcc_blocks
63+
add constraint dbmspcc_blocks_not_feasible_ck check ( not_feasible in (
64+
0,
65+
1
66+
) ) enable]';
67+
execute immediate q'[
68+
alter table dbmspcc_blocks
69+
add constraint dbmspcc_blocks_pk primary key ( run_id,
70+
object_id,
71+
block )
72+
using index enable]';
73+
end if;
74+
end;
75+
/
76+
declare
77+
l_tab_exist number;
78+
begin
79+
select count(*) into l_tab_exist from
80+
(select table_name from all_tables where table_name = 'DBMSPCC_RUNS' and owner = sys_context('USERENV','CURRENT_SCHEMA')
81+
union all
82+
select synonym_name from all_synonyms where synonym_name = 'DBMSPCC_RUNS' and owner = sys_context('USERENV','CURRENT_SCHEMA'));
83+
if l_tab_exist = 0 then
84+
execute immediate q'[
85+
create table dbmspcc_runs (
86+
run_id number(38, 0),
87+
run_comment varchar2(4000 byte),
88+
run_owner varchar2(128 byte),
89+
run_timestamp date
90+
)]';
91+
execute immediate q'[
92+
create unique index dbmspcc_runs_pk on
93+
dbmspcc_runs (
94+
run_id
95+
)]';
96+
execute immediate q'[
97+
alter table dbmspcc_runs modify (
98+
run_owner
99+
constraint dbmspcc_runs_run_owner_nn not null enable
100+
)]';
101+
execute immediate q'[
102+
alter table dbmspcc_runs modify (
103+
run_timestamp
104+
constraint dbmspcc_runs_run_timestamp_nn not null enable
105+
)]';
106+
execute immediate q'[
107+
alter table dbmspcc_runs
108+
add constraint dbmspcc_runs_pk primary key ( run_id )
109+
using index enable]';
110+
end if;
111+
end;
112+
/
113+
declare
114+
l_tab_exist number;
115+
begin
116+
select count(*) into l_tab_exist from
117+
(select table_name from all_tables where table_name = 'DBMSPCC_UNITS' and owner = sys_context('USERENV','CURRENT_SCHEMA')
118+
union all
119+
select synonym_name from all_synonyms where synonym_name = 'DBMSPCC_UNITS' and owner = sys_context('USERENV','CURRENT_SCHEMA'));
120+
if l_tab_exist = 0 then
121+
execute immediate q'[
122+
create table dbmspcc_units (
123+
run_id number(38, 0),
124+
object_id number(38, 0),
125+
owner varchar2(128 byte),
126+
name varchar2(128 byte),
127+
type varchar2(12 byte),
128+
last_ddl_time date
129+
)]';
130+
execute immediate q'[
131+
create unique index dbmspcc_units_pk on
132+
dbmspcc_units (
133+
run_id,
134+
object_id
135+
)]';
136+
execute immediate q'[
137+
alter table dbmspcc_units modify (
138+
owner
139+
constraint dbmspcc_units_owner_nn not null enable
140+
)]';
141+
execute immediate q'[
142+
alter table dbmspcc_units modify (
143+
name
144+
constraint dbmspcc_units_name_nn not null enable
145+
)]';
146+
execute immediate q'[
147+
alter table dbmspcc_units modify (
148+
type
149+
constraint dbmspcc_units_type_nn not null enable
150+
)]';
151+
execute immediate q'[
152+
alter table dbmspcc_units modify (
153+
last_ddl_time
154+
constraint dbmspcc_units_last_ddl_time_nn not null enable
155+
)]';
156+
execute immediate q'[
157+
alter table dbmspcc_units
158+
add constraint dbmspcc_units_pk primary key ( run_id,
159+
object_id )
160+
using index enable]';
161+
end if;
7162
end;
8163
/

source/core/coverage/ut_coverage_block.pkb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ create or replace package body ut_coverage_block is
3232
l_source_object ut_coverage_helper.t_tmp_table_object;
3333
begin
3434

35+
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
3536
l_source_objects_crsr := ut_coverage_helper.get_tmp_table_objects_cursor();
3637
loop
3738
fetch l_source_objects_crsr
@@ -150,7 +151,8 @@ create or replace package body ut_coverage_block is
150151
end loop;
151152

152153
close l_source_objects_crsr;
153-
154+
$end
155+
154156
return l_result;
155157
end get_coverage_data;
156158

source/core/coverage/ut_coverage_helper_block.pkb

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,20 @@ create or replace package body ut_coverage_helper_block is
3232

3333
procedure coverage_start(a_run_comment varchar2, a_coverage_id out integer) is
3434
begin
35-
a_coverage_id := dbms_plsql_code_coverage.start_coverage(run_comment => a_run_comment);
35+
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
36+
a_coverage_id := dbms_plsql_code_coverage.start_coverage(run_comment => a_run_comment);
37+
$else
38+
null;
39+
$end
3640
end;
3741

3842
procedure coverage_stop is
3943
begin
40-
dbms_plsql_code_coverage.stop_coverage();
44+
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
45+
dbms_plsql_code_coverage.stop_coverage();
46+
$else
47+
null;
48+
$end
4149
end;
4250

4351
function block_results(a_object_owner varchar2, a_object_name varchar2, a_coverage_id integer) return t_block_rows is
@@ -70,22 +78,22 @@ create or replace package body ut_coverage_helper_block is
7078
l_results ut_coverage_helper.t_unit_line_calls;
7179

7280
begin
73-
l_tmp_data := block_results(a_object_owner, a_object_name, a_coverage_id);
74-
75-
for i in 1 .. l_tmp_data.count loop
76-
l_results(l_tmp_data(i).line).blocks := l_tmp_data(i).blocks;
77-
l_results(l_tmp_data(i).line).covered_blocks := l_tmp_data(i).covered_blocks;
78-
l_results(l_tmp_data(i).line).partcovered := case
79-
when (l_tmp_data(i).covered_blocks > 0) and
80-
(l_tmp_data(i).blocks > l_tmp_data(i).covered_blocks) then
81-
1
82-
else
83-
0
84-
end;
85-
end loop;
81+
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
82+
l_tmp_data := block_results(a_object_owner, a_object_name, a_coverage_id);
83+
84+
for i in 1 .. l_tmp_data.count loop
85+
l_results(l_tmp_data(i).line).blocks := l_tmp_data(i).blocks;
86+
l_results(l_tmp_data(i).line).covered_blocks := l_tmp_data(i).covered_blocks;
87+
l_results(l_tmp_data(i).line).partcovered := case
88+
when (l_tmp_data(i).covered_blocks > 0) and
89+
(l_tmp_data(i).blocks > l_tmp_data(i).covered_blocks) then
90+
1
91+
else
92+
0
93+
end;
94+
end loop;
95+
$end
8696
return l_results;
8797
end;
88-
89-
9098
end;
9199
/

source/create_synonyms_and_grants_for_public.sql

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -100,16 +100,9 @@ grant execute on &&ut3_owner..ut_annotation_obj_cache_info to public;
100100
grant execute on &&ut3_owner..ut_suite_items_info to public;
101101
grant execute on &&ut3_owner..ut_suite_item_info to public;
102102
grant execute on &&ut3_owner..ut_realtime_reporter to public;
103-
begin
104-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
105-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_blocks to public';
106-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_runs to public';
107-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_units to public';
108-
$else
109-
null;
110-
$end
111-
end;
112-
/
103+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_blocks to public;
104+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_runs to public;
105+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_units to public;
113106

114107
prompt Creating synonyms for UTPLSQL objects in &&ut3_owner schema to PUBLIC
115108

@@ -162,13 +155,6 @@ create public synonym ut_sonar_test_reporter for &&ut3_owner..ut_sonar_test_repo
162155
create public synonym ut_suite_items_info for &&ut3_owner..ut_suite_items_info;
163156
create public synonym ut_suite_item_info for &&ut3_owner..ut_suite_item_info;
164157
create public synonym ut_realtime_reporter for &&ut3_owner..ut_realtime_reporter;
165-
begin
166-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
167-
execute immediate 'create public synonym dbmspcc_blocks for &&ut3_owner..dbmspcc_blocks';
168-
execute immediate 'create public synonym dbmspcc_runs for &&ut3_owner..dbmspcc_runs';
169-
execute immediate 'create public synonym dbmspcc_units for &&ut3_owner..dbmspcc_units';
170-
$else
171-
null;
172-
$end
173-
end;
174-
/
158+
create public synonym dbmspcc_blocks for &&ut3_owner..dbmspcc_blocks;
159+
create public synonym dbmspcc_runs for &&ut3_owner..dbmspcc_runs;
160+
create public synonym dbmspcc_units for &&ut3_owner..dbmspcc_units;

source/create_user_grants.sql

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,6 @@ grant execute on &&ut3_owner..ut_annotation_parser to &ut3_user;
118118
grant execute on &&ut3_owner..ut_annotation_objs_cache_info to &ut3_user;
119119
grant execute on &&ut3_owner..ut_annotation_obj_cache_info to &ut3_user;
120120
grant execute on &&ut3_owner..ut_realtime_reporter to &ut3_user;
121-
begin
122-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
123-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_blocks to &ut3_user';
124-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_runs to &ut3_user';
125-
execute immediate 'grant select, insert, delete, update on &&ut3_owner..dbmspcc_units to &ut3_user';
126-
$else
127-
null;
128-
$end
129-
end;
130-
/
121+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_blocks to &ut3_user;
122+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_runs to &ut3_user;
123+
grant select, insert, delete, update on &&ut3_owner..dbmspcc_units to &ut3_user;

source/create_user_synonyms.sql

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,6 @@ create or replace synonym &ut3_user..ut_key_value_pair for &&ut3_owner..ut_key_v
101101
create or replace synonym &ut3_user..ut_compound_data_tmp for &&ut3_owner..ut_cursor_data;
102102
create or replace synonym &ut3_user..ut_sonar_test_reporter for &&ut3_owner..ut_sonar_test_reporter;
103103
create or replace synonym &ut3_user..ut_realtime_reporter for &&ut3_owner..ut_realtime_reporter;
104-
begin
105-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
106-
execute immediate 'create or replace synonym &ut3_user..dbmspcc_blocks for &&ut3_owner..dbmspcc_blocks';
107-
execute immediate 'create or replace synonym &ut3_user..dbmspcc_runs for &&ut3_owner..dbmspcc_runs';
108-
execute immediate 'create or replace synonym &ut3_user..dbmspcc_units for &&ut3_owner..dbmspcc_units';
109-
$else
110-
null;
111-
$end
112-
end;
113-
/
104+
create or replace synonym &ut3_user..dbmspcc_blocks for &&ut3_owner..dbmspcc_blocks;
105+
create or replace synonym &ut3_user..dbmspcc_runs for &&ut3_owner..dbmspcc_runs;
106+
create or replace synonym &ut3_user..dbmspcc_units for &&ut3_owner..dbmspcc_units;

source/install.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,17 +145,17 @@ prompt Installing DBMSPLSQL Tables objects into &&ut3_owner schema
145145
--gathering coverage
146146
@@install_component.sql 'core/coverage/ut_coverage_sources_tmp.sql'
147147
@@install_component.sql 'core/coverage/ut_coverage_helper.pks'
148-
@@install_above_12_1.sql 'core/coverage/ut_coverage_helper_block.pks'
148+
@@install_component.sql 'core/coverage/ut_coverage_helper_block.pks'
149149
@@install_component.sql 'core/coverage/ut_coverage_helper_profiler.pks'
150150
@@install_component.sql 'core/coverage/ut_coverage.pks'
151-
@@install_above_12_1.sql 'core/coverage/ut_coverage_block.pks'
151+
@@install_component.sql 'core/coverage/ut_coverage_block.pks'
152152
@@install_component.sql 'core/coverage/ut_coverage_profiler.pks'
153153
@@install_component.sql 'core/coverage/ut_coverage_reporter_base.tps'
154154
@@install_component.sql 'core/coverage/ut_coverage_helper.pkb'
155-
@@install_above_12_1.sql 'core/coverage/ut_coverage_helper_block.pkb'
155+
@@install_component.sql 'core/coverage/ut_coverage_helper_block.pkb'
156156
@@install_component.sql 'core/coverage/ut_coverage_helper_profiler.pkb'
157157
@@install_component.sql 'core/coverage/ut_coverage.pkb'
158-
@@install_above_12_1.sql 'core/coverage/ut_coverage_block.pkb'
158+
@@install_component.sql 'core/coverage/ut_coverage_block.pkb'
159159
@@install_component.sql 'core/coverage/ut_coverage_profiler.pkb'
160160
@@install_component.sql 'core/coverage/ut_coverage_reporter_base.tpb'
161161

0 commit comments

Comments
 (0)