Skip to content

Commit 6eff12e

Browse files
committed
YQL-20153 params fixes
commit_hash:6a71bff1ad52eddd1b8c7d516f0810f0decf401e
1 parent c8e3d03 commit 6eff12e

File tree

14 files changed

+115
-3
lines changed

14 files changed

+115
-3
lines changed

yql/essentials/core/services/yql_eval_params.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ bool BuildParameterValuesAsNodes(const THashMap<TStringBuf, const TTypeAnnotatio
4949
continue;
5050
}
5151

52-
if (!parameterItem && p.second->GetKind() != ETypeAnnotationKind::Optional && p.second->GetKind() != ETypeAnnotationKind::Null) {
52+
if (!parameterItem && !p.second->IsOptionalOrNull()) {
5353
ctx.AddError(TIssue({}, TStringBuilder() << "Missing value for parameter: " << name));
5454
isOk = false;
5555
continue;

yql/essentials/parser/pg_wrapper/comp_factory.cpp

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ constexpr auto PG_ERROR = ERROR;
8888
#include <yql/essentials/public/udf/udf_value_builder.h>
8989
#include <yql/essentials/utils/fp_bits.h>
9090
#include <library/cpp/yson/detail.h>
91+
#include <library/cpp/string_utils/base64/base64.h>
9192
#include <util/string/split.h>
9293
#include <util/system/getpid.h>
9394

@@ -3941,9 +3942,35 @@ NUdf::TUnboxedValue ReadYsonValuePg(TPgType* type, char cmd, TInputBuf& buf) {
39413942
return NUdf::TUnboxedValuePod();
39423943
}
39433944

3945+
const bool needDecode = (cmd == BeginListSymbol);
3946+
3947+
if (needDecode) {
3948+
cmd = buf.Read();
3949+
}
3950+
39443951
CHECK_EXPECTED(cmd, StringMarker);
3945-
auto s = buf.ReadYtString();
3946-
return PgValueFromString(s, type->GetTypeId());
3952+
const i32 length = buf.ReadVarI32();
3953+
CHECK_STRING_LENGTH(length);
3954+
TTempBuf tmpBuf(length);
3955+
buf.ReadMany(tmpBuf.Data(), length);
3956+
3957+
NUdf::TUnboxedValue result;
3958+
if (needDecode) {
3959+
TString decoded = Base64Decode(TStringBuf(tmpBuf.Data(), length));
3960+
result = PgValueFromString(decoded, type->GetTypeId());
3961+
} else {
3962+
result = PgValueFromString(TStringBuf(tmpBuf.Data(), length), type->GetTypeId());
3963+
}
3964+
3965+
if (needDecode) {
3966+
cmd = buf.Read();
3967+
if (cmd == ListItemSeparatorSymbol) {
3968+
cmd = buf.Read();
3969+
}
3970+
3971+
CHECK_EXPECTED(cmd, EndListSymbol);
3972+
}
3973+
return result;
39473974
}
39483975

39493976
void SkipSkiffPg(TPgType* type, NCommon::TInputBuf& buf) {

yql/essentials/parser/pg_wrapper/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ ENDIF()
8080
PEERDIR(
8181
library/cpp/resource
8282
library/cpp/yson
83+
library/cpp/string_utils/base64
8384
yql/essentials/core
8485
yql/essentials/minikql/arrow
8586
yql/essentials/minikql/computation

yql/essentials/tests/sql/minirun/part0/canondata/result.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,20 @@
890890
"uri": "https://{canondata_backend}/1942100/6c2a774c208067888b3de8f1ff9dff571453fb04/resource.tar.gz#test.test_optimizers-yql-20117_empty_or-default.txt-Results_/results.txt"
891891
}
892892
],
893+
"test.test[params-pg--Debug]": [
894+
{
895+
"checksum": "8f0c09762130575fed40ab819e251880",
896+
"size": 374,
897+
"uri": "https://{canondata_backend}/1784826/293657020de283b6a5d9ef768ff1771ae30149a9/resource.tar.gz#test.test_params-pg--Debug_/opt.yql"
898+
}
899+
],
900+
"test.test[params-pg--Results]": [
901+
{
902+
"checksum": "14f3ec86a70b2beb648ced7ed7286ddf",
903+
"size": 1456,
904+
"uri": "https://{canondata_backend}/1784826/293657020de283b6a5d9ef768ff1771ae30149a9/resource.tar.gz#test.test_params-pg--Results_/results.txt"
905+
}
906+
],
893907
"test.test[params-struct--Debug]": [
894908
{
895909
"checksum": "f9dc205de4d3652a1c45c5c40e79d4ca",

yql/essentials/tests/sql/minirun/part6/canondata/result.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,20 @@
959959
"uri": "https://{canondata_backend}/937458/93a2295cbb0ac9d315a89547c42228d659f5e886/resource.tar.gz#test.test_optimizers-yson_dup_serialize--Results_/results.txt"
960960
}
961961
],
962+
"test.test[params-pg_missing-default.txt-Debug]": [
963+
{
964+
"checksum": "60096d53898c9a26b48c9aba00db555d",
965+
"size": 237,
966+
"uri": "https://{canondata_backend}/1599023/041960bbcc0b2c1a25dbe74f1422a99e4f82f82f/resource.tar.gz#test.test_params-pg_missing-default.txt-Debug_/opt.yql"
967+
}
968+
],
969+
"test.test[params-pg_missing-default.txt-Results]": [
970+
{
971+
"checksum": "83e0c8294d6b27a963521291b0640dc4",
972+
"size": 731,
973+
"uri": "https://{canondata_backend}/1599023/041960bbcc0b2c1a25dbe74f1422a99e4f82f82f/resource.tar.gz#test.test_params-pg_missing-default.txt-Results_/results.txt"
974+
}
975+
],
962976
"test.test[pg-join_using_multiple1-default.txt-Debug]": [
963977
{
964978
"checksum": "0e4348810769e886e5e0b3c508ad51db",

yql/essentials/tests/sql/sql2yql/canondata/result.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4829,6 +4829,20 @@
48294829
"uri": "https://{canondata_backend}/1775319/f1fa0c55bf9f13cff57cf1c990c2330caed8eb1b/resource.tar.gz#test_sql2yql.test_params-param_type_mismatch_fail_/sql.yql"
48304830
}
48314831
],
4832+
"test_sql2yql.test[params-pg]": [
4833+
{
4834+
"checksum": "ed60e4aee8d62dbdac794b4f06546f61",
4835+
"size": 1373,
4836+
"uri": "https://{canondata_backend}/1689644/e59269d256e08fb6e6a66f5594df314b1e5a5a5c/resource.tar.gz#test_sql2yql.test_params-pg_/sql.yql"
4837+
}
4838+
],
4839+
"test_sql2yql.test[params-pg_missing]": [
4840+
{
4841+
"checksum": "36b1d79d2d772d04f502c948eb4b223d",
4842+
"size": 1018,
4843+
"uri": "https://{canondata_backend}/1689644/e59269d256e08fb6e6a66f5594df314b1e5a5a5c/resource.tar.gz#test_sql2yql.test_params-pg_missing_/sql.yql"
4844+
}
4845+
],
48324846
"test_sql2yql.test[params-primitives]": [
48334847
{
48344848
"checksum": "08cb19394a5f09dddaa87867ae8a7981",
@@ -11107,6 +11121,16 @@
1110711121
"uri": "file://test_sql_format.test_params-param_type_mismatch_fail_/formatted.sql"
1110811122
}
1110911123
],
11124+
"test_sql_format.test[params-pg]": [
11125+
{
11126+
"uri": "file://test_sql_format.test_params-pg_/formatted.sql"
11127+
}
11128+
],
11129+
"test_sql_format.test[params-pg_missing]": [
11130+
{
11131+
"uri": "file://test_sql_format.test_params-pg_missing_/formatted.sql"
11132+
}
11133+
],
1111011134
"test_sql_format.test[params-primitives]": [
1111111135
{
1111211136
"uri": "file://test_sql_format.test_params-primitives_/formatted.sql"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
DECLARE $a AS pgbytea;
2+
DECLARE $b AS pgbool;
3+
DECLARE $c AS pgint4;
4+
5+
SELECT
6+
$a,
7+
$b,
8+
$c
9+
;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
DECLARE $a AS pgdate;
2+
3+
SELECT
4+
$a
5+
;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
["//8="]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"true"

0 commit comments

Comments
 (0)