diff options
author | udovichenko-r <rvu@ydb.tech> | 2023-09-22 10:48:12 +0300 |
---|---|---|
committer | udovichenko-r <rvu@ydb.tech> | 2023-09-22 11:11:16 +0300 |
commit | c754592cb0467397d0871caa6c6ca4bcd9823263 (patch) | |
tree | 8fda1b545dbe7fc837af061c90e7c1e1073a52b7 | |
parent | 5658275f576bf0a2a4e904c661e10f9efe122ebe (diff) | |
download | ydb-c754592cb0467397d0871caa6c6ca4bcd9823263.tar.gz |
[yt provider] Ignore fake column from YT schema
YQL-16492
5 files changed, 12 insertions, 12 deletions
diff --git a/ydb/library/yql/providers/yt/codec/yt_codec.cpp b/ydb/library/yql/providers/yt/codec/yt_codec.cpp index 3d49a5c699e..4bb1562a642 100644 --- a/ydb/library/yql/providers/yt/codec/yt_codec.cpp +++ b/ydb/library/yql/providers/yt/codec/yt_codec.cpp @@ -208,7 +208,7 @@ void TMkqlIOSpecs::LoadSpecInfo(bool inputSpec, const NYT::TNode& attrs, NCommon if (inputSpec && AS_TYPE(TStructType, info.Type)->GetMembersCount() == 0) { auto fieldType = codecCtx.Builder.NewDataType(NUdf::EDataSlot::Bool); fieldType = codecCtx.Builder.NewOptionalType(fieldType); - info.AuxColumns.emplace("_yql_fake_column", fieldType); + info.AuxColumns.emplace(YqlFakeColumnName, fieldType); } } else { diff --git a/ydb/library/yql/providers/yt/common/yql_names.h b/ydb/library/yql/providers/yt/common/yql_names.h index 3b6adff996f..1fece7c7141 100644 --- a/ydb/library/yql/providers/yt/common/yql_names.h +++ b/ydb/library/yql/providers/yt/common/yql_names.h @@ -38,6 +38,7 @@ const TStringBuf YqlSysColumnNum = "_yql_sys_tablenum"; const TStringBuf YqlSysColumnKeySwitch = "_yql_sys_tablekeyswitch"; const TStringBuf YqlOthersColumnName = "_other"; +const TStringBuf YqlFakeColumnName = "_yql_fake_column"; const TStringBuf YqlTypeAttribute = "_yql_type"; const TStringBuf YqlTypeView = "view"; diff --git a/ydb/library/yql/providers/yt/lib/row_spec/yql_row_spec.cpp b/ydb/library/yql/providers/yt/lib/row_spec/yql_row_spec.cpp index a312e07c338..253ed85bd4c 100644 --- a/ydb/library/yql/providers/yt/lib/row_spec/yql_row_spec.cpp +++ b/ydb/library/yql/providers/yt/lib/row_spec/yql_row_spec.cpp @@ -300,13 +300,10 @@ bool TYqlRowSpecInfo::ParseFull(const NYT::TNode& rowSpecAttr, const THashMap<TS if (type->GetKind() != ETypeAnnotationKind::Struct) { YQL_LOG_CTX_THROW yexception() << "YT schema type has a non struct type: " << *type; } - THashSet<TStringBuf> auxFields; - for (auto& col: SortedBy) { - auxFields.insert(col); - } + THashSet<TStringBuf> auxFields(SortedBy.cbegin(), SortedBy.cend()); TStringBuilder hiddenFields; for (auto item: type->Cast<TStructExprType>()->GetItems()) { - if (!Type->FindItem(item->GetName()) && !auxFields.contains(item->GetName())) { + if (const auto name = item->GetName(); !Type->FindItem(name) && !auxFields.contains(name)) { if (hiddenFields.size() > 100) { hiddenFields << ", ..."; break; diff --git a/ydb/library/yql/providers/yt/lib/schema/schema.cpp b/ydb/library/yql/providers/yt/lib/schema/schema.cpp index 19261a5fa5a..fb9035121de 100644 --- a/ydb/library/yql/providers/yt/lib/schema/schema.cpp +++ b/ydb/library/yql/providers/yt/lib/schema/schema.cpp @@ -333,9 +333,11 @@ NYT::TNode YTSchemaToRowSpec(const NYT::TNode& schema, const TYTSortInfo* sortIn if (!type) { continue; } - resultTypes.Add(NYT::TNode() - .Add(fieldName) - .Add(*type)); + if (YqlFakeColumnName != fieldName || schema.AsList().size() > 1) { + resultTypes.Add(NYT::TNode() + .Add(fieldName) + .Add(*type)); + } } } @@ -996,7 +998,7 @@ NYT::TTableSchema RowSpecToYTSchema(const NYT::TNode& rowSpec, ui64 nativeTypeCo // add fake column to avoid slow 0-columns YT schema if (schema.Columns().empty()) { schema.AddColumn(NYT::TColumnSchema() - .Name("_yql_fake_column") + .Name(TString{YqlFakeColumnName}) .Type(NYT::EValueType::VT_BOOLEAN, /*required*/ false)); } diff --git a/ydb/library/yql/providers/yt/lib/skiff/yql_skiff_schema.cpp b/ydb/library/yql/providers/yt/lib/skiff/yql_skiff_schema.cpp index 945920a4daf..12b787e7be3 100644 --- a/ydb/library/yql/providers/yt/lib/skiff/yql_skiff_schema.cpp +++ b/ydb/library/yql/providers/yt/lib/skiff/yql_skiff_schema.cpp @@ -236,8 +236,8 @@ NYT::TNode RowSpecToOutputSkiff(const NYT::TNode& attrs) { } if (typeColumns.empty()) { - typeColumns.emplace("_yql_fake_column", NYT::TNode() - ("name", "_yql_fake_column") + typeColumns.emplace(YqlFakeColumnName, NYT::TNode() + ("name", YqlFakeColumnName) ("wire_type", "variant8") ("children", NYT::TNode() .Add(NYT::TNode()("wire_type", "nothing")) |