aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2022-08-16 22:44:13 +0300
committervvvv <vvvv@ydb.tech>2022-08-16 22:44:13 +0300
commita700b8e29dadd7b8cee6b598ce3b6739428f9187 (patch)
tree423698b0ae76c75b33c9f258f4b35c173a3e037c
parentc31467766a7921632559c362374ef2c7cd09f84c (diff)
downloadydb-a700b8e29dadd7b8cee6b598ce3b6739428f9187.tar.gz
don't use Y_DEFER inside PG_TRY
-rw-r--r--ydb/library/yql/parser/pg_wrapper/comp_factory.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
index f79300954c..214f39509b 100644
--- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
+++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
@@ -935,7 +935,7 @@ private:
void* freeMem = nullptr;
void* freeMem2 = nullptr;
- Y_DEFER{
+ Y_DEFER {
if (freeMem) {
pfree(freeMem);
}
@@ -1640,6 +1640,13 @@ TString PgValueToNativeText(const NUdf::TUnboxedValuePod& value, ui32 pgTypeId)
outFuncId = NPg::LookupProc("array_out", { 0 }).ProcId;
}
+ char* str = nullptr;
+ Y_DEFER {
+ if (str) {
+ pfree(str);
+ }
+ };
+
PG_TRY();
{
FmgrInfo finfo;
@@ -1658,11 +1665,8 @@ TString PgValueToNativeText(const NUdf::TUnboxedValuePod& value, ui32 pgTypeId)
callInfo->args[0] = { typeInfo.PassByValue ?
ScalarDatumFromPod(value) :
PointerDatumFromPod(value), false };
- auto str = (char*)finfo.fn_addr(callInfo);
+ str = (char*)finfo.fn_addr(callInfo);
Y_ENSURE(!callInfo->isnull);
- Y_DEFER{
- pfree(str);
- };
return TString(str);
}
@@ -1684,7 +1688,7 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI
const bool oldNeedCanonizeFp = NeedCanonizeFp;
NeedCanonizeFp = needCanonizeFp;
- Y_DEFER{
+ Y_DEFER {
NeedCanonizeFp = oldNeedCanonizeFp;
};
@@ -1695,6 +1699,13 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI
sendFuncId = NPg::LookupProc("array_send", { 0 }).ProcId;
}
+ text* x = nullptr;
+ Y_DEFER {
+ if (x) {
+ pfree(x);
+ }
+ };
+
PG_TRY();
{
FmgrInfo finfo;
@@ -1714,11 +1725,8 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI
ScalarDatumFromPod(value) :
PointerDatumFromPod(value), false };
- auto x = (text*)finfo.fn_addr(callInfo);
+ x = (text*)finfo.fn_addr(callInfo);
Y_ENSURE(!callInfo->isnull);
- Y_DEFER{
- pfree(x);
- };
auto s = GetVarBuf(x);
ui32 len = s.Size();