Blame | Last modification | View Log | RSS feed
-- Given an :RTAG_ID, :PKG_NAME and :PKG_VERSION-- Determine-- PKG_NAME-- PKG_VERSION-- PKG_ID - Package name exists-- PV_ID - Package name and version exist-- LPV_ID - PV_ID of package in specified release-- LPKG_VERSION - Package version in specified release---- q0 - static datawith q0 as (SELECT 1 as etype, :PKG_NAME as pkg_name, :PKG_VERSION as pkg_version from dual),-- q1 - Package existanceq1 as (SELECT 1 as etype, p.pkg_idFROM packages p WHERE upper(p.pkg_name) = upper(:PKG_NAME)),-- q2 - Package Version existenceq2 as(SELECT 1 as etype, pv.pv_idFROM package_versions pv, q1WHERE pv.PKG_ID = q1.PKG_IDAND upper(pv.pkg_version) = upper(:PKG_VERSION)),-- q3 - Package Version in specfied releaseq3 as(SELECT 1 as etype, rpv.pv_id as lpv_id, rpv.pkg_version as lpkg_versionFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS rpv,q1WHERE rc.rtag_id = :RTAG_IDAND rpv.PKG_ID = q1.PKG_IDAND rc.pv_id = rpv.pv_idand rpv.v_ext = REGEXP_SUBSTR(:PKG_VERSION,'\.[a-z]+$', 1,1,'i'))-- Join it all apSELECT q0.pkg_name, q0.pkg_version, q1.pkg_id, q2.pv_id, q3.lpv_id, q3.lpkg_versionFROM q0, q1, q2, q3WHERE q1.etype(+) = q0.etypeAND q2.etype(+) = q0.etypeAND q3.etype(+) = q1.etype