diff options
Diffstat (limited to 'yql/essentials/sql/v1/query.cpp')
| -rw-r--r-- | yql/essentials/sql/v1/query.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/query.cpp b/yql/essentials/sql/v1/query.cpp index 6ec40c25ce5..0276df12534 100644 --- a/yql/essentials/sql/v1/query.cpp +++ b/yql/essentials/sql/v1/query.cpp @@ -490,6 +490,13 @@ INode::TPtr CreateEncodingsListSettings(const TVector<TEncoding>& columnEncoding return encodingsList; } +INode::TPtr CreateGeneratedValue(const TGeneratedColumn& generated, TPosition pos, const INode& node) { + const ui32 flags = NYql::TAstNodeFlags::ArbitraryContent | NYql::TAstNodeFlags::UnstableFormat; + auto contextText = BuildQuotedAtom(pos, generated.ContextPrefix, flags); + auto exprText = BuildQuotedAtom(pos, generated.ExprBody, flags); + return node.Q(node.Y(contextText, exprText, node.Q(generated.Stored ? "stored" : "virtual"))); +} + } // namespace class TPrepTableKeys: public ITableKeys { @@ -1357,6 +1364,11 @@ public: columnConstraints = L(columnConstraints, Q(Y(Q("default"), col.DefaultExpr))); } + if (col.Generated) { + auto generatedValue = CreateGeneratedValue(*col.Generated, Pos_, *this); + columnConstraints = L(columnConstraints, Q(Y(Q("generated"), generatedValue))); + } + columnDesc = L(columnDesc, Q(Y(Q("columnConstrains"), Q(columnConstraints)))); if (col.Compression) { @@ -1715,6 +1727,11 @@ public: columnConstraints = L(columnConstraints, Q(Y(Q("default"), col.DefaultExpr))); } + if (col.Generated) { + auto generatedValue = CreateGeneratedValue(*col.Generated, Pos_, *this); + columnConstraints = L(columnConstraints, Q(Y(Q("generated"), generatedValue))); + } + columnDesc = L(columnDesc, Q(Y(Q("columnConstrains"), Q(columnConstraints)))); if (col.Compression) { |
