]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Make some minor cleanups in typalign-related code.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Feb 2026 01:46:03 +0000 (20:46 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Feb 2026 01:46:03 +0000 (20:46 -0500)
Commit 7b378237a widened AclMode to 64 bits, which implies that
the alignment of AclItem is now determined by an int64 field.
That commit correctly set the typalign for SQL type aclitem to
'd', but it missed the hard-wired knowledge about _aclitem in
bootstrap.c.  This doesn't seem to have caused any ill effects,
probably because we never try to fill a non-null value into
an aclitem[] column during bootstrap.  Nonetheless, it's clearly
a gotcha waiting to happen, so fix it up.

In passing, also fix a couple of typanalyze functions that were
using hard-coded typalign constants when they could just as
easily use greppable TYPALIGN_xxx macros.

Noticed these while working on a patch to expand the set of
typalign values.  I doubt we are going to pursue that path,
but these fixes still seem worth a quick commit.

Discussion: https://postgr.es/m/1127261.1769649624@sss.pgh.pa.us

src/backend/bootstrap/bootstrap.c
src/backend/tsearch/ts_typanalyze.c
src/backend/utils/adt/rangetypes_typanalyze.c

index dd57624b4f9c6106f75d5db12855f1608553924c..e8f825b3d65deef59a01f8db3f00b24a881f3819 100644 (file)
@@ -137,7 +137,7 @@ static const struct typinfo TypInfo[] = {
        F_ARRAY_IN, F_ARRAY_OUT},
        {"_char", 1002, CHAROID, -1, false, TYPALIGN_INT, TYPSTORAGE_EXTENDED, InvalidOid,
        F_ARRAY_IN, F_ARRAY_OUT},
-       {"_aclitem", 1034, ACLITEMOID, -1, false, TYPALIGN_INT, TYPSTORAGE_EXTENDED, InvalidOid,
+       {"_aclitem", 1034, ACLITEMOID, -1, false, TYPALIGN_DOUBLE, TYPSTORAGE_EXTENDED, InvalidOid,
        F_ARRAY_IN, F_ARRAY_OUT}
 };
 
index 0c513d694e772155afb8e5bbea1b33bac8a4fa22..48ee050e37fc98ec9cf16c7af4fcdb41cb9d637a 100644 (file)
@@ -444,7 +444,7 @@ compute_tsvector_stats(VacAttrStats *stats,
                        stats->statypid[0] = TEXTOID;
                        stats->statyplen[0] = -1;       /* typlen, -1 for varlena */
                        stats->statypbyval[0] = false;
-                       stats->statypalign[0] = 'i';
+                       stats->statypalign[0] = TYPALIGN_INT;
                }
        }
        else
index 38d12dedbc5c5c1c7a2e2f1278281d05f609f027..278d4e6941a3723bad26c87d05c25b1fbb63a4c3 100644 (file)
@@ -398,7 +398,7 @@ compute_range_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc,
                stats->statypid[slot_idx] = FLOAT8OID;
                stats->statyplen[slot_idx] = sizeof(float8);
                stats->statypbyval[slot_idx] = true;
-               stats->statypalign[slot_idx] = 'd';
+               stats->statypalign[slot_idx] = TYPALIGN_DOUBLE;
 
                /* Store the fraction of empty ranges */
                emptyfrac = palloc_object(float4);