|
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/0401:57:58 tgl Exp $ |
| 32 | + *$Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.39 2003/08/0418: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 | elseif (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 | +elseif (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 | +elseif (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 | elseif (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 |
| -elseif (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 |
| -elseif (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 | +elseif (TRIGGER_FIRED_BY_DELETE(tdata->tg_event)) |
| 730 | +pltevent=PyString_FromString("DELETE"); |
| 731 | +elseif (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 | {
|
|