summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2013-03-21 11:23:31 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-05 11:13:28 +0200
commit693a399acbff14718d1a0d48b8837741f1f55ccc (patch)
tree3dbc5ba3b253015fd5a4261f9196f27533637a65 /tests/auto/sql/kernel/qsqldatabase/tst_databases.h
parent239252d91740ec78a87926698800d13b3a849c55 (diff)
Fix sql tests in respect to Oracle databases
Oracle has a limitation of 30 characters for a tablename so the main change is to account for this, which meant changing all the usages of qTableName(). Some other fixes are included that ensure the tests are working correctly as far as Oracle is concerned. Change-Id: I8ad8a5a33e6a70fcad235f6a7e82e91687b74fee Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Diffstat (limited to 'tests/auto/sql/kernel/qsqldatabase/tst_databases.h')
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_databases.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
index 0eb3ba8c22..e47140b61b 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
@@ -96,14 +96,26 @@ static QString qGetHostName()
// to prevent nameclashes on our database server, each machine
// will use its own set of table names. Call this function to get
// "tablename_hostname"
-inline static QString qTableName( const QString& prefix, const char *sourceFileName )
+inline QString fixupTableName(const QString &tableName, QSqlDatabase db)
{
- return QLatin1String("dbtst")+QString::number(qHash(QLatin1String(sourceFileName) + "_" + qGetHostName().replace( "-", "_" )), 16)+"_"+prefix;
+ QString tbName = tableName;
+ // On Oracle we are limited to 30 character tablenames
+ QSqlDriverPrivate *d = static_cast<QSqlDriverPrivate *>(QObjectPrivate::get(db.driver()));
+ if (d && d->dbmsType == QSqlDriverPrivate::Oracle)
+ tbName.truncate(30);
+ return tbName;
}
-inline static QString qTableName( const QString& prefix, QSqlDriver* driver )
+inline static QString qTableName(const QString& prefix, const char *sourceFileName, QSqlDatabase db)
{
- return driver->escapeIdentifier( prefix + "_" + qGetHostName(), QSqlDriver::TableName );
+ return fixupTableName(QString(QLatin1String("dbtst") + QString::number(qHash(QLatin1String(sourceFileName) +
+ "_" + qGetHostName().replace( "-", "_" )), 16) + "_" + prefix), db);
+}
+
+inline static QString qTableName(const QString& prefix, QSqlDatabase db)
+{
+ return fixupTableName(QString(db.driver()->escapeIdentifier(prefix + "_" + qGetHostName(), QSqlDriver::TableName)),
+ db);
}
inline static bool testWhiteSpaceNames( const QString &name )
@@ -467,6 +479,8 @@ public:
{
if (db.driverName().startsWith("QPSQL"))
return QLatin1String("timestamp");
+ if (db.driverName().startsWith("QOCI") && getOraVersion(db) >= 9)
+ return QLatin1String("timestamp(0)");
return QLatin1String("datetime");
}