Skip to content

Commit ab1f7e3

Browse files
authored
Do not use blockreader on weak schema tables (#7566)
1 parent c94e20d commit ab1f7e3

File tree

6 files changed

+28
-12
lines changed

6 files changed

+28
-12
lines changed

ydb/library/yql/providers/yt/comp_nodes/dq/dq_yt_block_reader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ class TLocalListener : public arrow::ipc::Listener {
310310
YQL_ENSURE(batch);
311311
MKQL_ADD_STAT(JobStats_, BlockCount, 1);
312312
std::vector<arrow::Datum> result;
313+
YQL_ENSURE((size_t)batch->num_columns() == ColumnConverters_.size());
313314
result.resize(ColumnConverters_.size());
314315
size_t matchedColumns = 0;
315316
for (size_t i = 0; i < ColumnConverters_.size(); ++i) {

ydb/library/yql/providers/yt/gateway/file/yql_yt_file.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,10 @@ class TYtFileGateway : public IYtGateway {
11421142
req.Table(), attrs, req.IgnoreYamrDsv(), req.IgnoreWeakSchema()
11431143
);
11441144

1145+
if (attrs.AsMap().contains("schema_mode") && attrs["schema_mode"].AsString() == "weak") {
1146+
info.Attrs["schema_mode"] = attrs["schema_mode"].AsString();
1147+
}
1148+
11451149
NYT::TNode schemaAttrs;
11461150
if (req.ForceInferSchema() && req.InferSchemaRows() > 0) {
11471151
info.Attrs.erase(YqlRowSpecAttribute);

ydb/library/yql/providers/yt/gateway/native/yql_yt_native.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2538,6 +2538,9 @@ class TYtNativeGateway : public IYtGateway {
25382538
if (attrs.AsMap().contains("optimize_for") && attrs["optimize_for"].AsString() != "scan") {
25392539
metaInfo->Attrs["optimize_for"] = attrs["optimize_for"].AsString();
25402540
}
2541+
if (attrs.AsMap().contains("schema_mode") && attrs["schema_mode"].AsString() == "weak") {
2542+
metaInfo->Attrs["schema_mode"] = attrs["schema_mode"].AsString();
2543+
}
25412544
if (attrs.AsMap().contains(SecurityTagsName)) {
25422545
TVector<TString> securityTags;
25432546
for (const auto& tag : attrs[SecurityTagsName].AsList()) {

ydb/library/yql/providers/yt/provider/yql_yt_dq_integration.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,14 @@ class TYtDqIntegration: public TDqIntegrationBase {
515515
const TYtSectionList& sectionList = wrap.Input().Cast<TYtReadTable>().Input();
516516
for (size_t i = 0; i < sectionList.Size(); ++i) {
517517
auto section = sectionList.Item(i);
518+
auto paths = section.Paths();
519+
for (const auto& path : section.Paths()) {
520+
auto meta = TYtTableBaseInfo::GetMeta(path.Table());
521+
if (meta->Attrs.contains("schema_mode") && meta->Attrs["schema_mode"] == "weak") {
522+
BlockReaderAddInfo(ctx, ctx.GetPosition(node.Pos()), "can't use block reader on tables with weak schema");
523+
return false;
524+
}
525+
}
518526
if (!NYql::GetSettingAsColumnList(section.Settings().Ref(), EYtSettingType::SysColumns).empty()) {
519527
BlockReaderAddInfo(ctx, ctx.GetPosition(node.Pos()), "system column");
520528
return false;

ydb/library/yql/tests/s-expressions/yt_native_file/part4/canondata/result.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3615,9 +3615,9 @@
36153615
],
36163616
"test.test[Scheme-IgnoreWeakSchemaForceInfer-Debug]": [
36173617
{
3618-
"checksum": "cc19159e66bb4b15cf330e1c76f1b94e",
3619-
"size": 1047,
3620-
"uri": "https://{canondata_backend}/1809005/bb560db2ac536757475d6779b427321ab1d72d73/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaForceInfer-Debug_/opt.yql"
3618+
"checksum": "78697c6d31cbf9c8160cc7d96917f3dc",
3619+
"size": 1086,
3620+
"uri": "https://{canondata_backend}/1937429/2682c8a03858172f9dad8df2693362bf0f706d46/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaForceInfer-Debug_/opt.yql"
36213621
}
36223622
],
36233623
"test.test[Scheme-IgnoreWeakSchemaForceInfer-Plan]": [
@@ -3629,9 +3629,9 @@
36293629
],
36303630
"test.test[Scheme-IgnoreWeakSchemaForceInfer-Results]": [
36313631
{
3632-
"checksum": "9dbc94fa72f7c2539bc56046802d1e65",
3633-
"size": 4950,
3634-
"uri": "https://{canondata_backend}/212715/879d99eb75d342eeb6cf2b58f2993892131bc9f3/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaForceInfer-Results_/results.txt"
3632+
"checksum": "82ba27b9c664d3a5bdc1c30d35012dad",
3633+
"size": 5018,
3634+
"uri": "https://{canondata_backend}/1937429/2682c8a03858172f9dad8df2693362bf0f706d46/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaForceInfer-Results_/results.txt"
36353635
}
36363636
],
36373637
"test.test[TimeOrderRecover-ahead-Debug]": [

ydb/library/yql/tests/s-expressions/yt_native_file/part8/canondata/result.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4089,9 +4089,9 @@
40894089
],
40904090
"test.test[Scheme-IgnoreWeakSchemaInfer-Debug]": [
40914091
{
4092-
"checksum": "e63c356651c75dc70c65541367229ebc",
4093-
"size": 1042,
4094-
"uri": "https://{canondata_backend}/1942278/4c15a9cfa410297d35d23e1a39d5d898babd2365/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaInfer-Debug_/opt.yql"
4092+
"checksum": "5bab2767b3e0d088d51100c7aeed0d67",
4093+
"size": 1081,
4094+
"uri": "https://{canondata_backend}/212715/69d6d07c474bcd145a6dcc79b47a46750f970a4b/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaInfer-Debug_/opt.yql"
40954095
}
40964096
],
40974097
"test.test[Scheme-IgnoreWeakSchemaInfer-Plan]": [
@@ -4103,9 +4103,9 @@
41034103
],
41044104
"test.test[Scheme-IgnoreWeakSchemaInfer-Results]": [
41054105
{
4106-
"checksum": "9dbc94fa72f7c2539bc56046802d1e65",
4107-
"size": 4950,
4108-
"uri": "https://{canondata_backend}/1881367/dc31ea12cef2a161dc30af1f36c0f4693d88cfbf/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaInfer-Results_/results.txt"
4106+
"checksum": "82ba27b9c664d3a5bdc1c30d35012dad",
4107+
"size": 5018,
4108+
"uri": "https://{canondata_backend}/212715/69d6d07c474bcd145a6dcc79b47a46750f970a4b/resource.tar.gz#test.test_Scheme-IgnoreWeakSchemaInfer-Results_/results.txt"
41094109
}
41104110
],
41114111
"test.test[Scheme-IgnoreWeakSchemaOnWeak-Debug]": [],

0 commit comments

Comments
 (0)