You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2015/10/30 16:42:37 UTC

[1/2] incubator-trafodion git commit: [TRAFODION-25] Fix bug preventing fully parallelized DELETEs

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 693090511 -> 0abb3b6ca


[TRAFODION-25] Fix bug preventing fully parallelized DELETEs


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/10d80035
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/10d80035
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/10d80035

Branch: refs/heads/master
Commit: 10d80035ae0803d9156da381a418dccc8b264186
Parents: 7cf4caa
Author: Dave Birdsall <db...@apache.org>
Authored: Wed Oct 28 23:24:24 2015 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Wed Oct 28 23:24:24 2015 +0000

----------------------------------------------------------------------
 core/sql/optimizer/OptPhysRelExpr.cpp | 107 +++++++++++++++++++----------
 core/sql/optimizer/ScmCostMethod.cpp  |  13 +++-
 2 files changed, 79 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/10d80035/core/sql/optimizer/OptPhysRelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/OptPhysRelExpr.cpp b/core/sql/optimizer/OptPhysRelExpr.cpp
index fc256c6..69f22e9 100644
--- a/core/sql/optimizer/OptPhysRelExpr.cpp
+++ b/core/sql/optimizer/OptPhysRelExpr.cpp
@@ -16565,21 +16565,35 @@ HbaseDelete::synthPhysicalProperty(const Context* myContext,
                                    const Lng32     planNumber,
                                    PlanWorkSpace  *pws)
 {
-
-  //----------------------------------------------------------
-  // Create a node map with a single, active, wild-card entry.
-  //----------------------------------------------------------
-  NodeMap* myNodeMap = new(CmpCommon::statementHeap())
-                        NodeMap(CmpCommon::statementHeap(),
-                                1,
-                                NodeMapEntry::ACTIVE);
+  const ReqdPhysicalProperty* rppForMe =
+          myContext->getReqdPhysicalProperty();
+  PartitioningRequirement* partReqForMe =
+    rppForMe->getPartitioningRequirement();
 
   //------------------------------------------------------------
-  // Synthesize a partitioning function with a single partition.
+  // Synthesize a partitioning function with a single partition
+  // unless we have a partitioning requirement that says 
+  // otherwise.
   //------------------------------------------------------------
-  PartitioningFunction* myPartFunc =
-    new(CmpCommon::statementHeap())
-    SinglePartitionPartitioningFunction(myNodeMap);
+  PartitioningFunction* myPartFunc = NULL;
+
+  if (partReqForMe &&
+      partReqForMe->castToRequireReplicateNoBroadcast())
+    {
+      myPartFunc =
+        partReqForMe->castToRequireReplicateNoBroadcast()->
+        getPartitioningFunction()->copy();
+    }
+  else
+    {
+      // Create a node map with a single, active, wild-card entry.
+      NodeMap* myNodeMap = new(CmpCommon::statementHeap())
+                               NodeMap(CmpCommon::statementHeap(),
+                               1,
+                               NodeMapEntry::ACTIVE);
+      myPartFunc = new(CmpCommon::statementHeap())
+      SinglePartitionPartitioningFunction(myNodeMap);
+    }
 
   PhysicalProperty * sppForMe =
     new(CmpCommon::statementHeap())
@@ -16613,21 +16627,35 @@ HbaseUpdate::synthPhysicalProperty(const Context* myContext,
                                    const Lng32     planNumber,
                                    PlanWorkSpace  *pws)
 {
-
-  //----------------------------------------------------------
-  // Create a node map with a single, active, wild-card entry.
-  //----------------------------------------------------------
-  NodeMap* myNodeMap = new(CmpCommon::statementHeap())
-                        NodeMap(CmpCommon::statementHeap(),
-                                1,
-                                NodeMapEntry::ACTIVE);
+  const ReqdPhysicalProperty* rppForMe =
+          myContext->getReqdPhysicalProperty();
+  PartitioningRequirement* partReqForMe =
+    rppForMe->getPartitioningRequirement();
 
   //------------------------------------------------------------
-  // Synthesize a partitioning function with a single partition.
+  // Synthesize a partitioning function with a single partition
+  // unless we have a partitioning requirement that says 
+  // otherwise.
   //------------------------------------------------------------
-  PartitioningFunction* myPartFunc =
-    new(CmpCommon::statementHeap())
-    SinglePartitionPartitioningFunction(myNodeMap);
+  PartitioningFunction* myPartFunc = NULL;
+
+  if (partReqForMe &&
+      partReqForMe->castToRequireReplicateNoBroadcast())
+    {
+      myPartFunc =
+        partReqForMe->castToRequireReplicateNoBroadcast()->
+        getPartitioningFunction()->copy();
+    }
+  else
+    {
+      // Create a node map with a single, active, wild-card entry.
+      NodeMap* myNodeMap = new(CmpCommon::statementHeap())
+                               NodeMap(CmpCommon::statementHeap(),
+                               1,
+                               NodeMapEntry::ACTIVE);
+      myPartFunc = new(CmpCommon::statementHeap())
+      SinglePartitionPartitioningFunction(myNodeMap);
+    }
 
   PhysicalProperty * sppForMe =
     new(CmpCommon::statementHeap())
@@ -16703,27 +16731,30 @@ HbaseInsert::synthPhysicalProperty(const Context* myContext,
   PartitioningRequirement* partReqForMe =
     rppForMe->getPartitioningRequirement();
 
-  //----------------------------------------------------------
-  // Create a node map with a single, active, wild-card entry.
-  //----------------------------------------------------------
-  NodeMap* myNodeMap = new(CmpCommon::statementHeap())
-                        NodeMap(CmpCommon::statementHeap(),
-                                1,
-                                NodeMapEntry::ACTIVE);
-
   //------------------------------------------------------------
-  // Synthesize a partitioning function with a single partition.
+  // Synthesize a partitioning function with a single partition
+  // unless we have a partitioning requirement that says 
+  // otherwise.
   //------------------------------------------------------------
   PartitioningFunction* myPartFunc = NULL;
 
   if (partReqForMe &&
       partReqForMe->castToRequireReplicateNoBroadcast())
-    myPartFunc = 
-      partReqForMe->castToRequireReplicateNoBroadcast()->
-      getPartitioningFunction()->copy();
+    {
+      myPartFunc =
+        partReqForMe->castToRequireReplicateNoBroadcast()->
+        getPartitioningFunction()->copy();
+    }
   else
-    myPartFunc = new(CmpCommon::statementHeap())
-    SinglePartitionPartitioningFunction(myNodeMap);
+    {
+      // Create a node map with a single, active, wild-card entry.
+      NodeMap* myNodeMap = new(CmpCommon::statementHeap())
+                               NodeMap(CmpCommon::statementHeap(),
+                               1,
+                               NodeMapEntry::ACTIVE);
+      myPartFunc = new(CmpCommon::statementHeap())
+      SinglePartitionPartitioningFunction(myNodeMap);
+    }
 
   PhysicalProperty * sppForMe =
     new(CmpCommon::statementHeap())

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/10d80035/core/sql/optimizer/ScmCostMethod.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ScmCostMethod.cpp b/core/sql/optimizer/ScmCostMethod.cpp
index 5da4785..16a0d87 100644
--- a/core/sql/optimizer/ScmCostMethod.cpp
+++ b/core/sql/optimizer/ScmCostMethod.cpp
@@ -3881,9 +3881,16 @@ CostMethodHbaseDelete::scmComputeOperatorCostInternal(RelExpr* op,
   HbaseDelete* delOp = (HbaseDelete *)op;   // downcast
 
   CMPASSERT(partFunc_ != NULL);
-  CostScalar activePartitions =
-   (CostScalar)
-     (((NodeMap *)(partFunc_->getNodeMap()))->getNumActivePartitions());
+
+  //  Later, if and when we start using NodeMaps to track active regions for 
+  //  Trafodion tables in HBase (or native HBase tables), we can use the
+  //  following to get active partitions.
+  //CostScalar activePartitions =
+  // (CostScalar)
+  //   (((NodeMap *)(partFunc_->getNodeMap()))->getNumActivePartitions());
+  //  But for now, we do the following:
+  CostScalar activePartitions = (CostScalar)(partFunc_->getCountOfPartitions());
+
   const IndexDesc* CIDesc = delOp->getIndexDesc();
   const CostScalar & recordSizeInKb = CIDesc->getRecordSizeInKb();
 


[2/2] incubator-trafodion git commit: Merge [TRAFODION-25] Fix bug preventing fully parallelized DELETEs

Posted by db...@apache.org.
Merge [TRAFODION-25] Fix bug preventing fully parallelized DELETEs


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/0abb3b6c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/0abb3b6c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/0abb3b6c

Branch: refs/heads/master
Commit: 0abb3b6ca9cbe9ff078b4add97a66fdea2146b69
Parents: 6930905 10d8003
Author: Dave Birdsall <db...@apache.org>
Authored: Fri Oct 30 15:41:43 2015 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Fri Oct 30 15:41:43 2015 +0000

----------------------------------------------------------------------
 core/sql/optimizer/OptPhysRelExpr.cpp | 107 +++++++++++++++++++----------
 core/sql/optimizer/ScmCostMethod.cpp  |  13 +++-
 2 files changed, 79 insertions(+), 41 deletions(-)
----------------------------------------------------------------------