[ 
https://issues.apache.org/jira/browse/CAMEL-13951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Grzegorz Grzybek reopened CAMEL-13951:
--------------------------------------

> JdbcAggregationRepository doesn't work with PostgreSQL
> ------------------------------------------------------
>
>                 Key: CAMEL-13951
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13951
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-sql
>    Affects Versions: 2.24.1, 3.0.0.RC1
>            Reporter: Grzegorz Grzybek
>            Assignee: Grzegorz Grzybek
>            Priority: Major
>             Fix For: 3.0.0, 2.23.4, 2.24.2, 2.25.0, 3.0.0.RC2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> See:
> * 
> https://www.postgresql.org/message-id/200609241203.59292.ralf.wiebicke%40exedio.com
> * 
> https://groups.google.com/forum/#!msg/comp.databases.postgresql/NuXGXdFbA4g/LQ97ahowmxkJ
> * 
> https://www.progress.com/blogs/solution-to-current-transaction-is-aborted-error-for-postgresql-compatibility-with-odbc-jdbc
> The problem is that JdbcAggregationRepository relies heavily on spring-jdbc's 
> throwing org.springframework.dao.DataIntegrityViolationException according to 
> its sql exception mapping.
> By default, DataIntegrityViolationException is thrown if SQLState starts with 
> {{23}}. Check https://www.postgresql.org/docs/10/errcodes-appendix.html and 
> see that:
> bq. 23505: unique_violation
> The _problem_ specific to PostgreSQL is that hitting such exception makes the 
> connection (and surrounding Spring transaction) unusable. There's no way to 
> _repeat_ an attempt to insert (or even check current) state of aggregation, 
> because PostgreSQL will immediately throw:
> {noformat}
> Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is 
> aborted, commands ignored until end of transaction block
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2468)
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2211)
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:309)
>       at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:446)
> ...
> {noformat}
> With SQLState - {{25P02}} == "in_failed_sql_transaction".
> The expected (by PostgreSQL) behavior is to rollback current transaction and 
> start over.
> We're however in (potentially nested) TransactionTemplate and _rollback only_ 
> status is beyond (easy) control.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to