Thread: TupleDescInitEntry failing to initialize varlen members

TupleDescInitEntry failing to initialize varlen members

From
Alvaro Herrera
Date:
Hi,

I just noticed in gdb that TupleDescInitEntry does not initialize
attacl, attoptions, attfdwoptions.  This is probably not very serious
(otherwise we'd have bugs about it), but it is noticeable in tupdescs
constructed by the executor, at least ExecTypeFromTL:

(gdb) print *tupDesc->attrs[2]
$6 = {attrelid = 0, attname = {data = "c", '\000' <repeats 62 times>}, atttypid = 1114,  attstattarget = -1, attlen =
8,attnum = 3, attphysnum = 3, attlognum = 3, attndims = 0,  attcacheoff = -1, atttypmod = -1, attbyval = 1 '\001',
attstorage= 112 'p', attalign = 100 'd',  attnotnull = 0 '\000', atthasdef = 0 '\000', attisdropped = 0 '\000',
attislocal= 1 '\001',  attinhcount = 0, attcollation = 0, attacl = {2139062142}, attoptions = {{     vl_len_ =
"\177\177\177\177",vl_dat = "\177"}}, attfdwoptions = {{     vl_len_ = "\177\177\177\177", vl_dat = "\177"}}} 


Does anybody think this is worth fixing?

--
Álvaro Herrera <alvherre@alvh.no-ip.org>


Re: TupleDescInitEntry failing to initialize varlen members

From
Tom Lane
Date:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> I just noticed in gdb that TupleDescInitEntry does not initialize
> attacl, attoptions, attfdwoptions.

Indeed not, because it's not building a tuple.  It's building an array
of C structs, and there's nothing useful to do with those fields.

(Robert's proposal to not even have such fields be C-visible might make
you feel better.)
        regards, tom lane