Firebird 2.5 compliation with Visual Studio C++ 2008 ( aka #VC9.0 ) on #Windows

I have wrote the steps in compiling php_interbase.dll with using the Firebird 2.5 binaries here but if you want to debug the Firebird client dll or the engine you should follow these steps (requires full Firebird 2.5.x compilation)

If you want to build only Firebird 2.5 with a free beer compiler i have created a video where i describe and show the steps that you need to follow

http://vimeo.com/14190827

DDL Execution Architecture

Adriano posted about DDL execution artchitecture, its flaws and new improvements for FB 3.

Here I’m going to explain how Firebird DDL commands works in the architecture, why it stops innovation and how it is supposed to work in Firebird 3.0.

DDL in FB works more or less like DML, so first a briefly explanation of how DML works. When a DML command is prepared, it starts in the parser constructing a tree of nodes. That nodes are all a single pointer type, used for all node types and others usages (like storing constants). A node have a list of child nodes.

Real full post here.

Ultimate EFv4 CTP4 Code First full mapping example using Firebird

Jiří {x2} Činčura created an example with Entity Framework 4 CTP4

Let’s model some kind of simple library and try to use there couple of Entity Framework’s features. And to make things worse, try to do it with ADO.NET provider for Firebird.Good news is I succeeded. My database structure was my first and non-touchable object (to be honest the first was the idea what to create and how to represent it in database) together with the idea of objects.

Avoid using rand() in where clauses

I was working today, building a procedure to populate some tables and do some data updates and deletes, for speed testing for one of my FDD sessions.

I decided to use the built-in rand() function of Firebird 2.x in the where clause of updates and deletes, but found out that the execution time was tooking too long to complete. Looking at statistics, it showed weird numbers for Indexed Reads, like, the updates of 5 records generating 80.000 indexed reads in the Primary Key index.

After some debugging, I just found out that rand() was the guilt! I moved it outside the update/delete statement, storing the result in a variable, and using the variable in the where clause. It worked million times faster!

So, moral of history: Don’t use rand() in the where clause of updates and deletes statements. And yep, I know this is quite unusual use 😉

New Firebird tech articles

Morning all,

I’ve uploaded a couple of new documents to the document area. Unfortunately, due to a few problems with VPN timing out over the weekend, I’ve not been able to get the front page updated. I will do soon and the links will be visible.

How the cache works in Firebird:

pdf: http://www.firebirdsql.org/pdfmanual/Firebird-cache.pdf
html: http://www.firebirdsql.org/manual/fbcache.html

That is based on information Ann supplied here on the list a while back. She has permitted me to document it and make a manual out of it.

Firebird Internals:

pdf: http://www.firebirdsql.org/pdfmanual/Firebird-Internals.pdf
html: Not uploaded yet – VPN problems.

A work in progress and as yet fairly incomplete. It will be improved as and when I can. Comments & corrections gratefully received!

Enjoy.

Cheers,
Norman.

1 27 28 29 30 31 78