Escaping of reserved keywords in HSQLDB

Description

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.

Environment

HSQLDB 1.8.x and 2.2.7

Reporter

Barry Pitman

Components

Fix versions

Affects versions

Priority

Major
Configure