|
29 | 29 | * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
30 | 30 | *
|
31 | 31 | * IDENTIFICATION
|
32 |
| - * $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.38 2003/08/04 01:57:58 tgl Exp $ |
| 32 | + * $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.39 2003/08/04 18:40:50 tgl Exp $ |
33 | 33 | *
|
34 | 34 | *********************************************************************
|
35 | 35 | */
|
@@ -651,68 +651,96 @@ PLy_trigger_build_args(FunctionCallInfo fcinfo, PLyProcedure * proc, HeapTuple *
|
651 | 651 | Py_DECREF(pltrelid);
|
652 | 652 | pfree(stroid);
|
653 | 653 |
|
654 |
| - |
655 |
| - |
656 | 654 | if (TRIGGER_FIRED_BEFORE(tdata->tg_event))
|
657 | 655 | pltwhen = PyString_FromString("BEFORE");
|
658 | 656 | else if (TRIGGER_FIRED_AFTER(tdata->tg_event))
|
659 | 657 | pltwhen = PyString_FromString("AFTER");
|
660 | 658 | else
|
661 |
| - pltwhen = PyString_FromString("UNKNOWN"); |
| 659 | + { |
| 660 | + elog(ERROR, "unrecognized WHEN tg_event: %u", tdata->tg_event); |
| 661 | + pltwhen = NULL; /* keep compiler quiet */ |
| 662 | + } |
662 | 663 | PyDict_SetItemString(pltdata, "when", pltwhen);
|
663 | 664 | Py_DECREF(pltwhen);
|
664 | 665 |
|
665 | 666 | if (TRIGGER_FIRED_FOR_ROW(tdata->tg_event))
|
| 667 | + { |
666 | 668 | pltlevel = PyString_FromString("ROW");
|
| 669 | + PyDict_SetItemString(pltdata, "level", pltlevel); |
| 670 | + Py_DECREF(pltlevel); |
| 671 | + |
| 672 | + if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event)) |
| 673 | + { |
| 674 | + pltevent = PyString_FromString("INSERT"); |
| 675 | + |
| 676 | + PyDict_SetItemString(pltdata, "old", Py_None); |
| 677 | + pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
| 678 | + tdata->tg_relation->rd_att); |
| 679 | + PyDict_SetItemString(pltdata, "new", pytnew); |
| 680 | + Py_DECREF(pytnew); |
| 681 | + *rv = tdata->tg_trigtuple; |
| 682 | + } |
| 683 | + else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event)) |
| 684 | + { |
| 685 | + pltevent = PyString_FromString("DELETE"); |
| 686 | + |
| 687 | + PyDict_SetItemString(pltdata, "new", Py_None); |
| 688 | + pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
| 689 | + tdata->tg_relation->rd_att); |
| 690 | + PyDict_SetItemString(pltdata, "old", pytold); |
| 691 | + Py_DECREF(pytold); |
| 692 | + *rv = tdata->tg_trigtuple; |
| 693 | + } |
| 694 | + else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event)) |
| 695 | + { |
| 696 | + pltevent = PyString_FromString("UPDATE"); |
| 697 | + |
| 698 | + pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_newtuple, |
| 699 | + tdata->tg_relation->rd_att); |
| 700 | + PyDict_SetItemString(pltdata, "new", pytnew); |
| 701 | + Py_DECREF(pytnew); |
| 702 | + pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
| 703 | + tdata->tg_relation->rd_att); |
| 704 | + PyDict_SetItemString(pltdata, "old", pytold); |
| 705 | + Py_DECREF(pytold); |
| 706 | + *rv = tdata->tg_newtuple; |
| 707 | + } |
| 708 | + else |
| 709 | + { |
| 710 | + elog(ERROR, "unrecognized OP tg_event: %u", tdata->tg_event); |
| 711 | + pltevent = NULL; /* keep compiler quiet */ |
| 712 | + } |
| 713 | + |
| 714 | + PyDict_SetItemString(pltdata, "event", pltevent); |
| 715 | + Py_DECREF(pltevent); |
| 716 | + } |
667 | 717 | else if (TRIGGER_FIRED_FOR_STATEMENT(tdata->tg_event))
|
| 718 | + { |
668 | 719 | pltlevel = PyString_FromString("STATEMENT");
|
669 |
| - else |
670 |
| - pltlevel = PyString_FromString("UNKNOWN"); |
671 |
| - PyDict_SetItemString(pltdata, "level", pltlevel); |
672 |
| - Py_DECREF(pltlevel); |
| 720 | + PyDict_SetItemString(pltdata, "level", pltlevel); |
| 721 | + Py_DECREF(pltlevel); |
673 | 722 |
|
674 |
| - if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event)) |
675 |
| - { |
676 |
| - pltevent = PyString_FromString("INSERT"); |
677 | 723 | PyDict_SetItemString(pltdata, "old", Py_None);
|
678 |
| - pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
679 |
| - tdata->tg_relation->rd_att); |
680 |
| - PyDict_SetItemString(pltdata, "new", pytnew); |
681 |
| - Py_DECREF(pytnew); |
682 |
| - *rv = tdata->tg_trigtuple; |
683 |
| - } |
684 |
| - else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event)) |
685 |
| - { |
686 |
| - pltevent = PyString_FromString("DELETE"); |
687 | 724 | PyDict_SetItemString(pltdata, "new", Py_None);
|
688 |
| - pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
689 |
| - tdata->tg_relation->rd_att); |
690 |
| - PyDict_SetItemString(pltdata, "old", pytold); |
691 |
| - Py_DECREF(pytold); |
692 |
| - *rv = tdata->tg_trigtuple; |
693 |
| - } |
694 |
| - else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event)) |
695 |
| - { |
696 |
| - pltevent = PyString_FromString("UPDATE"); |
697 |
| - pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_newtuple, |
698 |
| - tdata->tg_relation->rd_att); |
699 |
| - PyDict_SetItemString(pltdata, "new", pytnew); |
700 |
| - Py_DECREF(pytnew); |
701 |
| - pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple, |
702 |
| - tdata->tg_relation->rd_att); |
703 |
| - PyDict_SetItemString(pltdata, "old", pytold); |
704 |
| - Py_DECREF(pytold); |
705 |
| - *rv = tdata->tg_newtuple; |
| 725 | + *rv = (HeapTuple) NULL; |
| 726 | + |
| 727 | + if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event)) |
| 728 | + pltevent = PyString_FromString("INSERT"); |
| 729 | + else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event)) |
| 730 | + pltevent = PyString_FromString("DELETE"); |
| 731 | + else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event)) |
| 732 | + pltevent = PyString_FromString("UPDATE"); |
| 733 | + else |
| 734 | + { |
| 735 | + elog(ERROR, "unrecognized OP tg_event: %u", tdata->tg_event); |
| 736 | + pltevent = NULL; /* keep compiler quiet */ |
| 737 | + } |
| 738 | + |
| 739 | + PyDict_SetItemString(pltdata, "event", pltevent); |
| 740 | + Py_DECREF(pltevent); |
706 | 741 | }
|
707 | 742 | else
|
708 |
| - { |
709 |
| - pltevent = PyString_FromString("UNKNOWN"); |
710 |
| - PyDict_SetItemString(pltdata, "old", Py_None); |
711 |
| - PyDict_SetItemString(pltdata, "new", Py_None); |
712 |
| - *rv = tdata->tg_trigtuple; |
713 |
| - } |
714 |
| - PyDict_SetItemString(pltdata, "event", pltevent); |
715 |
| - Py_DECREF(pltevent); |
| 743 | + elog(ERROR, "unrecognized LEVEL tg_event: %u", tdata->tg_event); |
716 | 744 |
|
717 | 745 | if (tdata->tg_trigger->tgnargs)
|
718 | 746 | {
|
|
0 commit comments