|
From: <bir...@us...> - 2006-10-17 17:58:21
|
Revision: 100
http://svn.sourceforge.net/mptstore/?rev=100&view=rev
Author: birkland
Date: 2006-10-17 10:57:34 -0700 (Tue, 17 Oct 2006)
Log Message:
-----------
Fixed bug that was probably introduced on 10/3 or 10/4 in complex query processing
Modified Paths:
--------------
trunk/src/java/org/nsdl/mptstore/query/provider/GraphQuerySQLProvider.java
Modified: trunk/src/java/org/nsdl/mptstore/query/provider/GraphQuerySQLProvider.java
===================================================================
--- trunk/src/java/org/nsdl/mptstore/query/provider/GraphQuerySQLProvider.java 2006-10-16 23:04:54 UTC (rev 99)
+++ trunk/src/java/org/nsdl/mptstore/query/provider/GraphQuerySQLProvider.java 2006-10-17 17:57:34 UTC (rev 100)
@@ -203,8 +203,10 @@
* an optional clause: It would probably be wise to either check
* here, or prove that an exception would have been thrown already.
*/
+
+ StringBuilder additional = new StringBuilder();
if (valueBindings.size() > 0) {
- sql.append(" WHERE ");
+ additional.append(" WHERE ");
ArrayList<String> valueKeys =
new ArrayList<String>(valueBindings.keySet());
for (int i = 0; i < valueKeys.size(); i++) {
@@ -214,11 +216,18 @@
if (i > 0 || j > 0) {
sql.append(" AND ");
}
- sql.append(values.get(j));
+
+ LOG.debug("Adding remaining unused binding for "
+ + valueKeys.get(i) + ", " + values.get(j) + "\n");
+ additional.append(values.get(j));
}
}
}
+ if (!additional.toString().equals(" WHERE ")) {
+ sql.append(additional.toString());
+ }
+
if (ordering != null) {
sql.append(" ORDER BY " + allBindings.get(ordering) + " "
+ orderingDirection);
@@ -383,6 +392,15 @@
+ getBoundValue(p, variableBindings) + "\n");
conditions.addCondition(p.mappedName(), " = ",
getBoundValue(p, variableBindings));
+
+ if (valueBindings.containsKey(p.boundTable().alias())) {
+ LOG.debug("Removing value binding from queue: "
+ + p.mappedName() + " = "
+ + getBoundValue(p, variableBindings) + "\n");
+ valueBindings.get(p.boundTable().alias()).remove(
+ p.mappedName() + " = "
+ + getBoundValue(p, variableBindings));
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|