diff options
author | hcpp <hcpp@ydb.tech> | 2023-04-06 17:19:31 +0300 |
---|---|---|
committer | hcpp <hcpp@ydb.tech> | 2023-04-06 17:19:31 +0300 |
commit | 208c5b52d89a6f0103b8b447cf2c9b6120cb772d (patch) | |
tree | e70e61e8f0655c22f580da8e675d9146a4a0f09f | |
parent | b7fb26af374a357928e8fe8fe1e9f9a7bb778b0b (diff) | |
download | ydb-208c5b52d89a6f0103b8b447cf2c9b6120cb772d.tar.gz |
insert to json_list has been fixed
-rw-r--r-- | ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp | 7 |
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()})}); |