EDB must maintain their own patch set for this.
{
prep_status(ctx, "Adjusting sequences");
exec_prog(ctx, true,
- SYSTEMQUOTE "\"%s/%s\" --set ON_ERROR_STOP=on --port %d "
+ SYSTEMQUOTE "\"%s/psql\" --set ON_ERROR_STOP=on --port %d "
"-f \"%s\" --dbname template1 >> \"%s\"" SYSTEMQUOTE,
- ctx->new.bindir, ctx->new.psql_exe, ctx->new.port,
- sequence_script_file_name, ctx->logfile);
+ ctx->new.bindir, ctx->new.port, sequence_script_file_name,
+ ctx->logfile);
unlink(sequence_script_file_name);
pg_free(sequence_script_file_name);
check_ok(ctx);
#include <ctype.h>
#include <stdlib.h>
-#ifdef EDB_NATIVE_LANG
-#include "access/tuptoaster.h"
-#endif
-
/*
* get_control_data()
got_float8_pass_by_value = true;
}
-#ifdef EDB_NATIVE_LANG
- /* EDB AS 8.3 is an 8.2 code base */
- if (cluster->is_edb_as && GET_MAJOR_VERSION(cluster->major_version) <= 803)
- {
- cluster->controldata.toast = TOAST_MAX_CHUNK_SIZE;
- got_toast = true;
- }
-#endif
-
/* we have the result of cmd in "output". so parse it line by line now */
while (fgets(bufin, sizeof(bufin), output))
{
p++; /* removing ':' char */
cluster->controldata.cat_ver = (uint32) atol(p);
}
- else if ((p = strstr(bufin, "First log file ID after reset:")) != NULL ||
- (cluster->is_edb_as && GET_MAJOR_VERSION(cluster->major_version) <= 803 &&
- (p = strstr(bufin, "Current log file ID:")) != NULL))
+ else if ((p = strstr(bufin, "First log file ID after reset:")) != NULL)
{
p = strchr(p, ':');
cluster->controldata.logid = (uint32) atol(p);
got_log_id = true;
}
- else if ((p = strstr(bufin, "First log file segment after reset:")) != NULL ||
- (cluster->is_edb_as && GET_MAJOR_VERSION(cluster->major_version) <= 803 &&
- (p = strstr(bufin, "Next log file segment:")) != NULL))
+ else if ((p = strstr(bufin, "First log file segment after reset:")) != NULL)
{
p = strchr(p, ':');
static void checkBinDir(migratorContext *ctx, ClusterInfo *cluster);
-static int check_exec(migratorContext *ctx, const char *dir, const char *cmdName,
- const char *alternative);
+static int check_exec(migratorContext *ctx, const char *dir, const char *cmdName);
static const char *validate_exec(const char *path);
static int check_data_dir(migratorContext *ctx, const char *pg_data);
static void
checkBinDir(migratorContext *ctx, ClusterInfo *cluster)
{
- check_exec(ctx, cluster->bindir, "postgres", "edb-postgres");
- check_exec(ctx, cluster->bindir, "pg_ctl", NULL);
- check_exec(ctx, cluster->bindir, "pg_dumpall", NULL);
-
-#ifdef EDB_NATIVE_LANG
- /* check for edb-psql first because we need to detect EDB AS */
- if (check_exec(ctx, cluster->bindir, "edb-psql", "psql") == 1)
- {
- cluster->psql_exe = "edb-psql";
- cluster->is_edb_as = true;
- }
- else
-#else
- if (check_exec(ctx, cluster->bindir, "psql", NULL) == 1)
-#endif
- cluster->psql_exe = "psql";
+ check_exec(ctx, cluster->bindir, "postgres");
+ check_exec(ctx, cluster->bindir, "psql");
+ check_exec(ctx, cluster->bindir, "pg_ctl");
+ check_exec(ctx, cluster->bindir, "pg_dumpall");
}
* a valid executable, this function returns 0 to indicated failure.
*/
static int
-check_exec(migratorContext *ctx, const char *dir, const char *cmdName,
- const char *alternative)
+check_exec(migratorContext *ctx, const char *dir, const char *cmdName)
{
char path[MAXPGPATH];
const char *errMsg;
snprintf(path, sizeof(path), "%s%c%s", dir, pathSeparator, cmdName);
if ((errMsg = validate_exec(path)) == NULL)
- {
return 1; /* 1 -> first alternative OK */
- }
else
- {
- if (alternative)
- {
- report_status(ctx, PG_WARNING, "check for %s warning: %s",
- cmdName, errMsg);
- if (check_exec(ctx, dir, alternative, NULL) == 1)
- return 2; /* 2 -> second alternative OK */
- }
- else
- pg_log(ctx, PG_FATAL, "check for %s failed - %s\n", cmdName, errMsg);
- }
+ pg_log(ctx, PG_FATAL, "check for %s failed - %s\n", cmdName, errMsg);
return 0; /* 0 -> neither alternative is acceptable */
}
#include <sys/types.h>
#include <fcntl.h>
-#ifdef EDB_NATIVE_LANG
-#include <fcntl.h>
-#endif
-
#ifdef WIN32
#include <windows.h>
#endif
RelInfoArr *relarr, Cluster whichCluster)
{
PGconn *conn = connectToServer(ctx, dbinfo->db_name, whichCluster);
- bool is_edb_as = (whichCluster == CLUSTER_OLD) ?
- ctx->old.is_edb_as : ctx->new.is_edb_as;
PGresult *res;
RelInfo *relinfos;
int ntups;
FirstNormalObjectId,
/* see the comment at the top of v8_3_create_sequence_script() */
(GET_MAJOR_VERSION(ctx->old.major_version) <= 803) ?
- "" : " OR relkind = 'S'",
-
- /*
- * EDB AS installs pgagent by default via initdb. We have to ignore it,
- * and not migrate any old table contents.
- */
- (is_edb_as && strcmp(dbinfo->db_name, "edb") == 0) ?
- " AND "
- " n.nspname != 'pgagent' AND "
- /* skip pgagent TOAST tables */
- " c.oid NOT IN "
- " ( "
- " SELECT c2.reltoastrelid "
- " FROM pg_catalog.pg_class c2 JOIN "
- " pg_catalog.pg_namespace n2 "
- " ON c2.relnamespace = n2.oid "
- " WHERE n2.nspname = 'pgagent' AND "
- " c2.reltoastrelid != 0 "
- " ) AND "
- /* skip pgagent TOAST table indexes */
- " c.oid NOT IN "
- " ( "
- " SELECT c3.reltoastidxid "
- " FROM pg_catalog.pg_class c2 JOIN "
- " pg_catalog.pg_namespace n2 "
- " ON c2.relnamespace = n2.oid JOIN "
- " pg_catalog.pg_class c3 "
- " ON c2.reltoastrelid = c3.oid "
- " WHERE n2.nspname = 'pgagent' AND "
- " c2.reltoastrelid != 0 AND "
- " c3.reltoastidxid != 0 "
- " ) " : "");
+ "" : " OR relkind = 'S'");
res = executeQueryOrDie(ctx, conn, query);
*/
prep_status(ctx, "Creating databases in the new cluster");
exec_prog(ctx, true,
- SYSTEMQUOTE "\"%s/%s\" --set ON_ERROR_STOP=on --port %d "
+ SYSTEMQUOTE "\"%s/psql\" --set ON_ERROR_STOP=on --port %d "
"-f \"%s/%s\" --dbname template1 >> \"%s\"" SYSTEMQUOTE,
- ctx->new.bindir, ctx->new.psql_exe, ctx->new.port,
- ctx->output_dir, GLOBALS_DUMP_FILE, ctx->logfile);
+ ctx->new.bindir, ctx->new.port, ctx->output_dir,
+ GLOBALS_DUMP_FILE, ctx->logfile);
check_ok(ctx);
get_db_and_rel_infos(ctx, &ctx->new.dbarr, CLUSTER_NEW);
prep_status(ctx, "Restoring database schema to new cluster");
exec_prog(ctx, true,
- SYSTEMQUOTE "\"%s/%s\" --set ON_ERROR_STOP=on --port %d "
+ SYSTEMQUOTE "\"%s/psql\" --set ON_ERROR_STOP=on --port %d "
"-f \"%s/%s\" --dbname template1 >> \"%s\"" SYSTEMQUOTE,
- ctx->new.bindir, ctx->new.psql_exe, ctx->new.port,
- ctx->output_dir, DB_DUMP_FILE, ctx->logfile);
+ ctx->new.bindir, ctx->new.port, ctx->output_dir,
+ DB_DUMP_FILE, ctx->logfile);
check_ok(ctx);
/* regenerate now that we have db schemas */
DbInfoArr dbarr; /* dbinfos array */
char *pgdata; /* pathname for cluster's $PGDATA directory */
char *bindir; /* pathname for cluster's executable directory */
- const char *psql_exe; /* name of the psql command to execute
- * in the cluster */
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 */
- /* EDB AS is PG 8.2 with 8.3 enhancements backpatched. */
- bool is_edb_as; /* EnterpriseDB's Postgres Plus Advanced Server? */
char *tablespace_suffix; /* directory specification */
} ClusterInfo;
#include "pg_upgrade.h"
-#ifdef EDB_NATIVE_LANG
-#include <fcntl.h>
-#endif
-
#include "catalog/pg_class.h"
#include "access/transam.h"
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.3 2010/05/13 15:03:24 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.4 2010/05/13 22:51:00 momjian Exp $ -->
<sect1 id="pgupgrade">
<title>pg_upgrade</title>
pg_upgrade supports upgrades from 8.3.X and later to the current
major release of Postgres, including snapshot and alpha releases.
-<!--
- pg_upgrade also supports upgrades from EnterpriseDB's Postgres Plus
- Advanced Server.
--->
-
</para>
</sect2>
start the new cluster.
</para>
-<!--
- <para>
- If migrating EnterpriseDB's Postgres Plus Advanced Server, you must:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>not</> install <literal>sample tables and procedures/functions</>
- in the new server
- </para>
- </listitem>
- <listitem>
- <para>
- delete the empty <literal>edb</> schema in the <literal>enterprisedb</> database
- </para>
- </listitem>
- </itemizedlist>
- </para>
--->
-
</listitem>
<listitem>