You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2015/03/12 00:59:25 UTC
phoenix git commit: Turn off optimization preventing data roundtrip
for UPSERT SELECT and DELETE when transactional
Repository: phoenix
Updated Branches:
refs/heads/txn 52c1d4550 -> 3d9c786ed
Turn off optimization preventing data roundtrip for UPSERT SELECT and DELETE when transactional
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3d9c786e
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3d9c786e
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3d9c786e
Branch: refs/heads/txn
Commit: 3d9c786edd115a37de6f027016f460159ef2fe33
Parents: 52c1d45
Author: James Taylor <jt...@salesforce.com>
Authored: Wed Mar 11 16:59:26 2015 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Wed Mar 11 16:59:26 2015 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/phoenix/compile/DeleteCompiler.java | 4 +++-
.../src/main/java/org/apache/phoenix/compile/UpsertCompiler.java | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3d9c786e/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
index 322d24a..b15bfd8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java
@@ -303,7 +303,9 @@ public class DeleteCompiler {
immutableIndex = getNonDisabledImmutableIndexes(tableRefToBe);
boolean mayHaveImmutableIndexes = !immutableIndex.isEmpty();
noQueryReqd = !hasLimit;
- runOnServer = isAutoCommit && noQueryReqd;
+ // Can't run on same server for transactional data, as we need the row keys for the data
+ // that is being upserted for conflict detection purposes.
+ runOnServer = isAutoCommit && noQueryReqd && !table.isTransactional();
HintNode hint = delete.getHint();
if (runOnServer && !delete.getHint().hasHint(Hint.USE_INDEX_OVER_DATA_TABLE)) {
hint = HintNode.create(hint, Hint.USE_DATA_OVER_INDEX_TABLE);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3d9c786e/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
index 8a76564..2a02b41 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
@@ -404,7 +404,9 @@ public class UpsertCompiler {
parallelIteratorFactoryToBe = new UpsertingParallelIteratorFactory(connection, tableRefToBe);
// If we're in the else, then it's not an aggregate, distinct, limted, or sequence using query,
// so we might be able to run it entirely on the server side.
- runOnServer = sameTable && isAutoCommit && !(table.isImmutableRows() && !table.getIndexes().isEmpty());
+ // Can't run on same server for transactional data, as we need the row keys for the data
+ // that is being upserted for conflict detection purposes.
+ runOnServer = sameTable && isAutoCommit && !table.isTransactional() && !(table.isImmutableRows() && !table.getIndexes().isEmpty());
}
// If we may be able to run on the server, add a hint that favors using the data table
// if all else is equal.