Skip to content

Commit d2cbbd5

Browse files
authored
Merge pull request #1187 from utPLSQL/feature/improve_get_cov_source_sql
Improved get_cov_sources SQL query.
2 parents 7ecc9b2 + 51dbe87 commit d2cbbd5

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

source/core/coverage/ut_coverage.pkb

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,20 @@ create or replace package body ut_coverage is
3838
begin
3939
l_result := q'[
4040
with
41-
trigger_source_offsets as (
42-
select min(s.line) - 1 offset, s.owner, s.name, s.type
43-
from {sources_view} s
44-
where s.type = 'TRIGGER'
45-
{filters}
46-
and (lower(s.text) like '%begin%' or lower(s.text) like '%declare%' or lower(s.text) like '%compound%')
47-
group by s.owner, s.name, s.type
48-
),
4941
sources as (
5042
select /*+ cardinality(f {mappings_cardinality}) */
5143
{l_full_name} as full_name, s.owner, s.name, s.type,
52-
s.line - case when s.type = 'TRIGGER' then o.offset else 0 end as line,
44+
s.line
45+
- case
46+
when s.type = 'TRIGGER'
47+
then
48+
/* calculate offset of line number for trigger source in coverage reporting */
49+
min(case when lower(s.text) like '%begin%' or lower(s.text) like '%declare%' or lower(s.text) like '%compound%' then s.line-1 end)
50+
over (partition by s.owner, s.type, s.name)
51+
else 0
52+
end as line,
5353
s.text
5454
from {sources_view} s {join_file_mappings}
55-
left join trigger_source_offsets o
56-
on (s.owner = o.owner and s.name = o.name and s.type = o.type)
5755
where s.type in ('PACKAGE BODY', 'TYPE BODY', 'PROCEDURE', 'FUNCTION', 'TRIGGER')
5856
{filters}
5957
),
@@ -80,7 +78,11 @@ create or replace package body ut_coverage is
8078
select /*+ no_parallel */ full_name, owner, name, type, line, to_be_skipped, text
8179
from coverage_sources s
8280
-- Exclude calls to utPLSQL framework, Unit Test packages and objects from a_exclude_list parameter of coverage reporter
83-
where (s.owner, s.name) not in ( select /*+ cardinality(el {skipped_objects_cardinality})*/el.owner, el.name from table(:l_skipped_objects) el )
81+
where not exists (
82+
select /*+ cardinality(el {skipped_objects_cardinality})*/ 1
83+
from table(:l_skipped_objects) el
84+
where s.owner = el.owner and s.name = el.name
85+
)
8486
and line > 0
8587
]';
8688

@@ -137,9 +139,9 @@ create or replace package body ut_coverage is
137139
if a_coverage_options.file_mappings is not empty then
138140
open l_cursor for l_sql using a_coverage_options.file_mappings, l_skip_objects;
139141
elsif a_coverage_options.include_objects is not empty then
140-
open l_cursor for l_sql using a_coverage_options.include_objects, a_coverage_options.include_objects, l_skip_objects;
142+
open l_cursor for l_sql using a_coverage_options.include_objects, l_skip_objects;
141143
else
142-
open l_cursor for l_sql using a_coverage_options.schema_names, a_coverage_options.schema_names, l_skip_objects;
144+
open l_cursor for l_sql using a_coverage_options.schema_names, l_skip_objects;
143145
end if;
144146
return l_cursor;
145147
end;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy