Re: reducing the footprint of ScanKeyword (was Re: Large writable variables)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: John Naylor <john.naylor@2ndquadrant.com>
Cc: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>,
Andres Freund <andres@anarazel.de>, Joerg Sonnenberger <joerg@bec.de>,
David Rowley <david.rowley@2ndquadrant.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-01-09T23:41:05Z
Lists: pgsql-hackers
John Naylor <john.naylor@2ndquadrant.com> writes: > On Wed, Jan 9, 2019 at 5:33 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> really need here. We could go with "[no-]case-insensitive", perhaps. >> Or "[no-]case-fold", which is at least a little shorter and less >> double-negative-y. > I'd be in favor of --[no-]case-fold. Yeah, I like that better too; I've been having to stop and think every time as to which direction is which with the [in]sensitive terminology. I'll make it "case-fold" throughout. > This comment in PerfectHash.pm: > (It does change '_', else we could just skip adjusting > # $cn here at all, for typical keyword strings.) > ...seems a bit out of place in the module, because of its reference to > keywords, of interest right now to its only caller. Maybe a bit of > context here. (I also don't quite understand why we could > hypothetically skip the adjustment.) Were it not for the underscore case, we could plausibly assume that the supplied keywords are already all-lower-case and don't need any further folding. But I agree that this comment is probably more confusing than helpful; it's easier just to see that the code is applying the same transform as the runtime lookup will do. > Lastly, the keyword headers still have a dire warning about ASCII > order and binary search. Those could be softened to match the comment > in gen_keywordlist.pl. Agreed, will do. Thanks for reviewing! regards, tom lane
Commits
-
Use perfect hashing, instead of binary search, for keyword lookup.
- c64d0cd5ce24 12.0 landed
-
Reduce the size of the fmgr_builtin_oid_index[] array.
- 8ff5f824dca7 12.0 landed
-
Replace the data structure used for keyword lookup.
- afb0d0712f1a 12.0 landed