details:   https://code.openbravo.com/erp/stable/2.50/rev/4b2156ebe0da
changeset: 9651:4b2156ebe0da
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue Sep 06 09:42:13 2011 +0200
summary:   fixed bug 18436: 2.50 grid, cursors in Oracle are not reused
  Using prepared statement parameter for grid limits in Oracle

diffstat:

 src/org/openbravo/erpCommon/utility/TableSQLData.java |  31 +++++++++++++++---
 1 files changed, 25 insertions(+), 6 deletions(-)

diffs (51 lines):

diff -r f0df4e7f4ffd -r 4b2156ebe0da 
src/org/openbravo/erpCommon/utility/TableSQLData.java
--- a/src/org/openbravo/erpCommon/utility/TableSQLData.java     Mon Sep 05 
18:00:11 2011 +0200
+++ b/src/org/openbravo/erpCommon/utility/TableSQLData.java     Tue Sep 06 
09:42:13 2011 +0200
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2011 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -2133,14 +2133,33 @@
         String rangeEnd = Integer.toString(startPosition + rangeLength);
         if (getPool().getRDBMS().equalsIgnoreCase("ORACLE")) {
           txtAuxWhere.append("A");
-          if (hasRangeLimit)
-            txtAuxWhere.append(" WHERE ROWNUM <= " + rangeEnd);
+          if (hasRangeLimit) {
+            txtAuxWhere.append(" WHERE ROWNUM <= ?");
+            addWrapperParameter("oraRangeEnd", "RANGE", "");
+            try {
+              setParameter("oraRangeEnd", rangeEnd);
+            } catch (Exception e) {
+              // This shouldn't happen as name parameter is not null nor empty
+              log4j.error("Error setting parameters ", e);
+            }
+          }
           txtAuxWhere.append(")\n");
           txtAuxWhere.append("  WHERE rn1 ");
-          if (hasRangeLimit)
-            txtAuxWhere.append("BETWEEN " + rangeStart + " AND " + rangeEnd);
-          else
+          if (hasRangeLimit) {
+            txtAuxWhere.append("BETWEEN ? AND ?");
+            addWrapperParameter("oraRangeBtw1", "RANGE", "");
+            addWrapperParameter("oraRangeBtw2", "RANGE", "");
+
+            try {
+              setParameter("oraRangeBtw1", rangeStart);
+              setParameter("oraRangeBtw2", rangeEnd);
+            } catch (Exception e) {
+              // This shouldn't happen as name parameter is not null nor empty
+              log4j.error("Error setting parameters ", e);
+            }
+          } else {
             txtAuxWhere.append(">= ?");
+          }
           txtAuxWhere.append(")\n");
         } else {
           if (hasRangeLimit)

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to