diff options
author | vvvv <vvvv@yandex-team.com> | 2025-04-08 17:36:45 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2025-04-08 17:52:42 +0300 |
commit | 884afede08ae65081fd1b0791811287469ddc5fc (patch) | |
tree | 5e6b80bff275178524b40bc4ee280caf573e14ca | |
parent | 2f90258cf6f1625ba0c99f6f37b6c9f336590534 (diff) | |
download | ydb-884afede08ae65081fd1b0791811287469ddc5fc.tar.gz |
YQL-19747 write all aliases for yt hints
commit_hash:daa1d17f2f2569a87a9af557046c653a17a64981
-rw-r--r-- | yql/essentials/data/language/statements_opensource.json | 2 | ||||
-rw-r--r-- | yt/yql/providers/yt/provider/ya.make | 16 | ||||
-rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_op_settings.cpp | 22 |
3 files changed, 36 insertions, 4 deletions
diff --git a/yql/essentials/data/language/statements_opensource.json b/yql/essentials/data/language/statements_opensource.json index a3bd452b180..d26308b6a3d 100644 --- a/yql/essentials/data/language/statements_opensource.json +++ b/yql/essentials/data/language/statements_opensource.json @@ -1 +1 @@ -{"read":{"yt":{"hints":[{"name":"infer_scheme"},{"name":"force_infer_schema"},{"name":"inline"},{"name":"xlock"},{"name":"unordered"},{"name":"non_unique"},{"name":"ignore_type_v3"}]}},"insert":{"yt":{"hints":[{"name":"truncate"},{"name":"compression_codec"},{"name":"erasure_codec"},{"name":"expiration"},{"name":"replication_factor"},{"name":"user_attrs"},{"name":"media"},{"name":"primary_medium"},{"name":"keep_meta"},{"name":"monotonic_keys"},{"name":"column_groups"},{"name":"security_tags"}]}},"replace":{},"upsert":{},"update":{},"delete":{},"create_table":{},"create_view":{}} +{"read":{"yt":{"hints":[{"name":"infer_scheme"},{"name":"inferscheme"},{"name":"infer_schema"},{"name":"inferschema"},{"name":"force_infer_schema"},{"name":"forceinferschema"},{"name":"inline"},{"name":"xlock"},{"name":"unordered"},{"name":"non_unique"},{"name":"nonUnique"},{"name":"ignore_type_v3"},{"name":"ignoretypev3"}]}},"insert":{"yt":{"hints":[{"name":"truncate"},{"name":"compression_codec"},{"name":"compressioncodec"},{"name":"erasure_codec"},{"name":"erasurecodec"},{"name":"expiration"},{"name":"replication_factor"},{"name":"replicationfactor"},{"name":"user_attrs"},{"name":"userattrs"},{"name":"media"},{"name":"primary_medium"},{"name":"primarymedium"},{"name":"keep_meta"},{"name":"keepmeta"},{"name":"monotonic_keys"},{"name":"monotonickeys"},{"name":"column_groups"},{"name":"columngroups"},{"name":"security_tags"},{"name":"securitytags"}]}},"replace":{},"upsert":{},"update":{},"delete":{},"create_table":{},"create_view":{}} diff --git a/yt/yql/providers/yt/provider/ya.make b/yt/yql/providers/yt/provider/ya.make index a40502a8b6a..74cbe7ac426 100644 --- a/yt/yql/providers/yt/provider/ya.make +++ b/yt/yql/providers/yt/provider/ya.make @@ -74,6 +74,7 @@ SRCS( PEERDIR( library/cpp/yson/node library/cpp/json/writer + library/cpp/json library/cpp/disjoint_sets yt/cpp/mapreduce/common yt/cpp/mapreduce/interface @@ -138,6 +139,21 @@ YQL_LAST_ABI_VERSION() GENERATE_ENUM_SERIALIZATION(yql_yt_op_settings.h) +RUN_PROGRAM( + tools/enum_parser/enum_parser + --output + ${BINDIR}/yql_yt_op_settings.unused.cpp + --json-output + ${BINDIR}/yql_yt_op_settings.json + yql_yt_op_settings.h + IN yql_yt_op_settings.h + OUT_NOAUTO ${BINDIR}/yql_yt_op_settings.json +) + +RESOURCE( + ${BINDIR}/yql_yt_op_settings.json /yql_yt_op_settings.json +) + END() RECURSE_FOR_TESTS( diff --git a/yt/yql/providers/yt/provider/yql_yt_op_settings.cpp b/yt/yql/providers/yt/provider/yql_yt_op_settings.cpp index 922307cdadb..929fbcc9287 100644 --- a/yt/yql/providers/yt/provider/yql_yt_op_settings.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_op_settings.cpp @@ -12,6 +12,7 @@ #include <util/generic/hash_set.h> #include <library/cpp/yson/node/node_io.h> +#include <library/cpp/json/json_reader.h> namespace NYql { @@ -1331,9 +1332,24 @@ void YtWriteHint(std::string_view name, NJsonWriter::TBuf& json) { } void YtWriteHints(EYtSettingTypes flags, NJsonWriter::TBuf& json) { - for (ui32 i = 0; i < (ui32)EYtSettingType::LAST; ++i) { - if (flags.HasFlags((EYtSettingType)i)) { - YtWriteHint(ToString((EYtSettingType)i), json); + auto res = NResource::Find("/yql_yt_op_settings.json"); + NJson::TJsonValue enumJson; + ReadJsonTree(res, &enumJson, true); + for (const auto& x : enumJson.GetArraySafe()) { + if (x["cpp_name"].GetStringSafe() != "EYtSettingType") { + continue; + } + + for (const auto& y : x["items"].GetArraySafe()) { + if (!y["str_value"].IsDefined()) { + continue; + } + + if (flags.HasFlags(FromString<EYtSettingType>(y["str_value"].GetStringSafe()))) { + for (const auto& a : y["aliases"].GetArraySafe()) { + YtWriteHint(a.GetStringSafe(), json); + } + } } } } |