Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Prevent pg_basebackup when integer_datetimes flag doesn't match.
authorRobert Haas <rhaas@postgresql.org>
Tue, 22 May 2012 14:02:47 +0000 (10:02 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 22 May 2012 14:02:47 +0000 (10:02 -0400)
Magnus Hagander, reviewed by Fujii Masao, with slight wording changes
by me.

src/bin/pg_basebackup/streamutil.c

index b12932fe3f8313a4af8500f386785bacc36db3ea..0de6f54e415283031e14e6fdac210aa4be66239a 100644 (file)
@@ -75,6 +75,7 @@ GetConnection(void)
    const char **keywords;
    const char **values;
    char       *password = NULL;
+   const char *tmpparam;
 
    if (dbhost)
        argcount++;
@@ -157,6 +158,29 @@ GetConnection(void)
        free(values);
        free(keywords);
 
+       /*
+        * Ensure we have the same value of integer timestamps as the
+        * server we are connecting to.
+        */
+       tmpparam = PQparameterStatus(tmpconn, "integer_datetimes");
+       if (!tmpparam)
+       {
+           fprintf(stderr, _("%s: could not determine server setting for integer_datetimes\n"),
+                   progname);
+           exit(1);
+       }
+
+#ifdef HAVE_INT64_TIMESTAMP
+       if (strcmp(tmpparam, "on") != 0)
+#else
+       if (strcmp(tmpparam, "off") != 0)
+#endif
+       {
+           fprintf(stderr, _("%s: integer_datetimes compile flag does not match server\n"),
+                   progname);
+           exit(1);
+       }
+
        /* Store the password for next run */
        if (password)
            dbpassword = password;