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 utPLSQL#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)