summaryrefslogtreecommitdiffstats
path: root/src/sql/drivers/mysql/qsql_mysql.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2009-09-03 12:13:06 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2009-09-03 12:13:06 (GMT)
commit0b9aa3653cc6c6ea75a79c3c8ff512b53dba13f1 (patch)
tree017f3b738d9281b55ceed6366e8f85204fc38b09 /src/sql/drivers/mysql/qsql_mysql.cpp
parent714e0f17aa3d26ddfd9ce6ff8b9f5efbae7a11e5 (diff)
parentd4a4b01f2f08a9031d692344d0d264de472da25e (diff)
downloadQt-0b9aa3653cc6c6ea75a79c3c8ff512b53dba13f1.zip
Qt-0b9aa3653cc6c6ea75a79c3c8ff512b53dba13f1.tar.gz
Qt-0b9aa3653cc6c6ea75a79c3c8ff512b53dba13f1.tar.bz2
Merge branch '4.6'
Conflicts: src/plugins/qpluginbase.pri tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp tools/assistant/compat/mainwindow.cpp tools/assistant/compat/mainwindow.ui tools/assistant/tools/assistant/doc/assistant.qdocconf
Diffstat (limited to 'src/sql/drivers/mysql/qsql_mysql.cpp')
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp51
1 files changed, 35 insertions, 16 deletions
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp
index fa79460..097ecbf 100644
--- a/src/sql/drivers/mysql/qsql_mysql.cpp
+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
@@ -1310,23 +1310,42 @@ QSqlResult *QMYSQLDriver::createResult() const
QStringList QMYSQLDriver::tables(QSql::TableType type) const
{
QStringList tl;
- if (!isOpen())
- return tl;
- if (!(type & QSql::Tables))
- return tl;
-
- MYSQL_RES* tableRes = mysql_list_tables(d->mysql, NULL);
- MYSQL_ROW row;
- int i = 0;
- while (tableRes) {
- mysql_data_seek(tableRes, i);
- row = mysql_fetch_row(tableRes);
- if (!row)
- break;
- tl.append(toUnicode(d->tc, row[0]));
- i++;
+#if MYSQL_VERSION_ID >= 40100
+ if( mysql_get_server_version(d->mysql) < 50000)
+ {
+#endif
+ if (!isOpen())
+ return tl;
+ if (!(type & QSql::Tables))
+ return tl;
+
+ MYSQL_RES* tableRes = mysql_list_tables(d->mysql, NULL);
+ MYSQL_ROW row;
+ int i = 0;
+ while (tableRes) {
+ mysql_data_seek(tableRes, i);
+ row = mysql_fetch_row(tableRes);
+ if (!row)
+ break;
+ tl.append(toUnicode(d->tc, row[0]));
+ i++;
+ }
+ mysql_free_result(tableRes);
+#if MYSQL_VERSION_ID >= 40100
+ } else {
+ QSqlQuery q(createResult());
+ if(type & QSql::Tables) {
+ q.exec(QLatin1String("select table_name from information_schema.tables where table_type = 'BASE TABLE'"));
+ while(q.next())
+ tl.append(q.value(0).toString());
+ }
+ if(type & QSql::Views) {
+ q.exec(QLatin1String("select table_name from information_schema.tables where table_type = 'VIEW'"));
+ while(q.next())
+ tl.append(q.value(0).toString());
+ }
}
- mysql_free_result(tableRes);
+#endif
return tl;
}