deprecate: Raise deprecation level of currentScheme property #1874
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Raise deprecation level of
ExposedDatabaseMetadata.currentScheme
from WARNING to ERROR.This property was initially deprecated after this PR introduced the possibility to change the schema in runtime.
The goal of this fix is to keep the property private in
JdbcDatabaseMetadataImpl
, which has 2 complications:VendorDialect
functions use it to filter existing table names:tableNamesByCurrentSchema()
, which abstracts away the property from the core module. Ideallly this function should only return aList<String>
, but it doesn't because of complication 2 (below).VendorDialect.tableExists()
uses the property directly, as does 1 unit test:tableNamesByCurrentSchema()
instead returns a Pair, which maybe defeats the purpose of making it private.tableExists()
intoJdbcDatabaseMetadataImpl
. This would require refactoring of the cache inVendorDialect
andTable.exists()
.JdbcDatabaseMetadataImpl.schemaNames
could be refactored to always set the current schema name as the first list element, so it could be reliably found using the cache inVendorDialect
. This seems prone to error if any future changes are made.