aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgalaxycrab <UgnineSirdis@ydb.tech>2022-12-30 15:42:16 +0300
committergalaxycrab <UgnineSirdis@ydb.tech>2022-12-30 15:42:16 +0300
commit63fcc03c7fc107abfc72ee71955a5878d9846cca (patch)
tree97eb6a3c0a6f54fd6bb4d2bf2e46a6209dd9706a
parent29e530ba3e0b2c7b69b1d927044748d181c5a513 (diff)
downloadydb-63fcc03c7fc107abfc72ee71955a5878d9846cca.tar.gz
Fix files with empty lists in json_list output S3 format
Перенёс фикс из другого ревью: https://a.yandex-team.ru/review/3282813/details
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_mkql_compiler.cpp4
1 files changed, 3 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 e6e16121491..7a2ca387e0b 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
@@ -36,8 +36,10 @@ TRuntimeNode BuildSerializeCall(
} else if (format == "json_list") {
return ctx.ProgramBuilder.FlatMap(ctx.ProgramBuilder.SqueezeToList(input, ctx.ProgramBuilder.NewEmptyOptionalDataLiteral(NUdf::TDataType<ui64>::Id)),
[&ctx] (TRuntimeNode list) {
+ TRuntimeNode listNotEmpty = ctx.ProgramBuilder.HasItems(list);
const auto userType = ctx.ProgramBuilder.NewTupleType({ctx.ProgramBuilder.NewTupleType({list.GetStaticType()})});
- return ctx.ProgramBuilder.ToString(ctx.ProgramBuilder.Apply(ctx.ProgramBuilder.Udf("Yson2.SerializeJson"), {ctx.ProgramBuilder.Apply(ctx.ProgramBuilder.Udf("Yson2.From", {}, userType), {list})}));
+ TRuntimeNode serialize = ctx.ProgramBuilder.ToString(ctx.ProgramBuilder.Apply(ctx.ProgramBuilder.Udf("Yson2.SerializeJson"), {ctx.ProgramBuilder.Apply(ctx.ProgramBuilder.Udf("Yson2.From", {}, userType), {list})}));
+ return ctx.ProgramBuilder.If(listNotEmpty, serialize, ctx.ProgramBuilder.NewEmptyOptionalDataLiteral(NUdf::TDataType<const char*>::Id));
}
);
}