aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2025-04-08 17:36:45 +0300
committervvvv <vvvv@yandex-team.com>2025-04-08 17:52:42 +0300
commit884afede08ae65081fd1b0791811287469ddc5fc (patch)
tree5e6b80bff275178524b40bc4ee280caf573e14ca
parent2f90258cf6f1625ba0c99f6f37b6c9f336590534 (diff)
downloadydb-884afede08ae65081fd1b0791811287469ddc5fc.tar.gz
YQL-19747 write all aliases for yt hints
commit_hash:daa1d17f2f2569a87a9af557046c653a17a64981
-rw-r--r--yql/essentials/data/language/statements_opensource.json2
-rw-r--r--yt/yql/providers/yt/provider/ya.make16
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_op_settings.cpp22
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);
+ }
+ }
}
}
}