(unnamed)

text/plain

Filename: (unnamed)
Type: text/plain
Part: 1
Message: pg_upgrade patches applied
commit 67c9e4442f2521ff2ad62aa4d409269ea684ac0a
Author: Bruce Momjian <bruce@momjian.us>
Date:   Sat Jan 1 12:28:48 2011 -0500

    Furter pg_upgrade optimizations to reduce function call argument count.

diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
index 839a3c9..5708e2f 100644
*** /tmp/ky16ee_check.c	Wed Jan  5 09:04:30 2011
--- /tmp/uJkDve_check.c	Wed Jan  5 09:04:30 2011
*************** void
*** 209,216 ****
  check_cluster_versions(void)
  {
  	/* get old and new cluster versions */
! 	old_cluster.major_version = get_major_server_version(&old_cluster, &old_cluster.major_version_str);
! 	new_cluster.major_version = get_major_server_version(&new_cluster, &new_cluster.major_version_str);
  
  	/* We allow upgrades from/to the same major version for alpha/beta upgrades */
  
--- 209,216 ----
  check_cluster_versions(void)
  {
  	/* get old and new cluster versions */
! 	old_cluster.major_version = get_major_server_version(&old_cluster);
! 	new_cluster.major_version = get_major_server_version(&new_cluster);
  
  	/* We allow upgrades from/to the same major version for alpha/beta upgrades */
  
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index e44798a..7651096 100644
*** /tmp/Q6ensd_info.c	Wed Jan  5 09:04:30 2011
--- /tmp/a3Vosb_info.c	Wed Jan  5 09:04:30 2011
***************
*** 15,22 ****
  static void get_db_infos(ClusterInfo *cluster);
  static void dbarr_print(ClusterInfo *cluster);
  static void relarr_print(RelInfoArr *arr);
! static void get_rel_infos(ClusterInfo *cluster, const DbInfo *dbinfo,
! 			  RelInfoArr *relarr);
  static void relarr_free(RelInfoArr *rel_arr);
  static void map_rel(const RelInfo *oldrel,
  		const RelInfo *newrel, const DbInfo *old_db,
--- 15,21 ----
  static void get_db_infos(ClusterInfo *cluster);
  static void dbarr_print(ClusterInfo *cluster);
  static void relarr_print(RelInfoArr *arr);
! static void get_rel_infos(ClusterInfo *cluster, const int dbnum);
  static void relarr_free(RelInfoArr *rel_arr);
  static void map_rel(const RelInfo *oldrel,
  		const RelInfo *newrel, const DbInfo *old_db,
*************** get_db_and_rel_infos(ClusterInfo *cluste
*** 272,279 ****
  	get_db_infos(cluster);
  
  	for (dbnum = 0; dbnum < cluster->dbarr.ndbs; dbnum++)
! 		get_rel_infos(cluster, &cluster->dbarr.dbs[dbnum],
! 					  &cluster->dbarr.dbs[dbnum].rel_arr);
  
  	if (log_opts.debug)
  		dbarr_print(cluster);
--- 271,277 ----
  	get_db_infos(cluster);
  
  	for (dbnum = 0; dbnum < cluster->dbarr.ndbs; dbnum++)
! 		get_rel_infos(cluster, dbnum);
  
  	if (log_opts.debug)
  		dbarr_print(cluster);
*************** get_db_and_rel_infos(ClusterInfo *cluste
*** 290,298 ****
   * FirstNormalObjectId belongs to the user
   */
  static void
! get_rel_infos(ClusterInfo *cluster, const DbInfo *dbinfo, RelInfoArr *relarr)
  {
! 	PGconn	   *conn = connectToServer(cluster, dbinfo->db_name);
  	PGresult   *res;
  	RelInfo    *relinfos;
  	int			ntups;
--- 288,297 ----
   * FirstNormalObjectId belongs to the user
   */
  static void
! get_rel_infos(ClusterInfo *cluster, const int dbnum)
  {
! 	PGconn	   *conn = connectToServer(cluster,
! 									   cluster->dbarr.dbs[dbnum].db_name);
  	PGresult   *res;
  	RelInfo    *relinfos;
  	int			ntups;
*************** get_rel_infos(ClusterInfo *cluster, cons
*** 374,389 ****
  		tblspace = PQgetvalue(res, relnum, i_spclocation);
  		/* if no table tablespace, use the database tablespace */
  		if (strlen(tblspace) == 0)
! 			tblspace = dbinfo->db_tblspace;
  		strlcpy(curr->tablespace, tblspace, sizeof(curr->tablespace));
  	}
  	PQclear(res);
  
  	PQfinish(conn);
  
! 	relarr->rels = relinfos;
! 	relarr->nrels = num_rels;
! 	relarr->last_relname_lookup = 0;
  }
  
  
--- 373,388 ----
  		tblspace = PQgetvalue(res, relnum, i_spclocation);
  		/* if no table tablespace, use the database tablespace */
  		if (strlen(tblspace) == 0)
! 			tblspace = cluster->dbarr.dbs[dbnum].db_tblspace;
  		strlcpy(curr->tablespace, tblspace, sizeof(curr->tablespace));
  	}
  	PQclear(res);
  
  	PQfinish(conn);
  
! 	cluster->dbarr.dbs[dbnum].rel_arr.rels = relinfos;
! 	cluster->dbarr.dbs[dbnum].rel_arr.nrels = num_rels;
! 	cluster->dbarr.dbs[dbnum].rel_arr.last_relname_lookup = 0;
  }
  
  
diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c
index d2ca08b..5b8bf72 100644
*** /tmp/Ch0sza_pg_upgrade.c	Wed Jan  5 09:04:30 2011
--- /tmp/KJwJSa_pg_upgrade.c	Wed Jan  5 09:04:30 2011
*************** cleanup(void)
*** 384,391 ****
  	dbarr_free(&new_cluster.dbarr);
  	pg_free(log_opts.filename);
  	pg_free(os_info.user);
- 	pg_free(old_cluster.major_version_str);
- 	pg_free(new_cluster.major_version_str);
  	pg_free(old_cluster.controldata.lc_collate);
  	pg_free(new_cluster.controldata.lc_collate);
  	pg_free(old_cluster.controldata.lc_ctype);
--- 384,389 ----
diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index b6ce965..5405209 100644
*** /tmp/uDtZHc_pg_upgrade.h	Wed Jan  5 09:04:30 2011
--- /tmp/mf7mXc_pg_upgrade.h	Wed Jan  5 09:04:30 2011
*************** typedef struct
*** 179,185 ****
  	char	   *bindir;			/* pathname for cluster's executable directory */
  	unsigned short port;		/* port number where postmaster is waiting */
  	uint32		major_version;	/* PG_VERSION of cluster */
! 	char	   *major_version_str;		/* string PG_VERSION of cluster */
  	Oid			pg_database_oid;	/* OID of pg_database relation */
  	char	   *libpath;		/* pathname for cluster's pkglibdir */
  	char	   *tablespace_suffix;		/* directory specification */
--- 179,185 ----
  	char	   *bindir;			/* pathname for cluster's executable directory */
  	unsigned short port;		/* port number where postmaster is waiting */
  	uint32		major_version;	/* PG_VERSION of cluster */
! 	char	   major_version_str[64];		/* string PG_VERSION of cluster */
  	Oid			pg_database_oid;	/* OID of pg_database relation */
  	char	   *libpath;		/* pathname for cluster's pkglibdir */
  	char	   *tablespace_suffix;		/* directory specification */
*************** PGresult *executeQueryOrDie(PGconn *conn
*** 357,363 ****
  
  void		start_postmaster(ClusterInfo *cluster, bool quiet);
  void		stop_postmaster(bool fast, bool quiet);
! uint32 get_major_server_version(ClusterInfo *cluster, char **verstr);
  void		check_for_libpq_envvars(void);
  
  
--- 357,363 ----
  
  void		start_postmaster(ClusterInfo *cluster, bool quiet);
  void		stop_postmaster(bool fast, bool quiet);
! uint32 get_major_server_version(ClusterInfo *cluster);
  void		check_for_libpq_envvars(void);
  
  
diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
index 56dcb10..785e2ee 100644
*** /tmp/MgF32b_server.c	Wed Jan  5 09:04:30 2011
--- /tmp/wuqipc_server.c	Wed Jan  5 09:04:30 2011
*************** get_postmaster_pid(const char *datadir)
*** 129,150 ****
   * is retrieved by reading the PG_VERSION file.
   */
  uint32
! get_major_server_version(ClusterInfo *cluster, char **verstr)
  {
  	const char *datadir = cluster->pgdata;
  	FILE	   *version_fd;
! 	char		ver_file[MAXPGPATH];
  	int			integer_version = 0;
  	int			fractional_version = 0;
  
! 	*verstr = pg_malloc(64);
! 
! 	snprintf(ver_file, sizeof(ver_file), "%s/PG_VERSION", datadir);
! 	if ((version_fd = fopen(ver_file, "r")) == NULL)
  		return 0;
  
! 	if (fscanf(version_fd, "%63s", *verstr) == 0 ||
! 		sscanf(*verstr, "%d.%d", &integer_version, &fractional_version) != 2)
  	{
  		pg_log(PG_FATAL, "could not get version from %s\n", datadir);
  		fclose(version_fd);
--- 129,149 ----
   * is retrieved by reading the PG_VERSION file.
   */
  uint32
! get_major_server_version(ClusterInfo *cluster)
  {
  	const char *datadir = cluster->pgdata;
  	FILE	   *version_fd;
! 	char		ver_filename[MAXPGPATH];
  	int			integer_version = 0;
  	int			fractional_version = 0;
  
! 	snprintf(ver_filename, sizeof(ver_filename), "%s/PG_VERSION", datadir);
! 	if ((version_fd = fopen(ver_filename, "r")) == NULL)
  		return 0;
  
! 	if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 ||
! 		sscanf(cluster->major_version_str, "%d.%d", &integer_version,
! 			   &fractional_version) != 2)
  	{
  		pg_log(PG_FATAL, "could not get version from %s\n", datadir);
  		fclose(version_fd);