2

I stack with next problem: my application which consist of Tomcat 8, Java 11, Spring 5, Atomikos 5, PostgreSQL 9.3.5 throw some strange errors. In Spring Repository I have method, which run native SQL query with temp tables creating and then perform some SELECTs. And at first method call I have next log output:

Hibernate: /* dynamic native SQL query */  DROP TABLE IF EXISTS all_character;  CREATE TEMP TABLE all_character AS (...);  DROP TABLE IF EXISTS character_last_cut; 
Hibernate: /* dynamic native SQL query */ SELECT * FROM ( SELECT sort_num ...
Hibernate: /* dynamic native SQL query */  DROP TABLE IF EXISTS character_last_cut_ch_column;
15:52:45,284 ERROR XAResourceTransaction:66 - XA resource 'commonDataSource': prepare for XID 'XID: 3139322E3136382E302E3130322E746D313631373336343336353139373030303532:3139322E3136382E302E3130322E746D3532' raised -7: the XA resource has become unavailable
org.postgresql.xa.PGXAException: Error preparing transaction. prepare xid=XID: 3139322E3136382E302E3130322E746D313631373336343
... 
Caused by: org.postgresql.util.PSQLException: ERROR: cannot PREPARE a transaction that has operated on temporary tables
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)

and it's right in accordance with "It is not currently allowed to PREPARE a transaction that has executed any operations involving temporary tables, ..." - https://www.postgresql.org/docs/9.3/sql-prepare-transaction.html

But at the next method calls all work fine without any errors. Why that error throwed only at first method call and not throwed by followed calls?

dimedrol90
  • 276
  • 1
  • 4
  • 12

0 Answers0