tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -86,6 +86,7 @@
     void escapedRelations();
     void escapedTableName();
     void whiteSpaceInIdentifiers();
+    void psqlSchemaTest();
 
 private:
     void dropTestTables( QSqlDatabase db );
@@ -150,10 +151,11 @@
         if (db.driverName().startsWith("QIBASE"))
             db.exec("SET DIALECT 3");
         else if (tst_Databases::isSqlServer(db)) {
-            QSqlQuery q(db);
-            QVERIFY_SQL(q, exec("SET ANSI_DEFAULTS ON"));
-            QVERIFY_SQL(q, exec("SET IMPLICIT_TRANSACTIONS OFF"));
+            db.exec("SET ANSI_DEFAULTS ON");
+            db.exec("SET IMPLICIT_TRANSACTIONS OFF");
         }
+        else if(tst_Databases::isPostgreSQL(db))
+            db.exec("set client_min_messages='warning'");
         recreateTestTables(db);
     }
 }
@@ -181,6 +183,9 @@
             << qTableName("CASETEST1" )
             << qTableName("casetest1" );
     tst_Databases::safeDropTables( db, tableNames );
+
+    db.exec("DROP SCHEMA "+qTableName("QTBUG_5373")+" CASCADE");
+    db.exec("DROP SCHEMA "+qTableName("QTBUG_5373_s2")+" CASCADE");
 }
 
 void tst_QSqlRelationalTableModel::init()
@@ -1118,8 +1123,8 @@
     }
 }
 
-void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() {
-
+void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
+{
     QFETCH_GLOBAL(QString, dbName);
     QSqlDatabase db = QSqlDatabase::database(dbName);
     CHECK_DATABASE(db);
@@ -1193,5 +1198,27 @@
     QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
 }
 
+void tst_QSqlRelationalTableModel::psqlSchemaTest()
+{
+    QFETCH_GLOBAL(QString, dbName);
+    QSqlDatabase db = QSqlDatabase::database(dbName);
+    CHECK_DATABASE(db);
+
+    if(!tst_Databases::isPostgreSQL(db)) {
+        QSKIP("Postgresql specific test", SkipSingle);
+        return;
+    }
+    QSqlRelationalTableModel model(0, db);
+    QSqlQuery q(db);
+    QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373")));
+    QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373_s2")));
+    QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373")+"."+qTableName("document")+"(document_id int primary key, relatingid int, userid int)"));
+    QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373_s2")+"."+qTableName("user")+"(userid int primary key, username char(40))"));
+    model.setTable(qTableName("QTBUG_5373")+"."+qTableName("document"));
+    model.setRelation(1, QSqlRelation(qTableName("QTBUG_5373_s2")+"."+qTableName("user"), "userid", "username"));
+    model.setRelation(2, QSqlRelation(qTableName("QTBUG_5373_s2")+"."+qTableName("user"), "userid", "username"));
+    QVERIFY_SQL(model, select());
+}
+
 QTEST_MAIN(tst_QSqlRelationalTableModel)
 #include "tst_qsqlrelationaltablemodel.moc"