{"record":{"id":"6bc52e9f9754c095","repo":"prestodb/presto","slug":"only-one-of-case-insensitive-name-matching-true","errorCode":null,"errorMessage":"Only one of 'case-insensitive-name-matching=true' or 'case-sensitive-name-matching=true' can be set. These options are mutually exclusive.","messagePattern":"Only one of 'case-insensitive-name-matching=true' or 'case-sensitive-name-matching=true' can be set\\. These options are mutually exclusive\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcConfig.java","lineNumber":189,"sourceCode":"    public boolean isCaseSensitiveNameMatching()\n    {\n        return caseSensitiveNameMatchingEnabled;\n    }\n\n    @Config(\"case-sensitive-name-matching\")\n    @ConfigDescription(\"Enable case-sensitive matching of schema, table names across the connector. \" +\n            \"When disabled, names are matched case-insensitively using lowercase normalization.\")\n    public BaseJdbcConfig setCaseSensitiveNameMatching(boolean caseSensitiveNameMatchingEnabled)\n    {\n        this.caseSensitiveNameMatchingEnabled = caseSensitiveNameMatchingEnabled;\n        return this;\n    }\n\n    @PostConstruct\n    public void validateConfig()\n    {\n        if (isCaseInsensitiveNameMatching() && isCaseSensitiveNameMatching()) {\n            throw new ConfigurationException(ImmutableList.of(new Message(\"Only one of 'case-insensitive-name-matching=true' or 'case-sensitive-name-matching=true' can be set. \" +\n                    \"These options are mutually exclusive.\")));\n        }\n\n        if (connectionUrl == null) {\n            throw new ConfigurationException(ImmutableList.of(new Message(\"connection-url is required but was not provided\")));\n        }\n    }\n\n    public int getFetchSize()\n    {\n        return fetchSize;\n    }\n\n    @Config(\"jdbc-fetch-size\")\n    @ConfigDescription(\"Number of rows to fetch from the database at a time\")\n    public BaseJdbcConfig setFetchSize(int fetchSize)\n    {\n        this.fetchSize = fetchSize;","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcConfig.java#L171-L207","documentation":"BaseJdbcConfig.validateConfig() (@PostConstruct) enforces that the legacy case-insensitive-name-matching and the newer case-sensitive-name-matching options are not both enabled, since they are mutually exclusive. Both set to true makes the connector configuration invalid at catalog load.","triggerScenarios":"Catalog properties file containing both case-insensitive-name-mapping=true and case-sensitive-name-matching=true; the exception is thrown when the config is instantiated/validated at connector startup.","commonSituations":"Upgrading Presto where the old option was left in the properties file while adding the new one; copying properties between catalogs; combining vendor-provided templates with local overrides.","solutions":["Remove case-insensitive-name-matching=true (legacy) and keep case-sensitive-name-matching=true, or vice versa","Review the catalog .properties file for duplicated/legacy name-matching keys after upgrades","Restart the coordinator/workers after fixing so the catalog reloads"],"exampleFix":"// before (catalog properties)\ncase-insensitive-name-matching=true\ncase-sensitive-name-matching=true\n// after\ncase-sensitive-name-matching=true","handlingStrategy":"validation","validationCode":"// Pre-validate catalog properties before deploying\nProperties props = loadCatalogProperties(catalogFile);\nif (Boolean.parseBoolean(props.getProperty(\"case-insensitive-name-matching\", \"false\")) &&\n    Boolean.parseBoolean(props.getProperty(\"case-sensitive-name-matching\", \"false\"))) {\n    throw new IllegalArgumentException(\"case-insensitive and case-sensitive name matching are mutually exclusive\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Grep catalog properties for both keys after every Presto upgrade","Remove the deprecated case-insensitive-name-matching key when adopting case-sensitive-name-matching","Use a config linter/template that forbids both keys in the same file"],"tags":["configuration","jdbc","catalog","mutually-exclusive"],"backgroundTag":"invalid-catalog-configuration","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}