From be226c21fb444744d1fb669ce08b6f90a25d1014 Mon Sep 17 00:00:00 2001
From: Guillaume Lelarge <guillaume@lelarge.info>
Date: Mon, 26 Jul 2010 21:37:25 +0200
Subject: [PATCH] Add support for --quote-all-identifiers CLI option on 9.1 pg_dump/pg_dumpall.

---
 pgadmin/frm/frmBackup.cpp              |    7 +++++++
 pgadmin/frm/frmBackupGlobals.cpp       |   24 +++++++++++++++++-------
 pgadmin/frm/frmBackupServer.cpp        |   24 +++++++++++++++++-------
 pgadmin/include/frm/frmBackupGlobals.h |    2 ++
 pgadmin/include/frm/frmBackupServer.h  |    2 ++
 pgadmin/ui/frmBackup.xrc               |    9 ++++++++-
 pgadmin/ui/frmBackupGlobals.xrc        |    6 +++++-
 pgadmin/ui/frmBackupServer.xrc         |    6 +++++-
 8 files changed, 63 insertions(+), 17 deletions(-)

diff --git a/pgadmin/frm/frmBackup.cpp b/pgadmin/frm/frmBackup.cpp
index a347597..7922216 100644
--- a/pgadmin/frm/frmBackup.cpp
+++ b/pgadmin/frm/frmBackup.cpp
@@ -48,6 +48,7 @@
 #define chkNoPrivileges         CTRL_CHECKBOX("chkNoPrivileges")
 #define chkNoTablespaces        CTRL_CHECKBOX("chkNoTablespaces")
 #define chkUseSetSession        CTRL_CHECKBOX("chkUseSetSession")
+#define chkForceQuoteForIdent   CTRL_CHECKBOX("chkForceQuoteForIdent")
 #define ctvObjects              CTRL_CHECKTREEVIEW("ctvObjects")
 
 
@@ -184,6 +185,10 @@ frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
         delete objects;
     }
 
+    if (!pgAppMinimumVersion(backupExecutable, 9,1))
+    {
+        chkForceQuoteForIdent->Disable();
+    }
     if (!pgAppMinimumVersion(backupExecutable, 8, 4))
     {
         chkNoTablespaces->Disable();
@@ -372,6 +377,8 @@ wxString frmBackup::getCmdPart2()
         cmd.Append(wxT(" --ignore-version"));
     if (chkVerbose->GetValue())
         cmd.Append(wxT(" --verbose"));
+    if (chkForceQuoteForIdent->GetValue())
+        cmd.Append(wxT(" --quote-all-identifiers"));
 
     cmd.Append(wxT(" --file \"") + txtFilename->GetValue() + wxT("\""));
 
diff --git a/pgadmin/frm/frmBackupGlobals.cpp b/pgadmin/frm/frmBackupGlobals.cpp
index ec2c9c4..7f7ea6f 100644
--- a/pgadmin/frm/frmBackupGlobals.cpp
+++ b/pgadmin/frm/frmBackupGlobals.cpp
@@ -30,6 +30,7 @@
 #define txtFilename             CTRL_TEXT("txtFilename")
 #define btnFilename             CTRL_BUTTON("btnFilename")
 #define chkVerbose              CTRL_CHECKBOX("chkVerbose")
+#define chkForceQuoteForIdent   CTRL_CHECKBOX("chkForceQuoteForIdent")
 
 
 BEGIN_EVENT_TABLE(frmBackupGlobals, ExternProcessDialog)
@@ -51,6 +52,14 @@ frmBackupGlobals::frmBackupGlobals(frmMain *form, pgObject *obj) : ExternProcess
 
     SetTitle(object->GetTranslatedMessage(BACKUPGLOBALS));
 
+    pgServer *server = (pgServer *)object;
+    if (server->GetConnection()->EdbMinimumVersion(8,0))
+        backupExecutable=edbBackupAllExecutable;
+    else if (server->GetConnection()->GetIsGreenplum())
+        backupExecutable=gpBackupAllExecutable;
+    else
+        backupExecutable=pgBackupAllExecutable;
+
     wxString val;
     settings->Read(wxT("frmBackupGlobals/LastFile"), &val, wxEmptyString);
     txtFilename->SetValue(val);
@@ -79,6 +88,11 @@ frmBackupGlobals::frmBackupGlobals(frmMain *form, pgObject *obj) : ExternProcess
     txtMessages->SetMaxLength(0L);
     btnOK->Disable();
 
+    if (!pgAppMinimumVersion(backupExecutable, 9,1))
+    {
+        chkForceQuoteForIdent->Disable();
+    }
+
     wxCommandEvent ev;
     OnChange(ev);
 }
