Re: Bug #652: NAMEDATALEN limitations

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: Bug #652: NAMEDATALEN limitations
Date: 2002-04-30 20:04:33
Message-ID: 21990.1020197073@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-sql

I said:
> One possible theory is that if NAMEDATALEN isn't a multiple of
> sizeof(int), the compiler's idea of sizeof(NameData) will probably be
> NAMEDATALEN rounded up to the next multiple of sizeof(int).

For the record, this does indeed seem to be the root cause for Erik's
complaint. relcache.c declares the key size for its relation name
cache index as sizeof(NameData) --- so if that's larger than NAMEDATALEN
the hashtable code will end up trying to compare pad bytes that
probably haven't been zeroed out.

It looks to me like it would not really be practical to expect the
system to work when sizeof(NameData) is different from NAMEDATALEN;
we could maybe eliminate the existing discrepancies but more would
surely creep in. So I've added comments to document that NAMEDATALEN
must be a multiple of sizeof(int).

BTW, I suspect that Names used as hashtable keys may explain the
residual speed differences that people have been reporting for large
values of NAMEDATALEN. The dynahash.c code assumes fixed-length keys
and will compare all bytes out to the specified length, no matter what
--- so the extra cycles may all be spent in key comparisons for
dynahash tables. Perhaps this could be fixed.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Jean-Luc Lachance 2002-04-30 20:34:36 performance on update table from a join
Previous Message Tom Lane 2002-04-30 18:45:53 Re: Bug #652: NAMEDATALEN limitations

Browse pgsql-sql by date

  From Date Subject
Next Message Jean-Luc Lachance 2002-04-30 20:34:36 performance on update table from a join
Previous Message Tom Lane 2002-04-30 18:45:53 Re: Bug #652: NAMEDATALEN limitations