RE: How to reset a server error '25P02 in_failed_sql_transaction'

From: Patrick FICHE <Patrick(dot)Fiche(at)aqsacom(dot)com>
To: Matthias Apitz <guru(at)unixarea(dot)de>, "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: RE: How to reset a server error '25P02 in_failed_sql_transaction'
Date: 2019-12-31 10:06:22
Message-ID: VI1PR0501MB26698E93A206543AE9F497BCEF260@VI1PR0501MB2669.eurprd05.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

Which behavior are you looking for ?
If you want the following statements to succeed, I guess that you don't want to be in a transaction context.
In this case, you should have a look at the following link : https://www.postgresql.org/docs/11/ecpg-commands.html
By default, the AUTOCOMMIT is OFF but you can set it to ON and it should solve your issue as only explicit transactions will keep a transaction context.

Regards,

Patrick Fiche
Database Engineer, Aqsacom Sas.
c. 33 6 82 80 69 96

-----Original Message-----
From: Matthias Apitz <guru(at)unixarea(dot)de>
Sent: Tuesday, December 31, 2019 6:55 AM
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: How to reset a server error '25P02 in_failed_sql_transaction'

Hello,

Due to a wrong human input in the GUI of our application our application server, from the point of view of the PostgreSQL server it is the PostgreSQL client, issues a broken ESQL/C command to the PostgreSQL server, here from our own debug logging the command and the error message of the server:

posDebug: [27.12.2019 15:20:59:043] stmt: SELECT ctid, * from titel_datum WHERE desk>='*2019' AND feldnr IN ( 2 ) ORDER BY desk ASC , feldnr ASC
posDebug: [27.12.2019 15:20:59:043] ESQL: PREPARE sid_titel_datum FROM :select_anw; ==== sqlca ====
sqlcode: -400
sqlerrm.sqlerrml: 61
sqlerrm.sqlerrmc: invalid input syntax for type date: »*2019« on line 918 ...

All subsequent correct (SELECT ...) statements get rejected with, for example:

...
posDebug: [27.12.2019 15:20:59:044] stmt: SELECT ctid, * from titel_datum WHERE desk>='31.12.1900' AND feldnr IN ( 2 ) ORDER BY desk ASC , feldnr ASC
posDebug: [27.12.2019 15:20:59:044] ESQL: PREPARE sid_titel_datum FROM :select_anw; ==== sqlca ====
sqlcode: -400
sqlerrm.sqlerrml: 105
sqlerrm.sqlerrmc: current transaction is aborted, commands ignored until end of transaction block on line 918
sqlerrd: 0 0 0 0 0 0
sqlwarn: 0 0 0 0 0 0 0 0
sqlstate: 25P02
========posSqlError=======
...

Note: we are not in some kind TRANSACTION block, like 'EXEC SQL BEGIN TRANSACTION;'

What is the correct way to abort the "transaction" as requested by the PG server to return to normal operations?

Thanks

matthias

--
Matthias Apitz, ✉ guru(at)unixarea(dot)de, http://www.unixarea.de/ +49-176-38902045 Public GnuPG key: http://www.unixarea.de/key.pub

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Sonam Sharma 2019-12-31 12:41:31 Pg import access
Previous Message Guillaume Lelarge 2019-12-31 09:40:43 Re: How to reset a server error '25P02 in_failed_sql_transaction'