| 7240 |
dpurdie |
1 |
-- Used to determine the possible build time of a package, including
|
|
|
2 |
-- the ripple effects. Used to provide the user with an indication
|
|
|
3 |
-- CalcRippleTime.sql
|
|
|
4 |
--
|
|
|
5 |
-- :RTAG_ID
|
|
|
6 |
-- :PV_ID
|
|
|
7 |
--
|
|
|
8 |
-- All the package-versions that use a specified package-version in a specified release
|
|
|
9 |
--
|
|
|
10 |
-- Note: The outer join of release_content was causing a slow query
|
|
|
11 |
-- This sql is a bit faster
|
|
|
12 |
--
|
|
|
13 |
-- Based on UsedByAllPackagesInThisRelease.asp
|
| 7247 |
dpurdie |
14 |
-- Changes to improve the performance of that query could be used here too
|
| 7240 |
dpurdie |
15 |
--
|
| 7247 |
dpurdie |
16 |
--
|
|
|
17 |
-- Create a small set of packages with dependency and built time information
|
| 7240 |
dpurdie |
18 |
With small_pd as ( SELECT pv1.build_time, pd.*, pd.pkg_id || pv1.v_ext as pkg_sig, pd.dpkg_id || pv2.v_ext as dpkg_sig
|
|
|
19 |
FROM package_dependencies pd, package_versions pv1, package_versions pv2
|
|
|
20 |
WHERE pv1.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = :RTAG_ID )
|
|
|
21 |
AND pd.pv_id = pv1.pv_id AND pd.dpv_id = pv2.pv_id ),
|
| 7247 |
dpurdie |
22 |
-- Remove those packages that are Advisory Ripple, Pegged or from an SDK
|
|
|
23 |
bb as ( select * from small_pd
|
| 7267 |
dpurdie |
24 |
where dpkg_sig not in (
|
| 7247 |
dpurdie |
25 |
select pkg_id || v_ext as pkg_sig from package_versions
|
|
|
26 |
where pv_id in (
|
|
|
27 |
select pv_id from advisory_ripple WHERE rtag_id = :RTAG_ID
|
|
|
28 |
union
|
|
|
29 |
select pv_id from pegged_versions WHERE rtag_id = :RTAG_ID
|
|
|
30 |
union
|
|
|
31 |
select pv_id from release_content WHERE rtag_id = :RTAG_ID and sdktag_id is not null
|
|
|
32 |
)
|
|
|
33 |
)
|
|
|
34 |
),
|
|
|
35 |
-- Generate a tree of packages starting at the package of interest
|
| 7240 |
dpurdie |
36 |
aa as (SELECT * from (
|
|
|
37 |
SELECT pv_id, build_time
|
| 7293 |
dpurdie |
38 |
FROM bb connect by NOCYCLE
|
| 7247 |
dpurdie |
39 |
prior pkg_sig = dpkg_sig
|
|
|
40 |
start with dpkg_sig in (SELECT pkg_id || v_ext FROM package_versions where pv_id = :PV_ID )
|
| 7240 |
dpurdie |
41 |
UNION
|
|
|
42 |
SELECT pv_id, build_time from package_versions where pv_id = :PV_ID
|
| 7247 |
dpurdie |
43 |
) ),
|
|
|
44 |
-- Sum the build times
|
| 7240 |
dpurdie |
45 |
total as (SELECT sum(bd.build_time) as BuildTime, 1 as item
|
|
|
46 |
FROM aa bd , release_content rc
|
|
|
47 |
WHERE rc.rtag_id(+) = :RTAG_ID
|
|
|
48 |
AND rc.pv_id(+) = bd.pv_id ),
|
| 7247 |
dpurdie |
49 |
-- Package Build Time
|
| 7240 |
dpurdie |
50 |
pbt as (SELECT build_time as BuildTime, 1 as item from package_versions where pv_id = :PV_ID )
|
| 7247 |
dpurdie |
51 |
-- Return Total and package times in a single row
|
| 7240 |
dpurdie |
52 |
select total.buildtime as Total_BuildTime, pbt.BuildTime from total, pbt where total.item = pbt.item
|
| 7247 |
dpurdie |
53 |
--
|