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

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: 's avatarTamás Bunth <btomi96@gmail.com>
üst 4326fb3e
...@@ -696,12 +696,12 @@ Reference<XResultSet> ...@@ -696,12 +696,12 @@ Reference<XResultSet>
} }
Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalog*/, Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalog*/,
const OUString& /*schemaPattern*/, const OUString& schemaPattern,
const OUString& tableNamePattern, const OUString& tableNamePattern,
const OUString& columnNamePattern) const OUString& columnNamePattern)
{ {
OUStringBuffer queryBuf("SELECT TABLE_CATALOG AS TABLE_CAT, " // 1 OUStringBuffer queryBuf("SELECT TABLE_CATALOG, " // 1
"TABLE_SCHEMA AS TABLE_SCHEM, " // 2 "TABLE_SCHEMA, " // 2
"TABLE_NAME, " // 3 "TABLE_NAME, " // 3
"COLUMN_NAME, " // 4 "COLUMN_NAME, " // 4
"DATA_TYPE, " // 5 "DATA_TYPE, " // 5
...@@ -720,7 +720,6 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo ...@@ -720,7 +720,6 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo
"COLUMN_TYPE " // 14 "COLUMN_TYPE " // 14
"FROM INFORMATION_SCHEMA.COLUMNS " "FROM INFORMATION_SCHEMA.COLUMNS "
"WHERE (1 = 1) "); "WHERE (1 = 1) ");
if (!tableNamePattern.isEmpty()) if (!tableNamePattern.isEmpty())
{ {
OUString sAppend; OUString sAppend;
...@@ -730,6 +729,15 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo ...@@ -730,6 +729,15 @@ Reference<XResultSet> SAL_CALL ODatabaseMetaData::getColumns(const Any& /*catalo
sAppend = "AND TABLE_NAME = '%' "; sAppend = "AND TABLE_NAME = '%' ";
queryBuf.append(sAppend.replaceAll("%", tableNamePattern)); queryBuf.append(sAppend.replaceAll("%", tableNamePattern));
} }
if (!schemaPattern.isEmpty())
{
OUString sAppend;
if (tableNamePattern.match("%"))
sAppend = "AND TABLE_SCHEMA LIKE '%' ";
else
sAppend = "AND TABLE_SCHEMA = '%' ";
queryBuf.append(sAppend.replaceAll("%", schemaPattern));
}
if (!columnNamePattern.isEmpty()) if (!columnNamePattern.isEmpty())
{ {
OUString sAppend; OUString sAppend;
......
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