title: Liquibase with Postgres, changelog parameters are not replaced
body: <p>I'm using liquibase with oracle and postgres and I would like to use the changeLog properties to customize the elements of the changeSets that are different in the two databases.</p>
  
  <p>I'm using the example from <a href="https://www.liquibase.org/documentation/changelog_parameters.html" rel="nofollow noreferrer">https://www.liquibase.org/documentation/changelog_parameters.html</a>.</p>
  
  <p>Here is my db-changelog.xml</p>
  
  <pre><code>&lt;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-2.0.xsd
          http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"&gt;
  
      &lt;property name="table.name" value="table_O" dbms="oracle"/&gt;
      &lt;property name="table.name" value="table_P" dbms="postgres"/&gt;
  
      &lt;property name="column1.name" value="column1_O" dbms="oracle"/&gt;
      &lt;property name="column1.name" value="column1_P" dbms="postgres"/&gt;
  
      &lt;property name="column2.name" value="column2_O" dbms="oracle"/&gt;
      &lt;property name="column2.name" value="column2_P" dbms="postgres"/&gt;
  
      &lt;property name="clob.type" value="blob" dbms="oracle"/&gt;
      &lt;property name="clob.type" value="bytea" dbms="postgres"/&gt;
  
      &lt;changeSet id="1" author="joe"&gt;
           &lt;createTable tableName="${table.name}"&gt;
               &lt;column name="id" type="int"/&gt;
               &lt;column name="${column1.name}" type="${clob.type}"/&gt;
               &lt;column name="${column2.name}" type="int"/&gt;
           &lt;/createTable&gt;
      &lt;/changeSet&gt;
  &lt;/databaseChangeLog&gt;
  </code></pre>
  
  <p>The command</p>
  
  <pre><code>$ liquibase --driver=oracle.jdbc.OracleDriver \
              --classpath=ojdbc8-18.3.0.0.jar \
              --changeLogFile=db.changelog.test.xml \
              --url=jdbc:oracle:thin:@localhost:1521/my_db \
              --username=my_user \
              --password=my_pwd \
              --logLevel debug updateSQL &gt; simple_changeLog_ORACLE.sql
  </code></pre>
  
  <p>works fine and I obtain the changelog for oracle, but the command</p>
  
  <pre><code>$ liquibase --driver=org.postgresql.Driver \
              --classpath=postgresql-42.2.5.jar \
              --changeLogFile=db.changelog.test.xml \
              --url=jdbc:postgresql://localhost:15432/my_db \
              --username=my_user \
              --password=my_pwd \
              --logLevel debug updateSQL &gt; simple_changeLog_POSTGRES.sql
  </code></pre>
  
  <p>fails with following exception</p>
  
  <pre><code>java.lang.ArrayIndexOutOfBoundsException: 1
          at liquibase.datatype.DataTypeFactory.fromDescription(DataTypeFactory.java:251)
          at liquibase.change.core.CreateTableChange.generateStatements(CreateTableChange.java:70)
          at liquibase.change.AbstractChange.generateStatementsVolatile(AbstractChange.java:287)
          at liquibase.change.AbstractChange.warn(AbstractChange.java:358)
          at liquibase.changelog.visitor.ValidatingVisitor.visit(ValidatingVisitor.java:110)
          at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:83)
          at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:284)
          at liquibase.Liquibase.update(Liquibase.java:198)
          at liquibase.Liquibase.update(Liquibase.java:274)
          at liquibase.Liquibase.update(Liquibase.java:251)
          at liquibase.integration.commandline.Main.doMigration(Main.java:1433)
          at liquibase.integration.commandline.Main.run(Main.java:229)
          at liquibase.integration.commandline.Main.main(Main.java:143)
  </code></pre>
  
  <p>The option --logLevel debug shows a difference in the parsed changeSet.</p>
  
  <p>The oracle one is</p>
  
  <pre><code>17:59:43.184 DEBUG [liquibase.util.MD5Util]: Computed checksum for createTable:[
      columns=[
          [
              name="id"
              type="int"
          ],
          [
              name="column1_O"
              type="blob"
          ],
          [
              name="column2_O"
              type="int"
          ]
      ]
      tableName="table_O"
  ] as 836321c599b350ca366cc6ea3bde3890
  </code></pre>
  
  <p>while the postgres one is </p>
  
  <pre><code>17:51:55.864 DEBUG [liquibase.util.MD5Util]: Computed checksum for createTable:[
      columns=[
          [
              name="id"
              type="int"
          ],
          [
              name="${column1.name}"
              type="${clob.type}"
          ],
          [
              name="${column2.name}"
              type="int"
          ]
      ]
      tableName="${table.name}"
  ] as 71476a8361010689730a8bf91f8d7115
  
  </code></pre>
  
  <p>Am I missing something?</p>