Hello,
The migration you speak of only deals with the tables themselves. It does nothing with forms or queries. Once you convert the tables and save the .odb, the HSQL tables are still retained within the zipped .odb. When using this conversion be careful to verify table data as decimal or numeric fields can be converted incorrectly.
For form problem, the only specific one deals with forms which have subforms. This is discussed in Bug #117053 and can be fixed with the provided macro in Comment #15 or a direct file patch mentioned in Comment #11.
You may have other form problems either not reported or they may be based on SQL (Queries). Personally haven’t seen any other problems.
Firebird SQL has some differences. Documentation can be found here → Firebird Documentation. The v2.5 Language Reference is the latest and for 3.0 you need to check release notes for changes. One item recently found does concern numeric/decimal fields. See this post → HSQLDB SQL in Firebird.
Here are the differences I have found thus far in HSQL vs Firebird SQL:
Access portion of date field:
HSQL - YEAR(MYDATE) this also applies to MONTH & DAY
Firebird - EXTRACT(YEAR FROM MYDATE)
DATEDIFF (note "Unit" surrounded by apostrophe):
HSQL - DATEDIFF( 'year', "DATE1", CURRENT_TIMESTAMP )
Firebird - DATEDIFF( year, "DATE1", CURRENT_TIMESTAMP )
SUBSTRING:
HSQL - SUBSTRING ("ITEM", 1, 3)
Firebird - SUBSTRING ("ITEM" from 1 for 3)
BOOLEAN(new in Firebird 3):
HSQL - "CheckBox" = 'TRUE' ( or 'FALSE')
Firebird - "CheckBox" (this is same as IS TRUE) (also: IS FALSE or IS UNKNOWN or IS TRUE)
LOCATE:
HSQL - LOCATE( SPACE( 1 ), "ITEM" )
Firebird - POSITION( ' ', "ITEM" )
LENGTH:
HSQL - LENGTH("FIELD")
Firebird - CHAR_LENGTH("FIELD") (also: CHARACTER_LENGTH or OCTET_LENGTH or BIT_LENGTH)
Comments:
HSQL - accepts --Line style; //Java style line; /* C style Block */
Firebird - accepts --Line style; /* C style Block */
The following work in either:
MAX; ORDER BY; UPPER; LOWER; IS NULL; NULL; LIKE; COLESCE; SUM;
BETWEEN; HAVING; COUNT; parameters like :EnterDate;+, -, /, *; || (string concatonation);
This list is fairly general and variations are probable. Again, refer to the documentation.
You will need to go through you Queries and fix where appropriate.
This does not include the items now available in Firebird which were not in HSQL such as SQL easier date math, Windowing Functions, and calculated fields.