Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."LEVEL_N_CONFLICTS" (
   nnrtag_id       IN       NUMBER,
   nnsession_num   IN       NUMBER,
   nnrowcnt        OUT      NUMBER,
   nniteration     IN       NUMBER
)
IS
/* ---------------------------------------------------------------------------
    Version: 3.0.1
   --------------------------------------------------------------------------- */
   previteration   NUMBER := nniteration - 1;
BEGIN
   /* ---------  LEVEL 1 CONFILCTS -----------
   || Following states are used:
   || 0 -> NOT FOUND
   || 1 -> MAJOR
   || 2 -> MINOR MINOR
   */
   INSERT INTO temp_env_states
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
                      pv.pv_id, pv.pkg_id, pv.v_ext,
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
                 FROM package_dependencies dep,
                      package_versions dpv,
                      package_versions pv,
                      release_content rel,
                      temp_env_states tes
                WHERE rel.pv_id = dep.pv_id
                  AND rel.rtag_id = nnrtag_id
                  AND dep.pv_id = pv.pv_id
                  AND dep.dpv_id = dpv.pv_id
                  AND dpv.pkg_id = tes.pkg_id
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
                  AND tes.session_num = nnsession_num
                  AND tes.level_num = previteration
                  AND (dep.pv_id, dep.dpv_id) IN 
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
                                                 || packages already stored in Temp Table.
                                                 */
                      (
                         SELECT pd.pv_id, pd.dpv_id
                           FROM package_dependencies pd, release_content rc
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
                         MINUS
                         SELECT igw.pv_id, igw.dpv_id
                           FROM ignore_warnings igw
                          WHERE igw.rtag_id = nnrtag_id);

   nnrowcnt := SQL%ROWCOUNT;
END level_n_conflicts;
/