Class CreateJsonIndexChange
java.lang.Object
liquibase.AbstractExtensibleObject
liquibase.plugin.AbstractPlugin
liquibase.change.AbstractChange
org.keycloak.models.map.storage.jpa.liquibase.extension.CreateJsonIndexChange
- All Implemented Interfaces:
Cloneable,liquibase.change.Change,liquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>,liquibase.ExtensibleObject,liquibase.plugin.Plugin,liquibase.serializer.LiquibaseSerializable
public class CreateJsonIndexChange
extends liquibase.change.AbstractChange
implements liquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
Extension used to create an index for properties of JSON files stored in the database. Some databases, like
Postgres,
have native support for these indexes while other databases may require different constructs to achieve this (like creation
of a separate column based on the JSON property and subsequent indexing of that column).
Example configuration in the changelog:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="keycloak" id="some_id">
...
<ext:createJsonIndex tableName="test" indexName="some_index_name">
<ext:column jsonColumn="metadata" jsonProperty="name"/>
</ext:createJsonIndex>
</changeSet>
The above configuration is creating an inverted (GIN) index for the name property of JSON files stored in column
metadata in table test.
The jsonProperty is optional - when it is absent the index will be created for the whole JSON.- Author:
- Stefan Guilhen
-
Nested Class Summary
Nested classes/interfaces inherited from interface liquibase.serializer.LiquibaseSerializable
liquibase.serializer.LiquibaseSerializable.SerializationType -
Field Summary
Fields inherited from class liquibase.change.AbstractChange
NODENAME_COLUMNFields inherited from interface liquibase.change.Change
EMPTY_CHANGE, SHOULD_EXECUTEFields inherited from interface liquibase.serializer.LiquibaseSerializable
GENERIC_CHANGELOG_EXTENSION_NAMESPACE, GENERIC_SNAPSHOT_EXTENSION_NAMESPACE, STANDARD_CHANGELOG_NAMESPACE, STANDARD_SNAPSHOT_NAMESPACEFields inherited from interface liquibase.plugin.Plugin
PRIORITY_DATABASE, PRIORITY_DEFAULT, PRIORITY_NOT_APPLICABLE, PRIORITY_SPECIALIZED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddColumn(AddGeneratedColumnConfig column) liquibase.change.ChangeStatuscheckStatus(liquibase.database.Database database) protected liquibase.change.Change[]liquibase.statement.SqlStatement[]generateStatements(liquibase.database.Database database) getSerializableFieldValue(String field) isUnique()voidsetAssociatedWith(String associatedWith) voidsetCatalogName(String catalogName) voidsetClustered(Boolean clustered) voidsetColumns(List<AddGeneratedColumnConfig> columns) voidsetIndexName(String indexName) voidsetSchemaName(String schemaName) voidsetTableName(String tableName) voidsetTablespace(String tablespace) voidMethods inherited from class liquibase.change.AbstractChange
createChangeMetaData, createChangeParameterMetadata, createDescriptionMetaData, createEmptyColumnConfig, createExampleValueMetaData, createMustEqualExistingMetaData, createRequiredDatabasesMetaData, createSerializationTypeMetaData, createSinceMetaData, createSupportedDatabasesMetaData, customLoadLogic, equals, finishInitialization, generateCheckSum, generateRollbackStatements, generateRollbackStatementsVolatile, generateStatementsVolatile, getAffectedDatabaseObjects, getChangeSet, getDescription, getExcludedFieldFilters, getResourceAccessor, getSerializableFieldNamespace, getSerializableFields, getSerializableFieldType, getSerializedObjectName, hashCode, isInvalidProperty, load, serialize, serializeValue, setChangeSet, setResourceAccessor, shouldExecuteChange, supports, supportsRollback, toString, validate, warnMethods inherited from class liquibase.AbstractExtensibleObject
clone, describe, get, get, get, getAttributes, getFieldValue, getObjectMetaData, getValuePath, has, setMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface liquibase.ExtensibleObject
clone, describe, get, get, getAttributes, getObjectMetaData, getValuePath, has, set
-
Constructor Details
-
CreateJsonIndexChange
public CreateJsonIndexChange()
-
-
Method Details
-
getCatalogName
-
setCatalogName
-
getSchemaName
-
setSchemaName
-
getTableName
-
setTableName
-
getIndexName
-
setIndexName
-
getTablespace
-
setTablespace
-
isUnique
-
setUnique
-
getAssociatedWith
-
setAssociatedWith
-
getClustered
-
setClustered
-
addColumn
- Specified by:
addColumnin interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
getColumns
- Specified by:
getColumnsin interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
setColumns
- Specified by:
setColumnsin interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
getConfirmationMessage
- Specified by:
getConfirmationMessagein interfaceliquibase.change.Change
-
generateStatements
public liquibase.statement.SqlStatement[] generateStatements(liquibase.database.Database database) - Specified by:
generateStatementsin interfaceliquibase.change.Change
-
createInverses
protected liquibase.change.Change[] createInverses()- Overrides:
createInversesin classliquibase.change.AbstractChange
-
checkStatus
public liquibase.change.ChangeStatus checkStatus(liquibase.database.Database database) - Specified by:
checkStatusin interfaceliquibase.change.Change- Overrides:
checkStatusin classliquibase.change.AbstractChange
-
getSerializedObjectNamespace
- Specified by:
getSerializedObjectNamespacein interfaceliquibase.serializer.LiquibaseSerializable- Overrides:
getSerializedObjectNamespacein classliquibase.change.AbstractChange
-
getSerializableFieldValue
- Specified by:
getSerializableFieldValuein interfaceliquibase.serializer.LiquibaseSerializable- Overrides:
getSerializableFieldValuein classliquibase.change.AbstractChange
-