diff --git a/org.adempiere.base/src/org/compiere/model/GridTable.java b/org.adempiere.base/src/org/compiere/model/GridTable.java index f4be409bd3..f9c094ccb2 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTable.java +++ b/org.adempiere.base/src/org/compiere/model/GridTable.java @@ -3543,6 +3543,7 @@ public class GridTable extends AbstractTableModel private void openResultSet() { //postgresql need trx to use cursor based resultset + //https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor String trxName = m_virtual ? Trx.createTrxName("Loader") : null; trx = trxName != null ? Trx.get(trxName, true) : null; // open Statement (closed by Loader.close) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 1c6f9932aa..679dc6475b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -840,9 +840,13 @@ public abstract class InfoPanel extends Window implements EventListener, isHasNextPage = false; if (log.isLoggable(Level.FINER)) log.finer(dataSql); + Trx trx = null; try { - m_pstmt = DB.prepareStatement(dataSql, null); + //https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor + String trxName = Trx.createTrxName("InfoPanelLoad:"); + trx = Trx.get(trxName, true); + m_pstmt = DB.prepareStatement(dataSql, trxName); setParameters (m_pstmt, false); // no count if (log.isLoggable(Level.FINE)) log.fine("Start query - " + (System.currentTimeMillis()-startTime) + "ms"); @@ -889,6 +893,7 @@ public abstract class InfoPanel extends Window implements EventListener, finally { DB.close(m_rs, m_pstmt); + trx.close(); } if (end > cacheEnd || end <= 0)