Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languageyml
titledbchangelog.yaml
databaseChangeLog:

  -  changeSet:
      id:  1policy-2
      author:  admin
      changes:
        -  createTable:
            tableName:  personJpaPdpPolicyDeploymentAudit
            columns:
              -  column:
                  name:  id
                  type:  int
                  autoIncrement:  true
                  constraints:
                    primaryKey:  true
                    nullable:  false
              -  column:
                  nameconstraints:
  firstname
                  typeprimaryKey:  varchar(50)
true
                  -  columnnullable:  false
                  name:  lastnamename
                  type:  varchar(50120)
              -    constraintscolumn:
                  name:  nullable:version
  false
              -  column:type:  varchar(20)
                  nameconstraints:
  state
                  typeprimaryKey:  char(2)

true
    -  changeSet:
      id:  2
      authornullable:  adminfalse
      changes:
        -  addColumncolumn:
             tableName:  person
   name:  pdpGroup
       columns:
           type:  varchar(255)
                -  columnconstraints:
                   name nullable:  usernametrue
              -  column:
      type:  varchar(8)

  -  changeSet:
      idname:  3pdpType
      author:  admin
      changes:
    type:  varchar(255)
  -  addLookupTable:
            existingTableName:  personconstraints:
            existingColumnName:  state
      nullable:  true    newTableName:
  state
            newColumnName:-  idcolumn:
            newColumnDataType:  char(2)

Add a new plugin dependency to pom.xml

<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.28</version>
</dependency>

mvn package

mvn liquibase:update

3 new entries in the databasechangelog table

      name:  action
                  type:  integer
                  constraints:
                    nullable:  true  
              -  column:
                  name:  timeStamp
                  type:  datetime
                  constraints:
                    nullable:  true                       

  -  changeSet:
      id:  policy-3
      author:  admin
      changes:
        -  addColumn:
            tableName:  JpaPdpPolicyDeploymentAudit
            columns:
              -  column:
                  name:  changedByUser
                  type:  varchar(255)
                  constraints:
                    nullable:  true 


Add a new plugin dependency to pom.xml

<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.28</version>
</dependency>


mvn package

mvn liquibase:update

2 new entries in the databasechangelog table

Code Block
languagetext
titledatabasechangelog
select * from databasechangelog;
+----+
Code Block
languagetext
titledatabasechangelog
select * from databasechangelog;
+----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------+------------------+---------------------+---------------+----------+-----------+-----------------+--------+---------------+
| ID | AUTHOR | FILENAME         | DATEEXECUTED        | ORDEREXECUTED | EXECTYPE | MD5SUM                             | DESCRIPTION                        ------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+
| ID | AUTHOR | FILENAME         | DATEEXECUTED        | ORDEREXECUTED | EXECTYPE | MD5SUM                             | DESCRIPTION                  | COMMENTS | TAG  | LIQUIBASE | CONTEXTS | LABELS | DEPLOYMENT_ID |
                                                               | COMMENTS | TAG  | LIQUIBASE | CONTEXTS | LABELS | DEPLOYMENT_ID |
+----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+
| 1  | admin  | dbchangelog.yaml | 2021-05-20 16:07:58 |             1 | EXECUTED | 8:f022085620a9dd87ae9ca1f93da51fd0 | createTable tableName=person                                                                            |          | NULL | 3.8.0     | NULL     | NULL   | 1523278917    |
| 2
| policy-2   | admin  | dbchangelog.yaml | 2021-05-20 16:07:58 |             2 | EXECUTED | 8:e3f0f50eb245f66c68ec504db93b6717 | addColumn tableName=person                                                           | 2021-05-24 15:04:49 |            10 | EXECUTED | 8:f5bd9cec4e2374254cc1985e8e9bfaae | createTable tableName=JpaPdpPolicyDeploymentAudit |          | NULL | 3.8.0     | NULL     | NULL       | 15232789171865089400    |
| policy-3   | admin  | dbchangelog.yaml               | 2021-05-2024 1615:0704:5949 |             311 | EXECUTED | 8:12a8bb9e438047d9332c8aec4f90a76e4c9ec93973102be9b6d966cf6bc724b4 | addLookupTableaddColumn existingColumnNametableName=state, existingTableName=person, newColumnName=id, newTableName=state JpaPdpPolicyDeploymentAudit   |          | NULL | 3.8.0     | NULL     | NULL       | 15232789171865089400    |
+----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+

Test 6: Rollback last update

mvn liquibase:rollback -Dliquibase.rollbackCount=1Dliquibase.rollbackCount=1

[INFO] SELECT * FROM DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC
[INFO] Rolling Back Changeset:dbchangelog.yaml::policy-3::admin
[INFO] ALTER TABLE person DROP FOREIGN KEY FK_PERSON_STATE
[INFO] DROP TABLE stateJpaPdpPolicyDeploymentAudit DROP COLUMN changedByUser
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = 'policy-3' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'

...

mvn liquibase:rollback -Dliquibase.rollbackCount=21

[INFO] Rolling Back Changeset:dbchangelog.yaml::policy-2::admin
[INFO] ALTER TABLE person DROP COLUMN usernameDROP TABLE JpaPdpPolicyDeploymentAudit
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = '2' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'
[INFO] Rolling Back Changeset:dbchangelog.yaml::1::admin
[INFO] DROP TABLE person
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = '1policy-2' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'

Test 8: Update database with changeLog in YAML format which includes raw SQL

...