Re: minimal update - Mailing list pgsql-hackers
From | Andrew Dunstan |
---|---|
Subject | Re: minimal update |
Date | |
Msg-id | 4822566D.6020804@dunslane.net Whole thread Raw |
In response to | Re: minimal update (Bruce Momjian <bruce@momjian.us>) |
Responses |
Re: minimal update
(Bruce Momjian <bruce@momjian.us>)
|
List | pgsql-hackers |
Right. In fact, I already had that part in fact - see http://people.planetpostgresql.org/andrew/index.php?/archives/22-Minimal-Update-Trigger.html What I was waiting for was the part where it gets put in the catalog, documented, etc. cheers andrew Bruce Momjian wrote: > Andrew Dunstan wrote: > >> Not that I know of. I never saw Gurjeet's completed code. >> > > This is Gurjeet's code, but it is not complete. > > http://archives.postgresql.org/pgsql-hackers/2008-03/msg00668.php > > --------------------------------------------------------------------------- > > >> cheers >> >> andrew >> >> Bruce Momjian wrote: >> >>> Is there a version of this patch ready for application? >>> >>> --------------------------------------------------------------------------- >>> >>> Gurjeet Singh wrote: >>> >>> >>>> On Tue, Mar 18, 2008 at 7:46 PM, Andrew Dunstan <andrew@dunslane.net> wrote: >>>> >>>> >>>> >>>>> >>>>> Gurjeet Singh wrote: >>>>> >>>>> >>>>>> On Fri, Mar 7, 2008 at 9:40 PM, Bruce Momjian <bruce@momjian.us >>>>>> <mailto:bruce@momjian.us>> wrote: >>>>>> >>>>>> >>>>>> I assume don't want a TODO for this? (Suppress UPDATE no changed >>>>>> columns) >>>>>> >>>>>> >>>>>> I am starting to implement this. Do we want to have this trigger >>>>>> function in the server, or in an external module? >>>>>> >>>>>> >>>>>> >>>>>> >>>>> I have the trigger part of this done, in fact. What remains to be done >>>>> is to add it to the catalog and document it. The intention is to make it >>>>> a builtin as it will be generally useful. If you want to work on the >>>>> remaining parts then I will happily ship you the C code for the trigger. >>>>> >>>>> >>>>> >>>>> >>>> In fact, I just finished writing the C code and including it in the catalog >>>> (Just tested that it's visible in the catalog). I will test it to see if it >>>> does actually do what we want it to. >>>> >>>> I have incorporated all the suggestions above. Would love to see your code >>>> in the meantime. >>>> >>>> Here's the C code: >>>> >>>> Datum >>>> trig_ignore_duplicate_updates( PG_FUNCTION_ARGS ) >>>> { >>>> TriggerData *trigData; >>>> HeapTuple oldTuple; >>>> HeapTuple newTuple; >>>> >>>> if (!CALLED_AS_TRIGGER(fcinfo)) >>>> elog(ERROR, "trig_ignore_duplicate_updates: not called by trigger >>>> manager."); >>>> >>>> if( !TRIGGER_FIRED_BY_UPDATE(trigData->tg_event) >>>> && !TRIGGER_FIRED_BEFORE(trigData->tg_event) >>>> && !TRIGGER_FIRED_FOR_ROW(trigData->tg_event) ) >>>> { >>>> elog(ERROR, "trig_ignore_duplicate_updates: Can only be executed for >>>> UPDATE, BEFORE and FOR EACH ROW."); >>>> } >>>> >>>> trigData = (TriggerData *) fcinfo->context; >>>> oldTuple = trigData->tg_trigtuple; >>>> newTuple = trigData->tg_newtuple; >>>> >>>> if (newTuple->t_len == oldTuple->t_len >>>> && newTuple->t_data->t_hoff == oldTuple->t_data->t_hoff >>>> && HeapTupleHeaderGetNatts(newTuple->t_data) == >>>> HeapTupleHeaderGetNatts(oldTuple->t_data) >>>> && (newTuple->t_data->t_infomask & ~HEAP_XACT_MASK) >>>> == (oldTuple->t_data->t_infomask & ~HEAP_XACT_MASK) >>>> && memcmp( (char*)(newTuple->t_data) + offsetof(HeapTupleHeaderData, >>>> t_bits), >>>> (char*)(oldTuple->t_data) + offsetof(HeapTupleHeaderData, >>>> t_bits), >>>> newTuple->t_len - offsetof(HeapTupleHeaderData, t_bits) >>>> ) == 0 ) >>>> { >>>> /* return without crating a new tuple */ >>>> return PointerGetDatum( NULL ); >>>> } >>>> >>>> return PointerGetDatum( trigData->tg_newtuple ); >>>> } >>>> >>>> >>>> >>>> -- >>>> gurjeet[.singh]@EnterpriseDB.com >>>> singh.gurjeet@{ gmail | hotmail | indiatimes | yahoo }.com >>>> >>>> EnterpriseDB http://www.enterprisedb.com >>>> >>>> 17? 29' 34.37"N, 78? 30' 59.76"E - Hyderabad * >>>> 18? 32' 57.25"N, 73? 56' 25.42"E - Pune >>>> 37? 47' 19.72"N, 122? 24' 1.69" W - San Francisco >>>> >>>> http://gurjeet.frihost.net >>>> >>>> Mail sent from my BlackLaptop device >>>> >>>> >>> >>> > >
pgsql-hackers by date: