You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by sa...@apache.org on 2017/02/14 07:44:16 UTC

[03/10] incubator-trafodion git commit: Turning on CQD TRAF_UPSERT_TO_EFF_TREE 'ON' by default. Fixed a couple of issues during inlining.1. RI constraints had to be handled .2. The Sequence node had to be modified to avoid an unneeded copyTree that was

Turning on CQD TRAF_UPSERT_TO_EFF_TREE 'ON' by default. Fixed a couple of issues during inlining.1. RI constraints had to be handled .2.  The Sequence node had to be modified to avoid an unneeded copyTree that was causing problems with subqueries. 3. A new flag introduced to  identify that we are int he midst of this transformation.
 Modified TEST015 to print out the details for the new transformation.


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

Branch: refs/heads/master
Commit: 7760c9f4bc625e2c1e77fdc6b0b23fba867d1191
Parents: 22a46a3
Author: Sandhya Sundaresan <sa...@apache.org>
Authored: Fri Feb 3 01:28:32 2017 +0000
Committer: Sandhya Sundaresan <sa...@apache.org>
Committed: Fri Feb 3 01:28:32 2017 +0000

----------------------------------------------------------------------
 core/sql/optimizer/BindRelExpr.cpp       |  4 ++-
 core/sql/optimizer/BindWA.h              |  8 ++++-
 core/sql/optimizer/Inlining.cpp          | 17 +++++++---
 core/sql/optimizer/RelExpr.cpp           |  3 +-
 core/sql/optimizer/RelSequence.cpp       |  9 +++--
 core/sql/optimizer/RelUpdate.h           | 10 +++++-
 core/sql/regress/executor/EXPECTED015.SB | 47 ++++++++++++++++-----------
 core/sql/regress/executor/TEST015        | 25 +++++++++-----
 core/sql/sqlcomp/nadefaults.cpp          |  2 +-
 9 files changed, 84 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/BindRelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/BindRelExpr.cpp b/core/sql/optimizer/BindRelExpr.cpp
index abbac48..a83d381 100644
--- a/core/sql/optimizer/BindRelExpr.cpp
+++ b/core/sql/optimizer/BindRelExpr.cpp
@@ -10800,7 +10800,7 @@ RelExpr* Insert::xformUpsertToEfficientTree(BindWA *bindWA)
     new (bindWA->wHeap())
     Scan(CorrName(getTableDesc()->getCorrNameObj(), bindWA->wHeap()));
 
- 
+   bindWA->getCurrentScope()->context()->inUpsertXform() = TRUE;
   //join predicate between source columns and target table.
   ItemExpr * keyPred = NULL;
   ItemExpr * keyPredPrev = NULL;
@@ -10949,6 +10949,8 @@ RelExpr* Insert::xformUpsertToEfficientTree(BindWA *bindWA)
   nvl = nvl->bindNode(bindWA);
   setProducedMergeIUDIndicator(nvl->getValueId());
 
+  setXformedEffUpsert(TRUE);
+  bindWA->getCurrentScope()->context()->inUpsertXform() =  FALSE;
   return topNode; 
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/BindWA.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/BindWA.h b/core/sql/optimizer/BindWA.h
index ce1c73e..45b2408 100644
--- a/core/sql/optimizer/BindWA.h
+++ b/core/sql/optimizer/BindWA.h
@@ -154,6 +154,7 @@ public:
   , inOlapOrderBy_              (FALSE)
   , inOlapPartitionBy_          (FALSE)
   , inComputedColumnExpr_       (FALSE)
+  , inUpsertXform_              (FALSE)
   {
     CMPASSERT(FALSE != REL_UPDATE && FALSE != REL_INSERT);
   }
@@ -227,7 +228,7 @@ public:
   NABoolean        &inOlapPartitionBy() { return inOlapPartitionBy_; }
   NABoolean        &inComputedColumnExpr() { return inComputedColumnExpr_; }
   StmtDDLCreateTrigger *&triggerObj(){ return triggerObj_; }
-
+  NABoolean        &inUpsertXform() {return inUpsertXform_;}
   //++ MV
   inline MvBindContext *&getMvBindContext() { return pMvBindContext_; }
 
@@ -336,6 +337,8 @@ private:
   // --------------------------------------------------------------------
   NABoolean lookAboveToDecideSubquery_;
 
+  // True if we are in the midst of transforming upsert with indexes. 
+  NABoolean inUpsertXform_;
   // --------------------------------------------------------------------
   // Non-NULL if binding children of a Tuple, in which case dereferencing
   // it gives the current child number.
@@ -876,6 +879,7 @@ public:
       dcompressInMaster_(FALSE),
       compressInMaster_(FALSE),
       partnNumInBuffer_(FALSE)
+      
   {}
 
   HostArraysWA(const HostArraysWA &other, CollHeap * h = 0)
@@ -913,6 +917,7 @@ public:
       dcompressInMaster_(other.dcompressInMaster_),
       compressInMaster_(other.compressInMaster_),
       partnNumInBuffer_(other.partnNumInBuffer_)
+     
   {}
 
 
@@ -1047,6 +1052,7 @@ public:
   void setRowsetRowCountArraySize (const Lng32 size) {rowsetRowCountArraySize_ = size;}
 
   Lng32 getRowsetRowCountArraySize () { return rowsetRowCountArraySize_;}
+  
 private:
 
   BindWA *bindWA_;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/Inlining.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/Inlining.cpp b/core/sql/optimizer/Inlining.cpp
index e0c6c91..551a9f8 100644
--- a/core/sql/optimizer/Inlining.cpp
+++ b/core/sql/optimizer/Inlining.cpp
@@ -618,10 +618,14 @@ RETDesc *GenericUpdate::createOldAndNewCorrelationNames(BindWA *bindWA, NABoolea
     rd = new (bindWA->wHeap()) RETDesc(bindWA);
   }
 
+  /*  if ((getOperatorType() != REL_UNARY_INSERT) || 
+      getUpdateCKorUniqueIndexKey() ||
+      ((getOperatorType() == REL_UNARY_INSERT) &&((Insert *)this)->isMerge()) ||
+      ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->isUpsert() && (CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON )))  */
   if ((getOperatorType() != REL_UNARY_INSERT) || 
       getUpdateCKorUniqueIndexKey() ||
       ((getOperatorType() == REL_UNARY_INSERT) &&((Insert *)this)->isMerge()) ||
-      ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->isUpsert() && (CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON )))  
+      ((getOperatorType() == REL_UNARY_INSERT) &&((Insert *)this)->xformedEffUpsert()))
   {
     // DELETE or UPDATE --
     // Now merge the old/target/before valueid's (the Scan child RETDesc)
@@ -632,7 +636,8 @@ RETDesc *GenericUpdate::createOldAndNewCorrelationNames(BindWA *bindWA, NABoolea
       scan = getScanNode();
     else 
       scan = getLeftmostScanNode();
-    if ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->isUpsert() && (CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON ))
+    /* if ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->isUpsert() && (CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON ))*/
+    if ((getOperatorType() == REL_UNARY_INSERT) &&((Insert *)this)->xformedEffUpsert())
       {
 	RelSequence *olapChild = getOlapChild();
 	CorrName corrName(getTableDesc()->getCorrNameObj().getQualifiedNameObj(), 
@@ -2105,8 +2110,9 @@ RelExpr *GenericUpdate::createIMNodes(BindWA *bindWA,
   RelExpr *indexInsert = NULL, *indexDelete = NULL, *indexOp = NULL;
   NABoolean isForUpdate = (getOperatorType() == REL_UNARY_UPDATE ||
                            isMergeUpdate());
-  NABoolean isEffUpsert = ((CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON ) && (getOperatorType() == REL_UNARY_INSERT && ((Insert*)this)->isUpsert()));
-
+  /* NABoolean isEffUpsert = ((CmpCommon::getDefault(TRAF_UPSERT_TO_EFF_TREE) == DF_ON ) && (getOperatorType() == REL_UNARY_INSERT && ((Insert*)this)->isUpsert()));*/
+  
+  NABoolean isEffUpsert = ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->xformedEffUpsert());
   if (indexCorrName.getUgivenName().isNull())
     {
       indexCorrName.setUgivenName(tableCorrName.getUgivenName());
@@ -2461,7 +2467,8 @@ RefConstraintList *GenericUpdate::getRIs(BindWA *bindWA,
 						   *allRIConstraints);
   
   if ((getOperatorType() == REL_UNARY_DELETE) || 
-      (getOperatorType()== REL_UNARY_UPDATE))
+      (getOperatorType()== REL_UNARY_UPDATE) ||
+      ((getOperatorType() == REL_UNARY_INSERT) && ((Insert *)this)->xformedEffUpsert()))
     naTable->getUniqueConstraints().getRefConstraints(bindWA, 
 						      newRecExpr(), 
 						      *allRIConstraints);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/RelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.cpp b/core/sql/optimizer/RelExpr.cpp
index 293ed6f..02990b6 100644
--- a/core/sql/optimizer/RelExpr.cpp
+++ b/core/sql/optimizer/RelExpr.cpp
@@ -13042,6 +13042,7 @@ Insert::Insert(const CorrName &name,
    isUpsert_(FALSE),
    isTrafLoadPrep_(FALSE),
    createUstatSample_(createUstatSample),
+   xformedEffUpsert_(FALSE),
    baseColRefs_(NULL)
 {
   insert_a_tuple_ = FALSE;
@@ -13134,7 +13135,7 @@ RelExpr * Insert::copyTopNode(RelExpr *derivedNode, CollHeap* outHeap)
   result->isUpsert_ = isUpsert_;
   result->isTrafLoadPrep_ = isTrafLoadPrep_;
   result->createUstatSample_ = createUstatSample_;
-  
+  result->xformedEffUpsert_ = xformedEffUpsert_;
   return GenericUpdate::copyTopNode(result, outHeap);
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/RelSequence.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelSequence.cpp b/core/sql/optimizer/RelSequence.cpp
index adcf256..f0ce941 100644
--- a/core/sql/optimizer/RelSequence.cpp
+++ b/core/sql/optimizer/RelSequence.cpp
@@ -1210,9 +1210,12 @@ RelExpr *RelSequence::bindNode(BindWA *bindWA)
   bindWA->getCurrentScope()->setRETDesc(resultTable);
 
   //bindWA->getCurrentScope()->getSequenceNode() = this;
-  
-  if(partitionChange) {
-    partitionChange->convertToValueIdList(partitionChange_, bindWA, ITM_ITEM_LIST);
+  if (!bindWA->getCurrentScope()->context()->inUpsertXform())
+    {
+      if(partitionChange) {
+        partitionChange->convertToValueIdList(partitionChange_, bindWA, ITM_ITEM_LIST);
+      }
+    
     if(bindWA->errStatus())
       return this;
   

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/optimizer/RelUpdate.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelUpdate.h b/core/sql/optimizer/RelUpdate.h
index b253a6c..8be7505 100644
--- a/core/sql/optimizer/RelUpdate.h
+++ b/core/sql/optimizer/RelUpdate.h
@@ -1203,6 +1203,14 @@ public:
     baseColRefs_ = val;
   }
 
+  NABoolean xformedEffUpsert() const
+  {
+    return xformedEffUpsert_;
+  }
+  void setXformedEffUpsert(NABoolean x)
+  {
+    xformedEffUpsert_ = TRUE;
+  }
   NABoolean isUpsertThatNeedsMerge(NABoolean isAlignedRowFormat, NABoolean omittedDefaultCols,NABoolean omittedCurrentDefaultCols) const;
   RelExpr* xformUpsertToMerge(BindWA *bindWA) ;
   RelExpr* xformUpsertToEfficientTree(BindWA *bindWA) ;
@@ -1310,7 +1318,7 @@ private:
   // If this is TRUE, a sample table will be created during the bulk load for
   // use by Update Statistics.
   NABoolean createUstatSample_;
-
+  NABoolean xformedEffUpsert_;
   // ColReference list of the base table columns used in creating the
   // newRecExprArray_ during bindNode(). Used only for index maintenance.
   ItemExprList *baseColRefs_;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/regress/executor/EXPECTED015.SB
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED015.SB b/core/sql/regress/executor/EXPECTED015.SB
index c6e8e77..5a1f2e4 100755
--- a/core/sql/regress/executor/EXPECTED015.SB
+++ b/core/sql/regress/executor/EXPECTED015.SB
@@ -181,6 +181,15 @@
 
 --- SQL command prepared.
 >>
+>>prepare explainItEff from
++>select substring(operator,1,16) operator
++>from table (explain(NULL,'XX')) t
++>where operator LIKE '%SEQUENCE%' ;
+
+--- SQL command prepared.
+>>
+>>
+>>
 >>insert into t015t1 values (1,1), (2,2);
 
 --- 2 row(s) inserted.
@@ -1879,12 +1888,12 @@ A            B                     C
 +>?b[10], ?c[10], ?d[10], ?e[10], null, ?f[10], null) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1893,12 +1902,12 @@ TRAFODION_MERGE
 +>VALUES  (?a, ?b, ?c, ?d, ?e, null, ?f, null) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1908,12 +1917,12 @@ TRAFODION_MERGE
 +>?b, ?c, ?d, ?e, null, ?f, null) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1924,12 +1933,12 @@ TRAFODION_MERGE
 +>NVL((select d.id from DEC1 d where d.codeValue = ?), NULL),  ? ) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1945,12 +1954,12 @@ TRAFODION_MERGE
 +>(select i.id from DEC1 i where i.codeValue = ?) and h.valueDomainID = ? ), NULL), ? );
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1961,12 +1970,12 @@ TRAFODION_MERGE
 +>(select d.id from DEC1 d where d.codeValue = ?),  ? ) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1974,12 +1983,12 @@ TRAFODION_MERGE
 +>VALUES  (1,  (select d.id from DEC1 d where d.codeValue = ?),  3 ) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -1987,12 +1996,12 @@ TRAFODION_MERGE
 +>VALUES  (?[10], ?[10], ?[10] ) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -2000,12 +2009,12 @@ TRAFODION_MERGE
 +>VALUES  (1,  (select d.id from DEC1 d where d.codeValue = 'aa'),  3 ) ;
 
 --- SQL command prepared.
->>execute explainIt;
+>>execute explainItEff;
 
 OPERATOR        
 ----------------
 
-TRAFODION_MERGE 
+SEQUENCE        
 
 --- 1 row(s) selected.
 >>
@@ -2031,7 +2040,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 .    .    9    trafodion_insert                T015T16I1             1.00E+000
 .    .    8    trafodion_vsbb_delet            T015T16I1             1.00E+000
 5    6    7    nested_join                                           1.00E+000
-.    .    6    trafodion_upsert                T015T16               1.00E+000
+.    .    6    trafodion_vsbb_upser            T015T16               1.00E+000
 4    .    5    sequence                                              1.00E+000
 3    .    4    sort                                                  2.00E+000
 2    1    3    left_hybrid_hash_joi                                  2.00E+000

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/regress/executor/TEST015
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/TEST015 b/core/sql/regress/executor/TEST015
index 5701eec..1631133 100755
--- a/core/sql/regress/executor/TEST015
+++ b/core/sql/regress/executor/TEST015
@@ -271,6 +271,13 @@ select substring(operator,1,16) operator
 from table (explain(NULL,'XX')) t
 where operator LIKE '%TRAFODION_MERGE%' ;
 
+prepare explainItEff from
+select substring(operator,1,16) operator
+from table (explain(NULL,'XX')) t
+where operator LIKE '%SEQUENCE%' ;
+
+
+
 insert into t015t1 values (1,1), (2,2);
 insert into t015t3 values (1,1,1), (2,2,2), (3,3,3);
 insert into t015t5 values (1,2,3,4,5);
