Skip to content

Commit

Permalink
fix Priority issues for snapshot generators (#142)
Browse files Browse the repository at this point in the history
* fix: change priority method to ignore databases that are not databricks
  • Loading branch information
filipelautert authored Jun 10, 2024
1 parent cccb862 commit 02d85e9
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@ public class ForeignKeySnapshotGeneratorDatabricks extends ForeignKeySnapshotGen
public static final String METADATA_DELETE_RULE = "DELETE_RULE";


@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
if (database instanceof DatabricksDatabase) {
return super.getPriority(objectType, database) + PRIORITY_DATABASE;
} else {
return PRIORITY_NONE;
}
}

@Override
public Class<? extends SnapshotGenerator>[] replaces() {
return new Class[]{ForeignKeySnapshotGenerator.class};
Expand Down Expand Up @@ -289,4 +298,4 @@ private boolean driverUsesSpFkeys(Database database) throws DatabaseException {
}
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
import liquibase.database.Database;
import liquibase.exception.DatabaseException;
import liquibase.snapshot.CachedRow;
import liquibase.snapshot.DatabaseSnapshot;;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.structure.core.Schema;

import java.sql.SQLException;
import java.util.List;
import liquibase.ext.databricks.snapshot.jvm.ResultSetCacheDatabricks;

public class ResultSetConstraintsExtractorDatabricks extends ResultSetCacheDatabricks.SingleResultSetExtractor {

Expand Down Expand Up @@ -79,4 +78,4 @@ private String createSql(String catalog, String schema, String table) {

return sql;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
package liquibase.ext.databricks.snapshot.jvm;

import liquibase.CatalogAndSchema;
import liquibase.Scope;
import liquibase.database.AbstractJdbcDatabase;
import liquibase.database.Database;
import liquibase.exception.DatabaseException;
import liquibase.ext.databricks.database.DatabricksDatabase;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.SnapshotGenerator;
import liquibase.snapshot.jvm.SequenceSnapshotGenerator;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Schema;
import liquibase.statement.SqlStatement;
import liquibase.statement.core.RawSqlStatement;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Schema;

public class SequenceSnapshotGeneratorDatabricks extends SequenceSnapshotGenerator {

@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
int priority = super.getPriority(objectType, database);
if (priority > PRIORITY_NONE && database instanceof DatabricksDatabase) {
priority += DatabricksDatabase.DATABRICKS_PRIORITY_DATABASE;
if (database instanceof DatabricksDatabase) {
return super.getPriority(objectType, database) + PRIORITY_DATABASE;
} else {
return PRIORITY_NONE;
}
return priority;
}

@Override
Expand All @@ -42,10 +40,6 @@ protected SqlStatement getSelectSequenceStatement(Schema schema, Database databa
if (database instanceof DatabricksDatabase) {
// Databricks does not support sequences

CatalogAndSchema catalogAndSchema = (new CatalogAndSchema(schema.getCatalogName(), schema.getName())).customize(database);

String jdbcSchemaName = database.correctObjectName(((AbstractJdbcDatabase)database).getJdbcSchemaName(catalogAndSchema), Schema.class);

String databricksSequenceSql = "SELECT NULL AS SEQUENCE_NAME, NULL AS START_VALUE, NULL AS MIN_VALUE, NULL AS MAX_VALUE, NULL AS INCREMENT_BY, NULL AS WILL_CYCLE " +
"FROM " + schema.getCatalogName() + ".information_schema.columns " +
"WHERE " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ public class UniqueConstraintSnapshotGeneratorDatabricks extends UniqueConstrain

@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
int priority = super.getPriority(objectType, database);
if (priority > PRIORITY_NONE && database instanceof DatabricksDatabase) {
priority += DatabricksDatabase.DATABRICKS_PRIORITY_DATABASE;
if (database instanceof DatabricksDatabase) {
return super.getPriority(objectType, database) + PRIORITY_DATABASE;
} else {
return PRIORITY_NONE;
}
return priority;
}

@Override
Expand Down Expand Up @@ -62,4 +62,4 @@ protected List<CachedRow> listConstraints(Table table, DatabaseSnapshot snapshot
}

return Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", database).queryForList(new RawSqlStatement(sql));
}}
}}
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ public class ViewSnapshotGeneratorDatabricks extends ViewSnapshotGenerator {

@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
int priority = super.getPriority(objectType, database);
if (priority > PRIORITY_NONE && database instanceof DatabricksDatabase) {
priority += DatabricksDatabase.DATABRICKS_PRIORITY_DATABASE;
if (database instanceof DatabricksDatabase) {
return super.getPriority(objectType, database) + PRIORITY_DATABASE;
} else {
return PRIORITY_NONE;
}
return priority;
}

@Override
Expand Down

0 comments on commit 02d85e9

Please sign in to comment.