liquibase.structure.core.Index Java Examples
The following examples show how to use
liquibase.structure.core.Index.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: AbstractJdbcDatabase.java From jweb-cms with GNU Affero General Public License v3.0 | 6 votes |
@Override public boolean isLiquibaseObject(final DatabaseObject object) { if (object instanceof Table) { Schema liquibaseSchema = new Schema(getLiquibaseCatalogName(), getLiquibaseSchemaName()); if (DatabaseObjectComparatorFactory.getInstance().isSameObject(object, new Table().setName(getDatabaseChangeLogTableName()).setSchema(liquibaseSchema), null, this)) { return true; } return DatabaseObjectComparatorFactory.getInstance().isSameObject(object, new Table().setName(getDatabaseChangeLogLockTableName()).setSchema(liquibaseSchema), null, this); } else if (object instanceof Column) { return isLiquibaseObject(((Column) object).getRelation()); } else if (object instanceof Index) { return isLiquibaseObject(((Index) object).getRelation()); } else if (object instanceof PrimaryKey) { return isLiquibaseObject(((PrimaryKey) object).getTable()); } return false; }
Example #2
Source File: CreateSpatialIndexGeneratorPostgreSQL.java From liquibase-spatial with Apache License 2.0 | 6 votes |
@Override public Sql[] generateSql(final CreateSpatialIndexStatement statement, final Database database, final SqlGeneratorChain sqlGeneratorChain) { final StringBuilder sql = new StringBuilder(); sql.append("CREATE INDEX "); sql.append(database.escapeObjectName(statement.getIndexName(), Index.class)); sql.append(" ON "); sql.append(database.escapeTableName(statement.getTableCatalogName(), statement.getTableSchemaName(), statement.getTableName())); sql.append(" USING GIST ").append("("); final Iterator<String> iterator = Arrays.asList(statement.getColumns()).iterator(); while (iterator.hasNext()) { final String column = iterator.next(); sql.append(database.escapeColumnName(statement.getTableCatalogName(), statement.getTableSchemaName(), statement.getTableName(), column)); if (iterator.hasNext()) { sql.append(", "); } } sql.append(")"); final Sql createIndex = new UnparsedSql(sql.toString(), getAffectedIndex(statement)); return new Sql[] { createIndex }; }
Example #3
Source File: SpatialIndexExistsPrecondition.java From liquibase-spatial with Apache License 2.0 | 6 votes |
/** * Generates the {@link Index} example (taken from {@link IndexExistsPrecondition}). * * @param database * the database instance. * @param schema * the schema instance. * @param tableName * the table name of the index. * @return the index example. */ protected Index getIndexExample(final Database database, final Schema schema, final String tableName) { final Index example = new Index(); if (tableName != null) { example.setTable((Table) new Table().setName( database.correctObjectName(getTableName(), Table.class)).setSchema(schema)); } example.setName(database.correctObjectName(getIndexName(), Index.class)); if (StringUtils.trimToNull(getColumnNames()) != null) { for (final String columnName : getColumnNames().split("\\s*,\\s*")) { final Column column = new Column(database.correctObjectName(columnName, Column.class)); example.getColumns().add(column); } } return example; }
Example #4
Source File: DropSpatialIndexGeneratorOracle.java From liquibase-spatial with Apache License 2.0 | 5 votes |
@Override public Sql[] generateSql(final DropSpatialIndexStatement statement, final Database database, final SqlGeneratorChain sqlGeneratorChain) { final String indexName = statement.getIndexName(); final Index example = new Index().setName(indexName); if (statement.getTableName() != null) { example.setTable((Table) new Table().setName(statement.getTableName()).setSchema( statement.getTableCatalogName(), statement.getTableSchemaName())); } Index index; try { index = SnapshotGeneratorFactory.getInstance().createSnapshot(example, database); } catch (final Exception e) { throw new UnexpectedLiquibaseException("Failed to create a snapshot of '" + indexName + "'", e); } final String tableName = index.getTable().getName(); final Column column = index.getColumns().get(0); final StringBuilder sql = new StringBuilder(); sql.append("DELETE FROM user_sdo_geom_metadata "); sql.append("WHERE table_name = '").append(database.correctObjectName(tableName, Table.class)); sql.append("' AND column_name = '").append( database.correctObjectName(column.getName(), Column.class)); sql.append("'"); final UnparsedSql deleteMetadata = new UnparsedSql(sql.toString(), new View().setName("user_sdo_geom_metadata")); return new Sql[] { deleteMetadata }; }
Example #5
Source File: AddPrimaryKeyGeneratorMSSQL.java From liquibase-mssql with Apache License 2.0 | 5 votes |
/** * The extension's implementation is essentially a copy/paste of the default implementation, with the following changes: * * 1) Removed other database platform specific logic other than MSSQL (purely to simplify) * * 2) Added support for setting fillFactor * * @param statement * @param database * @param sqlGeneratorChain * @return */ private Sql[] generateMSSQLSql(AddPrimaryKeyStatementMSSQL statement, Database database, SqlGeneratorChain sqlGeneratorChain) { String sql; if (statement.getConstraintName() == null) { sql = "ALTER TABLE " + database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()) + " ADD PRIMARY KEY (" + database.escapeColumnNameList(statement.getColumnNames()) + ")"; } else { sql = "ALTER TABLE " + database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()) + " ADD CONSTRAINT " + database.escapeConstraintName(statement.getConstraintName())+" PRIMARY KEY"; if (!statement.isClustered()) { sql += " NONCLUSTERED"; } sql += " (" + database.escapeColumnNameList(statement.getColumnNames()) + ")"; } // the only new feature being added is support for fillFactor sql += " WITH (FILLFACTOR = " + statement.getFillFactor() + ")"; if (StringUtils.trimToNull(statement.getTablespace()) != null && database.supportsTablespaces()) { sql += " ON "+statement.getTablespace(); } if (statement.getForIndexName() != null) { sql += " USING INDEX "+database.escapeObjectName(statement.getForIndexCatalogName(), statement.getForIndexSchemaName(), statement.getForIndexName(), Index.class); } return new Sql[] { new UnparsedSql(sql, getAffectedPrimaryKey(statement)) }; }
Example #6
Source File: AbstractJdbcDatabase.java From jweb-cms with GNU Affero General Public License v3.0 | 4 votes |
@Override public void dropDatabaseObjects(final CatalogAndSchema schemaToDrop) throws LiquibaseException { ObjectQuotingStrategy currentStrategy = this.getObjectQuotingStrategy(); this.setObjectQuotingStrategy(ObjectQuotingStrategy.QUOTE_ALL_OBJECTS); try { DatabaseSnapshot snapshot; try { final SnapshotControl snapshotControl = new SnapshotControl(this); final Set<Class<? extends DatabaseObject>> typesToInclude = snapshotControl.getTypesToInclude(); //We do not need to remove indexes and primary/unique keys explicitly. They should be removed //as part of tables. typesToInclude.remove(Index.class); typesToInclude.remove(PrimaryKey.class); typesToInclude.remove(UniqueConstraint.class); if (supportsForeignKeyDisable()) { //We do not remove ForeignKey because they will be disabled and removed as parts of tables. typesToInclude.remove(ForeignKey.class); } final long createSnapshotStarted = System.currentTimeMillis(); snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(schemaToDrop, this, snapshotControl); LogService.getLog(getClass()).debug(LogType.LOG, String.format("Database snapshot generated in %d ms. Snapshot includes: %s", System.currentTimeMillis() - createSnapshotStarted, typesToInclude)); } catch (LiquibaseException e) { throw new UnexpectedLiquibaseException(e); } final long changeSetStarted = System.currentTimeMillis(); CompareControl compareControl = new CompareControl( new CompareControl.SchemaComparison[]{ new CompareControl.SchemaComparison( CatalogAndSchema.DEFAULT, schemaToDrop)}, snapshot.getSnapshotControl().getTypesToInclude()); DiffResult diffResult = DiffGeneratorFactory.getInstance().compare( new EmptyDatabaseSnapshot(this), snapshot, compareControl); List<ChangeSet> changeSets = new DiffToChangeLog(diffResult, new DiffOutputControl(true, true, false, null).addIncludedSchema(schemaToDrop)).generateChangeSets(); LogService.getLog(getClass()).debug(LogType.LOG, String.format("ChangeSet to Remove Database Objects generated in %d ms.", System.currentTimeMillis() - changeSetStarted)); boolean previousAutoCommit = this.getAutoCommitMode(); this.commit(); //clear out currently executed statements this.setAutoCommit(false); //some DDL doesn't work in autocommit mode final boolean reEnableFK = supportsForeignKeyDisable() && disableForeignKeyChecks(); try { for (ChangeSet changeSet : changeSets) { changeSet.setFailOnError(false); for (Change change : changeSet.getChanges()) { if (change instanceof DropTableChange) { ((DropTableChange) change).setCascadeConstraints(true); } SqlStatement[] sqlStatements = change.generateStatements(this); for (SqlStatement statement : sqlStatements) { ExecutorService.getInstance().getExecutor(this).execute(statement); } } this.commit(); } } finally { if (reEnableFK) { enableForeignKeyChecks(); } } ChangeLogHistoryServiceFactory.getInstance().getChangeLogService(this).destroy(); LockServiceFactory.getInstance().getLockService(this).destroy(); this.setAutoCommit(previousAutoCommit); LogService.getLog(getClass()).info(LogType.LOG, String.format("Successfully deleted all supported object types in schema %s.", schemaToDrop.toString())); } finally { this.setObjectQuotingStrategy(currentStrategy); this.commit(); } }
Example #7
Source File: AbstractJdbcDatabase.java From jweb-cms with GNU Affero General Public License v3.0 | 4 votes |
@Override public String escapeIndexName(final String catalogName, final String schemaName, final String indexName) { return escapeObjectName(catalogName, schemaName, indexName, Index.class); }
Example #8
Source File: AbstractJdbcDatabase.java From jweb-cms with GNU Affero General Public License v3.0 | 4 votes |
@Override public String escapeConstraintName(final String constraintName) { return escapeObjectName(constraintName, Index.class); }
Example #9
Source File: Main.java From jweb-cms with GNU Affero General Public License v3.0 | 4 votes |
private static Class[] snapTypes() { return new Class[]{UniqueConstraint.class, Sequence.class, Table.class, View.class, ForeignKey.class, PrimaryKey.class, Index.class, Column.class, Data.class}; }
Example #10
Source File: AbstractCreateSpatialIndexGenerator.java From liquibase-spatial with Apache License 2.0 | 4 votes |
protected Index getAffectedIndex(final CreateSpatialIndexStatement statement) { return new Index().setName(statement.getIndexName()).setTable( (Table) new Table().setName(statement.getTableName()).setSchema( statement.getTableCatalogName(), statement.getTableSchemaName())); }