@@ -150,13 +164,7 @@ wxString frmBackupGlobals::getCmdPart1()
 	else
         server=object->GetDatabase()->GetServer();
 
-    wxString cmd;
-    if (server->GetConnection()->EdbMinimumVersion(8,0))
-        cmd=edbBackupAllExecutable;
-    else if (server->GetConnection()->GetIsGreenplum())
-        cmd=gpBackupAllExecutable;
-    else
-        cmd=pgBackupAllExecutable;
+    wxString cmd = backupExecutable;
 
     if (!server->GetName().IsEmpty())
         cmd += wxT(" --host ") + server->GetName();
@@ -175,6 +183,8 @@ wxString frmBackupGlobals::getCmdPart2()
         cmd.Append(wxT(" --ignore-version"));
     if (chkVerbose->GetValue())
         cmd.Append(wxT(" --verbose"));
+    if (chkForceQuoteForIdent->GetValue())
+        cmd.Append(wxT(" --quote-all-identifiers"));
 
     cmd.Append(wxT(" --file \"") + txtFilename->GetValue() + wxT("\""));
 
diff --git a/pgadmin/frm/frmBackupServer.cpp b/pgadmin/frm/frmBackupServer.cpp
index 46f08d3..34de3b1 100644
--- a/pgadmin/frm/frmBackupServer.cpp
+++ b/pgadmin/frm/frmBackupServer.cpp
@@ -30,6 +30,7 @@
 #define txtFilename             CTRL_TEXT("txtFilename")
 #define btnFilename             CTRL_BUTTON("btnFilename")
 #define chkVerbose              CTRL_CHECKBOX("chkVerbose")
+#define chkForceQuoteForIdent   CTRL_CHECKBOX("chkForceQuoteForIdent")
 
 
 BEGIN_EVENT_TABLE(frmBackupServer, ExternProcessDialog)
@@ -51,6 +52,14 @@ frmBackupServer::frmBackupServer(frmMain *form, pgObject *obj) : ExternProcessDi
 
     SetTitle(object->GetTranslatedMessage(BACKUPSERVERTITLE));
 
+    pgServer *server = (pgServer *)object;
+    if (server->GetConnection()->EdbMinimumVersion(8,0))
+        backupExecutable=edbBackupAllExecutable;
+    else if (server->GetConnection()->GetIsGreenplum())
+        backupExecutable=gpBackupAllExecutable;
+    else
+        backupExecutable=pgBackupAllExecutable;
+
     wxString val;
     settings->Read(wxT("frmBackupServer/LastFile"), &val, wxEmptyString);
     txtFilename->SetValue(val);
@@ -68,6 +77,11 @@ frmBackupServer::frmBackupServer(frmMain *form, pgObject *obj) : ExternProcessDi
     txtMessages->SetMaxLength(0L);
     btnOK->Disable();
 
+    if (!pgAppMinimumVersion(backupExecutable, 9,1))
+    {
+        chkForceQuoteForIdent->Disable();
+    }
+
     wxCommandEvent ev;
     OnChange(ev);
 }
