generated from liquibase/liquibase-extension-example
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add table/columns/view remarks support - update Readme with progress
- Loading branch information
1 parent
217ebcd
commit 632d629
Showing
8 changed files
with
189 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 68 additions & 0 deletions
68
src/main/java/liquibase/ext/databricks/sqlgenerator/SetColumnRemarksGeneratorDatabricks.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package liquibase.ext.databricks.sqlgenerator; | ||
|
||
import liquibase.ext.databricks.database.DatabricksDatabase; | ||
import liquibase.database.Database; | ||
import liquibase.database.core.*; | ||
import liquibase.datatype.DataTypeFactory; | ||
import liquibase.exception.ValidationErrors; | ||
import liquibase.exception.Warnings; | ||
import liquibase.sql.Sql; | ||
import liquibase.sql.UnparsedSql; | ||
import liquibase.sqlgenerator.SqlGeneratorChain; | ||
import liquibase.statement.core.SetColumnRemarksStatement; | ||
import liquibase.structure.core.Column; | ||
import liquibase.structure.core.Data; | ||
import liquibase.structure.core.Table; | ||
import liquibase.util.ColumnParentType; | ||
import liquibase.util.StringUtil; | ||
import liquibase.sqlgenerator.core.SetColumnRemarksGenerator; | ||
|
||
public class SetColumnRemarksGeneratorDatabricks extends SetColumnRemarksGenerator { | ||
@Override | ||
public int getPriority() { | ||
return DatabricksDatabase.PRIORITY_DATABASE; | ||
} | ||
|
||
@Override | ||
public boolean supports(SetColumnRemarksStatement statement, Database database) { | ||
return (database instanceof DatabricksDatabase); | ||
} | ||
|
||
@Override | ||
public ValidationErrors validate(SetColumnRemarksStatement setColumnRemarksStatement, Database database, SqlGeneratorChain sqlGeneratorChain) { | ||
ValidationErrors validationErrors = new ValidationErrors(); | ||
validationErrors.checkRequiredField("tableName", setColumnRemarksStatement.getTableName()); | ||
validationErrors.checkRequiredField("columnName", setColumnRemarksStatement.getColumnName()); | ||
validationErrors.checkDisallowedField("catalogName", setColumnRemarksStatement.getCatalogName(), database, MSSQLDatabase.class); | ||
if (database instanceof MySQLDatabase) { | ||
validationErrors.checkRequiredField("columnDataType", StringUtil.trimToNull(setColumnRemarksStatement.getColumnDataType())); | ||
} | ||
return validationErrors; | ||
} | ||
|
||
@Override | ||
public Warnings warn(SetColumnRemarksStatement statementType, Database database, SqlGeneratorChain<SetColumnRemarksStatement> sqlGeneratorChain) { | ||
final Warnings warnings = super.warn(statementType, database, sqlGeneratorChain); | ||
if (database instanceof MySQLDatabase) { | ||
((MySQLDatabase) database).warnAboutAlterColumn("setColumnRemarks", warnings); | ||
} | ||
|
||
return warnings; | ||
} | ||
|
||
@Override | ||
public Sql[] generateSql(SetColumnRemarksStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { | ||
|
||
String remarksEscaped = database.escapeStringForDatabase(StringUtil.trimToEmpty(statement.getRemarks())); | ||
|
||
|
||
return new Sql[]{new UnparsedSql("ALTER TABLE " + database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()) | ||
+ " ALTER COLUMN " + database.escapeColumnName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName(), statement.getColumnName()) + " COMMENT '" | ||
+ remarksEscaped + "'", getAffectedColumn(statement))}; | ||
|
||
} | ||
|
||
protected Column getAffectedColumn(SetColumnRemarksStatement statement) { | ||
return new Column().setName(statement.getColumnName()).setRelation(new Table().setName(statement.getTableName()).setSchema(statement.getCatalogName(), statement.getSchemaName())); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
src/main/java/liquibase/ext/databricks/sqlgenerator/SetTableRemarksGeneratorDatabricks.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package liquibase.ext.databricks.sqlgenerator; | ||
|
||
import liquibase.ext.databricks.database.DatabricksDatabase; | ||
import liquibase.database.Database; | ||
import liquibase.database.core.*; | ||
import liquibase.exception.ValidationErrors; | ||
import liquibase.sql.Sql; | ||
import liquibase.sql.UnparsedSql; | ||
import liquibase.sqlgenerator.SqlGeneratorChain; | ||
import liquibase.statement.core.SetTableRemarksStatement; | ||
import liquibase.structure.core.Relation; | ||
import liquibase.structure.core.Table; | ||
import liquibase.util.StringUtil; | ||
import liquibase.sqlgenerator.core.SetTableRemarksGenerator; | ||
|
||
public class SetTableRemarksGeneratorDatabricks extends SetTableRemarksGenerator { | ||
|
||
@Override | ||
public boolean supports(SetTableRemarksStatement statement, Database database) { | ||
return (database instanceof DatabricksDatabase); | ||
} | ||
|
||
@Override | ||
public ValidationErrors validate(SetTableRemarksStatement setTableRemarksStatement, Database database, SqlGeneratorChain sqlGeneratorChain) { | ||
ValidationErrors validationErrors = new ValidationErrors(); | ||
validationErrors.checkRequiredField("tableName", setTableRemarksStatement.getTableName()); | ||
return validationErrors; | ||
} | ||
|
||
@Override | ||
public Sql[] generateSql(SetTableRemarksStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { | ||
String sql; | ||
String remarksEscaped = database.escapeStringForDatabase(StringUtil.trimToEmpty(statement.getRemarks())); | ||
|
||
sql = "COMMENT ON TABLE " + database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()) + " IS '" | ||
+ remarksEscaped + "'"; | ||
|
||
return new Sql[] { new UnparsedSql(sql, getAffectedTable(statement)) }; | ||
} | ||
|
||
protected Relation getAffectedTable(SetTableRemarksStatement statement) { | ||
return new Table().setName(statement.getTableName()).setSchema(statement.getCatalogName(), statement.getSchemaName()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
src/test/resources/liquibase/harness/change/expectedSnapshot/databricks/setTableRemarks.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"snapshot": { | ||
"objects": { | ||
"liquibase.structure.core.Table": [ | ||
{ | ||
"table": { | ||
"name": "authors", | ||
"remarks": "A Test Remark" | ||
} | ||
} | ||
] | ||
} | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
src/test/resources/liquibase/harness/change/expectedSql/databricks/renameColumn.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ALTER TABLE main.liquibase_harness_test_ds.authors RENAME COLUMN first_name TO first_name_renameColumn_test |
2 changes: 2 additions & 0 deletions
2
src/test/resources/liquibase/harness/change/expectedSql/databricks/renameView.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
CREATE VIEW main.liquibase_harness_test_ds.test_view AS select id, first_name, last_name, email from authors | ||
ALTER VIEW main.liquibase_harness_test_ds.test_view RENAME TO test_view_new |
1 change: 1 addition & 0 deletions
1
src/test/resources/liquibase/harness/change/expectedSql/databricks/setColumnRemarks.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ALTER TABLE main.liquibase_harness_test_ds.authors ALTER COLUMN id COMMENT 'A Test Column Remark' |