Subject Re: [firebird-support] Firebird vs Postgres
Author Richard Wesley
On Jan 5, 2007, at 09:36, Martijn Tonies wrote:

>> We evaluated SQL Server X for our embedded engine rejected it
>> because:
>>
>> - The database size has been crippled to 2G
>> - The installer requires .NET (and installs it).
>> - The footprint is 50G
>
> How much?

Yes, 50Gbytes. But the hands-down winner was Oracle XP weighing in
at a CD-busting 600+Gb!

>> Not to be totally negative, I should list the advantages:
>>
>> - Mature, well understood
>> - Able to store databases in a single file
>> - Full set of built in functions with correct NULL handling (unlike
>> FB...)
>
> Examples of failures in Fb? I'm just curious.

Just about every UDF that ships with FB seems to assume that NULL ==
0. Round, Sign, Sin, you name it. So for our calculations, we have
to wrap each one in a

(CASE WHEN arg is NULL THEN CAST(NULL AS result_type) ELSE func(arg)
END)

which I am sure wreaks havoc on any indexing we may have defined.

(Gotta love those typed NULLs too...)

>> - Sophisticated collation support (better than FB)
>
> Different, that's for sure.

SQL Server distinguishes character set from collation and defines sub-
collations for things like case and accent sensitivity. FB requires
this functionality to be separately implemented in code for EACH
collation library that you wish to do this for, in spite of the fact
that it has all the information needed to do it itself for ANY
collation (using the UPPER hooks). Want a case-insensitive ISO8859_1
Danish collation? Grab the source code and hack it up! Want that
collation on a UTF8 column? Same answer. And while it is nice to be
able to do this at all, it would be of real benefit to many users to
have it done by the engine itself.

I see multiple postings in here every week asking about how to modify
existing collations to do these simple tasks, many from folks who
really aren't very technically sophisticated. Just being able to add
a new collation based on an existing one but with different compare
flags would be very nice. I thought I found a page a few weeks back
on how to do this, but it didn't seem to work (and I think I
misunderstood the scope).

BTW, If I am wrong about this and there IS an easy fix. I'd love to
know about it. I have a major work item coming up in the next 6
months to deal with this issue and I am not looking forward to it...
(And if any developer wants to send me an estimate on what it would
take to add this, I'd be very interested in looking at it.)
________________________________________________________
Richard Wesley Senior Software Developer Tableau
Software
Visit: http://www.trytableau.com/now.html