pgsql: Fix mvdistinct and dependencies size calculations

From: Tomas Vondra <tomas(dot)vondra(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix mvdistinct and dependencies size calculations
Date: 2019-04-21 18:27:19
Message-ID: E1hIHBP-00013F-Rj@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix mvdistinct and dependencies size calculations

The formulas used to calculate size while (de)serializing mvndistinct
and functional dependencies were based on offset() of the structs. But
that is incorrect, because the structures are not copied directly, we
we copy the individual fields directly.

At the moment this works fine, because there is no alignment padding
on any platform we support. But it might break if we ever added some
fields into any of the structs, for example. It's also confusing.

Fixed by reworking the macros to directly sum sizes of serialized
fields. The macros are now useful only for serialiation, so there is
no point in keeping them in the public header file. So make them
private by moving them to the .c files.

Also adds a couple more asserts to check the serialization, and fixes
an incorrect allocation of MVDependency instead of (MVDependency *).

Reported-By: Tom Lane
Discussion: https://postgr.es/m/29785.1555365602@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d08c44f7a4ec574110bf1587fe8bd682b8557e0f

Modified Files
--------------
src/backend/statistics/dependencies.c | 40 +++++++++++++++++++++++++----------
src/backend/statistics/mvdistinct.c | 37 ++++++++++++++++++++++----------
src/include/statistics/statistics.h | 19 +----------------
3 files changed, 56 insertions(+), 40 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Etsuro Fujita 2019-04-22 05:50:20 Re: pgsql: Allow insert and update tuple routing and COPY for foreign table
Previous Message Bruce Momjian 2019-04-20 15:18:48 pgsql: docs: reorder collation regression test order in paragraph