]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Make a no-op ALTER EXTENSION UPDATE give just a NOTICE, not ERROR.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Feb 2011 17:39:45 +0000 (12:39 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Feb 2011 17:40:31 +0000 (12:40 -0500)
This seems a bit more user-friendly.

src/backend/commands/extension.c

index 7bfb17e417d47b55df2165f616d3ce7b7f3d8167..4bb79d492155d7157e5690a1f2e77a6a03e2f9dd 100644 (file)
@@ -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
         */