--- a/src/include/access/tupmacs.h +++ b/src/include/access/tupmacs.h @@ -61,11 +61,11 @@ return Int16GetDatum(*((const int16 *) T)); case sizeof(int32): return Int32GetDatum(*((const int32 *) T)); + default: #if SIZEOF_DATUM == 8 - case sizeof(Datum): + if (attlen == sizeof(Datum)) return *((const Datum *) T); #endif - default: elog(ERROR, "unsupported byval length: %d", attlen); return 0; } @@ -193,12 +193,13 @@ case sizeof(int32): *(int32 *) T = DatumGetInt32(newdatum); break; + default: #if SIZEOF_DATUM == 8 - case sizeof(Datum): + if (attlen == sizeof(Datum)) { *(Datum *) T = newdatum; - break; + return; + } #endif - default: elog(ERROR, "unsupported byval length: %d", attlen); } }