summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql
diff options
context:
space:
mode:
authorIsrael Lins Albuquerque <israel@proabakus.com.br>2013-11-04 19:45:28 -0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-16 15:35:30 +0100
commit5193c14536fafc57c860e9e234e21ddc29d5b6b0 (patch)
tree4a0b6c67ba2d5ffb793bc87ebd8d6ff0ce7a39e8 /tests/auto/sql
parentb3b689edcb2441051fc3d4fee006c41eb918730b (diff)
fix parsing of bound SQL statements for PostgreSQL
PostgreSQL allows bound variables inside square braces. Task-number: QTBUG-34541 Change-Id: I4f069b3f1078d4cdf172fbac9e0d7d23d20d167a Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Diffstat (limited to 'tests/auto/sql')
-rw-r--r--tests/auto/sql/kernel/qsqlresult/qsqlresult.pro2
-rw-r--r--tests/auto/sql/kernel/qsqlresult/testsqldriver.h9
-rw-r--r--tests/auto/sql/kernel/qsqlresult/tst_qsqlresult.cpp20
3 files changed, 26 insertions, 5 deletions
diff --git a/tests/auto/sql/kernel/qsqlresult/qsqlresult.pro b/tests/auto/sql/kernel/qsqlresult/qsqlresult.pro
index ef6c7a7e09..114327effb 100644
--- a/tests/auto/sql/kernel/qsqlresult/qsqlresult.pro
+++ b/tests/auto/sql/kernel/qsqlresult/qsqlresult.pro
@@ -1,7 +1,7 @@
TARGET = tst_qsqlresult
CONFIG += testcase
-QT = core sql testlib
+QT = core core-private sql sql-private testlib
SOURCES += tst_qsqlresult.cpp
HEADERS += testsqldriver.h
diff --git a/tests/auto/sql/kernel/qsqlresult/testsqldriver.h b/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
index 9d435a0f7c..eda0658b41 100644
--- a/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
+++ b/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
@@ -45,6 +45,7 @@
#include <QtSql/QSqlResult>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlRecord>
+#include <private/qsqldriver_p.h>
class TestSqlDriverResult : public QSqlResult
{
@@ -77,6 +78,8 @@ protected:
class TestSqlDriver : public QSqlDriver
{
+ Q_DECLARE_PRIVATE(QSqlDriver)
+
public:
TestSqlDriver() {}
~TestSqlDriver() {}
@@ -96,6 +99,12 @@ public:
int /* port */, const QString & /* options */)
{ return false; }
void close() {}
+ QSqlDriverPrivate::DBMSType dbmsType() const
+ {
+ Q_D(const QSqlDriver);
+ return d->dbmsType;
+ }
+
QSqlResult *createResult() const { return new TestSqlDriverResult(this); }
};
diff --git a/tests/auto/sql/kernel/qsqlresult/tst_qsqlresult.cpp b/tests/auto/sql/kernel/qsqlresult/tst_qsqlresult.cpp
index ba6b4d1fbf..2462fab879 100644
--- a/tests/auto/sql/kernel/qsqlresult/tst_qsqlresult.cpp
+++ b/tests/auto/sql/kernel/qsqlresult/tst_qsqlresult.cpp
@@ -79,18 +79,30 @@ void tst_QSqlResult::parseOfBoundValues()
QVERIFY(result.savePrepare("SELECT :1 AS ':2'"));
QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT :1 AS [:2]"));
- QCOMPARE(result.boundValues().count(), 1);
+ if (testDriver.dbmsType() == QSqlDriverPrivate::PostgreSQL)
+ QCOMPARE(result.boundValues().count(), 2);
+ else
+ QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT :1 AS [:2]]]"));
- QCOMPARE(result.boundValues().count(), 1);
+ if (testDriver.dbmsType() == QSqlDriverPrivate::PostgreSQL)
+ QCOMPARE(result.boundValues().count(), 2);
+ else
+ QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT :1 AS [:2]]]]]"));
- QCOMPARE(result.boundValues().count(), 1);
+ if (testDriver.dbmsType() == QSqlDriverPrivate::PostgreSQL)
+ QCOMPARE(result.boundValues().count(), 2);
+ else
+ QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT ? AS \"?\""));
QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT ? AS '?'"));
QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT ? AS [?]"));
- QCOMPARE(result.boundValues().count(), 1);
+ if (testDriver.dbmsType() == QSqlDriverPrivate::PostgreSQL)
+ QCOMPARE(result.boundValues().count(), 2);
+ else
+ QCOMPARE(result.boundValues().count(), 1);
QVERIFY(result.savePrepare("SELECT ? AS \"'?\""));
QCOMPARE(result.boundValues().count(), 1);