Friday, February 25, 2005
Here are the rankings found in Evans' Database Development Survey 2005, Winter:
MySQL -- 53%
Firebird -- 52%
PostgresSQL -- 15%
Berkeley DB -- 4%
GNU SQL -- 3%
SAP DB -- 1%
Other -- 6%
Some survey respondents are using use more than one open source database, thus the total exceeds 100%.
Monday, February 21, 2005
Object lifetime is one of the two or three major strategic questions in
the merge between Firebird 2 and Vulcan. Almost all objects in Firebird
2 are deleted by pool deletion. To make this work, every resource
controlled by an object subject to delete-by-pool must also be pool
aware and allocated from the same pool. This makes writing object code
in Firebird difficult, time consuming, and fragile. It also makes
adoption of non-pool aware classes problematical at best. Vulcan still
has much of his code, but all new classes respect standard object
lifetime conventions, and none are "pool aware".
A question facing the project is whether or not we should accept object
oriented technology into our database implementation. If the answer is
yes, then I believe we must respect the integrity of objects and observe
individual object lifetime controls. This necessarily involves
rejection of the concept of delete-by-pool purposes other than
exceptional, localized mechanisms.
So where you and many other developers may say "of course, that's the
way objects work", in fact, that isn't the way Firebird 2 and
I am arguing that post-merge object integrity be respected, a
pre-condition for adaptation of object technology. I am also arguing
that it is no longer necessary for all Firebird classes to be pool aware
and, in fact, most classes will not be. These questions seep into
almost every line of code in the prodct. I believe it better that we
resolve this question abstractly than as a debating point in the
general merge debate.
In my mind, the key technical questions around the merge are:
1. Object integrity (also known as delete-by-pool), including
obligatory pool awareness
2. The provider architecture
3. Object structured vs. flat configuration files
4. Thread synchronization primitives
5. The division of work between the Y-valve and the providers
6. Exception handling
>When you relate ancient computer history I always wonder:
>How old are you?
I was born in 1949. I started programming when I was about 15 at a
technical institute that offer a weekend course in Fortran for high
school kiddies. I designed my first language about a year later, a
simulated machine language, assembler, and job control language, in IBM
1620 assember. I converted it first to an IBM 7040 then the 360 (DOS),
all in assembler. During college I worked summers programming for a TV
rating company. After college (1973), I went to work for a company
building a database computer for the ARPAnet. A couple of years later I
went to DEC to write relational database system, or so I thought. After
a bait-and-switch, I worked on a conversion of IDMS to the PDP-11.
Escaping that, I wrote Datatrieve-11 for the PDP-11, then VAX
Datatrieve. I started and spun off the VAX Common Data Dictionary
(fellow is now a senior member of Microsoft SQLServer group) and the Rdb
project. When the latter ran into trouble, I started what eventually
became Rdb/ELN (ostensibly as an engine for a natural language query
system during a flirtation with AI), which kicked off the Great Database
War. I started Interbase in 1984. I have a wife Ann, who is a nice
person and thinks I should be one, too, a cat Perry and a Portuguese
Water Dog named Wyrly. Anything else you want to know?
Tuesday, February 15, 2005
Celio Costa Carvalho from Ibm Brasil asked on devel-list and Nickolay responded:
>> I am trying to install Firebird in a zSeries machine (mainframe).
>> When I issue the configure command I get :
>> checking whether make sets $(MAKE)... yes checking build
>> system type... s390-ibm-linux checking host system type...
>> s390-ibm-linux checking target system type... s390-ibm-linux
>> And when I enter a make command I get :
>> g++ -I../src/include/gen -I../src/include -ggdb -O3 -march=i586
>> -mcpu=i686 -fno-omit-frame-pointer -fno-builtin -DNDEBUG
>> -DLINUX -pipe -MMD -fPIC -DPROD_BUILD -c
>> ../src/common/classes/alloc.cpp -o
>> cc1plus: invalid option `arch=i586'
>> cc1plus: invalid option `cpu=i686'
>> Could you help me saying how I compile the Firebird in a
>> zSeries or s390 machine ?
Firebird 2.0 has the framework for generic Linux builds of Firebird. Firebird 1.5 defaults to x86 build on Linux and this is what you see. It is cerainly possible to build 1.5.X on linux/ Anyways, if you are interested in getting Firebird to work on your platform I would recommend you to start with Firebird 2.0 codebase. You'll probably need to add a couple defines for your CPU architecture in a few places. Please get in touch with me if you are interested in producing this port and submitting patches for it.
>> Celio Costa Carvalho
Gunnar Beushausen wrote
"I'm wondering if anybody has ever got the odbc classes working together with Firebird 1.5? Neither wx2.5.3 under Windows nor Linux can get me an odbc connection. Neither the DB sample nor the Dbbrowse demo is able to connect to my database. The ODBC connection itself is working with other databases.The username / password combination is also correct."
and response seems to be positive :
Tasker,George:"Try the latest CVS head as of 2 minutes ago. I'll be sending out a message momentarily with details, but Firebird support is now added"
That was on wxusers list http://xrl.us/e5m3 (via google groups)
Brad Pepers (linuxcanada.com) asked on list:
"I was wondering about JString and if it uses Unicode internally and if not how Vulcan handles Unicode properly for things like metadata (ie: table and column names). I happen to be working on internationalizing my application so I'm thinking in a universal way and it occurred to me to wonder how JString handles this. I'm used to the Qt QString class which does use Unicode internally and it takes some setup to make this work nicely though they seem to have it under control and at least it all works nice internally and you only have to worry about the encoding of data coming in and going out of your strings."
Monday, February 14, 2005
I'm really sorry. I've got (some) problems... and this internet access too.
If it's possible please give me time to thursday or friday evening.
Guys, I'm really sorry.
I thought to myself: zombie's back from the grave :) Just kidding.
I believe Nando hasn't started anything yet, so we can wait for few more days. Take all the time you need, as long as you let us know about it, it is ok.
--- In firstname.lastname@example.org, Lester Caine
> sgharp wrote:
> > I've found something that is very significant. Just for a test, I
> > copied the php.ini to the C:\PHP folder and now I have an Interbase
> > section in the phpinfo() stuff. I suspect that the Apache service
> > doesn't have rights in the C:\Windows folder for whatever reason. Is
> > there any problem with having the php.ini file in C:\PHP permenantly?
> XP :(
> I have no intention of using it for server functions ( or desktop for
> that ;) ), but I bet SP2 has introduced some 'lock down's' that are
> causing your problems.
> > Also, what is the default dialect? All of my databases are dialect 3.
> It will be picked up from the database. You can't create a database
> through php, I call isql for that, and set up the dialect in that batch
Thanks for all your help. I'll name my next 4 kids Lester. Even if
they're girls. :-)
Sunday, February 13, 2005
MyGeneration Software released MyGeneration 1.1 (as featured in this
months .NET Developer's Journal) which has full support for Firebird and
Firebird.NET. We have an implementation of our popular dOOdads .NET
architecture available in C# and VB.NET for dialects 1 and 3. With
MyGeneration you can generate your business/data access layers in seconds.
Best of all it's all 100% free.
For dOOdads info see
Lester Caine wrote:
> Anybody else had a play with the pdo_firebird driver?
> I'm not making much progress, and getting my head bitten of on PECL list
> for complaining that PDO seems half baked, but I would like to know that
> It's not just me ;)
hmm is quite experimental - i have'nt used , first time saw it
some words about it
> One camp seems to think that php_interbase and the other drivers will be
> killed off when PDO is the standard, the other camp ( which I subscribe
> to ) think that PDO simply can't handle the complexities of the engines
> like the native drivers do :(
Is like ADO ? or what is the sense of another db extension (wrapper to
maybe because is an PECL extension (and is the rigth way to install external drivers/wrappers
no need to recompile php)
What is PECL?
PECL is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.
The packaging and distribution system used by PECL is shared with its sister, PEAR.
Lester Caine responded
"It's not a wrapper to the existing drivers, it replaces them completely - hence the problem. The 'sales pitch' is that PDO will 'standardise the DB data interface' and remove the incompatibilities between drivers. The new drivers will supposedly not restrict using advanced facilities, but at present it's a sort of trimmed down 'BDE' with the lowest common set of functions across 5 and a 1/2 engines ( it has an interface for ODBC ;) ). So it's not in a state where it can replace php_interbase or the other native drivers, but there seems to be confusion over whether it WILL replace them in the future or it is just another driver?"
Thursday, February 10, 2005
http://xrl.us/e3so (Link to www.dotnetfirebird.org)
- You can now use raw devices to store database. Especially usable with database aliases
- Fixed SF #1116809
Incorrect data type conversion
Adriano dos Santos Fernandes
Wednesday, February 09, 2005
David hay from lexmark.com asked
Are there any plans to add eventing capabilities to Jaybird?
It would be extremely useful!
and roman responded to the thread :
> I am 100% agree. Jaybird with event-alert capability will make Jaybird
> powerful and make Jaybird programming easy. There are a lot of business
> functions need this event-alert features.
I do not plan to do this in the nearest future. Though I would welcome any
voluteer willing to implement it. One can check .Net provider, I think this
feature is implemented there.
Monday, February 07, 2005
* You need an admin tool. It's really hard to start without it. The
free ones are really poor - you need to try the commercial ones.
IBExpert has a free Personal Edition that does a great job.
* Install Firebird server on the development machine even that you
want to work with embedded Firebird. The admin tool will connect to the
database via the server.
* Make all names (table names, field names, SP names, etc.)
uppercase in the database. These names are converted to uppercase when
used from a client (and it might not match then). The other possibility
is to use quotation marks on both server and client - but you are making
your life harder. You should get used to uppercase on the server and you
can use whatever case you want on client.
* Read more about auto increment fields.
I like the last reply in the forum and i agree with it:
|"Firebird doesn't have to win||( post #88)|
I voted for Firebird, and would have liked to see it win. But it doesn't have to win. I remember 3 years ago when I started looking for an open source database to use on my sites - for weeks the only options that were on the horizon were MySQL, PostgreSQL and Berkeley. Then I came across a very lengthy discussion comparing MySQL and PostgreSQL, and there tucked in a few comments were references to Firebird. Then searched for information on InterBase (Firebird's closed source sibling). I downloaded and started to learn Firebird, and I was amazed that something this good was freely available.
Since then Firebird has gained far more visibility, partly because of polls like this. Whilst Postgres and MySql had books available to help new users understand the dbs, until 6 months ago Firebird did not have that. For any new user who was in my position trying to decide between these dbs, it would be £100 well spent to buy one book on each of these three dbs and look at how the dbs work using those books. Its a small investment considering how important it is to make the right decision from the beginning.
The important thing for me is not that Firebird wins these polls - it is that more people hear about it and get the chance to to use a database that in its history has often had features before PostgreSQL, DB2, and even Oracle. And just as MySQL and PostgreSQL are acquiring more features with every release, so is Firebird."
It seems that Sun is working on a database to be released with their own brand:
There also is a poll about what will Sun DB be based on and Firebird is one choices:
I personally think (if all this news are true) that it will be based on the same engine used by OpenOffice.org 2.0.
* Download information can be found here:
* Release notes:
Release Candidate 1 ( 2005-02-05 )
------- --------- - - ---- -- -- -
Bug fixes (Please read the Changelog for details)
* Fixed problem with 0 lowerbound array fields on the embedded server support.
* Fixed problem with stored procedure calls on FbCommand.ExecuteScalar method.
* Fixed null Guid handling.
* Try to fix performance problem with array fields on selectable statements when working agsint the standalone firebird server.
* Fixed problems with the new Design time support on Visual Studio 2003.
* Fixed incorrect mapping for binary blob fields to System.Array, now it will be mapped to byte
* Fixed char values checkings by using the field character set information for the check.
* Fixed some documentation comemnts that were incorrect.
* Improved comments removal on the FbScript class. (Andreas Sandner)
* Integrated the BinaryEncoding class for the octets character set support (Contributed by Jim Beveridge)
* Added error information to the FbDataAdapter configuration wizard.
Friday, February 04, 2005
" This article Intends to introduce a new tool that is an old one, at the same time. I'm talking about the Firebird database engine, which is new because the software is only four years old. Quite few people would trust their enterprise's data integrity to a product with such a short history, but the code from which Firebird was born four years ago is over twenty years old, and not many programs running today has such maturity. "
Thursday, February 03, 2005
This release adds support for backup and restore options. It also adds a definition for the "vary" data type for the case in which the version of Firebird is earlier than 1.5. The documentation was updated to 0.1.2.
FireFoot is library that provides an easy way for C language programmers to connect to Firebird database servers. It uses the Firebird/Interbase API, and is made using the GLib object model.
Wednesday, February 02, 2005
Tuesday, February 01, 2005
"With the recent freedom of Vulcan, I thought I would re-run
some performance benchmarks that I had posted a while back.
To review, this is a real life application that provides analysis
of manufacturing test measurements, which are mostly 32 bit float
numbers. The benchmarks has two parts. The first will read a
file of these measurments and insert them as fast as it can into
a database. The second part is to fetch them back out as fast
as it can. I'm doing this on a RedHat WS3 version of Linux on
a single 2.6GHz box. Unless noted, this is using the Firebird
Classic build. In all cases the database is locally attached.
The good news is that FB1.5.2's perfomance has returned to that
of FB1.5 (FB1.5.1 had slowed down by a bit).
However, the perfomance of Vulcan still remains behind. The inserts
are about 50% the speed of FB1.5.2 and the queries are about 40%.
When I mentioned this last time, Jim suggested it might be due to
using the development build. I re-built Vulcan removing the
DEV_BUILD symbol, however the perfomance was basically the same.
I also tried to change the -g to -O, however I get a seg
fault when trying to attach a database.
I was going to try to re-create this situation in qli,
however the current download of Vulcan has an error when
trying to build qli when trying to access the help.fdb. I
copied the help.fdb from the Firebird tree, at which point
the build failed to compile. I can provide more details if
anyone is interested.
My gut feel is that at least part of the problem is the
SUPERSERVER conditional code that vulcan is using. When
I run my benchmark on a superserver install of FB1.5.2,
the numbers are similar to that of Vulcan (inserts slightly
slower, queries slightly higer).
If I can get a working copy of qli for vulcan, I will try
to recreate a benchmark to demonstrate this performance
I'm going to be terse: we need to move on. I plan, subject to Milan's agreement, to start doing the renaming/restructuring work based on the *current* code base in 10 days from now. If Gregory could upload what he has by then, we will probably be able to use it even if it's not complete; otherwise, we'll go with what we have and I'll take the charge of doing the reimplementation of the DBH myself. Ciao
[Ed: well Gregory is a mistery to me it disapears a few months and then is coming back with brilliant ideas , and yes we need to finish the cvs move from old project fbmanager -> flamerobin on sf]
Has anybody know there there are open source accounting software using php
> and firebird ? I see NoLA and CK-ledger, has anybody transferred the schema
> to firebird ?
Was running with Nola 1.2, but I don't see much progress as the
developers have switched to the subscription model for Nola2 so I
dropped it. ( Nola was what started me with ADOdb ;) )
http://cbbrowne.com/info/financefreesoft.html provides a nice summary of
accounts packages available, but I'm not sure how up to date it is.
Not looked at ck-ledger (ck-erp seems to be the current version), as it
needs phpGW to run, but phporganisation is on my list to have a play
with. It uses smarty templates, but fixed MySQL code - via an include
which should be simple to modify - and should slot in with tikipro
without too much trouble.
I've just tried it that way. It doesn't work. It seems there are at least two additional steps:Jim Response:
During the transfer of the CVS tree to Firebird all of empty directories under vulcan/install got lost (I smell the footprint of a Tortoise here). I have added them back. Here is the full command sequence from a SuSE 9.2 AMD64 build:
112 13:58 cvs -z3 -d:ext:email@example.com:/cvsroot/firebird co vulcanUnless you know my password, you will want to use
113 14:01 cd vulcan
114 14:02 ./autoconf.sh
115 14:02 ls
116 14:02 ./autogen.sh
117 14:02 cd src
118 14:03 ./set_platform linux64
119 14:03 boot_build
120 14:06 rehash
cvs -z3 -d:pserver:firstname.lastname@example.org:/cvsroot/firebird co vulcanin lieu of step 112. I suggest you also skip step 114.
Personally, I think building the whole thing in three minutes is pretty cool.
[ED: me preparing 120Gb hdd for linux64 os]
> Exceptions cross library boundaries are always going to be
Ohh, you are even more correct here than you think about it. :-)
> If we build in a function to register a callback
> with a known calling sequence, we can the callback in your
> call to throw the actual exception. The API implementation
> code doesn't care about the mechanisms of the exception, just
> that a responsible adult does whatever is required to make
> sure that it never returns from the exception callback.
Sorry for repeating myself, but I already explained earlier that this
approach is not nice and told about portable alternatives.
Exception handling is not magical thing and compiler needs to know a lot
to throw, pass and catch exception properly.
Any throw code needs to know how to unwind all stack frames for _all_
functions between throw point and catch handler. This is important
Just think, host compiler (the one used to compile application) is going
to unwind stack frames and call destructors of stack objects for the
code potentially built with different compiler.
This is either going to cause crash if stack frame format was
incompatible or no calls of stack unwind handlers.
One of the portable ways to pass exception pseudo-object is to store it
in dynamic thread-specific exception buffer.
Sample Windows implementation of this approach may be found in
BV_Stable3 branch of Firebird tree (see platform.cpp file), it is used
there to implement exception passing across Trace API boundaries.
POSIX implementation is very similar.
Nickolay Samofatov [ED:Nickolay is back ! and is a long thread pitty i can't link to yahoo arhive of Firebird Arhitects]