[
https://issues.apache.org/jira/browse/TRAFODION-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16192143#comment-16192143
]
ASF GitHub Bot commented on TRAFODION-1610:
-------------------------------------------
Github user DaveBirdsall commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/1253#discussion_r142806685
--- Diff: core/sql/generator/GenRelUpdate.cpp ---
@@ -1718,19 +1806,56 @@ short HbaseUpdate::codeGen(Generator * generator)
}
else if (getIndexDesc()->isClusteringIndex() &&
getCheckConstraints().entries())
{
- GenAssert(FALSE, "Should not reach here. This update should have
been transformed to delete/insert");
- // To be uncommented when TRAFODION-1610 is implemented
- // Need to generate insConstraintExpr also
-/*
+ // Generate the update and insert constraint check expressions
+
+ // The attributes for the columns referenced in the constraint
expressions
+ // refer to the source values of the columns. We want to evaluate the
+ // constraints aganst the target values, though. So, there is some
+ // Attributes gymnastics that has to happen to generate them.
+
+ // Obtain the ValueIds of base table columns referenced in the
+ // constraints
+
+ ValueId constraintId;
+ ValueIdSet constraintColumns;
+ for (CollIndex ci = 0; ci < getCheckConstraints().entries(); ci++)
+ {
+ constraintId = getCheckConstraints()[ci];
+ constraintId.getItemExpr()->findAll(ITM_INDEXCOLUMN,
+ constraintColumns, // out,
has append semantics
+ TRUE, // visitVEGmembers
+ FALSE); // don't visit index
descriptors
+ }
+
+ // Prepare the constraint tree for generation
+
ItemExpr *constrTree =
getCheckConstraints().rebuildExprTree(ITM_AND, TRUE, TRUE);
if (getTableDesc()->getNATable()->hasSerializedEncodedColumn())
- constrTree = generator->addCompDecodeForDerialization(constrTree);
+ constrTree = generator->addCompDecodeForDerialization(constrTree,
isAlignedFormat);
+
+ // Generate the update constraint expression, substituting
Attributes for
+ // the new update record
+
+ genUpdConstraintExpr(generator,
+ constrTree,
+ constraintColumns,
+ newRecExprArray(),
+ &updConstraintExpr /* out */);
+
+ if ((isMerge()) && (mergeInsertRecExprArray().entries() > 0))
+ {
+ // Generate the insert constraint expression, substituting
Attributes for
--- End diff --
And this one
> Generate constraint expression for update/merge commands
> --------------------------------------------------------
>
> Key: TRAFODION-1610
> URL: https://issues.apache.org/jira/browse/TRAFODION-1610
> Project: Apache Trafodion
> Issue Type: Sub-task
> Components: sql-cmp
> Reporter: Selvaganesan Govindarajan
> Assignee: David Wayne Birdsall
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)