Hi, On 2019-01-08 13:41:16 -0500, John Naylor wrote: > On Tue, Jan 8, 2019 at 12:06 PM Andrew Dunstan > <andrew.duns...@2ndquadrant.com> wrote: > > On 1/7/19 7:52 PM, Andres Freund wrote: > > > Builtin functions for one, which we'd swatted down last time round due > > > to gperfs defficiencies. > > Do you mean the fmgr table?
Not the entire fmgr table, but just the builtin oid index, generated by the following section: # Create the fmgr_builtins table, collect data for fmgr_builtin_oid_index print $tfh "\nconst FmgrBuiltin fmgr_builtins[] = {\n"; my %bmap; $bmap{'t'} = 'true'; $bmap{'f'} = 'false'; my @fmgr_builtin_oid_index; my $fmgr_count = 0; foreach my $s (sort { $a->{oid} <=> $b->{oid} } @fmgr) { print $tfh " { $s->{oid}, $s->{nargs}, $bmap{$s->{strict}}, $bmap{$s->{retset}}, \"$s->{prosrc}\", $s->{prosrc} }"; $fmgr_builtin_oid_index[ $s->{oid} ] = $fmgr_count++; if ($fmgr_count <= $#fmgr) { print $tfh ",\n"; } else { print $tfh "\n"; } } print $tfh "};\n"; print $tfh qq| const int fmgr_nbuiltins = (sizeof(fmgr_builtins) / sizeof(FmgrBuiltin)); |; The generated fmgr_builtin_oid_index is pretty sparse, and a more dense hashtable might e.g. more efficient from a cache perspective. Greetings, Andres Freund