Driver version
12.8.1.jre11
SQL Server version
Microsoft SQL Server 2022 (RTM-CU17) (KB5048038) - 16.0.4175.1 (X64)
Client Operating System
Windows 11 Enterprise
JAVA/JVM version
Java 17
Problem description
The catalog argument in DatabaseMetaData's getSchemas method does not filter out database-level roles (like db_ddladmin and db_denydatawriter), INFORMATION_SCHEMA, sys schema, etc.
Client code:
ResultSet rs = connection.getMetaData().getSchemas(
"TestDb", // catalog
null // schemaPattern
);
while (rs.next()) {
for (int col = 1; col <= rs.getMetaData().getColumnCount(); col++) {
String s = rs.getString(col);
System.out.println(col + ". " + rs.getMetaData().getColumnName(col) + " : " + s);
}
System.out.println();
}
Expected behavior
All TABLE_CATALOG values should be "TestDb".
Actual behavior
1. TABLE_SCHEM : db_accessadmin
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_backupoperator
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_datareader
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_datawriter
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_ddladmin
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_denydatareader
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_denydatawriter
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_owner
2. TABLE_CATALOG : null
1. TABLE_SCHEM : db_securityadmin
2. TABLE_CATALOG : null
1. TABLE_SCHEM : dbo
2. TABLE_CATALOG : null
1. TABLE_SCHEM : guest
2. TABLE_CATALOG : null
1. TABLE_SCHEM : INFORMATION_SCHEMA
2. TABLE_CATALOG : null
1. TABLE_SCHEM : sys
2. TABLE_CATALOG : null
1. TABLE_SCHEM : AD\PICARD
2. TABLE_CATALOG : TestDb
1. TABLE_SCHEM : ejxwStandardMetadataViewQueryTypes_Jdbc_Columns_Test1
2. TABLE_CATALOG : TestDb
1. TABLE_SCHEM : FOO_BAR
2. TABLE_CATALOG : TestDb
1. TABLE_SCHEM : Harvey's
2. TABLE_CATALOG : TestDb
1. TABLE_SCHEM : SingleQuote's
2. TABLE_CATALOG : TestDb
1. TABLE_SCHEM : Smvq$Schema
2. TABLE_CATALOG : TestDb
Driver version
12.8.1.jre11
SQL Server version
Microsoft SQL Server 2022 (RTM-CU17) (KB5048038) - 16.0.4175.1 (X64)
Client Operating System
Windows 11 Enterprise
JAVA/JVM version
Java 17
Problem description
The
catalogargument in DatabaseMetaData's getSchemas method does not filter out database-level roles (like db_ddladmin and db_denydatawriter), INFORMATION_SCHEMA, sys schema, etc.Client code:
Expected behavior
All TABLE_CATALOG values should be "TestDb".
Actual behavior