Kaydet (Commit) ead0a04e authored tarafından Tamas Bunth's avatar Tamas Bunth Kaydeden (comit) Tamás Bunth

tdf#122437 mysqlc: consider "types" parameter in..

..method XDatabaseMetadata::getTables() so it will return only those types
which are needed. This solves the problem that no tables appear in
"Relations.." window.

Change-Id: Ia02537c78917583f574ad788098c65a9acd43078
Reviewed-on: https://gerrit.libreoffice.org/66212
Tested-by: Jenkins
Reviewed-by: 's avatarTamás Bunth <btomi96@gmail.com>
üst c76d9e23
...@@ -829,14 +829,37 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo ...@@ -829,14 +829,37 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo
Reference<XResultSet> SAL_CALL ODatabaseMetaData::getTables(const Any& /*catalog*/, Reference<XResultSet> SAL_CALL ODatabaseMetaData::getTables(const Any& /*catalog*/,
const OUString& schemaPattern, const OUString& schemaPattern,
const OUString& tableNamePattern, const OUString& tableNamePattern,
const Sequence<OUString>& /*types */) const Sequence<OUString>& types)
{ {
OUString query( OUStringBuffer buffer{
"SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME," "SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME,"
"IF(STRCMP(TABLE_TYPE,'BASE TABLE'), TABLE_TYPE, 'TABLE') AS TABLE_TYPE, TABLE_COMMENT AS " "IF(STRCMP(TABLE_TYPE,'BASE TABLE'), TABLE_TYPE, 'TABLE') AS TABLE_TYPE, TABLE_COMMENT AS "
"REMARKS " "REMARKS "
"FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '?' AND TABLE_NAME LIKE '?' " "FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '?' AND TABLE_NAME LIKE '?' "
"ORDER BY TABLE_TYPE, TABLE_SCHEMA, TABLE_NAME"); };
if (types.getLength() == 1)
{
buffer.append("AND TABLE_TYPE LIKE '");
buffer.append(types[0]);
buffer.append("'");
}
else if (types.getLength() > 1)
{
buffer.append("AND (TABLE_TYPE LIKE '");
buffer.append(types[0]);
buffer.append("'");
for (sal_Int32 i = 1; i < types.getLength(); ++i)
{
buffer.append(" OR TABLE_TYPE LIKE '");
buffer.append(types[i]);
buffer.append("'");
}
buffer.append(")");
}
buffer.append(" ORDER BY TABLE_TYPE, TABLE_SCHEMA, TABLE_NAME");
OUString query = buffer.makeStringAndClear();
// TODO use prepared stmt instead // TODO use prepared stmt instead
// TODO escape schema, table name ? // TODO escape schema, table name ?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment