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);