Michael Van Canneyt wrote:
On Fri, 11 Sep 2015, Mark Morgan Lloyd wrote:

PostgreSQL has a useful feature where application programs can send notifications to each other, this tends to be much "cheaper" than periodically polling a table for changes.

I've had this working on various CPUs and OSes in a number of programs since at least 2.2.4, but it appears to have been broken at some point between 2.6.0 and 2.6.4 with problems persisting through to 3.0.0-rc1 and trunk. The specific fragment of code that's failing looks like this:

 result := badPoll;
 if PQStatus(DbTF.PQConnection1.Handle) <> CONNECTION_OK then
   exit;
 pqConsumeResult := PQconsumeInput(DbTF.PQConnection1.Handle);
 if PQStatus(DbTF.PQConnection1.Handle) <> CONNECTION_OK then
   exit;

If DbTF.PQConnection1 is of type TPQConnection then I think this is your problem. The low-level handle has been moved to the transaction. DbTF.PQConnection1.Handle is then a stub, of no value.

Thanks, I'll investigate (although it's curious or at least unfortunate that PQStatus() etc. is OK).

For the purpose of backward compatibility, what was the preferred way to get the handle before 2.6.4? Was it in TPQConnection or has there always been one in the transaction object?

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to