@@ -827,25 +834,25 @@ prepare XX from UPSERT INTO DEC1
 (ID, codeValue, title , description, path, synonyms, objectClassCode, propertyCode)  
 VALUES  (NVL((select a.id from DEC1 a where a.codeValue = ?a[10]), DEFAULT), 
 ?b[10], ?c[10], ?d[10], ?e[10], null, ?f[10], null) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DEC1 
 (ID, codeValue, title , description, path, synonyms, objectClassCode, propertyCode)  
 VALUES  (?a, ?b, ?c, ?d, ?e, null, ?f, null) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DEC1 
 (ID, codeValue, title , description, path, synonyms, objectClassCode, propertyCode)  
 VALUES  (NVL((select a.id from DEC1 a where a.codeValue = ?a), DEFAULT), 
 ?b, ?c, ?d, ?e, null, ?f, null) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DE 
 (ID, dataElementConceptID, valueDomainID)  VALUES  
 (NVL((select a.id from DE a where a.dataElementConceptID = 
 (select b.id from DEC1 b where b.codeValue = ?) and a.valueDomainID = ? ), DEFAULT),  
 NVL((select d.id from DEC1 d where d.codeValue = ?), NULL),  ? ) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO ODT 
 (ID, objectTypeID, dataElementID, objectCategoryTypeCode)  
@@ -857,26 +864,26 @@ a.objectCategoryTypeCode = ? and  a.dataElementID =
 NVL((select g.id from OT g where g.objectCode = ? and g.version = ?), NULL),   
 NVL((select h.id from DE h where h.dataElementConceptID = 
 (select i.id from DEC1 i where i.codeValue = ?) and h.valueDomainID = ? ), NULL), ? );
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DE 
 (ID, dataElementConceptID, valueDomainID)  VALUES  
 (NVL((select a.id from DE a where a.dataElementConceptID = 
 (select b.id from DEC1 b where b.codeValue = ?) and a.valueDomainID = ? ), DEFAULT),  
 (select d.id from DEC1 d where d.codeValue = ?),  ? ) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DE (ID, dataElementConceptID, valueDomainID)  
 VALUES  (1,  (select d.id from DEC1 d where d.codeValue = ?),  3 ) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DE (ID, dataElementConceptID, valueDomainID)  
 VALUES  (?[10], ?[10], ?[10] ) ;
-execute explainIt;
+execute explainItEff;
 
 prepare XX from UPSERT INTO DE (ID, dataElementConceptID, valueDomainID)  
 VALUES  (1,  (select d.id from DEC1 d where d.codeValue = 'aa'),  3 ) ;
-execute explainIt;
+execute explainItEff;
 
 --upsert transformation to eff tree tests
 cqd traf_upsert_to_eff_tree 'ON';

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7760c9f4/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 4ff89fb..758dc4e 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -3416,7 +3416,7 @@ XDDkwd__(SUBQUERY_UNNESTING,			"ON"),
   DDkwd__(TRAF_UNLOAD_SKIP_WRITING_TO_FILES,           "OFF"),
   DDkwd__(TRAF_UPSERT_ADJUST_PARAMS,                   "OFF"),
   DDkwd__(TRAF_UPSERT_MODE,                            "MERGE"),
-  DDkwd__(TRAF_UPSERT_TO_EFF_TREE,                     "OFF"),
+  DDkwd__(TRAF_UPSERT_TO_EFF_TREE,                     "ON"),
   DDint__(TRAF_UPSERT_WB_SIZE,                         "2097152"),
   DDkwd__(TRAF_UPSERT_WRITE_TO_WAL,                    "OFF"),