diff options
author | Andy Shaw <andy.shaw@digia.com> | 2013-03-21 11:23:31 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-05 11:13:28 +0200 |
commit | 693a399acbff14718d1a0d48b8837741f1f55ccc (patch) | |
tree | 3dbc5ba3b253015fd5a4261f9196f27533637a65 /tests/auto/sql/kernel/qsqldatabase/tst_databases.h | |
parent | 239252d91740ec78a87926698800d13b3a849c55 (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.h | 22 |
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"); } |