[ https://issues.apache.org/jira/browse/CAMEL-13951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16924157#comment-16924157 ]
Grzegorz Grzybek commented on CAMEL-13951: ------------------------------------------ Or more generic name {{setUseNestedPropagation()}}? > 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 > > 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)