Escaping of reserved keywords in HSQLDB


I am having a problem with the escaping of reserved keywords in HSQLDB, though I think it will be an easy fix!

If I create a table with name "User", Liquibase will quote the table name as shown below (from liquibase/database/core/HsqlDatabase):

Normally, HSQLDB converts all table and column names to uppercase internally, but when the table name/column name etc is quoted in this way, it apparently doesn't.

So if I create and populate a Company table:

and then try query that table (select count from Company where month = ?), I get this error for HSQLDB 1.8.x:

and this error for HSQLDB 2.2.7:

It seems that because the "month" column (which is a reserved word) was quoted when it was created, it remained lowercase, but later, when I try to query it (using the original lowercase name), HSQL assumes that it should convert the column name in the query to uppercase.

Either way, if we can change the "escapeDatabaseObject" method used in HsqldbDatabase to return the uppercase objectName, it will work:

I have attached a test case, which passes if I modify the "escapeDatabaseObject" method as above.


HSQLDB 1.8.x and 2.2.7


Barry Pitman


Fix versions

Affects versions