From: | Joe Conway <mail(at)joeconway(dot)com> |
---|---|
To: | "Patches (PostgreSQL)" <pgsql-patches(at)postgresql(dot)org> |
Cc: | Akio Iwaasa <iwaasa(at)mxs(dot)nes(dot)nec(dot)co(dot)jp>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Subject: | Re: [BUGS] BUG #2129: dblink problem |
Date: | 2006-01-03 19:30:33 |
Message-ID: | 43BAD0D9.2010608@joeconway.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-patches |
Joe Conway wrote:
> Joe Conway wrote:
>> However, there is a remaining oddity with dblink_fetch(). Basically,
>> each time dblink_fetch() is called, the named cursor is advanced, even
>> though an error is thrown before returning any rows. Is there a simple
>> way to get the number of columns in the result, without actually
>> advancing the cursor?
>
> I thought I could work around this issue by obtaining the count returned
> for the FETCH using PQcmdTuples(), and then issuing a "MOVE BACWARD
> n..." in the case where the return tuple doesn't match. However I get an
> empty string:
The attached seems to work OK, but I'm concerned about these passages
from the docs:
"SCROLL specifies that the cursor may be used to retrieve rows in a
nonsequential fashion (e.g., backward). Depending upon the complexity of
the query's execution plan, specifying SCROLL may impose a performance
penalty on the query's execution time. NO SCROLL specifies that the
cursor cannot be used to retrieve rows in a nonsequential fashion."
" The SCROLL option should be specified when defining a cursor that will
be used to fetch backwards. This is required by the SQL standard.
However, for compatibility with earlier versions, PostgreSQL will allow
backward fetches without SCROLL, if the cursor's query plan is simple
enough that no extra overhead is needed to support it. However,
application developers are advised not to rely on using backward fetches
from a cursor that has not been created with SCROLL. If NO SCROLL is
specified, then backward fetches are disallowed in any case."
So it seems, to fix the cursor issue properly I'd have to force the
SCROLL option to be used, thereby imposing a performance penalty.
Should I just accept that the cursor advances on a row type mismatch
error, fix using the attached patch and adding SCROLL to dblink_open(),
or something else? Any opinions out there?
Thanks,
Joe
Attachment | Content-Type | Size |
---|---|---|
current.diff | text/x-patch | 5.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2006-01-03 20:27:52 | Re: BUG #2138: Feature request: handle foreign key constraints on arrays |
Previous Message | Darci jose | 2006-01-03 18:15:10 | It doubts |
From | Date | Subject | |
---|---|---|---|
Next Message | Neil Conway | 2006-01-03 20:35:05 | Re: TODO item: list prepared queries |
Previous Message | Bruce Momjian | 2006-01-03 16:43:23 | Re: Stats collector performance improvement |