We're migrating MySQL to PostgreSQL. I can easily audit the schema and the SQL statements used throughout the (REALbasic) program. Most of the SQL is composed by building string variables.
I already know about needing to replace our use of SELECT LAST_INSERT_ID()
with a SERIAL column with UNIQUE constraint.
What, if any, differences between the two which are not obviously visible in SQL statements might bite us? I'm looking for (probably subtle) assumptions about behaviour such as any differences in autocommit, need to add constraints which aren't in MySQL etc.
I'm trying to tease out any gotchas for a couple of reasonably smart, attentive guys who aren't gurus in either of the databases.
This is a one-way commitment so if there are major benefits we will get by adding new declarations I'd appreciate them pointing out.
Note: we're not using any form of parameterised queries and, yes, I've pointed out issues with injection attacks as a required audit of the code.
Yes, for the curious, this decision was prompted by GPL issues, not that we're averse to paying for licenses but, unfortunately, the sole REALbasic driver for MySQL was GPL. As of May 2009, Real Software have released a new Community driver which is GPL, and properly includes source. They have promised a non-GPL Enterprise driver in the near future.
I am prepared to believe that the answer might be there are no invisible monsters under the bed but thought I'd ask to be sure.