Search Postgresql Archives

Re: Strange order of execution with rule

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 20 October 2005 23:48, Tom Lane wrote:

> Give us a test case to demonstrate this assertion.  It works as expected
> AFAICT.
>
Ok, it has to do with C functions:
#include <postgres.h>
#include <fmgr.h>
#include <sys/time.h>


PG_FUNCTION_INFO_V1(plg_cfie);
Datum
plg_cfie(PG_FUNCTION_ARGS)
{
        struct timeval before;
        gettimeofday(&before, 0);
        elog(NOTICE, "Called cfie %ld.%ld\n",before.tv_sec, before.tv_usec);
        PG_RETURN_NULL();
}
/* end-of-plg_cfie */
gcc -fpic -O2 -Wall -c -I /usr/include/pgsql/server/ plg_cfie.c
gcc -shared -o /tmp/plg_cfie.so plg_cfie.o

File test:
CREATE or replace FUNCTION func_display(udps, udps) RETURNS void AS '
  a = Time.now
  warn sprintf("Called func_display %d.%d", a.tv_sec, a.tv_usec)
  ' LANGUAGE 'plruby';

create or replace function plg_cfie() returns void as '/tmp/plg_cfie.so' 
language c immutable; 

CREATE or replace rule update_rule as on update
    to udps
    do instead (
      select func_display(new, old);
      select plg_cfie();
    );

update udps set ziekenhuis = 'olvg' where rapport = 'T105-00002';
-- end of file test
su postgres -c 'psql palga' <test

CREATE FUNCTION
CREATE FUNCTION
CREATE RULE
NOTICE:  Called cfie 1129893542.714536

NOTICE:  Called func_display 1129893542.732444
 plg_cfie
----------

(1 row)

It's not a plruby issue, I tested with plpgsql (your noti) as well.

Cheers,

Han Holl 





---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux