mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
MAXALIGN the target address where we store flattened value.
The API (EOH_flatten_into) that flattens the expanded value representation expects the target address to be maxaligned. All it's usage adhere to that principle except when serializing datums for parallel query. Fix that usage. Diagnosed-by: Tom Lane Author: Tom Lane and Amit Kapila Backpatch-through: 9.6 Discussion: https://postgr.es/m/11629.1536550032@sss.pgh.pa.us
This commit is contained in:
parent
a33245a853
commit
9bc9f72b28
@ -338,8 +338,19 @@ datumSerialize(Datum value, bool isnull, bool typByVal, int typLen,
|
||||
}
|
||||
else if (eoh)
|
||||
{
|
||||
EOH_flatten_into(eoh, (void *) *start_address, header);
|
||||
char *tmp;
|
||||
|
||||
/*
|
||||
* EOH_flatten_into expects the target address to be maxaligned,
|
||||
* so we can't store directly to *start_address.
|
||||
*/
|
||||
tmp = (char *) palloc(header);
|
||||
EOH_flatten_into(eoh, (void *) tmp, header);
|
||||
memcpy(*start_address, tmp, header);
|
||||
*start_address += header;
|
||||
|
||||
/* be tidy. */
|
||||
pfree(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user