17: **************************************************************************/
18:
19: /**************************************************************************
20: New version to go with new proposed data model changes (11.5.6 maybe),
21: resulting in simpler joins. This function queries on AD_SNAPSHOT_BUGFIXES
22: bug_status column to report the status of a bug.
23: With the snapshot project, and changes to the patch history data
24: model, the bug_status column is moved to ad_snapshot_bugfixes and hence
25: the query has to join on ad_snapshots,ad_snapshot_bugfixes and ad_bugs
20: New version to go with new proposed data model changes (11.5.6 maybe),
21: resulting in simpler joins. This function queries on AD_SNAPSHOT_BUGFIXES
22: bug_status column to report the status of a bug.
23: With the snapshot project, and changes to the patch history data
24: model, the bug_status column is moved to ad_snapshot_bugfixes and hence
25: the query has to join on ad_snapshots,ad_snapshot_bugfixes and ad_bugs
26: tables.
27: 2/15/02 : app_short_name is moved from AD_BUGS to AD_PATCH_RUN_BUGS
28: due to AOL's requirement, since AOL doesn't always know
21: resulting in simpler joins. This function queries on AD_SNAPSHOT_BUGFIXES
22: bug_status column to report the status of a bug.
23: With the snapshot project, and changes to the patch history data
24: model, the bug_status column is moved to ad_snapshot_bugfixes and hence
25: the query has to join on ad_snapshots,ad_snapshot_bugfixes and ad_bugs
26: tables.
27: 2/15/02 : app_short_name is moved from AD_BUGS to AD_PATCH_RUN_BUGS
28: due to AOL's requirement, since AOL doesn't always know
29: app_short_name to pass.
59: and ( b.baseline_name = adte.baseline
60: or b.generic_patch = 'y'
61: );
62:
63: l_bugst ad_snapshot_bugfixes.bug_status%type;
64: l_bugid ad_bugs.bug_id%type;
65: l_snapshot_id ad_snapshots.snapshot_id%type;
66:
67: l_row_found boolean := TRUE;
108: for cur_bugid in FIND_BUG_ID_CURSOR loop
109: l_row_found := TRUE;
110: begin
111: select bug_status into l_bugst
112: from ad_snapshot_bugfixes
113: where bugfix_id = cur_bugid.bug_id
114: and snapshot_id = l_snapshot_id;
115: exception
116: when no_data_found then
167: return varchar2
168: is
169: l_snapshot_id ad_snapshots.snapshot_id%type;
170: l_bug_id ad_bugs.bug_id%type;
171: l_bugst ad_snapshot_bugfixes.bug_status%type;
172: BEGIN
173:
174: if (p_appl_top_id = -1)
175: then
217:
218:
219: begin
220: select bug_status into l_bugst
221: from ad_snapshot_bugfixes
222: where bugfix_id = l_bug_id
223: and snapshot_id = l_snapshot_id;
224: exception
225: when no_data_found then
440:
441:
442:
443: /*************************************************************************
444: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
445: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
446: being updated.
447: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
448: as successful.
441:
442:
443: /*************************************************************************
444: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
445: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
446: being updated.
447: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
448: as successful.
449: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
443: /*************************************************************************
444: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
445: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
446: being updated.
447: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
448: as successful.
449: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
450: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
451: successful for the bug, product, and aru_release.
445: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
446: being updated.
447: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
448: as successful.
449: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
450: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
451: successful for the bug, product, and aru_release.
452: This routine updates AD_SNAPSHOT_BUGFIXES for given a patch_run_id and
453: a flag.
448: as successful.
449: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
450: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
451: successful for the bug, product, and aru_release.
452: This routine updates AD_SNAPSHOT_BUGFIXES for given a patch_run_id and
453: a flag.
454: *************************************************************************/
455: procedure mark_patch_bug_in_snpbgfix(p_appl_top_id in number,
456: p_patch_run_id in number,
488:
489:
490: if (p_flag = 'Y') then
491: begin
492: update AD_SNAPSHOT_BUGFIXES
493: set success_flag = p_flag
494: where snapshot_id = l_snapshot_id
495: and bugfix_id in (select bug_id from AD_PATCH_RUN_BUGS
496: where patch_run_id = p_patch_run_id);
498: g_errm := sqlerrm;
499: raise_application_error(-20001, g_errm ||
500: 'Error occurred in mark_patch_bug_in_snpbgfix() '||
501: 'while trying to update success_flag to Y '||
502: ' in AD_SNAPSHOT_BUGFIXES '||
503: 'for patch_run_id = ' || p_patch_run_id);
504: end;
505: elsif (p_flag = 'N') then
506: for mybugid in BUG_ID_CUR loop
511: end if;
512: end loop;
513: if (no_update = FALSE) then
514: begin
515: update AD_SNAPSHOT_BUGFIXES
516: set success_flag = p_flag
517: where bugfix_id = mybugid.bug_id
518: and snapshot_id = l_snapshot_id;
519: exception when others then
520: g_errm := sqlerrm;
521: raise_application_error(-20001, g_errm ||
522: 'Error occurred in mark_patch_bug_in_snpbgfix() '||
523: 'while trying to update success_flag to N '||
524: ' in AD_SNAPSHOT_BUGFIXES '||
525: 'for patch_run_id = ' || p_patch_run_id);
526: end;
527: end if;
528: no_update := FALSE;
533: end if;
534: end mark_patch_bug_in_snpbgfix;
535:
536: /*************************************************************************
537: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
538: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
539: being updated.
540: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
541: as successful.
534: end mark_patch_bug_in_snpbgfix;
535:
536: /*************************************************************************
537: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
538: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
539: being updated.
540: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
541: as successful.
542: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
536: /*************************************************************************
537: cascade update AD_SNAPSHOT_BUGFIXES based on the values in AD_PATCH_RUN_BUGS.
538: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
539: being updated.
540: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
541: as successful.
542: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
543: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
544: successful for the bug, product, and aru_release.
538: - Don't update AD_SNAPSHOT_BUGFIXES at all if already set to the value
539: being updated.
540: - When updating to successful, just mark row in AD_SNAPSHOT_BUGFIXES
541: as successful.
542: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
543: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
544: successful for the bug, product, and aru_release.
545: This routine updates AD_SNAPSHOT_BUGFIXES, given a patch_run, bug id.
546: *************************************************************************/
541: as successful.
542: - When updating to unsuccessful, only mark row in AD_SNAPSHOT_BUGFIXES
543: as not successful if there are no rows in AD_PATCH_RUN_BUGS marked as
544: successful for the bug, product, and aru_release.
545: This routine updates AD_SNAPSHOT_BUGFIXES, given a patch_run, bug id.
546: *************************************************************************/
547: procedure mark_bug_in_snpbgfix(p_patch_run_id in number,
548: p_appl_top_id in number,
549: p_bug_id in number,
576: end;
577:
578: if (p_flag = 'Y') then
579: begin
580: update AD_SNAPSHOT_BUGFIXES
581: set success_flag = p_flag
582: where bugfix_id = p_bug_id
583: and snapshot_id = l_snapshot_id;
584: exception when others then
585: g_errm := sqlerrm;
586: raise_application_error(-20001, g_errm ||
587: 'Error occurred in mark_bug_in_snpbgfix() '||
588: 'while trying to update success_flag to Y '||
589: ' in AD_SNAPSHOT_BUGFIXES '||
590: 'for patch_run_id = ' || p_patch_run_id);
591: end;
592: elsif (p_flag = 'N') then
593: for succ_rec in FIND_SUCC_CUR(p_bug_id) loop
597: end if;
598: end loop;
599: if (no_update = FALSE) then
600: begin
601: update AD_SNAPSHOT_BUGFIXES
602: set success_flag = p_flag
603: where bugfix_id = p_bug_id
604: and snapshot_id = l_snapshot_id;
605: exception when others then
606: g_errm := sqlerrm;
607: raise_application_error(-20001, g_errm ||
608: 'Error occurred in mark_bug_in_snpbgfix() '||
609: 'while trying to update success_flag to N '||
610: ' in AD_SNAPSHOT_BUGFIXES '||
611: 'for patch_run_id = ' || p_patch_run_id);
612: end;
613: end if;
614: no_update := FALSE;
718: p_flag in varchar2,
719: p_reason_text in varchar2)
720: is
721: l_bug_id ad_bugs.bug_id%TYPE;
722: l_patch_succ ad_snapshot_bugfixes.success_flag%TYPE;
723:
724: begin
725:
726: -- get bug id from ad_bugs for the passed bug number and aru_release_name.
814:
815: end if;
816:
817: -- Case IV:
818: -- cascade update AD_SNAPSHOT_BUGFIXES just like in mark_patch_succ
819: -- above based on values in AD_PATCH_RUN_BUGS.
820:
821: mark_bug_in_snpbgfix(p_patch_run_id,p_appl_top_id,l_bug_id,p_flag);
822:
841: p_bug_status in varchar2)
842: is
843: l_bug_id ad_bugs.bug_id%TYPE;
844: l_snapshot_id ad_snapshots.snapshot_id%TYPE;
845: l_snapshot_bug_id ad_snapshot_bugfixes.snapshot_bug_id%TYPE;
846:
847: begin
848:
849: -- CASE I: On create, when there are no entries in AD_BUGS for the
847: begin
848:
849: -- CASE I: On create, when there are no entries in AD_BUGS for the
850: -- passed bug_number, aru_release_name. create a row in AD_BUGS and
851: -- AD_SNAPSHOT_BUGFIXES.
852:
853: -- First get the snapshot_id, from the given appl_top_id to work on.
854:
855: if (p_appl_top_id = -1)
930: end;
931:
932: begin
933: select snapshot_bug_id into l_snapshot_bug_id
934: from AD_SNAPSHOT_BUGFIXES
935: where bugfix_id = l_bug_id
936: and snapshot_id = l_snapshot_id;
937: exception
938: when no_data_found then
935: where bugfix_id = l_bug_id
936: and snapshot_id = l_snapshot_id;
937: exception
938: when no_data_found then
939: -- create an entry in AD_SNAPSHOT_BUGFIXES
940: begin
941: insert into AD_SNAPSHOT_BUGFIXES
942: (snapshot_bug_id,
943: snapshot_id,
937: exception
938: when no_data_found then
939: -- create an entry in AD_SNAPSHOT_BUGFIXES
940: begin
941: insert into AD_SNAPSHOT_BUGFIXES
942: (snapshot_bug_id,
943: snapshot_id,
944: bugfix_id,
945: bug_status,
947: creation_date,
948: last_update_date,
949: last_updated_by,
950: created_by)
951: values (ad_snapshot_bugfixes_s.nextval,
952: l_snapshot_id,
953: l_bug_id,
954: p_bug_status,
955: 'Y',
960: exception
961: when dup_val_on_index then
962: raise_application_error(-20001,
963: 'Attempting to insert a duplicate record '||
964: 'into AD_SNAPSHOT_BUGFIXES for bug_number = '||
965: p_bug_number || ' and release '||
966: p_release_name);
967:
968: when others then
969: g_errm := sqlerrm;
970: raise_application_error(-20001, g_errm ||
971: 'Error occurred in set_patch_status() '||
972: 'while trying to insert new record '||
973: 'into AD_SNAPSHOT_BUGFIXES for bug_number = '||
974: p_bug_number || ' and release '||
975: p_release_name);
976: end;
977:
977:
978: when too_many_rows then
979: /* bug 2770858 Do not rollback */
980: raise_application_error(-20001,
981: 'Too many rows in AD_SNAPSHOT_BUGFIXES '||
982: 'table for '||p_bug_number||
983: ' '||p_release_name);
984: end;
985:
983: ' '||p_release_name);
984: end;
985:
986: -- If you are here means there was a record in AD_BUGS and
987: -- AD_SNAPSHOT_BUGFIXES.
988: -- So just update the existing record.
989:
990: begin
991: update AD_SNAPSHOT_BUGFIXES
987: -- AD_SNAPSHOT_BUGFIXES.
988: -- So just update the existing record.
989:
990: begin
991: update AD_SNAPSHOT_BUGFIXES
992: set BUG_STATUS = p_bug_status, success_flag = 'Y', last_updated_by = -1,
993: last_update_date = sysdate
994: where bugfix_id = l_bug_id and
995: snapshot_id = l_snapshot_id;
997: g_errm := sqlerrm;
998: raise_application_error(-20001, g_errm ||
999: 'Error occurred in set_patch_status() '||
1000: 'while trying to update bug_status '||
1001: 'in AD_SNAPSHOT_BUGFIXES '||
1002: 'for bug_id = ' || l_bug_id);
1003: end;
1004:
1005: end set_patch_status;