Thanks, Joe.
Now I use only persistent connection inside my PLPGSQL functions,
the EXCEPTION "ExecMakerTableFunctionResult: Invalid result from function
returning tuple" has gone.
The only problem left behind is it takes dblink function (such as
dblink_exec('update foo set f1=true'))
very long time to return(abuot 16 mins), in case if I do "extreme" test on
it(like unplugging the network
cable while dblink_exec() function is still working on remote host).
It seems to me this is a matter of libPQ (because connect_timeout doesn't
work in the case), but
someone told me this is nothing to do with libPQ, and it's possible a matter
of KERNEL and transport
layer of tcp protocol.(I don't really understand these stuff) Is this
true?(If this is true, then I have to
abort my project :-( )
Regards Frankie.
"Joe Conway" <mail@joeconway.com> wrote in message
news:3E4B2BA5.3020409@joeconway.com...
> Frankie Lam wrote:
> > Yah!
> >
> > That's exactly what I did already(did this to all lines containing
> > `elog(ERROR...)'. :-D
> > But, I'm still experiencing some error messages when I'm doing 'extreme'
> > test to
> > plpgsql functions,
> > for example 'ExecMakerTableFunctionResult: Invalid result from function
> > returning tuple'.
> >
> > I really have no idea about what this message is related to the dblink
> > functions. Any idea
> > about it? Thanks so much.
>
> Sounds like you didn't heed my warning. It is *probably* safe to make
> the elog(ERROR...) to elog(NOTICE...) change *in that one function*,
> dblink_connect(), and then use persistent connections, e.g.
>
> select dblink_connect('dbname=blah ...');
> select * from dblink('select f1 from foo') as (f1 text);
>
> If instead you made the change within the dblink_record() function, and
> you weren't careful to add additional error handling, then the message
> you got is what I'd expect. You basically broke dblink for those
scenarios.
>
> Joe
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org