Skip to content

Commit 8a4821c

Browse files
committed
YQL-19747 statements (hints etc)
commit_hash:1288e94c1f35aed35f40ac5e9b59e708b7cfafad
1 parent 2567575 commit 8a4821c

File tree

6 files changed

+77
-2
lines changed

6 files changed

+77
-2
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +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":{}}

yql/essentials/sql/v1/sql_query.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4002,4 +4002,15 @@ void EnumeratePragmas(std::function<void(std::string_view)> callback) {
40024002
callback("yson.DisableCastToString");
40034003
}
40044004

4005+
void EnumerateStmtContexts(std::function<void(std::string_view)> callback) {
4006+
callback("read");
4007+
callback("insert");
4008+
callback("replace");
4009+
callback("upsert");
4010+
callback("update");
4011+
callback("delete");
4012+
callback("create_table");
4013+
callback("create_view");
4014+
}
4015+
40054016
} // namespace NSQLTranslationV1

yql/essentials/sql/v1/sql_query.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,6 @@ class TSqlQuery: public TSqlTranslation {
8585
};
8686

8787
void EnumeratePragmas(std::function<void(std::string_view)> callback);
88+
void EnumerateStmtContexts(std::function<void(std::string_view)> callback);
8889

8990
} // namespace NSQLTranslationV1

yt/yql/providers/yt/provider/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ SRCS(
7373

7474
PEERDIR(
7575
library/cpp/yson/node
76+
library/cpp/json/writer
7677
library/cpp/disjoint_sets
7778
yt/cpp/mapreduce/common
7879
yt/cpp/mapreduce/interface

yt/yql/providers/yt/provider/yql_yt_op_settings.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <yt/yql/providers/yt/common/yql_yt_settings.h>
55
#include <yt/yql/providers/yt/provider/yql_yt_block_io_utils.h>
66
#include <yql/essentials/providers/common/provider/yql_provider.h>
7+
#include <yql/essentials/providers/common/provider/yql_provider_names.h>
78
#include <yql/essentials/core/yql_expr_type_annotation.h>
89
#include <yql/essentials/core/yql_opt_utils.h>
910

@@ -1322,4 +1323,62 @@ EYtSettingTypes operator|(EYtSettingType left, EYtSettingType right) {
13221323
return EYtSettingTypes(left) | EYtSettingTypes(right);
13231324
}
13241325

1326+
void YtWriteHint(std::string_view name, NJsonWriter::TBuf& json) {
1327+
json.BeginObject();
1328+
json.WriteKey("name");
1329+
json.WriteString(name);
1330+
json.EndObject();
1331+
}
1332+
1333+
void YtWriteHints(EYtSettingTypes flags, NJsonWriter::TBuf& json) {
1334+
for (ui32 i = 0; i < (ui32)EYtSettingType::LAST; ++i) {
1335+
if (flags.HasFlags((EYtSettingType)i)) {
1336+
YtWriteHint(ToString((EYtSettingType)i), json);
1337+
}
1338+
}
1339+
}
1340+
1341+
void YtWriteStmtContext(std::string_view ctxName, NJsonWriter::TBuf& json) {
1342+
if (ctxName == "read") {
1343+
json.WriteKey(YtProviderName);
1344+
json.BeginObject();
1345+
json.WriteKey("hints");
1346+
json.BeginList();
1347+
YtWriteHints(
1348+
EYtSettingType::InferScheme |
1349+
EYtSettingType::ForceInferScheme |
1350+
EYtSettingType::Inline |
1351+
EYtSettingType::XLock |
1352+
EYtSettingType::Unordered |
1353+
EYtSettingType::NonUnique |
1354+
EYtSettingType::IgnoreTypeV3,
1355+
json
1356+
);
1357+
json.EndList();
1358+
json.EndObject();
1359+
} else if (ctxName == "insert") {
1360+
json.WriteKey(YtProviderName);
1361+
json.BeginObject();
1362+
json.WriteKey("hints");
1363+
json.BeginList();
1364+
YtWriteHint("truncate", json);
1365+
YtWriteHints(
1366+
EYtSettingType::CompressionCodec |
1367+
EYtSettingType::ErasureCodec |
1368+
EYtSettingType::Expiration |
1369+
EYtSettingType::ReplicationFactor |
1370+
EYtSettingType::UserAttrs |
1371+
EYtSettingType::Media |
1372+
EYtSettingType::PrimaryMedium |
1373+
EYtSettingType::KeepMeta |
1374+
EYtSettingType::MonotonicKeys |
1375+
EYtSettingType::ColumnGroups |
1376+
EYtSettingType::SecurityTags,
1377+
json
1378+
);
1379+
json.EndList();
1380+
json.EndObject();
1381+
}
1382+
}
1383+
13251384
} // NYql

yt/yql/providers/yt/provider/yql_yt_op_settings.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include <yql/essentials/ast/yql_expr.h>
4+
#include <library/cpp/json/writer/json.h>
45

56
#include <util/generic/flags.h>
67
#include <util/generic/strbuf.h>
@@ -64,12 +65,12 @@ enum class EYtSettingType: ui64 {
6465
WarnNonExisting /* "warn_non_existing" "warnnonexisting" */,
6566
XLock /* "xlock" */,
6667
Unordered /* "unordered" */,
67-
NonUnique /* "nonUnique" */,
68+
NonUnique /* "non_unique" "nonUnique" */,
6869
UserSchema /* "userschema" */,
6970
UserColumns /* "usercolumns" */,
7071
StatColumns /* "statcolumns" */,
7172
SysColumns /* "syscolumns" */,
72-
IgnoreTypeV3 /* "ignoretypev3" "ignore_type_v3" */,
73+
IgnoreTypeV3 /* "ignore_type_v3" "ignoretypev3" */,
7374
// Table content
7475
MemUsage /* "memUsage" */,
7576
ItemsCount /* "itemsCount" */,
@@ -228,6 +229,7 @@ TMaybe<ui64> GetMaxJobSizeForFirstAsPrimary(const TExprNode& settings);
228229
bool UseJoinReduceForSecondAsPrimary(const TExprNode& settings);
229230

230231
ui32 GetMinChildrenForIndexedKeyFilter(EYtSettingType type);
232+
void YtWriteStmtContext(std::string_view ctxName, NJsonWriter::TBuf& json);
231233

232234
} // NYql
233235

0 commit comments

Comments
 (0)