The following bug has been logged on the website:
Bug reference: 16268
Logged by: RekGRpth
Email address: rekgrpth@gmail.com
PostgreSQL version: 12.2
Operating system: Docker alpine edge
Description:
const char *data = SPI_getvalue(SPI_tuptable->vals[row],
SPI_tuptable->tupdesc, SPI_fnumber(SPI_tuptable->tupdesc, "data"));
raise TRAP: FailedAssertion("!(IsTransactionState())", File: "catcache.c",
Line: 1213)
but
const char *data = SPI_getvalue_my(SPI_tuptable->vals[row],
SPI_tuptable->tupdesc, SPI_fnumber(SPI_tuptable->tupdesc, "data"));
where
char *SPI_getvalue_my(HeapTuple tuple, TupleDesc tupdesc, int fnumber) {
bool isnull;
Datum datum = SPI_getbinval(tuple, tupdesc, fnumber, &isnull);
if (isnull) return NULL;
return TextDatumGetCString(datum);
}
works ok