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-08T22:31:23Z
Lists: pgsql-hackers
John Naylor <john.naylor@2ndquadrant.com> writes: > Just a couple comments about the module: > -If you qualify the function's module name as you did > (PerfectHash::generate_hash_function), you don't have to export the > function into the callers namespace, so you can skip the @EXPORT_OK > setting. Most of our modules don't export. OK by me. I was more concerned about hiding the stuff that isn't supposed to be exported. > -There is a bit of a cognitive clash between $case_sensitive in > gen_keywordlist.pl and $case_insensitive in PerfectHash.pm. They each > make sense in their own file, but might it be worth using one or the > other? Yeah, dunno. It seems to make sense for the command-line-level default of gen_keywordlist.pl to be "case insensitive", since most users want that. But that surely shouldn't be the default in PerfectHash.pm, and I'm not very sure how to reconcile the discrepancy. > In the committed keyword patch, I noticed that in common/keywords.c, > the array length is defined with > ScanKeywordCategories[SCANKEYWORDS_NUM_KEYWORDS] > but other keyword arrays just have ...[]. Is there a reason for the difference? The length macro was readily available there so I used it. AFAIR that wasn't true elsewhere, though I might've missed something. It's pretty much just belt-and-suspenders coding anyway, since all those arrays are machine generated ... 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