]> git.saurik.com Git - wxWidgets.git/commitdiff
Added more support for using SQL_WVARCHAR and SQL_WCHAR data types
authorGeorge Tasker <gtasker@allenbrook.com>
Tue, 28 Dec 2004 22:30:27 +0000 (22:30 +0000)
committerGeorge Tasker <gtasker@allenbrook.com>
Tue, 28 Dec 2004 22:30:27 +0000 (22:30 +0000)
Blind postgres fixes for calls to TableExists() and TablePrivileges() inside the Open() function to not pass the user name when postgres is expecting the schema.  We REALLY need to add schema support...wish I had the time

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/dbtable.cpp

index da7aaa8f60d9cbdd35e2467ef5bd2c21a8ee07d4..65e863bcc031e4671ef3789f3bbc9f3fa9052f2f 100644 (file)
@@ -770,8 +770,18 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists)
     }
 
     s.Empty();
+
+    bool exists = true;
+    if (checkTableExists)
+    {
+        if (pDb->Dbms() == dbmsPOSTGRES)
+            exists = pDb->TableExists(tableName, NULL, tablePath);
+        else
+            exists = pDb->TableExists(tableName, pDb->GetUsername(), tablePath);
+    }
+
     // Verify that the table exists in the database
-    if (checkTableExists && !pDb->TableExists(tableName, pDb->GetUsername(), tablePath))
+    if (!exists)
     {
         s = wxT("Table/view does not exist in the database");
         if ( *(pDb->dbInf.accessibleTables) == wxT('Y'))
@@ -782,13 +792,13 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists)
     else if (checkPrivileges)
     {
         // Verify the user has rights to access the table.
-        // Shortcut boolean evaluation to optimize out call to
-        // TablePrivileges
-        //
-        // Unfortunately this optimization doesn't seem to be
-        // reliable!
-        if (// *(pDb->dbInf.accessibleTables) == 'N' &&
-            !pDb->TablePrivileges(tableName, wxT("SELECT"), pDb->GetUsername(), pDb->GetUsername(), tablePath))
+        bool hasPrivs = true;
+        if (pDb->Dbms() == dbmsPOSTGRES)
+            hasPrivs = pDb->TablePrivileges(tableName, wxT("SELECT"), pDb->GetUsername(), NULL, tablePath);
+        else
+            hasPrivs = pDb->TablePrivileges(tableName, wxT("SELECT"), pDb->GetUsername(), pDb->GetUsername(), tablePath);
+
+        if (!hasPrivs)
             s = wxT("Connecting user does not have sufficient privileges to access this table.\n");
     }
 
@@ -2703,6 +2713,8 @@ wxVariant wxDbTable::GetColumn(const int colNumber) const
     {
         switch (colDefs[colNumber].SqlCtype)
         {
+            case SQL_WCHAR:
+            case SQL_WVARCHAR:
             case SQL_CHAR:
             case SQL_VARCHAR:
                 val = (wxChar *)(colDefs[colNumber].PtrDataObj);
@@ -2767,6 +2779,8 @@ void wxDbTable::SetColumn(const int colNumber, const wxVariant val)
 
         switch (colDefs[colNumber].SqlCtype)
         {
+            case SQL_WCHAR:
+            case SQL_WVARCHAR:
             case SQL_CHAR:
             case SQL_VARCHAR:
                 csstrncpyt((wxChar *)(colDefs[colNumber].PtrDataObj),