svn commit: r883138 - in /ofbiz/trunk/framework: entity/src/org/ofbiz/entity/sql/SQLUtil.java sql/src/org/ofbiz/sql/Parser.jj

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r883138 - in /ofbiz/trunk/framework: entity/src/org/ofbiz/entity/sql/SQLUtil.java sql/src/org/ofbiz/sql/Parser.jj

doogie-3
Author: doogie
Date: Sun Nov 22 20:07:29 2009
New Revision: 883138

URL: http://svn.apache.org/viewvc?rev=883138&view=rev
Log:
Add flags to disable joins on DELETE and UPDATE.

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/SQLUtil.java
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/SQLUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/SQLUtil.java?rev=883138&r1=883137&r2=883138&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/SQLUtil.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/SQLUtil.java Sun Nov 22 20:07:29 2009
@@ -19,17 +19,24 @@
 package org.ofbiz.entity.sql;
 
 import java.io.StringReader;
+import java.util.List;
 
 import org.ofbiz.entity.condition.EntityCondition;
 
 import org.ofbiz.sql.Parser;
 import org.ofbiz.sql.ParseException;
+import org.ofbiz.sql.SQLPlan;
+import org.ofbiz.sql.SQLStatement;
 
 public class SQLUtil {
     private static final EntityPlanner planner = new EntityPlanner();
 
+    private static Parser updateParserFlags(Parser parser) {
+        return parser.deleteSupportsUsing(false).updateSupportsFrom(false);
+    }
+
     public static EntitySelectPlan parseSelect(String sql) throws ParseException {
-       return planner.planSelect(new Parser(new StringReader(sql)).SelectStatement());
+       return planner.planSelect(updateParserFlags(new Parser(new StringReader(sql))).SelectStatement());
     }
     /*
     public static EntityCondition parseCondition(String condition) throws ParseException {

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj?rev=883138&r1=883137&r2=883138&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Sun Nov 22 20:07:29 2009
@@ -47,6 +47,19 @@
 import javolution.util.FastMap;
 
 public final class Parser {
+ private boolean deleteSupportsUsing = true;
+ private boolean updateSupportsFrom = true;
+
+ public Parser deleteSupportsUsing(boolean value) {
+ deleteSupportsUsing = value;
+ return this;
+ }
+
+ public Parser updateSupportsFrom(boolean value) {
+ updateSupportsFrom = value;
+ return this;
+ }
+
  private Condition reduce(List<Condition> conditions, Joiner joiner) {
  if (conditions.size() == 1) {
  return conditions.get(0);
@@ -306,7 +319,7 @@
  <SET>
  setFields=SetField() { allSetFields.addAll(setFields); }
  ( <COMMA> setFields=SetField() { allSetFields.addAll(setFields); } )*
- ( <FROM> joined=JoinedRest(false, tableName) )?
+ ( LOOKAHEAD(<FROM>, {updateSupportsFrom}) <FROM> joined=JoinedRest(false, tableName) )?
  ( <WHERE> whereCondition=ConditionExpression() )?
  { return new SQLUpdate(new Table(tableName, joined), allSetFields, whereCondition); }
 }
@@ -320,7 +333,7 @@
 }
 {
  <DELETE> <FROM> tableName=TableName()
- ( <USING> joined=JoinedRest(false, tableName) )?
+ ( LOOKAHEAD(<USING>, {deleteSupportsUsing}) <USING> joined=JoinedRest(false, tableName) )?
  ( <WHERE> whereCondition=ConditionExpression() )?
  { return new SQLDelete(new Table(tableName, joined), whereCondition); }
 }