summaryrefslogtreecommitdiff
path: root/src/backend/commands/extension.c
diff options
context:
space:
mode:
authorTom Lane2011-02-16 17:39:45 +0000
committerTom Lane2011-02-16 17:40:31 +0000
commit65076269ea54a8cd6e39f066a208c7d13aceac0a (patch)
tree00bb7af1d1fde14ae0e3e80e719abf9031bcd91b /src/backend/commands/extension.c
parentb4a7e5980b2919d4d2a849d046a8e3a77e06fdb7 (diff)
Make a no-op ALTER EXTENSION UPDATE give just a NOTICE, not ERROR.
This seems a bit more user-friendly.
Diffstat (limited to 'src/backend/commands/extension.c')
-rw-r--r--src/backend/commands/extension.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 7bfb17e417d..4bb79d49215 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);
@@ -2465,6 +2466,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
*/
updateVersions = identify_update_path(control,