Skip to content

DatabaseMetaData's getSchemas does not filter out database-level roles, INFORMATION_SCHEMA, sys schema, etc. #2639

@SophiahHo

Description

@SophiahHo

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

Metadata

Metadata

Labels

Under ReviewUsed for pull requests under review

Type

No type

Projects

Status

Closed Issues

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions