From 1981ebe8ada68f600ecb10d9e9b7270cf9e19866 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Sun, 12 Mar 2023 14:50:05 +0100 Subject: SQL/OCI: add maximumIdentifierLength() A table name or identifier must not be longer than 30 (< Oracle 12.2) or 128 bytes (sadly not characters). Change-Id: I49192afaf908e12f5cfd20c754640b6117b03a71 Reviewed-by: Volker Hilsheimer --- tests/auto/sql/kernel/qsqldatabase/tst_databases.h | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'tests/auto/sql/kernel/qsqldatabase/tst_databases.h') diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h index 0694186942c..02aa0e6ba22 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h +++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h @@ -45,16 +45,13 @@ static QString qGetHostName() return hostname; } -inline QString fixupTableName(const QString &tableName, QSqlDatabase db) +inline QString fixupTableName(const QString &tableName, const QSqlDatabase &db) { QString tbName = tableName; - // On Oracle we are limited to 30 character tablenames - QSqlDriverPrivate *d = static_cast(QObjectPrivate::get(db.driver())); - if (d && d->dbmsType == QSqlDriver::Oracle) - tbName.truncate(30); - // On Interbase we are limited to 31 character tablenames - if (d && d->dbmsType == QSqlDriver::Interbase) - tbName.truncate(31); + // Oracle & Interbase/Firebird have a limit on the tablename length + QSqlDriver *drv = db.driver(); + if (drv) + tbName.truncate(drv->maximumIdentifierLength(QSqlDriver::TableName)); return tbName; } -- cgit v1.2.3