Skip to content

DatabaseMetaData#getColumns returns wrong label #837

@onacit

Description

@onacit

Describe the bug

DatabaseMetaData#getColumns't result contains SCOPE_CATLOG, not SCOPE_CATALOG.

https://docs.oracle.com/en/java/javase/17/docs/api//java.sql/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,java.lang.String,java.lang.String,java.lang.String)

To Reproduce

        try (var connection = DriverManager.getConnection("jdbc:sqlite::memory:")) {
            final var meta = connection.getMetaData();
            log.debug("driverName: {}", meta.getDriverName());
            log.debug("driverVersion: {}", meta.getDriverVersion());
            log.debug("driverMajorVersion: {}", meta.getDriverMajorVersion());
            log.debug("driverMinorVersion: {}", meta.getDriverMinorVersion());
            log.debug("databaseProductName: {}", meta.getDatabaseProductName());
            log.debug("databaseProductVersion: {}", meta.getDatabaseProductVersion());
            log.debug("databaseMajorVersion: {}", meta.getDatabaseMajorVersion());
            log.debug("databaseMinorVersion: {}", meta.getDatabaseMinorVersion());
            try (ResultSet results = meta.getColumns("", "", "%", "%")) {
                final var labels = new HashSet<>();
                final var rsmd = results.getMetaData();
                for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                    labels.add(rsmd.getColumnLabel(i));
                }
                labels.forEach(l -> {
                    log.debug("label: {}", l);
                });
            }
        }

Expected behavior
The SCOPE_CATLOG should be SCOPE_CATALOG.

Logs

1063 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - driverName: SQLite JDBC
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - driverVersion: 3.40.1.0
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - driverMajorVersion: 3
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - driverMinorVersion: 40
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - databaseProductName: SQLite
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - databaseProductVersion: 3.40.1
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - databaseMajorVersion: 3
1065 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - databaseMinorVersion: 40
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SCOPE_TABLE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: TABLE_CAT
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: BUFFER_LENGTH
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: IS_NULLABLE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: TABLE_NAME
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: COLUMN_DEF
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: TABLE_SCHEM
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: COLUMN_NAME
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SCOPE_CATLOG <<<<<<<<<<<<<<<
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: NULLABLE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: REMARKS
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: DECIMAL_DIGITS
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: NUM_PREC_RADIX
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SQL_DATETIME_SUB
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: IS_GENERATEDCOLUMN
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: IS_AUTOINCREMENT
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SQL_DATA_TYPE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: CHAR_OCTET_LENGTH
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: ORDINAL_POSITION
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SCOPE_SCHEMA
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: SOURCE_DATA_TYPE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: DATA_TYPE
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: TYPE_NAME
1073 [main] DEBUG com.github.jinahya.database.metadata.bind.MemorySqliteTest - label: COLUMN_SIZE

Environment (please complete the following information):

Running `/Users/onacit/gitcl/github.com/jinahya/database-metadata-bind/mvnw`...
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /Users/onacit/.m2/wrapper/dists/apache-maven-3.8.7-bin/1ktonn2lleg549uah6ngl1r74r/apache-maven-3.8.7
Java version: 17.0.6, vendor: Eclipse Adoptium, runtime: /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
Default locale: en_KR, platform encoding: UTF-8
OS name: "mac os x", version: "13.1", arch: "aarch64", family: "mac"

Additional context
Thank you. I love you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingreleasedIssue has been released

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions