From ebd94489a3eaf4c1b3f194df59dc7d53970b59ae Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Wed, 21 Dec 2022 21:37:50 +0100 Subject: [PATCH] SQL: remove unneeded test functions testWhiteSpaceNames() returns true for all current database drivers so it's useless and can be removed. safeDropView() and getPSQLVersion() is not called anywhere, getMySqlVersion() is only used for a check for a MySql version we no longer support. Change-Id: I8d02f17f475821e81d309ee96897e772cdfb895d Reviewed-by: Andy Shaw --- .../sql/kernel/qsqldatabase/tst_databases.h | 58 ++------------ .../kernel/qsqldatabase/tst_qsqldatabase.cpp | 76 ++++++------------- .../tst_qsqlrelationaltablemodel.cpp | 27 +++---- .../qsqltablemodel/tst_qsqltablemodel.cpp | 14 +--- 4 files changed, 49 insertions(+), 126 deletions(-) diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h index 93906934be4..7b4961256b7 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h +++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h @@ -79,15 +79,6 @@ inline static QString qTableName(const QString& prefix, QSqlDatabase db) qGetHostName(), QSqlDriver::TableName)),db); } -inline static bool testWhiteSpaceNames( const QString &name ) -{ -/* return name.startsWith( "QPSQL" ) - || name.startsWith( "QODBC" ) - || name.startsWith( "QSQLITE" ) - || name.startsWith( "QMYSQL" );*/ - return name != QLatin1String("QSQLITE2"); -} - inline static QString toHex( const QString& binary ) { QString str; @@ -397,11 +388,6 @@ public: } } - static void safeDropView( QSqlDatabase db, const QString& tableName ) - { - safeDropViews(db, QStringList() << tableName); - } - // returns the type name of the blob datatype for the database db. // blobSize is only used if the db doesn't have a generic blob type static QString blobTypeName( QSqlDatabase db, int blobSize = 10000 ) @@ -476,34 +462,26 @@ public: return QString(); } - static QByteArray printError( const QSqlError& err ) + static QByteArray printError(const QSqlError &err) { QString result; if (!err.nativeErrorCode().isEmpty()) - result += '(' + err.nativeErrorCode() + ") "; - result += '\''; - if(!err.driverText().isEmpty()) + result += u'(' + err.nativeErrorCode() + ") "; + result += u'\''; + if (!err.driverText().isEmpty()) result += err.driverText() + "' || '"; - result += err.databaseText() + QLatin1Char('\''); + result += err.databaseText() + u'\''; return result.toLocal8Bit(); } - static QByteArray printError( const QSqlError& err, const QSqlDatabase& db ) + static QByteArray printError(const QSqlError &err, const QSqlDatabase &db) { - QString result(dbToString(db) + ": "); - if (!err.nativeErrorCode().isEmpty()) - result += '(' + err.nativeErrorCode() + ") "; - result += '\''; - if(!err.driverText().isEmpty()) - result += err.driverText() + "' || '"; - result += err.databaseText() + QLatin1Char('\''); - return result.toLocal8Bit(); + return dbToString(db).toLocal8Bit() + ": " + printError(err); } static QSqlDriver::DbmsType getDatabaseType(QSqlDatabase db) { - QSqlDriverPrivate *d = static_cast(QObjectPrivate::get(db.driver())); - return d->dbmsType; + return db.driver()->dbmsType(); } static bool isMSAccess( QSqlDatabase db ) @@ -531,26 +509,6 @@ public: return ver; } - static QString getMySqlVersion( const QSqlDatabase &db ) - { - QSqlQuery q(db); - q.exec( "select version()" ); - if(q.next()) - return q.value( 0 ).toString(); - else - return QString(); - } - - static QString getPSQLVersion( const QSqlDatabase &db ) - { - QSqlQuery q(db); - q.exec( "select version()" ); - if(q.next()) - return q.value( 0 ).toString(); - else - return QString(); - } - QStringList dbNames; int counter; diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index 8e1df673da8..39a276abe1f 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -300,13 +300,11 @@ void tst_QSqlDatabase::createTestTables(QSqlDatabase db) " (id integer not null, t_varchar varchar(40) not null, " "t_char char(40), t_numeric numeric(6, 3), primary key (id, t_varchar))")); } - if (testWhiteSpaceNames(db.driverName())) { - QString qry = "create table " + qTableName("qtest test", __FILE__, db) - + '(' - + db.driver()->escapeIdentifier(QLatin1String("test test"), QSqlDriver::FieldName) - + " int not null primary key)"; - QVERIFY_SQL(q, exec(qry)); - } + QString qry = "create table " + qTableName("qtest test", __FILE__, db) + + '(' + + db.driver()->escapeIdentifier(QLatin1String("test test"), QSqlDriver::FieldName) + + " int not null primary key)"; + QVERIFY_SQL(q, exec(qry)); } void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) @@ -353,11 +351,8 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) q.exec("drop schema " + qTableName("qtestScHeMa", __FILE__, db) + " cascade"); } - if (testWhiteSpaceNames(db.driverName())) { - tableNames << db.driver()->escapeIdentifier(qTableName("qtest test", __FILE__, db), - QSqlDriver::TableName); - } - + tableNames << db.driver()->escapeIdentifier(qTableName("qtest test", __FILE__, db), + QSqlDriver::TableName); tst_Databases::safeDropTables(db, tableNames); if (dbType == QSqlDriver::Oracle) { @@ -562,34 +557,25 @@ void tst_QSqlDatabase::whitespaceInIdentifiers() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db); + const auto metaTypeToCheck = dbType == QSqlDriver::Oracle + ? QMetaType(QMetaType::Double) : QMetaType(QMetaType::Int); - if (testWhiteSpaceNames(db.driverName())) { - const bool isCaseSensitive = driverQuotedCaseSensitive(db); - const auto tableName(qTableName("qtest test", __FILE__, db, isCaseSensitive)); - if (isCaseSensitive) { - QVERIFY(db.tables().contains(db.driver()->stripDelimiters(tableName, QSqlDriver::TableName))); - } else { - QVERIFY(db.tables().contains(tableName, Qt::CaseInsensitive)); - } + const bool isCaseSensitive = driverQuotedCaseSensitive(db); + const auto tableName(qTableName("qtest test", __FILE__, db, isCaseSensitive)); + if (isCaseSensitive) + QVERIFY(db.tables().contains(db.driver()->stripDelimiters(tableName, QSqlDriver::TableName))); + else + QVERIFY(db.tables().contains(tableName, Qt::CaseInsensitive)); - QSqlRecord rec = db.record(tableName); - QCOMPARE(rec.count(), 1); - QCOMPARE(rec.fieldName(0), QString("test test")); - if (dbType == QSqlDriver::Oracle) - QCOMPARE(rec.field(0).metaType(), QMetaType(QMetaType::Double)); - else - QCOMPARE(rec.field(0).metaType(), QMetaType(QMetaType::Int)); + QSqlRecord rec = db.record(tableName); + QCOMPARE(rec.count(), 1); + QCOMPARE(rec.fieldName(0), QString("test test")); + QCOMPARE(rec.field(0).metaType(), metaTypeToCheck); - QSqlIndex idx = db.primaryIndex(tableName); - QCOMPARE(idx.count(), 1); - QCOMPARE(idx.fieldName(0), QString("test test")); - if (dbType == QSqlDriver::Oracle) - QCOMPARE(idx.field(0).metaType(), QMetaType(QMetaType::Double)); - else - QCOMPARE(idx.field(0).metaType(), QMetaType(QMetaType::Int)); - } else { - QSKIP("DBMS does not support whitespaces in identifiers"); - } + QSqlIndex idx = db.primaryIndex(tableName); + QCOMPARE(idx.count(), 1); + QCOMPARE(idx.fieldName(0), QString("test test")); + QCOMPARE(idx.field(0).metaType(), metaTypeToCheck); } void tst_QSqlDatabase::alterTable() @@ -871,22 +857,6 @@ void tst_QSqlDatabase::recordMySQL() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - FieldDef bin10, varbin10; - int major = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 0, 0 ).toInt(); - int minor = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 1, 1 ).toInt(); - int revision = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 2, 2 ).toInt(); - int vernum = (major << 16) + (minor << 8) + revision; - - /* The below is broken in mysql below 5.0.15 - see http://dev.mysql.com/doc/refman/5.0/en/binary-varbinary.html - specifically: Before MySQL 5.0.15, the pad value is space. Values are right-padded - with space on insert, and trailing spaces are removed on select. - */ - if( vernum >= ((5 << 16) + 15) ) { - bin10 = FieldDef("binary(10)", QMetaType::QByteArray, QString("123abc ")); - varbin10 = FieldDef("varbinary(10)", QMetaType::QByteArray, QString("123abcv ")); - } - static QDateTime dt(QDate::currentDate(), QTime(1, 2, 3, 0)); static const FieldDef fieldDefs[] = { FieldDef("tinyint", QMetaType::Char, 127), diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp index 4f824cce667..d5a6292db1b 100644 --- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp +++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp @@ -114,18 +114,21 @@ void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db) QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('herr', 'Hr')")); QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('mister', 'Mr')")); - if (testWhiteSpaceNames(db.driverName())) { - const auto reltest6 = qTableName("rel test6", __FILE__, db); - QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName) + - " int, " + db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName) + " int)")); - QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)")); - QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)")); + const auto reltest6 = qTableName("rel test6", __FILE__, db); + const auto cityKeyStr = db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName); + const auto extraFieldStr = db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName); + QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + cityKeyStr + + " int, " + extraFieldStr + " int)")); + QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)")); + QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)")); - const auto reltest7 = qTableName("rel test7", __FILE__, db); - QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not null primary key, " + db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName) + " varchar(20))")); - QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')")); - QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')")); - } + const auto reltest7 = qTableName("rel test7", __FILE__, db); + const auto cityIdStr = db.driver()->escapeIdentifier("city id", QSqlDriver::TableName); + const auto cityNameStr = db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName); + QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + cityIdStr + " int not null primary key, " + + cityNameStr + " varchar(20))")); + QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')")); + QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')")); } void tst_QSqlRelationalTableModel::initTestCase() @@ -1369,8 +1372,6 @@ void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - if (!testWhiteSpaceNames(db.driverName())) - QSKIP("White space test irrelevant for driver"); QSqlRelationalTableModel model(0, db); model.setTable(qTableName("rel test6", __FILE__, db)); model.setSort(0, Qt::DescendingOrder); diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp index ece99efa0a9..f98ea477dc4 100644 --- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp +++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp @@ -163,9 +163,8 @@ void tst_QSqlTableModel::dropTestTables() << qTableName("emptytable", __FILE__, db) << qTableName("bigtable", __FILE__, db) << qTableName("foo", __FILE__, db) - << qTableName("pktest", __FILE__, db); - if (testWhiteSpaceNames(db.driverName())) - tableNames << qTableName("qtestw hitespace", db); + << qTableName("pktest", __FILE__, db) + << qTableName("qtestw hitespace", db); tst_Databases::safeDropTables(db, tableNames); @@ -196,10 +195,8 @@ void tst_QSqlTableModel::createTestTables() QVERIFY_SQL(q, exec("create table " + qTableName("emptytable", __FILE__, db) + "(id int)")); - if (testWhiteSpaceNames(db.driverName())) { - QString qry = "create table " + qTableName("qtestw hitespace", db) + " ("+ db.driver()->escapeIdentifier("a field", QSqlDriver::FieldName) + " int)"; - QVERIFY_SQL( q, exec(qry)); - } + const auto fieldStr = db.driver()->escapeIdentifier("a field", QSqlDriver::FieldName); + QVERIFY_SQL(q, exec("create table " + qTableName("qtestw hitespace", db) + " ("+ fieldStr + " int)")); QVERIFY_SQL(q, exec("create table " + qTableName("pktest", __FILE__, db) + "(id int not null primary key, a varchar(20))")); } @@ -1700,9 +1697,6 @@ void tst_QSqlTableModel::whitespaceInIdentifiers() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - if (!testWhiteSpaceNames(db.driverName())) - QSKIP("DBMS doesn't support whitespaces in identifiers"); - QString tableName = qTableName("qtestw hitespace", db); QSqlTableModel model(0, db);