<!--- This environment context section helps us quickly review your PR. 
Please take a minute to fill-out this information. -->

## Environment
**Liquibase Version**: 4.3.1

**Liquibase Integration & Version**: maven + CLI

**Liquibase Extension(s) & Version**:  NA

**Database Vendor & Version**: Postgresql 11

**Operating System Type & Version**: Ubuntu 18.04

## Description
Encountered this bug today, as described in this forum post:
[https://forum.liquibase.org/t/postgres-functions-and-question-marks/4947](https://forum.liquibase.org/t/postgres-functions-and-question-marks/4947)

In essence, SQL changeSets are transforming the Postgres `?` JSON operator into `??`, causing function definitions using this operator to become invalid.

## Steps To Reproduce
Copying the example from the forum post, as it seems identical to the situation I was seeing:

```java
<databaseChangeLog 
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.10.xsd ">

    <changeSet  author="test"  id="1">  
        <sql endDelimiter="/">
CREATE FUNCTION public.x()
    RETURNS void
    LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
INSERT INTO test (results)
SELECT '{"a":1, "b":2}'::jsonb ? 'b';
END;
$BODY$;
/
        </sql>
    </changeSet>
</databaseChangeLog>
```

The line `SELECT '{"a":1, "b":2}'::jsonb ? 'b';` will be transformed into `SELECT '{"a":1, "b":2}'::jsonb ?? 'b';` when ran, which is invalid.

This appears to have been caused by [https://github.com/liquibase/liquibase/pull/912](https://github.com/liquibase/liquibase/pull/912) as far as I can tell. I haven't been able to test and confirm this, however.

```java
if (database instanceof PostgresDatabase) {
                statement = statement.replaceAll("(^|[^\\?])\\?(?!\\?)(?=([^']*'[^']*')*[^']*$)", "$1??");
            }
```

## Actual Behavior
A clear and concise description of what happens in the software **before** this pull request.

* Include console output if relevant
* Include log files if available.

## Expected/Desired Behavior
A clear and concise description of what happens in the software **after** this pull request.

## Screenshots (if appropriate)
If applicable, add screenshots to help explain your problem.

## Additional Context
Add any other context about the problem here.

## Test Requirements (Internal Liquibase QA)
* No new automated functional tests are required for this fix.

**Manual Test Requirements**

* Use the attached lb-1350.xml changelog for testing.

_Verify update-sql does not include double question marks in the SELECT statement._

_Verify update is successful._
_Verify on database that the SQL for function x does not include double question marks in the SELECT._

_Verify generate-changelog does not include double question marks in the SELECT._



┆Issue is synchronized with this [Jiraserver Bug](https://datical.atlassian.net/browse/LB-1350) by [Unito](https://www.unito.io)

private static class ExampleAbstractSQLChange extends AbstractSQLChange {
        private ExampleAbstractSQLChange() {
        }
        private ExampleAbstractSQLChange(String sql) {
            setSql(sql);
        }
        @Override
        public String getConfirmationMessage() {
            return "Example SQL Change Message";
        }
        @Override
        public String getSerializedObjectNamespace() {
            return STANDARD_CHANGELOG_NAMESPACE;
        }
    }
}