From 65076269ea54a8cd6e39f066a208c7d13aceac0a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 16 Feb 2011 12:39:45 -0500 Subject: [PATCH] Make a no-op ALTER EXTENSION UPDATE give just a NOTICE, not ERROR. This seems a bit more user-friendly. --- src/backend/commands/extension.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 7bfb17e417..4bb79d4921 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -1035,11 +1035,6 @@ identify_update_path(ExtensionControlFile *control, ExtensionVersionInfo *evi_start; ExtensionVersionInfo *evi_target; - if (strcmp(oldVersion, newVersion) == 0) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("version to install or update to must be different from old version"))); - /* Extract the version update graph from the script directory */ evi_list = get_ext_ver_list(control); @@ -1262,6 +1257,12 @@ CreateExtension(CreateExtensionStmt *stmt) oldVersionName = strVal(d_old_version->arg); check_valid_version_name(oldVersionName); + if (strcmp(oldVersionName, versionName) == 0) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("FROM version must be different from installation target version \"%s\"", + versionName))); + updateVersions = identify_update_path(pcontrol, oldVersionName, versionName); @@ -2464,6 +2465,17 @@ ExecAlterExtensionStmt(AlterExtensionStmt *stmt) } check_valid_version_name(versionName); + /* + * If we're already at that version, just say so + */ + if (strcmp(oldVersionName, versionName) == 0) + { + ereport(NOTICE, + (errmsg("version \"%s\" of extension \"%s\" is already installed", + versionName, stmt->extname))); + return; + } + /* * Identify the series of update script files we need to execute */