Subject | RE: [firebird-support] Firebird on FreeBSD |
---|---|
Author | Leyne, Sean |
Post date | 2005-01-14T23:12:33Z |
Norman,
to be safe.
In general, the databases will be nearly identical in their data types,
statement syntax and operation -- with one exception.
The Firebird engine is more 'exacting' when it comes to the treatment of
ambiguous SQL statements.
Consider the case where you have to two tables (Invoice and Part) and
with columns named DESC, now consider the following SELECT statement:
SELECT
InvoiceNo,
PartNo,
Desc
FROM
Part
JOIN InvoiceDetail on InvoiceDetail.PartNo = Parts.PartNo
JOIN Invoice on Invoice.InvoiceNo = InvoiceDetail.InvoiceNo
You see that "Desc" is not specifically defined to be either the
Invoice.Desc or the Part.Desc -- this is an ambiguous reference.
In Interbase, the system would choose from the 2 possible meaning on its
own -- and worse, as we saw, it wouldn't always choose consistently.
In Firebird, for Dialect 1 -- the engine will run/work like IB v6.0 did
but will report a warning (if you're db tools listen to warnings).
In Firebird, for Dialect 3 -- the engine will stop/fail and report
"ambiguous query" error.
Sean
> Are there any issues that I should be aware of having switched fromdb
> Interbase 6.0 to Firebird, especially regarding compatibility of the
> created by the two different servers (Interbase and Firebird)?As Alan MacDonald suggest you should backup/restore the database, just
to be safe.
In general, the databases will be nearly identical in their data types,
statement syntax and operation -- with one exception.
The Firebird engine is more 'exacting' when it comes to the treatment of
ambiguous SQL statements.
Consider the case where you have to two tables (Invoice and Part) and
with columns named DESC, now consider the following SELECT statement:
SELECT
InvoiceNo,
PartNo,
Desc
FROM
Part
JOIN InvoiceDetail on InvoiceDetail.PartNo = Parts.PartNo
JOIN Invoice on Invoice.InvoiceNo = InvoiceDetail.InvoiceNo
You see that "Desc" is not specifically defined to be either the
Invoice.Desc or the Part.Desc -- this is an ambiguous reference.
In Interbase, the system would choose from the 2 possible meaning on its
own -- and worse, as we saw, it wouldn't always choose consistently.
In Firebird, for Dialect 1 -- the engine will run/work like IB v6.0 did
but will report a warning (if you're db tools listen to warnings).
In Firebird, for Dialect 3 -- the engine will stop/fail and report
"ambiguous query" error.
Sean