Cache most recent relfilenode lookups, for speed, after report of

pg_upgrade slowness for 150k tables.
pull/1/head
Bruce Momjian 15 years ago
parent ad06db2610
commit 333b4a45f1
  1. 12
      contrib/pg_upgrade/info.c

@ -423,11 +423,21 @@ relarr_lookup_rel(RelInfoArr *rel_arr,
const char *nspname, const char *relname,
Cluster whichCluster)
{
int relnum;
static int relnum = 0;
if (!rel_arr || !relname)
return NULL;
/* Test most recent lookup first, for speed */
if (strcmp(rel_arr->rels[relnum].nspname, nspname) == 0 &&
strcmp(rel_arr->rels[relnum].relname, relname) == 0)
return &rel_arr->rels[relnum];
if (relnum + 1 < rel_arr->nrels &&
strcmp(rel_arr->rels[relnum + 1].nspname, nspname) == 0 &&
strcmp(rel_arr->rels[relnum + 1].relname, relname) == 0)
return &rel_arr->rels[relnum + 1];
for (relnum = 0; relnum < rel_arr->nrels; relnum++)
{
if (strcmp(rel_arr->rels[relnum].nspname, nspname) == 0 &&

Loading…
Cancel
Save