In Oracle world almost no one use VARCHAR type. VARCHAR2 is used instead.
So common Oracle equivalent for Java String type is VARCHAR2, not VARCHAR.
But there is problem, how to write portable change logs - what type should be used?
We can use VARCHAR2 and it will work fine on Oracle, but will fail on other databases.
We can use VARCHAR and it will pass OK on all databases, but we don’t want it on Oracle.
Of course we can write double changes: one for Oracle, one for other and use preconditions - but it’s error prone.
So it would be better if liquibase did automatic translation from VARCHAR to VARCHAR2. Or maybe even better would be if one can specify type “String(40)” and liquibase translated it (depending on database) to VARCHAR(40) or VARCHAR2(40).
And “String(10000)” should be translated to CLOB.