148 void runHelper(const QString &dbName) |
149 void runHelper(const QString &dbName) |
149 { |
150 { |
150 QSqlDatabase db = QSqlDatabase::cloneDatabase(sourceDb, dbName); |
151 QSqlDatabase db = QSqlDatabase::cloneDatabase(sourceDb, dbName); |
151 QVERIFY_SQL(db, open()); |
152 QVERIFY_SQL(db, open()); |
152 QSqlQuery q(db); |
153 QSqlQuery q(db); |
153 QVERIFY_SQL(q, prepare("insert into " + qTableName("test") + " values (?, ?, ?)")); |
154 QVERIFY_SQL(q, prepare("insert into " + qtest + " values (?, ?, ?)")); |
154 int id = 10; |
155 int id = 10; |
155 for (int i = 0; i < ProdConIterations; ++i) { |
156 for (int i = 0; i < ProdConIterations; ++i) { |
156 q.bindValue(0, ++id); |
157 q.bindValue(0, ++id); |
157 q.bindValue(1, "threaddy"); |
158 q.bindValue(1, "threaddy"); |
158 q.bindValue(2, 10); |
159 q.bindValue(2, 10); |
185 void runHelper(const QString &dbName) |
186 void runHelper(const QString &dbName) |
186 { |
187 { |
187 QSqlDatabase db = QSqlDatabase::cloneDatabase(sourceDb, dbName); |
188 QSqlDatabase db = QSqlDatabase::cloneDatabase(sourceDb, dbName); |
188 QVERIFY_SQL(db, open()); |
189 QVERIFY_SQL(db, open()); |
189 QSqlQuery q1(db), q2(db); |
190 QSqlQuery q1(db), q2(db); |
190 QVERIFY_SQL(q2, prepare("delete from " + qTableName("test") + " where id = :id")); |
191 QVERIFY_SQL(q2, prepare("delete from " + qtest + " where id = :id")); |
191 |
192 |
192 for (int i = 0; i < ProdConIterations; ++i) { |
193 for (int i = 0; i < ProdConIterations; ++i) { |
193 QVERIFY_SQL(q1, exec("select max(id) from " + qTableName("test"))); |
194 QVERIFY_SQL(q1, exec("select max(id) from " + qtest)); |
194 q1.first(); |
195 q1.first(); |
195 q2.bindValue("id", q1.value(0)); |
196 q2.bindValue("id", q1.value(0)); |
196 q1.clear(); |
197 q1.clear(); |
197 QVERIFY_SQL(q2, exec()); |
198 QVERIFY_SQL(q2, exec()); |
198 #ifdef Q_OS_LINUX |
199 #ifdef Q_OS_LINUX |
229 switch (mode) { |
230 switch (mode) { |
230 case SimpleReading: { |
231 case SimpleReading: { |
231 // Executes a Query for reading, iterates over the first 4 results |
232 // Executes a Query for reading, iterates over the first 4 results |
232 QSqlQuery q(sourceDb); |
233 QSqlQuery q(sourceDb); |
233 for (int j = 0; j < ProdConIterations; ++j) { |
234 for (int j = 0; j < ProdConIterations; ++j) { |
234 QVERIFY_SQL(q, exec("select id,name from " + qTableName("test") + " order by id")); |
235 QVERIFY_SQL(q, exec("select id,name from " + qtest + " order by id")); |
235 for (int i = 1; i < 4; ++i) { |
236 for (int i = 1; i < 4; ++i) { |
236 QVERIFY_SQL(q, next()); |
237 QVERIFY_SQL(q, next()); |
237 QCOMPARE(q.value(0).toInt(), i); |
238 QCOMPARE(q.value(0).toInt(), i); |
238 } |
239 } |
239 } |
240 } |
240 break; } |
241 break; } |
241 case SimpleWriting: { |
242 case SimpleWriting: { |
242 // Executes a query for writing (appends a new row) |
243 // Executes a query for writing (appends a new row) |
243 QSqlQuery q(sourceDb); |
244 QSqlQuery q(sourceDb); |
244 for (int j = 0; j < ProdConIterations; ++j) { |
245 for (int j = 0; j < ProdConIterations; ++j) { |
245 QVERIFY_SQL(q, exec(QString("insert into " + qTableName("test") |
246 QVERIFY_SQL(q, exec(QString("insert into " + qtest |
246 + " (id, name) values(%1, '%2')") |
247 + " (id, name) values(%1, '%2')") |
247 .arg(counter.fetchAndAddRelaxed(1)).arg("Robert"))); |
248 .arg(counter.fetchAndAddRelaxed(1)).arg("Robert"))); |
248 } |
249 } |
249 break; } |
250 break; } |
250 case PreparedReading: { |
251 case PreparedReading: { |
251 // Prepares a query for reading and iterates over the results |
252 // Prepares a query for reading and iterates over the results |
252 QSqlQuery q(sourceDb); |
253 QSqlQuery q(sourceDb); |
253 QVERIFY_SQL(q, prepare("select id, name from " + qTableName("test") + " where id = ?")); |
254 QVERIFY_SQL(q, prepare("select id, name from " + qtest + " where id = ?")); |
254 for (int j = 0; j < ProdConIterations; ++j) { |
255 for (int j = 0; j < ProdConIterations; ++j) { |
255 q.addBindValue(j % 3 + 1); |
256 q.addBindValue(j % 3 + 1); |
256 QVERIFY_SQL(q, exec()); |
257 QVERIFY_SQL(q, exec()); |
257 QVERIFY_SQL(q, next()); |
258 QVERIFY_SQL(q, next()); |
258 QCOMPARE(q.value(0).toInt(), j % 3 + 1); |
259 QCOMPARE(q.value(0).toInt(), j % 3 + 1); |
259 } |
260 } |
260 break; } |
261 break; } |
261 case PreparedWriting: { |
262 case PreparedWriting: { |
262 QSqlQuery q(sourceDb); |
263 QSqlQuery q(sourceDb); |
263 QVERIFY_SQL(q, prepare("insert into " + qTableName("test") + " (id, name) " |
264 QVERIFY_SQL(q, prepare("insert into " + qtest + " (id, name) " |
264 "values(?, ?)")); |
265 "values(?, ?)")); |
265 for (int i = 0; i < ProdConIterations; ++i) { |
266 for (int i = 0; i < ProdConIterations; ++i) { |
266 q.addBindValue(counter.fetchAndAddRelaxed(1)); |
267 q.addBindValue(counter.fetchAndAddRelaxed(1)); |
267 q.addBindValue("Robert"); |
268 q.addBindValue("Robert"); |
268 QVERIFY_SQL(q, exec()); |
269 QVERIFY_SQL(q, exec()); |
300 { |
301 { |
301 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
302 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
302 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
303 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
303 QSqlQuery q(db); |
304 QSqlQuery q(db); |
304 |
305 |
305 tst_Databases::safeDropTables(db, QStringList() << qTableName("test") << qTableName("test2") << qTableName("emptytable")); |
306 tst_Databases::safeDropTables(db, QStringList() << qtest << qTableName("qtest2", __FILE__) << qTableName("emptytable", __FILE__)); |
306 } |
307 } |
307 } |
308 } |
308 |
309 |
309 void tst_QSqlThread::createTestTables() |
310 void tst_QSqlThread::createTestTables() |
310 { |
311 { |
311 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
312 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
312 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
313 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
313 QSqlQuery q(db); |
314 QSqlQuery q(db); |
314 |
315 |
315 QVERIFY_SQL(q, exec("create table " + qTableName("test") |
316 QVERIFY_SQL(q, exec("create table " + qtest |
316 + "(id int NOT NULL primary key, name varchar(20), title int)")); |
317 + "(id int NOT NULL primary key, name varchar(20), title int)")); |
317 |
318 |
318 QVERIFY_SQL(q, exec("create table " + qTableName("test2") |
319 QVERIFY_SQL(q, exec("create table " + qTableName("qtest2", __FILE__) |
319 + "(id int NOT NULL primary key, title varchar(20))")); |
320 + "(id int NOT NULL primary key, title varchar(20))")); |
320 |
321 |
321 QVERIFY_SQL(q, exec("create table " + qTableName("emptytable") |
322 QVERIFY_SQL(q, exec("create table " + qTableName("emptytable", __FILE__) |
322 + "(id int NOT NULL primary key)")); |
323 + "(id int NOT NULL primary key)")); |
323 } |
324 } |
324 } |
325 } |
325 |
326 |
326 void tst_QSqlThread::repopulateTestTables() |
327 void tst_QSqlThread::repopulateTestTables() |
327 { |
328 { |
328 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
329 for (int i = 0; i < dbs.dbNames.count(); ++i) { |
329 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
330 QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i)); |
330 QSqlQuery q(db); |
331 QSqlQuery q(db); |
331 |
332 |
332 QVERIFY_SQL(q, exec("delete from " + qTableName("test"))); |
333 QVERIFY_SQL(q, exec("delete from " + qtest)); |
333 QVERIFY_SQL(q, exec("insert into " + qTableName("test") + " values(1, 'harry', 1)")); |
334 QVERIFY_SQL(q, exec("insert into " + qtest + " values(1, 'harry', 1)")); |
334 QVERIFY_SQL(q, exec("insert into " + qTableName("test") + " values(2, 'trond', 2)")); |
335 QVERIFY_SQL(q, exec("insert into " + qtest + " values(2, 'trond', 2)")); |
335 QVERIFY_SQL(q, exec("insert into " + qTableName("test") + " values(3, 'vohi', 3)")); |
336 QVERIFY_SQL(q, exec("insert into " + qtest + " values(3, 'vohi', 3)")); |
336 |
337 |
337 QVERIFY_SQL(q, exec("delete from " + qTableName("test2"))); |
338 QVERIFY_SQL(q, exec("delete from " + qTableName("qtest2", __FILE__))); |
338 QVERIFY_SQL(q, exec("insert into " + qTableName("test2") + " values(1, 'herr')")); |
339 QVERIFY_SQL(q, exec("insert into " + qTableName("qtest2", __FILE__) + " values(1, 'herr')")); |
339 QVERIFY_SQL(q, exec("insert into " + qTableName("test2") + " values(2, 'mister')")); |
340 QVERIFY_SQL(q, exec("insert into " + qTableName("qtest2", __FILE__) + " values(2, 'mister')")); |
340 } |
341 } |
341 } |
342 } |
342 |
343 |
343 void tst_QSqlThread::recreateTestTables() |
344 void tst_QSqlThread::recreateTestTables() |
344 { |
345 { |