Thread: Will libpq 8 PQ*cancel functions work with 7.4 servers?

Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
Piotr Sulecki
Date:
Ave!

I'm porting an X application using asynchronous libpq calls from libpq
version 7.4 to version 8.0. One of the things I have to change is the
way of cancelling the queries (the old way, using PQrequestCancel, is
marked as deprecated).

My question is, will the new interface (PQgetCancel / PQcancel /
PQfreeCancel) work with the version 7.4 server? I'd rather not migrate
the server to 8.0 right now, it's a long and painful process (the
database holds about 14 millions tuples).

Also, is there a list of libpq changes between 7.4 and 8.0 available
anywhere?

Regards,

Piotr Sulecki.


Re: Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
Volkan YAZICI
Date:
Hi,

On 6/13/05, Piotr Sulecki <Piotr.Sulecki@sybilla.traxelektronik.pl> wrote:
> My question is, will the new interface (PQgetCancel / PQcancel /
> PQfreeCancel) work with the version 7.4 server?

AFAIC, no.

> is there a list of libpq changes between 7.4 and 8.0 available anywhere?

{{{ [ From: http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/fe-connect.c]
Revision 1.289: download - view: text, markup, annotated - select for diffs
Sat Oct 30 23:11:26 2004 UTC (7 months, 1 week ago) by tgl
Branches: MAIN
CVS tags: REL8_0_0BETA5
Diff to previous 1.288: preferred, colored
Changes since revision 1.288: +135 -50 lines

Invent a new, more thread-safe version of PQrequestCancel, called PQcancel.
Use this new function in psql.  Implement query cancellation in psql for
Windows.  Code by Magnus Hagander, documentation and minor editorialization
by Tom Lane.
}}}

Related (colored) diff:
http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/fe-connect.c.diff?r1=1.288;r2=1.289;f=h

Regards.


Re: Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
"Magnus Hagander"
Date:
> Ave!
>
> I'm porting an X application using asynchronous libpq calls
> from libpq version 7.4 to version 8.0. One of the things I
> have to change is the way of cancelling the queries (the old
> way, using PQrequestCancel, is marked as deprecated).
>
> My question is, will the new interface (PQgetCancel / PQcancel /
> PQfreeCancel) work with the version 7.4 server? I'd rather
> not migrate the server to 8.0 right now, it's a long and
> painful process (the database holds about 14 millions tuples).

I beleive it should. It requires the new libpq library on all machines
you're running it on, but there was no change in the client/server
communications protocol.

//Magnus


Re: Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
Volkan YAZICI
Date:
Hi,

On 6/13/05, Piotr Sulecki <Piotr.Sulecki@sybilla.traxelektronik.pl> wrote:
> Volkan YAZICI napisał(a):
> >>My question is, will the new interface (PQgetCancel / PQcancel /
> >>PQfreeCancel) work with the version 7.4 server?
> >
> > AFAIC, no.
>
> That would mean it was a protocol change as well as an API change.
> If the protocol was unchanged, the new API would generate the same
> link-level events, only in a different way. And I seem to recall reading
> somewhere that version 8.0 uses the same link-level protocol for
> client-to-backend communication as 7.4 did. What you say contradicts it.

Sorry, I get your question wrong. You're right. There isn't a new
protocol update in related patch. It just creates a more efficient
form for cancel operation. Furthermore, as you can see from the
documentation, you're still able to use obsolete PQrequestCancel()
function with same protocol.

But, as I see from patching date, new code is available only in 8.0
releases. You need to patch your 7.4 libpq library for similar
functionality. (I didn't try it but it should work when you try patch
related source files.) Or, you may use a new libpq with old 7.4
server.

Regards.

P.S. I hope, I didn't miss anything this time :)

Re: Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
Piotr Sulecki
Date:
Ave!

Volkan YAZICI napisał(a):
>>My question is, will the new interface (PQgetCancel / PQcancel /
>>PQfreeCancel) work with the version 7.4 server?
>
> AFAIC, no.

That would mean it was a protocol change as well as an API change. If
the protocol was unchanged, the new API would generate the same
link-level events, only in a different way. And I seem to recall reading
somewhere that version 8.0 uses the same link-level protocol for
client-to-backend communication as 7.4 did. What you say contradicts it.

Maybe I'm wrong. My memory is not as good as it used to be... :-)

Regards,

Piotr Sulecki.



Re: Will libpq 8 PQ*cancel functions work with 7.4 servers?

From
Piotr Sulecki
Date:
Ave!

Volkan YAZICI napisał(a):
> Hi,
> 
> Sorry, I get your question wrong. You're right. There isn't a new
> protocol update in related patch. [...]
> 
> But, as I see from patching date, new code is available only in 8.0
> releases. You need to patch your 7.4 libpq library for similar
> functionality. (I didn't try it but it should work when you try patch
> related source files.) Or, you may use a new libpq with old 7.4
> server.

And that's exactly what I want to do: use a new libpq with an old 7.4
server.

Thank you for your answer.

Piotr Sulecki.