First, I know I haven’t posted in a while… I’ve been extremely busy. Will there be more posts sooner rather than later? Probably not. But I’ve not abandoned this project. I just need to find some time and I don’t have any right now.
Now, on to the post.
I needed a small lightweight database that I could embed in an application that I was writing. I looked around (not very hard) and came across HSQLDB and just picked it at random more or less. What a piece of crap this database is and here’s why:
1. I’d had the database up and my tables created and I needed to add a new column. The database would not let me. Gave me some ridiculous error message about “String data right truncation”. I don’t have the full error message, and would rather not post it to be honest in case a search engine picks it up (and some poor soul thinks I have the answer) but it was esoteric and useless. I saw some post somewhere about copying the data out of the table into a temp table and then back. Crazy.
2. I use NetBeans for my IDE. I also use it for manipulating my databases. It’s not the best but it does most of my work for me. When you do a simple select, NetBeans limits the number of rows to 20. Every time I tried to do a select, with an HSQLDB database, with NetBeans, and the table had more than 20 rows, it would crash. CRASH! Some form of nullpointerexception. If I changed the number (20) to greater than the number of rows in the table, everything was fine.
3. The final straw was when it started dropping data. The application I wrote, would start up the database, put data in it and then shut it down. If there were 2 rows, the final row would get lost. To be fair, this could have been my application that did this (although I don’t think so). Because it really felt like it wasn’t flushing the data from memory into the database. I say this because if the database was just “running” and I would run the application then both rows would get put into the database. Again, I don’t think so though. The database shouldn’t drop data.
So, I’m done with it. HSQLDB is a complete piece of crap as far as I’m concerned. I’m looking at Derby at the moment. It seems much more stable.
