pg_upgrade cleanup

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема pg_upgrade cleanup
Дата
Msg-id 201010202002.o9KK2o017275@momjian.us
обсуждение исходный текст
Список pgsql-hackers
I have applied the attached patch to clean up pg_upgrade cache lookup
code and remove useless NULL pointer tests.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index 257f5a8..67528b0 100644
*** a/contrib/pg_upgrade/info.c
--- b/contrib/pg_upgrade/info.c
*************** gen_db_file_maps(DbInfo *old_db, DbInfo
*** 74,81 ****
          num_maps++;

          /*
!          * so much for the mapping of this relation. Now we need a mapping for
!          * its corresponding toast relation if any.
           */
          if (oldrel->toastrelid > 0)
          {
--- 74,81 ----
          num_maps++;

          /*
!          * So much for mapping this relation;  now we need a mapping
!          * for its corresponding toast relation, if any.
           */
          if (oldrel->toastrelid > 0)
          {
*************** gen_db_file_maps(DbInfo *old_db, DbInfo
*** 117,122 ****
--- 117,123 ----
                       newrel->reloid);

              /* look them up in their respective arrays */
+             /* we lose our cache location here */
              old_toast = relarr_lookup_rel(&old_db->rel_arr,
                                            "pg_toast", old_name, CLUSTER_OLD);
              new_toast = relarr_lookup_rel(&new_db->rel_arr,
*************** get_rel_infos(const DbInfo *dbinfo, RelI
*** 385,391 ****

      relarr->rels = relinfos;
      relarr->nrels = num_rels;
!     relarr->cache_name_rel = 0;
  }


--- 386,392 ----

      relarr->rels = relinfos;
      relarr->nrels = num_rels;
!     relarr->last_relname_lookup = 0;
  }


*************** dbarr_lookup_db(DbInfoArr *db_arr, const
*** 399,407 ****
  {
      int            dbnum;

-     if (!db_arr || !db_name)
-         return NULL;
-
      for (dbnum = 0; dbnum < db_arr->ndbs; dbnum++)
      {
          if (strcmp(db_arr->dbs[dbnum].db_name, db_name) == 0)
--- 400,405 ----
*************** relarr_lookup_rel(RelInfoArr *rel_arr, c
*** 424,439 ****
  {
      int            relnum;

-     if (!rel_arr || !relname)
-         return NULL;
-
      /* Test next lookup first, for speed */
!     if (rel_arr->cache_name_rel + 1 < rel_arr->nrels &&
!         strcmp(rel_arr->rels[rel_arr->cache_name_rel + 1].nspname, nspname) == 0 &&
!         strcmp(rel_arr->rels[rel_arr->cache_name_rel + 1].relname, relname) == 0)
      {
!         rel_arr->cache_name_rel++;
!         return &rel_arr->rels[rel_arr->cache_name_rel];
      }

      for (relnum = 0; relnum < rel_arr->nrels; relnum++)
--- 422,434 ----
  {
      int            relnum;

      /* Test next lookup first, for speed */
!     if (rel_arr->last_relname_lookup + 1 < rel_arr->nrels &&
!         strcmp(rel_arr->rels[rel_arr->last_relname_lookup + 1].nspname, nspname) == 0 &&
!         strcmp(rel_arr->rels[rel_arr->last_relname_lookup + 1].relname, relname) == 0)
      {
!         rel_arr->last_relname_lookup++;
!         return &rel_arr->rels[rel_arr->last_relname_lookup];
      }

      for (relnum = 0; relnum < rel_arr->nrels; relnum++)
*************** relarr_lookup_rel(RelInfoArr *rel_arr, c
*** 441,447 ****
          if (strcmp(rel_arr->rels[relnum].nspname, nspname) == 0 &&
              strcmp(rel_arr->rels[relnum].relname, relname) == 0)
          {
!             rel_arr->cache_name_rel = relnum;
              return &rel_arr->rels[relnum];
          }
      }
--- 436,442 ----
          if (strcmp(rel_arr->rels[relnum].nspname, nspname) == 0 &&
              strcmp(rel_arr->rels[relnum].relname, relname) == 0)
          {
!             rel_arr->last_relname_lookup = relnum;
              return &rel_arr->rels[relnum];
          }
      }
*************** relarr_lookup_reloid(RelInfoArr *rel_arr
*** 464,472 ****
  {
      int            relnum;

-     if (!rel_arr || !oid)
-         return NULL;
-
      for (relnum = 0; relnum < rel_arr->nrels; relnum++)
      {
          if (rel_arr->rels[relnum].reloid == oid)
--- 459,464 ----
*************** relarr_free(RelInfoArr *rel_arr)
*** 483,489 ****
  {
      pg_free(rel_arr->rels);
      rel_arr->nrels = 0;
!     rel_arr->cache_name_rel = 0;
  }


--- 475,481 ----
  {
      pg_free(rel_arr->rels);
      rel_arr->nrels = 0;
!     rel_arr->last_relname_lookup = 0;
  }


diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index e40f58d..439c0a7 100644
*** a/contrib/pg_upgrade/pg_upgrade.h
--- b/contrib/pg_upgrade/pg_upgrade.h
*************** typedef struct
*** 78,84 ****
  {
      RelInfo    *rels;
      int            nrels;
!     int            cache_name_rel;    /* cache of last lookup location */
  } RelInfoArr;

  /*
--- 78,84 ----
  {
      RelInfo    *rels;
      int            nrels;
!     int            last_relname_lookup;    /* cache of last lookup location */
  } RelInfoArr;

  /*

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: max_wal_senders must die
Следующее
От: Robert Haas
Дата:
Сообщение: Re: max_wal_senders must die