[ 
https://issues.apache.org/jira/browse/TRAFODION-1562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15864185#comment-15864185
 ] 

ASF GitHub Bot commented on TRAFODION-1562:
-------------------------------------------

Github user selvaganesang commented on a diff in the pull request:

    https://github.com/apache/incubator-trafodion/pull/946#discussion_r100865957
  
    --- Diff: core/sql/optimizer/BindRelExpr.cpp ---
    @@ -10600,37 +10600,67 @@ Upsert is also converted into merge when 
TRAF_UPSERT_MODE is set to MERGE and
     there are omitted cols with default values in case of aligned format table 
or 
     omitted current timestamp cols in case of non-aligned row format
     */
    -NABoolean Insert::isUpsertThatNeedsMerge(NABoolean isAlignedRowFormat, 
NABoolean omittedDefaultCols,
    -                                   NABoolean 
omittedCurrentDefaultClassCols) const
    +NABoolean Insert::isUpsertThatNeedsTransformation(NABoolean 
isAlignedRowFormat, 
    +                                                  NABoolean 
omittedDefaultCols,
    +                                                  NABoolean 
omittedCurrentDefaultClassCols,
    +                                                  NABoolean &toMerge) const
     {
    -  // The necessary conditions to convert upsert to merge and
    +  toMerge = FALSE;
    +  // If the the table has an identity column in clustering key or has a 
syskey 
    +  // we dont need to do this transformation.The incoming row will always 
be 
    +  // unique. So first check if we any of the conditions are satisfied to 
    +  //even try the transform
    +  NABoolean mustTryTransform = FALSE;
       if (isUpsert() && 
    -      (NOT getIsTrafLoadPrep()) && 
    -      (NOT (getTableDesc()->isIdentityColumnGeneratedAlways() && 
getTableDesc()->hasIdentityColumnInClusteringKey())) && 
    -      (NOT 
(getTableDesc()->getClusteringIndex()->getNAFileSet()->hasSyskey())) && 
    -        // table has secondary indexes or
    -        (getTableDesc()->hasSecondaryIndexes() ||
    -          // CQD is set to MERGE  
    -          ((CmpCommon::getDefault(TRAF_UPSERT_MODE) == DF_MERGE) &&
    -            // omitted current default columns with non-aligned row format 
tables
    -            // or omitted default columns with aligned row format tables 
    -            (((NOT isAlignedRowFormat) && omittedCurrentDefaultClassCols) 
||
    -            (isAlignedRowFormat && omittedDefaultCols))) ||
    -          // CQD is set to Optimal, for non-aligned row format with 
omitted 
    -          // current columns, it is converted into merge though it is not
    -          // optimal for performance - This is done to ensure that when 
the 
    -          // CQD is set to optimal, non-aligned format would behave like 
    -          // merge when any column is  omitted 
    -          ((CmpCommon::getDefault(TRAF_UPSERT_MODE) == DF_OPTIMAL) &&
    -            ((NOT isAlignedRowFormat) && omittedCurrentDefaultClassCols))
    -        ) 
    -     )
    -     return TRUE;
    -  else
    -     return FALSE;
    +      ( NOT getIsTrafLoadPrep()) &&
    +      (NOT (getTableDesc()->isIdentityColumnGeneratedAlways() && 
    +            getTableDesc()->hasIdentityColumnInClusteringKey()))  && 
    +      
(NOT(getTableDesc()->getClusteringIndex()->getNAFileSet()->hasSyskey())))
    --- End diff --
    
    Consider making this as a OR condition for better readability because the 
original condition is now split into two


> Changes in query tree when the upsert command is transformed into merge
> -----------------------------------------------------------------------
>
>                 Key: TRAFODION-1562
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-1562
>             Project: Apache Trafodion
>          Issue Type: Sub-task
>          Components: sql-cmp
>            Reporter: Selvaganesan Govindarajan
>            Assignee: Sandhya Sundaresan
>         Attachments: BatchUpsertTransformation.pdf
>
>
> to improve the performance as explained in the main JIRA



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to