aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhcpp <hcpp@ydb.tech>2023-04-06 17:19:31 +0300
committerhcpp <hcpp@ydb.tech>2023-04-06 17:19:31 +0300
commit208c5b52d89a6f0103b8b447cf2c9b6120cb772d (patch)
treee70e61e8f0655c22f580da8e675d9146a4a0f09f
parentb7fb26af374a357928e8fe8fe1e9f9a7bb778b0b (diff)
downloadydb-208c5b52d89a6f0103b8b447cf2c9b6120cb772d.tar.gz
insert to json_list has been fixed
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp
index c736ccaf55..66c625ed9e 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp
@@ -38,7 +38,12 @@ TRuntimeNode BuildSerializeCall(
if (const auto userLimit = config->JsonListSizeLimit.Get()) {
jsonListSizeLimit = *userLimit;
}
- return ctx.ProgramBuilder.FlatMap(ctx.ProgramBuilder.SqueezeToList(input, ctx.ProgramBuilder.NewDataLiteral<ui64>(jsonListSizeLimit)),
+ auto groupBySize = ctx.ProgramBuilder.Condense1(input,
+ [&](TRuntimeNode item) { return ctx.ProgramBuilder.AsList(item); },
+ [&](TRuntimeNode, TRuntimeNode state) { return ctx.ProgramBuilder.AggrGreaterOrEqual(ctx.ProgramBuilder.Length(state), ctx.ProgramBuilder.NewDataLiteral<ui64>(jsonListSizeLimit)); },
+ [&](TRuntimeNode item, TRuntimeNode state) { return ctx.ProgramBuilder.Append(state, item); }
+ );
+ return ctx.ProgramBuilder.FlatMap(groupBySize,
[&ctx] (TRuntimeNode list) {
TRuntimeNode listNotEmpty = ctx.ProgramBuilder.HasItems(list);
const auto userType = ctx.ProgramBuilder.NewTupleType({ctx.ProgramBuilder.NewTupleType({list.GetStaticType()})});