From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Should we make Bitmapsets a kind of Node? |
Date: | 2021-01-29 20:12:28 |
Message-ID: | 2822860.1611951148@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I got annoyed (not for the first time) by the fact that the
partitioned_rels field of AppendPath and MergeAppendPath is a list of
Relids, i.e., Bitmapsets. This is problematic because a Bitmapset is
not a type of Node, and thus a List of them is really an invalid data
structure. The main practical consequence is that pprint() fails to
print these path types accurately, which is an issue for debugging.
We've had some related problems before, so I'm wondering if it's time
to bite the bullet and turn Bitmapsets into legal Nodes. We'd have
to add a nodetag field to them, which is free on 64-bit machines due
to alignment considerations, but would increase the size of most
Bitmapsets on 32-bit machines. OTOH, I do not think we're optimizing
for 32-bit machines anymore.
Another issue is that the outfuncs/readfuncs print representation
currently looks like "(b 1 2 ...)" which isn't a normal
representation for a Node. I'd be inclined to try to preserve that
representation, because I think we'd have to special-case Bitmapsets
anyway given their variable number of unnamed entries. But I've not
tried to actually code anything for it.
Thoughts?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-01-29 20:28:26 | Re: [sqlsmith] Failed assertion during partition pruning |
Previous Message | Paul Martinez | 2021-01-29 18:53:28 | Re: [PATCH] pg_hba.conf error messages for logical replication connections |