summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_query.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yql/essentials/sql/v1/sql_query.cpp')
-rw-r--r--yql/essentials/sql/v1/sql_query.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp
index c6de747288b..42228fa5586 100644
--- a/yql/essentials/sql/v1/sql_query.cpp
+++ b/yql/essentials/sql/v1/sql_query.cpp
@@ -2778,6 +2778,17 @@ bool TSqlQuery::AlterTableAddColumn(const TRule_alter_table_add_column& node, TA
Ctx_.Error() << "Several column families for a single column are not yet supported";
return false;
}
+ if (columnSchema->Generated) {
+ const TString& service = Ctx_.Scoped->CurrService;
+ if (service != KikimrProviderName && service != YdbProviderName) {
+ Ctx_.Error(columnSchema->Pos) << "GENERATED ALWAYS AS columns are supported only for the ydb provider";
+ return false;
+ }
+ if (params.TableType != ETableType::Table) {
+ Ctx_.Error(columnSchema->Pos) << "GENERATED ALWAYS AS columns are supported only for CREATE TABLE and ALTER TABLE";
+ return false;
+ }
+ }
params.AddColumns.push_back(*columnSchema);
return true;
}
@@ -5020,6 +5031,11 @@ bool BuildColumnFeatures(std::map<TString, TDeferredAtom>& result, const TRule_c
return false;
}
+ if (options->Generated) {
+ translation.Context().Error(pos) << "GENERATED ALWAYS AS columns are supported only for CREATE TABLE and ALTER TABLE";
+ return false;
+ }
+
auto& typeBind = columnSchema.GetRule_type_name_or_bind2();
switch (typeBind.Alt_case()) {
case TRule_type_name_or_bind::kAltTypeNameOrBind1: {