diff options
author | Tamas Bunth <tamas.bunth@collabora.co.uk> | 2018-10-31 15:00:09 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-11-05 11:19:08 +0100 |
commit | 0e4d2b85f266fc5fc09a4331efb2bb12332397c9 (patch) | |
tree | 2279a8f021cf20df14a90e9d05a66d4b8ac07ca2 /connectivity | |
parent | a13e68e6cee941ac1864251726ea357462f53354 (diff) |
mysqlc: filter schema in getColumns
Filter schema in XDatabaseMetaData::getColumns so it would show correct
results in case there are more tables with the same name in different
schemas.
Change-Id: I8a986a43a8b049db3615d7ec2585ce68ebe3340e
Reviewed-on: https://gerrit.libreoffice.org/62696
Tested-by: Jenkins
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/62802
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/mysqlc/mysqlc_databasemetadata.cxx | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_databasemetadata.cxx b/connectivity/source/drivers/mysqlc/mysqlc_databasemetadata.cxx index 468de04ee191..78e6337bb76d 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_databasemetadata.cxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_databasemetadata.cxx @@ -703,31 +703,30 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumnPrivileges( } Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalog*/, - const rtl::OUString& /*schemaPattern*/, - const rtl::OUString& tableNamePattern, - const rtl::OUString& columnNamePattern) + const OUString& schemaPattern, + const OUString& tableNamePattern, + const OUString& columnNamePattern) { - rtl::OUStringBuffer queryBuf("SELECT TABLE_CATALOG AS TABLE_CAT, " // 1 - "TABLE_SCHEMA AS TABLE_SCHEM, " // 2 - "TABLE_NAME, " // 3 - "COLUMN_NAME, " // 4 - "DATA_TYPE, " // 5 - // TYPE_NAME missing - "CHARACTER_MAXIMUM_LENGTH, " // 6 - "NUMERIC_PRECISION, " // 7 - // buffer length missing - "NUMERIC_SCALE AS DECIMAL_DIGITS, " // 8 - // NUM_PREC_RADIX missing - // NULLABLE missing - "COLUMN_COMMENT AS REMARKS, " // 9 - "COLUMN_DEFAULT AS COLUMN_DEF," // 10 - "CHARACTER_OCTET_LENGTH, " // 11 - "ORDINAL_POSITION, " // 12 - "IS_NULLABLE, " // 13 - "COLUMN_TYPE " // 14 - "FROM INFORMATION_SCHEMA.COLUMNS " - "WHERE (1 = 1) "); - + OUStringBuffer queryBuf("SELECT TABLE_CATALOG, " // 1 + "TABLE_SCHEMA, " // 2 + "TABLE_NAME, " // 3 + "COLUMN_NAME, " // 4 + "DATA_TYPE, " // 5 + // TYPE_NAME missing + "CHARACTER_MAXIMUM_LENGTH, " // 6 + "NUMERIC_PRECISION, " // 7 + // buffer length missing + "NUMERIC_SCALE AS DECIMAL_DIGITS, " // 8 + // NUM_PREC_RADIX missing + // NULLABLE missing + "COLUMN_COMMENT AS REMARKS, " // 9 + "COLUMN_DEFAULT AS COLUMN_DEF," // 10 + "CHARACTER_OCTET_LENGTH, " // 11 + "ORDINAL_POSITION, " // 12 + "IS_NULLABLE, " // 13 + "COLUMN_TYPE " // 14 + "FROM INFORMATION_SCHEMA.COLUMNS " + "WHERE (1 = 1) "); if (!tableNamePattern.isEmpty()) { rtl::OUString sAppend; @@ -737,6 +736,15 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo sAppend = "AND TABLE_NAME = '%' "; queryBuf.append(sAppend.replaceAll("%", tableNamePattern)); } + if (!schemaPattern.isEmpty()) + { + OUString sAppend; + if (schemaPattern.match("%")) + sAppend = "AND TABLE_SCHEMA LIKE '%' "; + else + sAppend = "AND TABLE_SCHEMA = '%' "; + queryBuf.append(sAppend.replaceAll("%", schemaPattern)); + } if (!columnNamePattern.isEmpty()) { rtl::OUString sAppend; |