Author: shawkins
Date: 2012-08-02 15:09:31 -0400 (Thu, 02 Aug 2012)
New Revision: 4290
Modified:
trunk/engine/src/main/java/org/teiid/query/processor/relational/AccessNode.java
trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
Log:
minor tweak to txn detection
Modified: trunk/engine/src/main/java/org/teiid/query/processor/relational/AccessNode.java
===================================================================
---
trunk/engine/src/main/java/org/teiid/query/processor/relational/AccessNode.java 2012-08-02
18:04:30 UTC (rev 4289)
+++
trunk/engine/src/main/java/org/teiid/query/processor/relational/AccessNode.java 2012-08-02
19:09:31 UTC (rev 4290)
@@ -52,6 +52,7 @@
import org.teiid.query.sql.lang.OrderByItem;
import org.teiid.query.sql.lang.Query;
import org.teiid.query.sql.lang.Select;
+import org.teiid.query.sql.lang.StoredProcedure;
import org.teiid.query.sql.lang.SubqueryContainer;
import org.teiid.query.sql.symbol.Constant;
import org.teiid.query.sql.symbol.Expression;
@@ -474,7 +475,7 @@
@Override
public Boolean requiresTransaction(boolean transactionalReads) {
Boolean required = super.requiresTransaction(transactionalReads);
- if (Boolean.TRUE.equals(required)) {
+ if (Boolean.TRUE.equals(required) || (command instanceof StoredProcedure &&
((StoredProcedure)command).getUpdateCount() > 1)) {
return true;
}
return null;
Modified:
trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
===================================================================
---
trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java 2012-08-02
18:04:30 UTC (rev 4289)
+++
trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java 2012-08-02
19:09:31 UTC (rev 4290)
@@ -116,7 +116,10 @@
FakeDataManager dataManager = new FakeDataManager();
TestProcessor.sampleData1(dataManager);
// Plan query
- ProcessorPlan plan = TestProcessor.helpGetPlan(sql,
RealMetadataFactory.example1Cached());
+ ProcessorPlan plan = TestProcessor.helpGetPlan(sql,
RealMetadataFactory.example1Cached());
+
+ assertFalse(plan.requiresTransaction(false));
+ assertTrue(plan.requiresTransaction(true)); //TODO: this should be false as there
is only a single execution possible
// Run query
TestProcessor.helpProcess(plan, dataManager, expected);
}