I am attempting to migrate an existing ODB database with a space in a table name to Firebird with the new migration assistant in LO 18.104.22.168. After selecting "Yes" to convert the database to Firebird I get an error message that states: "SQL Status: map::at: key not found"
If I remove the space from the table name in HSQLDB before conversion, the conversion completes without the error message.
Steps to Reproduce:
1.Open HSQLDB in Base and click Yes to convert to Firebird
2.Error message appears, conversion fails.
3.Open HSQLDB without conversion, remove space from table name, then attempt to convert to Firebird.
4.Conversion completes without error.
conversion does not complete
conversion should complete
User Profile Reset: No
Created attachment 149165 [details]
error message screenshot
On pc Debian x86-64 with master sources updated yesterday, I don't reproduce this.
Could you attach an example file?
Created attachment 149166 [details]
hsqldb test file
Created attachment 149167 [details]
hsqldb test file, without space in table name
I've attached two test databases, one with a space in the table name and one without. The one without the space converts as expected. The one with the space shows the error message in the screenshot above.
Thank you for your feedback, I could reproduce this.
Tamas: debugging a bit on gdb shows the pb is in utils::getTableNameFromStmt
This method is called from CREATE TABLE and ALTER TABLE statements.
We can't do like in https://cgit.freedesktop.org/libreoffice/core/commit/?id=2a08db9a0473e2f87715aacfc7b481beaa490dcf since we got:
ALTER TABLE \"Plant Database\" ALTER COLUMN \"ID\" RESTART WITH 1497
With no space in table, perhaps we would have had this:
ALTER TABLE Plant_Database ALTER COLUMN \"ID\" RESTART WITH 1497
So can't test the presence of ".
In brief, it shows we need to use a real sql parser here because for the moment we're using only bandaid fixes. Of course, it's more easy to tell than to do I suppose, if not, it should have already be implemented.