Subject | Update: JayBird/Firebird and Sun Java Studio Creator |
---|---|
Author | Rick Fincher |
Post date | 2005-03-02T02:24:56Z |
Hi All,
An update to the thread on using Sun Java Studio Creator and
JayBird/Firebird:
Right now, Creator is only aware of IBM's DB2 database not supporting
the syntax described below.
Creator tests for DB2, but no other Database.
The Creator development team says they are going to fix the problem by
testing for databases that support the syntax and assume anything not in
that list doesn't support it.
That way everything should work. Worst case being a database that
supports the syntax isn't in the list and will run slower.
They can't use a setting at development time to indicate this because
they can't assume the same database will be used for deployment.
The problem was due to the fact that Creator assumes databases have the
ability to use PreparedStatements with 'Where ? IS NULL' syntax. This
is not in the SQL spec but Oracle, MySQL, Postgres, and PointBase
support this.
The SQL 2003 spec supports an alternate syntax that will do essentially
the same thing, but this will not be available til Firebird 2.0. Since
the syntax is non-spec the Firebird team considers it a non-problem,
even though it can create incompatibilities with all the other
databases, and can create performance problems for Firebird vs the others.
By not having this syntax Creator is forced to create a new statement
for each row that is updated. That is slower than a PreparedStatement.
I guess on a large system that can add up to a lot of overhead.
Rick
An update to the thread on using Sun Java Studio Creator and
JayBird/Firebird:
Right now, Creator is only aware of IBM's DB2 database not supporting
the syntax described below.
Creator tests for DB2, but no other Database.
The Creator development team says they are going to fix the problem by
testing for databases that support the syntax and assume anything not in
that list doesn't support it.
That way everything should work. Worst case being a database that
supports the syntax isn't in the list and will run slower.
They can't use a setting at development time to indicate this because
they can't assume the same database will be used for deployment.
The problem was due to the fact that Creator assumes databases have the
ability to use PreparedStatements with 'Where ? IS NULL' syntax. This
is not in the SQL spec but Oracle, MySQL, Postgres, and PointBase
support this.
The SQL 2003 spec supports an alternate syntax that will do essentially
the same thing, but this will not be available til Firebird 2.0. Since
the syntax is non-spec the Firebird team considers it a non-problem,
even though it can create incompatibilities with all the other
databases, and can create performance problems for Firebird vs the others.
By not having this syntax Creator is forced to create a new statement
for each row that is updated. That is slower than a PreparedStatement.
I guess on a large system that can add up to a lot of overhead.
Rick