Rev 6268 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/* Release Diff */SELECT qry.*FROM (/* Removed Packages */SELECT 'R' AS CHANGE_TYPE,v.VIEW_ID,v.VIEW_NAME,pv.PKG_ID,pv.PV_ID AS PV_ID_A,pv.COMMENTS AS COMMENTS_A,pkg.PKG_NAME AS PKG_NAME_A,pv.PKG_VERSION AS PKG_VERSION_A,pv.V_NMM AS MAJOR_MINOR_A,get_patch_version(pv.V_MM) AS PATCH_NUMBER_A,get_build_number(pv.V_MM) AS BUILD_NUMBER_A,rc.deprecated_state AS PKG_STATE_A,NVL2(rc.SDKTAG_ID, 1, 0) AS PKG_SDK_A,NULL AS PV_ID_B,NULL AS COMMENTS_B,NULL AS PKG_NAME_B,NULL AS PKG_VERSION_B,NULL AS MAJOR_MINOR_B,NULL AS PATCH_NUMBER_B,NULL AS BUILD_NUMBER_B,NULL AS PKG_STATE_B,0 AS PKG_SDK_BFROM (/* ReleaseContent@A - ( ReleaseContent@B + Planned@B(Additions) - Planned@B(Subtractions) ) */SELECT pv.PKG_ID, pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_AMINUS((SELECT pv.PKG_ID, pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_BUNIONSELECT pv.PKG_ID, pv.V_EXTFROM PLANNED pl,PACKAGE_VERSIONS pvWHERE pl.PV_ID = pv.PV_IDAND pl.operation = 'A'AND pl.RTAG_ID = :RTAG_B)MINUSSELECT pv.PKG_ID, pv.V_EXTFROM PLANNED pl,PACKAGE_VERSIONS pvWHERE pl.PV_ID = pv.PV_IDAND pl.operation = 'S'AND pl.RTAG_ID = :RTAG_B)) ad,RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkg,VIEWS vWHERE rc.RTAG_ID = :RTAG_AAND rc.BASE_VIEW_ID = v.VIEW_IDAND rc.PV_ID = pv.PV_IDAND pv.PKG_ID = pkg.PKG_IDAND pv.PKG_ID = ad.PKG_IDAND NVL( pv.V_EXT, '|LINK_A_NULL|') = NVL( ad.V_EXT, '|LINK_A_NULL|')AND :REMOVED IS NULLUNION/* Added Packages */SELECT 'A' AS CHANGE_TYPE,v.VIEW_ID,v.VIEW_NAME,pv.PKG_ID,NULL AS PV_ID_A,NULL AS COMMENTS_A,NULL AS PKG_NAME_A,NULL AS PKG_VERSION_A,NULL AS MAJOR_MINOR_A,NULL AS PATCH_NUMBER_A,NULL AS BUILD_NUMBER_A,NULL AS PKG_STATE_A,0 AS PKG_SDK_A,pv.PV_ID AS PV_ID_B,pv.COMMENTS AS COMMENTS_B,pkg.PKG_NAME AS PKG_NAME_B,pv.PKG_VERSION AS PKG_VERSION_B,pv.V_NMM AS MAJOR_MINOR_B,get_patch_version(pv.V_MM) AS PATCH_NUMBER_B,get_build_number(pv.V_MM) AS BUILD_NUMBER_B,rc.deprecated_state as PKG_STATE_B,NVL2(rc.SDKTAG_ID, 1, 0) AS PKG_SDK_BFROM (/* ( ReleaseContent@B + Planned@B(Additions) - Planned@B(Subtractions) ) - ReleaseContent@A */((SELECT pv.PKG_ID, pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_BUNIONSELECT pv.PKG_ID, pv.V_EXTFROM PLANNED pl,PACKAGE_VERSIONS pvWHERE pl.PV_ID = pv.PV_IDAND pl.operation = 'A'AND pl.RTAG_ID = :RTAG_B)MINUSSELECT pv.PKG_ID, pv.V_EXTFROM PLANNED pl,PACKAGE_VERSIONS pvWHERE pl.PV_ID = pv.PV_IDAND pl.operation = 'S'AND pl.RTAG_ID = :RTAG_B)MINUSSELECT pv.PKG_ID, pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_A) ad,RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkg,VIEWS vWHERE rc.RTAG_ID = :RTAG_BAND v.VIEW_ID = rc.BASE_VIEW_IDAND rc.PV_ID = pv.PV_IDAND pv.PKG_ID = pkg.PKG_IDAND pv.PKG_ID = ad.PKG_IDAND NVL( pv.V_EXT, '|LINK_A_NULL|') = NVL( ad.V_EXT, '|LINK_A_NULL|')AND :ADDED IS NULLUNION/* UPDATED Packages */SELECT ( CASEWHEN ra.V_NMM = rb.V_NMM AND ra.patch_number = rb.patch_number AND ra.build_number != rb.build_number THEN'UR'WHEN ra.V_NMM = rb.V_NMM AND COALESCE(TO_NUMBER(REGEXP_SUBSTR(ra.patch_number, '^\d+(\.\d+)?')), 0) < COALESCE(TO_NUMBER(REGEXP_SUBSTR(rb.patch_number, '^\d+(\.\d+)?')), 0) THEN'UW'ELSE'U'END) AS CHANGE_TYPE,ra.VIEW_ID,ra.VIEW_NAME,ra.PKG_ID,ra.PV_ID AS PV_ID_A,ra.COMMENTS AS COMMENTS_A,ra.PKG_NAME AS PKG_NAME_A,ra.PKG_VERSION AS PKG_VERSION_A,ra.V_NMM AS MAJOR_MINOR_A,ra.patch_number AS PATCH_NUMBER_A,ra.build_number AS BUILD_NUMBER_A,ra.DEPRECATED_STATE AS PKG_STATE_A,NVL2(ra.SDKTAG_ID, 1, 0) AS PKG_SDK_A,rb.PV_ID AS PV_ID_B,rb.COMMENTS AS COMMENTS_B,rb.PKG_NAME AS PKG_NAME_B,rb.PKG_VERSION AS PKG_VERSION_B,rb.V_NMM AS MAJOR_MINOR_B,rb.patch_number AS PATCH_NUMBER_B,rb.build_number AS BUILD_NUMBER_B,rb.DEPRECATED_STATE AS PKG_STATE_B,NVL2(rb.SDKTAG_ID, 1, 0) AS PKG_SDK_BFROM (SELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, v.VIEW_NAME, v.VIEW_ID, rc.DEPRECATED_STATE,get_patch_version(pv.V_MM) AS patch_number,get_build_number(pv.V_MM) AS build_number,rc.SDKTAG_ID AS SDKTAG_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkg,VIEWS vWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_AAND pv.PKG_ID = pkg.PKG_IDAND v.VIEW_ID = rc.BASE_VIEW_ID) ra,(/* ( ReleaseContent@B + Planned@B(Additions) - Planned@B(Subtractions) ) */((SELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, rc.DEPRECATED_STATE,get_patch_version(pv.V_MM) AS patch_number,get_build_number(pv.V_MM) AS build_number,rc.SDKTAG_ID AS SDKTAG_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_BAND pv.PKG_ID = pkg.PKG_IDUNIONSELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE,get_patch_version(pv.V_MM) AS patch_number,get_build_number(pv.V_MM) AS build_number,NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pv.PKG_ID = pkg.PKG_IDAND pl.operation = 'A'AND pl.RTAG_ID = :RTAG_B)MINUSSELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE,get_patch_version(pv.V_MM) AS patch_number,get_build_number(pv.V_MM) AS build_number,NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pv.PKG_ID = pkg.PKG_IDAND pl.operation = 'S'AND pl.RTAG_ID = :RTAG_B)) rbWHERE ra.PKG_ID = rb.PKG_IDAND NVL( ra.V_EXT, '|LINK_A_NULL|') = NVL( rb.V_EXT, '|LINK_A_NULL|')AND ra.PV_ID != rb.PV_IDAND :UPDATED IS NULLUNION/* NOT CHANGED Packages - NOTE '0' as change type so these entries appear ahead of additions, in sort order */SELECT 'B' AS CHANGE_TYPE,ra.VIEW_ID,ra.VIEW_NAME,ra.PKG_ID,ra.PV_ID AS PV_ID_A,ra.COMMENTS AS COMMENTS_A,ra.PKG_NAME AS PKG_NAME_A,ra.PKG_VERSION AS PKG_VERSION_A,ra.V_NMM AS MAJOR_MINOR_A,get_patch_version(ra.V_MM) AS PATCH_NUMBER_A,get_build_number(ra.V_MM) AS BUILD_NUMBER_A,ra.DEPRECATED_STATE as PKG_STATE_A,NVL2(ra.SDKTAG_ID, 1, 0) AS PKG_SDK_A,rb.PV_ID AS PV_ID_B,rb.COMMENTS AS COMMENTS_B,rb.PKG_NAME AS PKG_NAME_B,rb.PKG_VERSION AS PKG_VERSION_B,rb.V_NMM AS MAJOR_MINOR_B,get_patch_version(rb.V_MM) AS PATCH_NUMBER_B,get_build_number(rb.V_MM) AS BUILD_NUMBER_B,rb.DEPRECATED_STATE AS PKG_STATE_B,NVL2(rb.SDKTAG_ID, 1, 0) AS PKG_SDK_BFROM (SELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, v.VIEW_NAME, v.VIEW_ID, rc.DEPRECATED_STATE, rc.SDKTAG_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkg,VIEWS vWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_AAND pv.PKG_ID = pkg.PKG_IDAND v.VIEW_ID = rc.BASE_VIEW_ID) ra,(/* ( ReleaseContent@B + Planned@B(Additions) - Planned@B(Subtractions) ) */SELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, rc.DEPRECATED_STATE , rc.SDKTAG_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_BAND pv.PKG_ID = pkg.PKG_IDUNIONSELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE, NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pl.RTAG_ID = :RTAG_BAND pl.operation = 'A'AND pv.PKG_ID = pkg.PKG_IDMINUSSELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE, NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pl.RTAG_ID = :RTAG_BAND pl.operation = 'S'AND pv.PKG_ID = pkg.PKG_ID) rbWHERE ra.PKG_ID = rb.PKG_IDAND NVL( ra.V_EXT, '|LINK_A_NULL|') = NVL( rb.V_EXT, '|LINK_A_NULL|')AND ra.PV_ID = rb.PV_IDAND :NO_CHANGE IS NULL/* All Pending additions and RemovalsChange_Type is set so that these will first*/UNIONSELECT rb.CHANGE_TYPE AS CHANGE_TYPE,ra.VIEW_ID,ra.VIEW_NAME,ra.PKG_ID,ra.PV_ID AS PV_ID_A,ra.COMMENTS AS COMMENTS_A,ra.PKG_NAME AS PKG_NAME_A,ra.PKG_VERSION AS PKG_VERSION_A,ra.V_NMM AS MAJOR_MINOR_A,get_patch_version(ra.V_MM) AS PATCH_NUMBER_A,get_build_number(ra.V_MM) AS BUILD_NUMBER_A,ra.DEPRECATED_STATE as PKG_STATE_A,NVL2(ra.SDKTAG_ID, 1, 0) AS PKG_SDK_A,rb.PV_ID AS PV_ID_B,rb.COMMENTS AS COMMENTS_B,rb.PKG_NAME AS PKG_NAME_B,rb.PKG_VERSION AS PKG_VERSION_B,rb.V_NMM AS MAJOR_MINOR_B,get_patch_version(rb.V_MM) AS PATCH_NUMBER_B,get_build_number(rb.V_MM) AS BUILD_NUMBER_B,rb.DEPRECATED_STATE AS PKG_STATE_B,NVL2(rb.SDKTAG_ID, 1, 0) AS PKG_SDK_BFROM (SELECT pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, v.VIEW_NAME, v.VIEW_ID, rc.DEPRECATED_STATE, rc.SDKTAG_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pv,PACKAGES pkg,VIEWS vWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = :RTAG_AAND pv.PKG_ID = pkg.PKG_IDAND v.VIEW_ID = rc.BASE_VIEW_ID) ra,(/* ( Planned@B(Additions) and Planned@B(Subtractions) ) */(SELECT 'APA' as CHANGE_TYPE, pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE, NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pl.RTAG_ID = :RTAG_BAND pl.operation = 'A'AND pv.PKG_ID = pkg.PKG_ID)UNIONSELECT 'APS' as CHANGE_TYPE, pv.PKG_ID, pv.V_EXT, pv.PV_ID, pv.V_NMM, pv.V_MM, pv.COMMENTS, pkg.PKG_NAME, pv.PKG_VERSION, NULL AS DEPRECATED_STATE, NULL AS SDKTAG_IDFROM PLANNED pl,PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pl.PV_ID = pv.PV_IDAND pl.RTAG_ID = :RTAG_BAND pl.operation = 'S'AND pv.PKG_ID = pkg.PKG_ID) rbWHERE ra.PKG_ID = rb.PKG_IDAND NVL( ra.V_EXT, '|LINK_A_NULL|') = NVL( rb.V_EXT, '|LINK_A_NULL|')) qry/* NOTE: Sorting by change type has been added to ensure diff.asp can display items correctly and filter out *//* duplicates. Order is Pending, Unchanged, Additions, Removals, and finally Updates. */ORDER BY UPPER(qry.VIEW_NAME),UPPER(qry.PKG_NAME_A),qry.CHANGE_TYPE