@@ -135,13 +149,7 @@ wxString frmBackupServer::getCmdPart1()
 {
     pgServer *server = (pgServer *)object;
 
-    wxString cmd;
-    if (server->GetConnection()->EdbMinimumVersion(8,0))
-        cmd=edbBackupAllExecutable;
-    else if (server->GetConnection()->GetIsGreenplum())
-        cmd=gpBackupAllExecutable;
-    else
-        cmd=pgBackupAllExecutable;
+    wxString cmd = backupExecutable;
 
     if (!server->GetName().IsEmpty())
         cmd += wxT(" --host ") + server->GetName();
@@ -160,6 +168,8 @@ wxString frmBackupServer::getCmdPart2()
         cmd.Append(wxT(" --ignore-version"));
     if (chkVerbose->GetValue())
         cmd.Append(wxT(" --verbose"));
+    if (chkForceQuoteForIdent->GetValue())
+        cmd.Append(wxT(" --quote-all-identifiers"));
 
     cmd.Append(wxT(" --file \"") + txtFilename->GetValue() + wxT("\""));
 
diff --git a/pgadmin/include/frm/frmBackupGlobals.h b/pgadmin/include/frm/frmBackupGlobals.h
index 97833e9..78cf6a4 100644
--- a/pgadmin/include/frm/frmBackupGlobals.h
+++ b/pgadmin/include/frm/frmBackupGlobals.h
@@ -37,6 +37,8 @@ private:
     void OnOK(wxCommandEvent &ev);
 
     pgObject *object;
+
+    wxString backupExecutable;
     wxString processedFile;
 
     DECLARE_EVENT_TABLE()
diff --git a/pgadmin/include/frm/frmBackupServer.h b/pgadmin/include/frm/frmBackupServer.h
index eb464d5..7430626 100644
--- a/pgadmin/include/frm/frmBackupServer.h
+++ b/pgadmin/include/frm/frmBackupServer.h
@@ -37,6 +37,8 @@ private:
     void OnOK(wxCommandEvent &ev);
 
     pgObject *object;
+
+    wxString backupExecutable;
     wxString processedFile;
 
     DECLARE_EVENT_TABLE()
diff --git a/pgadmin/ui/frmBackup.xrc b/pgadmin/ui/frmBackup.xrc
index 3f91aa9..eb1c17c 100644
--- a/pgadmin/ui/frmBackup.xrc
+++ b/pgadmin/ui/frmBackup.xrc
@@ -268,7 +268,7 @@
                   <object class="wxStaticBoxSizer">
                     <label>Miscellanous</label>
                     <cols>1</cols>
-                    <rows>3</rows>
+                    <rows>4</rows>
                     <vgap>5</vgap>
                     <hgap>5</hgap>
                     <growablecols>0</growablecols>
@@ -295,6 +295,13 @@
                       <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
                       <border>4</border>
                     </object>
+                    <object class="sizeritem">
+                      <object class="wxCheckBox" name="chkForceQuoteForIdent">
+                        <label>Force double quotes on identifiers</label>
+                      </object>
+                      <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                      <border>4</border>
+                    </object>
                   </object>
                   <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
                   <border>4</border>
diff --git a/pgadmin/ui/frmBackupGlobals.xrc b/pgadmin/ui/frmBackupGlobals.xrc
index f2561ee..457afd8 100644
--- a/pgadmin/ui/frmBackupGlobals.xrc
+++ b/pgadmin/ui/frmBackupGlobals.xrc
@@ -31,6 +31,10 @@
                 <pos>8,25d</pos>
                 <style></style>
               </object>
+              <object class="wxCheckBox" name="chkForceQuoteForIdent">
+                <label>Force double quotes on identifiers</label>
+                <pos>10,120d</pos>
+              </object>
               <object class="wxCheckBox" name="chkVerbose">
                 <label>Verbose messages</label>
                 <checked>1</checked>
@@ -91,4 +95,4 @@
       <growablerows>0</growablerows>
     </object>
   </object>
-</resource>
\ No newline at end of file
+</resource>
diff --git a/pgadmin/ui/frmBackupServer.xrc b/pgadmin/ui/frmBackupServer.xrc
index 997098a..2560488 100644
--- a/pgadmin/ui/frmBackupServer.xrc
+++ b/pgadmin/ui/frmBackupServer.xrc
@@ -31,6 +31,10 @@
                 <pos>8,25d</pos>
                 <style></style>
               </object>
+              <object class="wxCheckBox" name="chkForceQuoteForIdent">
+                <label>Force double quotes on identifiers</label>
+                <pos>10,120d</pos>
+              </object>
               <object class="wxCheckBox" name="chkVerbose">
                 <label>Verbose messages</label>
                 <checked>1</checked>
@@ -91,4 +95,4 @@
       <growablerows>0</growablerows>
     </object>
   </object>
-</resource>
\ No newline at end of file
+</resource>
-- 
1.7.0.4

