diff options
author | galaxycrab <UgnineSirdis@ydb.tech> | 2022-12-30 15:42:16 +0300 |
---|---|---|
committer | galaxycrab <UgnineSirdis@ydb.tech> | 2022-12-30 15:42:16 +0300 |
commit | 63fcc03c7fc107abfc72ee71955a5878d9846cca (patch) | |
tree | 97eb6a3c0a6f54fd6bb4d2bf2e46a6209dd9706a | |
parent | 29e530ba3e0b2c7b69b1d927044748d181c5a513 (diff) | |
download | ydb-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.cpp | 4 |
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)); } ); } |