Subject Re: What's missing in Firebird (was: Performance against Ingres)
Author jbouvatt
> It
> would be interesting to hear what people having experience with
other
> databases miss in Firebird.

Things I'm missing in current FB :

1) Ability to write custom contraints (via trigger, CHECKs or any
other means...) that may read data outside the very record/table
being modified, and that would be enforced, just like built-in
declarative constraints, with certainty in all situations regardless
of the running transactions's options. From what I read in past
discussions on the subject, it "would" require those custom
constraints to run inside the "system context". Some spoke about
delayed constraints or "dirty read". I cannot tell myself, I just
badly miss this possibility. Some usage samples :
- Custom RI without needing to forbid deletions on the referenced
table in order to achieve 100% reliability.
- Inter records constraints that cannot be expressed by a unique
constraint.

2) Ability to select the index to be used by an FK.

3) Better UNICODE support.

4) IN (<non-correlated subselect>) evaluated once.

AFAIU, currently "where FIELDA in (Select ID from TBL1)" is
systematically turn by the optimizer into something like "where
(exists(Select 1 from TBL1 where ID = FIELDA))". This means the
subselect is evaluated for each record of the primary select even if
it could be evaluated only once.
I'd like such IN clause to be evaluated once ( iirc Arno once
suggested the result could be stored in memory in a map...).
If one wants to force a systematic evaluation (eg if the subselect
is prone to return a huge resultset), then an explicit EXISTS is
still here to use.

5) Transient data sets

6) incremental backups.

7) tracing/monitoring tools.

8) Better network perf.

9) Regular expressions