
liquibase.ext.databricks.snapshot.jvm.ViewSnapshotGeneratorDatabricks Maven / Gradle / Ivy
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.executor.ExecutorService;
import liquibase.ext.databricks.database.DatabricksDatabase;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.jvm.ViewSnapshotGenerator;
import liquibase.statement.core.RawParameterizedSqlStatement;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Schema;
import liquibase.structure.core.View;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.Map;
/**
* Overrides ViewSnapshotGenerator for Databricks views contemplating the tblProperties field
*/
public class ViewSnapshotGeneratorDatabricks extends ViewSnapshotGenerator {
@Override
public int getPriority(Class extends DatabaseObject> objectType, Database database) {
return database instanceof DatabricksDatabase ? PRIORITY_DATABASE : PRIORITY_NONE;
}
@Override
protected DatabaseObject snapshotObject(DatabaseObject example, DatabaseSnapshot snapshot) throws DatabaseException {
if (((View) example).getDefinition() != null) {
return example;
} else {
Database database = snapshot.getDatabase();
Schema schema = example.getSchema();
String query = String.format("SELECT view_definition FROM %s.%s.VIEWS WHERE table_name=? AND table_schema=? AND table_catalog=?",
schema.getCatalogName(), database.getSystemSchema());
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy