You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2014/10/26 13:56:48 UTC
svn commit: r1634317 - in /db/torque/torque4/trunk/torque-runtime/src:
main/java/org/apache/torque/sql/JoinBuilder.java
test/java/org/apache/torque/sql/SqlBuilderTest.java
Author: tfischer
Date: Sun Oct 26 12:56:48 2014
New Revision: 1634317
URL: http://svn.apache.org/r1634317
Log:
TORQUE-333 correct handling of PreparedStatementReplacements in some joins
Modified:
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/JoinBuilder.java
db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/JoinBuilder.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/JoinBuilder.java?rev=1634317&r1=1634316&r2=1634317&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/JoinBuilder.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/JoinBuilder.java Sun Oct 26 12:56:48 2014
@@ -174,6 +174,7 @@ public final class JoinBuilder
rightExpression.getSql().toString(),
joinType,
buildJoinCondition(joinCondition, criteria));
+ fromElement.getPreparedStatementReplacements().addAll(rightExpression.getPreparedStatementReplacements());
queryFromClause.add(fromElement);
}
else
Modified: db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java?rev=1634317&r1=1634316&r2=1634317&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java Sun Oct 26 12:56:48 2014
@@ -31,6 +31,7 @@ import org.apache.torque.TorqueException
import org.apache.torque.criteria.Criteria;
import org.apache.torque.criteria.Criterion;
import org.apache.torque.criteria.FromElement;
+import org.apache.torque.criteria.PreparedStatementPart;
import org.apache.torque.criteria.SqlEnum;
import org.apache.torque.om.NumberKey;
@@ -1119,6 +1120,40 @@ public class SqlBuilderTest extends Base
assertEquals("y", query.getPreparedStatementReplacements().get(1));
}
+ /**
+ * Tests that a subselect can be added to the from clause.
+ *
+ * @throws Exception if an error occurs
+ */
+ public void testInnerJoinExplicitWithSubselect() throws Exception
+ {
+ Criteria subselect = new Criteria()
+ .where(new ColumnImpl("table2.column2"), 5)
+ .addSelectColumn(new ColumnImpl("table2.column1"));
+ Query subselectQuery = SqlBuilder.buildQuery(subselect);
+ PreparedStatementPart fromClause = new PreparedStatementPart(
+ "(" + subselectQuery.toString() + ") alias",
+ subselectQuery.getPreparedStatementReplacements().toArray());
+ Criterion join = new Criterion(new ColumnImpl("table1.column1"), new ColumnImpl("alias.column1"));
+
+ Criteria criteria = new Criteria()
+ .addSelectColumn(new ColumnImpl("table1.column1"))
+ .addJoin(new PreparedStatementPart("table1"), fromClause, join, Criteria.INNER_JOIN)
+ .where(new ColumnImpl("table1.column3"), 3);
+
+ Query query = SqlBuilder.buildQuery(criteria);
+
+ assertEquals(
+ "SELECT table1.column1 FROM table1 INNER JOIN "
+ + "(SELECT table2.column1 FROM table2 WHERE table2.column2=?) alias"
+ + " ON table1.column1=alias.column1"
+ + " WHERE table1.column3=?",
+ query.toString());
+ assertEquals(2, query.getPreparedStatementReplacements().size());
+ assertEquals(5, query.getPreparedStatementReplacements().get(0));
+ assertEquals(3, query.getPreparedStatementReplacements().get(1));
+ }
+
public void testInnerJoinWithJoinCriteriaAndDefaultSchema()
throws Exception
{
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org