From a8ebaee19fc1df651566fda46923d256de117f0b Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 19 Feb 2008 07:24:45 +0000 Subject: [PATCH] [ 1895357 ] SignDatabaseBuild - Transaction read-only Error - new fix, set concurrency base on sql. --- base/src/org/compiere/util/DB.java | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/base/src/org/compiere/util/DB.java b/base/src/org/compiere/util/DB.java index aab7d9ba5a..575df0bc9e 100644 --- a/base/src/org/compiere/util/DB.java +++ b/base/src/org/compiere/util/DB.java @@ -680,25 +680,33 @@ public final class DB /************************************************************************** - * Prepare Read Only Statement - * @param RO_SQL sql (RO) + * Prepare Statement + * @param sql * @return Prepared Statement * @deprecated */ - public static CPreparedStatement prepareStatement (String RO_SQL) + public static CPreparedStatement prepareStatement (String sql) { - return prepareStatement(RO_SQL, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, null); + int concurrency = ResultSet.CONCUR_READ_ONLY; + String upper = sql.toUpperCase(); + if (upper.startsWith("UPDATE ") || upper.startsWith("DELETE ")) + concurrency = ResultSet.CONCUR_UPDATABLE; + return prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, concurrency, null); } // prepareStatement /** - * Prepare Read Only Statement - * @param RO_SQL sql (RO) + * Prepare Statement + * @param sql * @param trxName transaction * @return Prepared Statement */ - public static CPreparedStatement prepareStatement (String RO_SQL, String trxName) + public static CPreparedStatement prepareStatement (String sql, String trxName) { - return prepareStatement(RO_SQL, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, trxName); + int concurrency = ResultSet.CONCUR_READ_ONLY; + String upper = sql.toUpperCase(); + if (upper.startsWith("UPDATE ") || upper.startsWith("DELETE ")) + concurrency = ResultSet.CONCUR_UPDATABLE; + return prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, concurrency, trxName); } // prepareStatement /**