aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2022-08-16 22:52:01 +0300
committervvvv <vvvv@ydb.tech>2022-08-16 22:52:01 +0300
commitb72f31fabd5527c2c092cffac9385a64bcd6d010 (patch)
tree310af82430afd2bac8dcc245adbc301684a3e48d
parenta700b8e29dadd7b8cee6b598ce3b6739428f9187 (diff)
downloadydb-b72f31fabd5527c2c092cffac9385a64bcd6d010.tar.gz
fixed presort encoding
-rw-r--r--ydb/library/yql/minikql/computation/presort.cpp12
-rw-r--r--ydb/library/yql/parser/pg_wrapper/comp_factory.cpp4
2 files changed, 13 insertions, 3 deletions
diff --git a/ydb/library/yql/minikql/computation/presort.cpp b/ydb/library/yql/minikql/computation/presort.cpp
index efd765b8b7..b5f93d1fea 100644
--- a/ydb/library/yql/minikql/computation/presort.cpp
+++ b/ydb/library/yql/minikql/computation/presort.cpp
@@ -396,7 +396,12 @@ void EncodeValue(TType* type, const NUdf::TUnboxedValue& value, TVector<ui8>& ou
case TType::EKind::Pg: {
auto pgType = static_cast<TPgType*>(type);
- EncodePresortPGValue(pgType, value, output);
+ auto hasValue = (bool)value;
+ EncodeBool<false>(output, hasValue);
+ if (hasValue) {
+ EncodePresortPGValue(pgType, value, output);
+ }
+
break;
}
@@ -422,6 +427,11 @@ NUdf::TUnboxedValue DecodeImpl(TType* type, TStringBuf& input, const THolderFact
}
case TType::EKind::Pg: {
auto pgType = static_cast<TPgType*>(type);
+ auto hasValue = DecodeBool<false>(input);
+ if (!hasValue) {
+ return NUdf::TUnboxedValue();
+ }
+
return DecodePresortPGValue(pgType, input, buffer);
}
diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
index 214f39509b..f688a0b023 100644
--- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
+++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
@@ -858,7 +858,7 @@ public:
};
bool* nulls = (bool*)MKQLAllocWithSize(nitems);
- Y_DEFER{
+ Y_DEFER {
MKQLFreeWithSize(nulls, nitems);
};
@@ -924,7 +924,7 @@ private:
NullableDatum argDatum = { datum, false };
if (ConvertArgToCString) {
argDatum.value = (Datum)MakeCString(GetVarBuf((const text*)argDatum.value));
- Y_DEFER{
+ Y_DEFER {
pfree((void*)argDatum.value);
};
}