From 1bf155a40f935749007e50aa69066c874995d63c Mon Sep 17 00:00:00 2001 From: filipe Date: Fri, 10 May 2024 14:51:47 -0300 Subject: [PATCH] chore: invoke deprecated methods in default supports method for backwards compatibility (#5897) chore: invoke deprecated methods in default supports method to ensure extensions backwards compatibility --- .../java/liquibase/database/Database.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/liquibase-standard/src/main/java/liquibase/database/Database.java b/liquibase-standard/src/main/java/liquibase/database/Database.java index 031405b12e7..ca2bf9f9821 100644 --- a/liquibase-standard/src/main/java/liquibase/database/Database.java +++ b/liquibase-standard/src/main/java/liquibase/database/Database.java @@ -25,10 +25,7 @@ import liquibase.statement.DatabaseFunction; import liquibase.statement.SqlStatement; import liquibase.structure.DatabaseObject; -import liquibase.structure.core.ForeignKey; -import liquibase.structure.core.Index; -import liquibase.structure.core.PrimaryKey; -import liquibase.structure.core.UniqueConstraint; +import liquibase.structure.core.*; import liquibase.util.StringUtil; import java.io.IOException; @@ -372,6 +369,7 @@ default void addCompleteSqlToScope(String completeSql) { * * @deprecated Know if you should quote the name or not, and use {@link #escapeColumnName(String, String, String, String)} which will quote things that look like functions, or leave it along as you see fit. Don't rely on this function guessing. */ + @Deprecated String escapeColumnName(String catalogName, String schemaName, String tableName, String columnName, boolean quoteNamesThatMayBeFunctions); /** @@ -392,7 +390,22 @@ default void addCompleteSqlToScope(String completeSql) { @Deprecated boolean supportsCatalogs(); + /** + * Whether this database supports the specified object type. + * It is invoking the deprecated methods to ensure that extensions are not broken, but + * once those are removed it will return only true + * + * @param object the object type to check + * @return true if the database supports the object type, false otherwise + */ default boolean supports(Class object) { + if (Sequence.class.isAssignableFrom(object)) { + return supportsSequences(); + } else if (Schema.class.isAssignableFrom(object)) { + return supportsSchemas(); + } else if (Catalog.class.isAssignableFrom(object)) { + return supportsCatalogs(); + } return true; } @@ -500,6 +513,7 @@ default boolean supports(Class object) { * removing set schema or catalog names if they are not supported * @deprecated use {@link liquibase.CatalogAndSchema#standardize(Database)} */ + @Deprecated CatalogAndSchema correctSchema(CatalogAndSchema schema); /**