static char *
convert_value_to_string(Datum value, Oid valtype)
{
+ char *str;
Oid typoutput;
Oid typioparam;
bool typIsVarlena;
getTypeOutputInfo(valtype, &typoutput, &typioparam, &typIsVarlena);
- return DatumGetCString(OidFunctionCall3(typoutput,
- value,
- ObjectIdGetDatum(typioparam),
- Int32GetDatum(-1)));
+ SPI_push();
+
+ str = DatumGetCString(OidFunctionCall3(typoutput,
+ value,
+ ObjectIdGetDatum(typioparam),
+ Int32GetDatum(-1)));
+
+ SPI_pop();
+
+ return str;
}
/* ----------
char *extval;
extval = convert_value_to_string(value, valtype);
+ SPI_push();
value = FunctionCall3(reqinput,
CStringGetDatum(extval),
ObjectIdGetDatum(reqtypioparam),
Int32GetDatum(reqtypmod));
+ SPI_pop();
pfree(extval);
}
}