Monday, January 29, 2007

Firebird Embedded and .NET

Jiri Cincura have created a small how-to for Firebird Embedded and .NET.

Saturday, January 27, 2007

Getting Started With Delphi -- A list of tutorials

An intrepid new Delphi user posted this in the newsgroups:

Hi everyone,
I'm trying to learn about Delphi.Please give me some advice to learn
Delphi for beginners.Thanks all.

Nick Hodges posted few links:

Marco Cantu's Essential Delphi Tutorial
Neil Moffat's Marvelous Delphi Basics
Liz's Delphi Tutorial
3DBuzz's Delphi Tutorials
Creating Your First Application on The Delphi Wiki's A Beginner's Guide to Delphi

BlazeTop (SQLHammer) is available now

BlazeTop (former SQLHammer) version is available for download

What’s new in version

New features and enhancements:

1.Borland InterBase 2007 support has been added:
  • the instance_name property has been added to the server registration options;
  • now scripts for InterBase 2007 can have a clause BATCH START; ... BATCH EXECUTE;

  • 2.Improved mechanism of checking Open Office data export; it enabled us to increase the performance.

    Bugs fixed:

    1.ALTER PROCEDURE did not operate correctly if the procedure used declared variables. Fixed.
    2.The SQLEditor worked incorrectly when you commented/uncommented the selected text in the pop-up menu.

    Friday, January 26, 2007

    Firebird 2.0.1 RC

    Release Candidate kits of Firebird 2.0.1 are now available for download at the Firebird main site.

    This sub-release introduces a number of bug fixes done since the v.2.0 release in November. It does not add any new functionality to the database engine. A minor improvement is detection of Gentoo or FreeBSD during configuration.

    An important reversion to 1.5 behaviour has occurred in this sub-release, as follows:

    In Firebird 2.0, a deliberate restriction was imposed to prevent anyone from dropping, altering or recreating a PSQL module if it had been used since the database was opened. An attempt to prepare the DDL statement would result in an "Object in Use" exception.

    Many people complained that the restriction was unacceptable because they depended on performing these metadata changes "on the fly". The restriction has therefore been removed. However, the reversion in no way implies that performing DDL on active PSQL modules is "safer" in Firebird 2.0.1 than it was in V.1.5.x.

    Thursday, January 25, 2007

    Tooling Up With CodeGear

    Zeichick's Take: Tooling Up With CodeGear by Alan Zeichick on SD Times.

    Open source is good for the economy

    Open source is good for the economy, according to a report published by the European Commission. More details on The Register.

    IBOjects V4.7

    IBOjects V4.7 with support for Firebird V2.0 can be downloaded for evaluation.

    New DBManager available

    DBTools Software announces the availability of the DBManager Professional Enterprise Edition V3.4.2 and DBManager Standard Edition V3.2.2.

    Steve Trefethen started Open Source Delphi Page

    If you have some Open Source delphi project, please tell Steve about it.

    Steve Trefethen's
    Delphi Open Source Projects page.

    Firebird Null Guide 1.0 online

    The new Null Guide is finally online, at its usual locations:

    The Firebird 2 Quick Start Guide has been updated

    The Firebird 2 Quick Start Guide has been updated:

    PDF version will be built in a couple of days.

    ANN: The InterBase and Firebird Developer Magazine #4

    The owners of the InterBase and Firebird Developer Magazine and IBPhoenix today agreed to collaborate in producing future issues of the magazine. Under the agreement, free copies of the magazine will be distributed to IBPhoenix Support and Subscription customers automatically in advance of publication.

    New sessions in IBExpertLive! Free Firebird training and Conference videos online!

    What is IBExpertLive?

    HK-Software has implemented a streaming system based on the Firebird database
    server, which publishes pictures and audio, as needed to view the presentations from
    the 2004, 2005 and 2006 Firebird Conferences. There are also IBExpert
    tutorial videos enabling you to learn more about working with Firebird and
    InterBase with IBExpert. There is currently about 55GB of video data available,
    with around 200 hours of firebird-related presentations from last two Firebird
    Conferences and other events.

    To use IBExpertLive, you need a firebird connection via Internet using port 13050 to our
    server on IP If it does not work, please check your firewall settings.

    The IBExpertLive Player is freeware and included in IBExpert Setup or can be downloaded
    seperatly here

    The sessions are also free, but the player requires a free email registration

    An overview of all sessions can be found below (partly in german language).

    110 FBCON2006 B01-Paul Ruizendaal - Solution Stacks Built on Firebird and PHP - Another Flame in the Lamp?
    111 FBCON2006 C01-Milan Babuskov - Developing Cross Platform Aplications with Firebird and wxWidgets
    112 FBCON2006 B02-Martijn Tonies - The Firebird System Tables
    113 FBCON2006 C02-Mauritio Longo - Supporting Complex On Line Systems with Satellite Databases
    114 FBCON2006 B03-Thomas Steinmaurer - Owner Migration the Easy Way
    115 FBCON2006 C03-Andrew Morgan - Towards a Universal UDF Testing Framework
    116 FBCON2006 B04-Björn Reimer/Dirk Baumeister - Firebird Clients and System Tables
    117 FBCON2006 C04-Fikret Hasovic - Cross - Platform Development Using Lazarus
    118 FBCON2006 A05-FirebirdFoundation - Opening and Welcome(only just audio)
    119 FBCON2006 A06-PaulReeves - Building Firebird on Windows and Linux
    120 FBCON2006 B06-DmitrySibiryakov - Replication with IBReplicator
    121 FBCON2006 C06-CarlosCantu - New Shutdown Modes and Backups in Firebird 2.0
    122 FBCON2006 A07-DmitryYemanov - Cost-based Optimization and Statistics
    123 FBCON2006 B07-ErickSasse - N-Tier applications with Firebird and RemObjects DataAbstract
    124 FBCON2006 C07-HolgerKlemt - Creating modern database webaplications using Firebird, php and AJAX
    125 FBCON2006 A08-IvanPrenosil - Data Types in Practice/Optimizing Counts(Dual Topics)
    126 FBCON2006 B08-GaryFranklin/BillOliver - Real World Applications Using Firebird
    127 FBCON2006 C08-AlexSkvirski - Firebird Connectivity Tools or is there any Performance loss out there?
    128 FBCON2006 A09-RomanRokytskyy - External routines:interface, usage and possibilities
    129 FBCON2006 B09-MauricioLongo - Applications with Morfik WebOS and Firebird
    130 FBCON2006 C09-DmitriKouzmenko - Optimizing Server Performance
    131 FBCON2006 A10-HolgerKlemt - Creating Transaction Logs in Interbase
    132 FBCON2006 B10-MilanBabuskov - Managing Metadata Chaanges
    133 FBCON2006 C10-GaryFranklin/BillOliver - Delivering and using the Vulcan embeddet Server as Part of SAS
    134 FBCON2006 D11-VladislavHorsun - New SQL Features in coming Versions of Firebird
    135 FBCON2006 B12-RomanRokytskyy - Jaybird new release new features
    136 FBCON2006 C12-DmitriKouzmenko - Database Health and Corruption
    150 FBCON2005 Andrew Morgan - Embedding and using sophisticated mathematics in Firebird (FBC2005)
    151 FBCON2005 Ann Harrison - Detecting correcting and preventing database corruption (FBC2005)
    152 FBCON2005 Evgeney Putilin - Firebird and Java Stored Procedures (FBC2005)
    153 FBCON2005 Nando Dessena - Deploying Firebird transparently on Windows (FBC2005)
    154 FBCON2005 Paul Reeves - From Basic to Advanced ISQL scripting (FBC2005)
    155 FBCON2005 Fikret Hasovic - Open source Delphi (FBC2005)
    156 FBCON2005 Luiz Paulo de Oliveira Santos - Firebird API in Delphi Lazarus and Free Pascal (FBC2005)
    157 FBCON2005 Jason Wharton - IB Objects for Newbies (FBC2005)
    158 FBCON2005 Luiz Paulo de Oliveira Santos - Techniques for migrating from MySQL to Firebird (FBC2005)
    159 FBCON2005 Stefan Heymann - What Developers Should Know about Character Sets and Unicode etc (FBC2005)
    160 FBCON2005 Lucas Franzen - STORED PROCEDURES (FBC2005)
    161 FBCON2005 Claus Heeg - Migration and integration of other databases into Firebird using Cold Fusion
    162 FBCON2005 Holger Klemt - Setting Up a bidirectional Replication based on EXECUTE STATEMENT Commands
    163 FBCON2005 Paul Ruizendaal - Solution Stacks Built on Firebird and PHP - Another Flame in the LAMP
    164 FBCON2005 Pavel Cisar - Firebird Quality Assurance (FBC2005)
    165 FBCON2005 Dmitri Kouzmenko - Firebird Performance Optimization for Different Applications (FBC2005)
    166 FBCON2005 Thomas Steinmaurer - Audit Trails Transaction Log Redo with the IB LogManager product family
    167 FBCON2005 Milan Babuskov - The power of Firebird events (FBC2005)
    168 FBCON2005 Martijn Tonies - The Firebird system tables (FBC2005)
    169 FBCON2005 Kim Madsen - SOA using kbmMW (FBC2005)
    170 FBCON2005 Daniel Magin - Developing DataBase Application with Delphi 2006 (FBC2005)
    171 FBCON2005 Mauricio Longo - Dynamic Databases - A Conceptual Overview (FBC2005)
    172 FBCON2005 Carlos Cantu - PSQL in Action (FBC2005)
    173 FBCON2005 Jim Starkey - Configuring Firebird and Vulcan (FBC2005)
    174 FBCON2005 Jim Starkey - Vulcan status features and goals (FBC2005)
    175 FBCON2005 Arno Brinkman - Understanding the Optimizer I (FBC2005)
    176 FBCON2005 Paul Beach Dmitry Yemanov - Firebird future development (FBC2005)
    177 FBCON2005 Mauricio Longo - FireQ - Firebird Based Messaging Infrastructure (FBC2005)
    178 FBCON2005 Roman Rokytskyy - JayBird - JCA/JDBC driver for Firebird (FBC2005)
    179 FBCON2005 Roman Rokytskyy - JayBird - JCA/JDBC driver for Firebird (FBC2005)
    180 FBCON2005 Lester Caine - Firebird on PHP Integrate or Abstract (FBC2005)
    181 FBCON2005 Jeanot Bijpost - An introduction to Cathedron (FBC2005)
    182 FBCON2005 Andrew Morgan - Creating and managing recursive structures (FBC2005)
    183 FBCON2005 Holger Klemt - Server Performance - How to make your application run faster (FBC2005)
    184 FBCON2005 Ann Harrison - First steps in performance tuning (FBC2005)
    185 FBCON2005 Milan Babuskov - FlameRobin - administration tool for Firebird DBMS (FBC2005)
    186 FBCON2005 Claus Heeg - Building ERP web applications based on Firebird and cold Fusion (FBC2005)
    187 FBCON2005 Serg Vostrikov - Getting Started with FIBPlus (FBC2005)
    188 FBCON2005 Arno Brinkman Dmitry Yemanov - Under the hood Data access paths (FBC2005)
    189 FBCON2005 Pavel Cisar - Making your own Firebird PowerTools with Python (FBC2005)
    190 FBCON2005 Stefan Heymann - Using Firebird for Quality Management Software (FBC2005)
    191 FBCON2005 Serg Vostrikov - Special FIBPlus features network traffic optimization and FIBPlus
    192 FBCON2005 Fikret Hasovic - Firebird in n-tier setup with Delphi and kbmMW (FBC2005)
    193 FBCON2005 Jeanot Bijpost - From Model Driven Development to Model Driven Architectures (FBC2005)
    194 FBCON2005 Alex Peshkov - New security features in Firebird 2.0 (FBC2005)
    196 FBCON2005 Arno Brinkman - Understanding the Optimizer II (FBC2005)
    200 FBCON2004 Frank Ingermann - The Sparkey of the year Event (FBC2004)
    201 FBCON2004 Ann Harrison - QLI (FBC2004)
    202 FBCON2004 Helen Borrie - Creating a shop (the new Firebird Example Database) (FBC2004)
    203 FBCON2004 Helen Borrie - Stocking the Shelves and Browsing the store (FBC2004)
    204 FBCON2004 Arno Brinkmann - Understanding the Optimizer in Firebird (FBC2004)
    205 FBCON2004 Arno Brinkmann - The Optimizer in SQL Examples (FBC2004)
    206 FBCON2004 Pavel Cisar - Wrestling Firebird (FBC2004)
    207 FBCON2004 Pavel Cisar - Firebird QA (FBC2004)
    208 FBCON2004 Lucas Franzen - STORED PROCEDURES I (FBC2004)
    209 FBCON2004 Lucas Franzen - STORED PROCEDURES II (FBC2004)
    210 FBCON2004 Ann Harrison - Lock print (FBC2004)
    211 FBCON2004 Frank Ingermann - Client Performance (FBC2004)
    212 FBCON2004 Frank Ingermann - FBFreeDB (FBC2004)
    213 FBCON2004 Holger Klemt - The Power of “Execute Statement” (FBC2004)
    214 FBCON2004 Holger Klemt - corrupt Databases, examples and Solutions (FBC2004)
    215 FBCON2004 Holger Klemt - Firebird performance Workshop (FBC2004)
    216 FBCON2004 Manuel Morbitzer - PHP and Firebird (FBC2004)
    217 FBCON2004 Manuel Morbitzer - Firebird and Visual Studio .NET (FBC2004)
    218 FBCON2004 Paul Reeves - Building Firebird Installation Kits for Win32 (FBC2004)
    219 FBCON2004 Paul Reeves - Firebird System Tables (FBC2004)
    220 FBCON2004 Nicolay Samofatov - External tables (FBC2004)
    221 FBCON2004 Nicolay Samofatov - new backup technology (FBC2004)
    222 FBCON2004 Jim Starkey - Vulcan Architecture (FBC2004)
    223 FBCON2004 Jim Starkey - Vulcan Design Goals (FBC2004)
    224 FBCON2004 Thomas Steinmaurer - Serverseitige Programmier-Techniken (FBC2004)
    225 FBCON2004 Thomas Steinmaurer - Neuerungen in Firebird 1.5 (FBC2004)
    226 FBCON2004 Martijn Tonies - An Introduction to Firebird for database developers (FBC2004)
    227 FBCON2004 Martijn Tonies - The Firebird PSQL language (FBC2004)
    228 FBCON2004 Jason Wharton - IBO and Firebird / IBO Advanced (FBC2004)
    229 FBCON2004 Hilmar Brodner - AvERP I Grundlagen und Administration (FBC2004)
    230 FBCON2004 Hilmar Brodner - AvERP II Programmierung (FBC2004)
    231 FBCON2004 Paul Ruizendaal - Moving applications from Oracle to Firebird (FBC2004)
    232 FBCON2004 Artur Anjos - Using Firebird over the Internet (FBC2004)
    233 FBCON2004 Bastian Morbitzer - PHPtree - Firebird basierende PHP Anwendung für Dokumentation und
    Hilfssystem (FBC2004)
    234 FBCON2004 Bastian Morbitzer - The Future of a global Firebird Online Documentation System (FBC2004)
    235 FBCON2004 Lester Caine - PHP - Life after Builder6 (FBC2004)
    236 FBCON2004 Marc o Dunehue - Firebird and Java I (FBC2004)
    237 FBCON2004 Marc o Donehue - Firebird and Java II (FBC2004)
    238 FBCON2004 Bernd UA - Delphi 8 and Firebird .NET Provider (FBC2004)
    101 HK Presentation: Improving performance with IBExpert (Budapest 02/2005)
    102 HK Presentation: A review of IBExpert’s range of functions (Budapest 02/2005)

    German only:

    001. HK German Tutorial: Grundlagen SQL und Einrichtung IBExpert Demodatenbank
    002. HK German Tutorial: Einfache Firebird SQL Befehle
    003. HK German Tutorial: Tabellen mit SQL verknüpfen
    004. HK German Tutorial: Where Bedingungen
    005. HK German Tutorial: Erstellen einer eigenen Datenbank
    006. HK German Tutorial: Tabellen erstellen
    007. HK German Tutorial: Tabellen mit Fremdschlüssel erstellen
    008. HK German Tutorial: Benutzer erstellen und Rechte vergeben
    009. HK German Tutorial: Datenbank Parameter und Hintergrundwissen
    010. HK German Tutorial: Tabellen abfragen, Indizes erstellen und SQL Performance vergleichen
    011. HK German Tutorial: Auswirkungen langer Char Felder
    012. HK German Tutorial: UDF benutzerdefinierte Funktionen einbinden
    013. HK German Tutorial: IBExpert Demo Database Collection
    014. HK German Tutorial: Datenbankdesigner Entity Relationship Modeling
    016. HK German Tutorial: Erstellen eines triggerbasierenden Transaktionslogs
    017. HK German Tutorial: Logging in IBExpert und Trigger in der Employee Datenbank
    018. HK German Tutorial: Sprachelemente für Stored Procedures
    019. HK German Tutorial: Rekursionen in Prozeduren und erste eigene Prozeduren
    020. HK German Tutorial: Prozeduren entwickeln und optimieren
    021. HK German Tutorial: Trigger entwickeln für Transaktionsprotokolle
    022. HK German Tutorial: Views und Updatable Views
    023. HK German Tutorial: Views für mehrere Tabellen
    024. HK German Tutorial: Wie funktioniert Firebird intern? I
    025. HK German Tutorial: Wie funktioniert Firebird intern? II
    026. HK German Tutorial: Wie funktioniert Firebird intern? III
    027. HK German Tutorial: Wie funktioniert Firebird intern? IV
    028. HK German Tutorial: FBConnections, gfix, Cache und sonstige Parameter festlegen
    029. HK German Tutorial: IBETransactionMonitor, Server Properties, Backup Restore, Logging,
    030. HK German Tutorial: IBExpertSQLMonitor, Firebird ODBC und MS Access, Export, IBEBlock ODBC
    031. HK German Tutorial: IBExpert Spezialfunktionen, Plananalyzer, Selektivität,Kommandozeilenprogramme,
    External Files
    032. HK German Tutorial: Installation und Vergleich FB15-FB20, Performanceanalyse, IBExpert Doku, Extract
    Metadaten, Datenbanken reparieren
    033. HK German Tutorial: Alias.conf, firebird.conf, Temp Pfad und Dateien
    034. HK German Tutorial: firebird.log, Freeadhocudf
    035. HK German Tutorial: Demodatabase Transaktionslog, rfunc UDF, Replikation
    036. HK German Tutorial: Internet Firebirdverbindung mit Zebedee
    037. HK German Tutorial: Testdaten generieren, Performancemessung, Indizes, Plan, Selektivität,
    038. HK German Tutorial: Set Statistics, Indexoptimierung, order by, Fremschlüsselindizes
    039. HK German Tutorial: Datenbankstatistik, Backup Restore Optimierung,
    040. HK German Tutorial: Trigger statt FK, MGA, Versionierung
    041. HK German Tutorial: SQL,in,exists,updateable views,Performance, firebird.conf Konfiguration, lange
    042. HK German Tutorial: external files,csv export,
    043. HK German Tutorial: IBExpert Export
    044. HK German Tutorial: CSV Import Insertex, Tabelle in andere Datenbank kopieren,
    045. HK German Tutorial: IBExpert.usr Menüs einschränken, Sprachanpassung
    046. HK German Tutorial: mit ibeblock Metadatenextract per Kommandozeile automatisieren und mit DLL in
    eigene Programme integrieren
    047. HK German Tutorial: Metadatenextract mit Daten, Blobunterstützung in Scripts
    048. HK German Tutorial: ibeblock ODBC Zugriff, MS Access Datenbanken einbinden,Daten von ODBC nach
    Firebird kopieren
    049. HK German Tutorial: ibeblock Datenbanken verknüpfen
    050. HK German Tutorial: Dateien importieren, Bilder importieren per Script
    051. HK German Tutorial: Dateien per Script updaten
    052. HK German Tutorial: Verbindungen über das Internet mit Zebedee verschlüsseln und komprimieren, Dyndns
    mit nutzen
    053. HK German Tutorial: Performance Internetbetrieb von Datenbankservern, Pingzeit,Route
    054. HK German Tutorial: HK Services, Transaction Monitor
    055. HK German Tutorial: Delphi BDE Applikationen auf IBObjects umstellen mit GReplace
    056. HK German Tutorial: Datenbanken nachträglich Character Set und Dialekt konvertieren
    057. HK German Tutorial: Extrahieren von Daten und ausführen per DLL
    058. HK German Tutorial: Applikation Optimieren durch Einsatz spezieller IBO Komponenten, IB_DSQL,
    059. HK German Tutorial: Performancevergleich IBO Query, IBO Cursor, BDE Query etc.
    060. HK German Tutorial: Performanceprobleme durch Autobackground Commit Close Open vermeiden, Master
    061. HK German Tutorial: Lazarus: Open Source Delphi für Windows und Linux, Zeos, AvERP Open Source
    Warenwirtschaft, Datenmodellierung, Laufzeitformular

    Thursday, January 18, 2007

    Oracle Plugs 51 Security Flaws

    Oracle on Tuesday released fixes for 51 vulnerabilities that affect its software products. The update is part of the company's quarterly patch cycle. Oracle preannounced its patch release Thursday, when, for the first time, it published an advance notification so customers could plan ahead to apply the fixes.

    MSBuild in Next Delphi

    Nick Hodges has some interesting news about the next version of Delphi.

    In a non-tech thread in the forums, Nick Hodges (Delphi Product Manager) has stated that "the next release of Delphi will use MSBuild as the build engine". This is very good news, as the Project Manager in recent versions of Delphi got some extra features and a change to install build tools, but with limited capabilities. MSBuild, instead, is the Microsoft build tool used in Visual Studio and allows developers to customize the build (and deployment) process with many different tasks.

    At the moment you can achieve something similar using third-party build tools, like FinalBuilder. I think this is a very good addition, also because the same build process will be available within the IDE and fromt he command line. Moreover, you'll be able to use MSBuild also for C++ Builder (while in Visual Studio C++ compilations are not managed by MSBuild). More about this in David Dean blog.

    Wednesday, January 17, 2007

    JEDI VCS 2.41 server release

    The JVCS team is happy to announce the JEDI VCS 2.41 server release,
    which is intended as a maintenance release for 2.40 but also includes some
    new features.

    What's changed:

    - support of MySQL5 directly out of the installer (ZEOS 6.6)
    - Multiple logins with the same user is now possible which allows the simultaneous use of the standalone JVCS Client and the JVCS IDE client
    - faster file transfer (get, checkout, checkin...) especially on large files and in LAN environment
    - minor bug fixes

    Complete change history is available through the JVCS tracker on

    Downloads are available from here:

    Updating is quite easy, stop the JVCS server application or the JVCS
    service, run the installer, restart server application or service. There is no
    database change.

    JVCS 2.41 client release will follow soon.
    We also will release a unstable JVCS 2.5 with branching support soon.

    Friday, January 12, 2007

    Vulcan and Firebird merging plan

    Dmitry Yemanov posted to the Firebird-devel list his proposals for merging the Firebird 2 code with the Vulcan code.

    Here it comes, with comments from others:

    Key Points

    1) The result of the merge is a new CVS tree
    2) Modules refactored by Jim are taken from the Vulcan tree
    3) The rest is taken from the FB tree
    4) All the pieces are adjusted to fit each other
    5) Vulcan's code is fixed to use the project coding rules


    1) The common library will mostly based on the FB
    class library with some classes taken from Vulcan (QSort, SyncObject,
    StatusVector, etc). The common string class is Firebird::String. The
    exception handling is based on the FB classes with some changes. Based
    on Alex's research, I conclude that the memory manager should be taken
    from Vulcan and adapted to the FB pool infrastructure. The configuration
    stuff is also taken from Vulcan.

    - Dmitry (syncs and other platform specifics)
    - Alex (memory management, classes library, exceptions)
    - Adriano (config stuff) -- ???

    2) The Y-valve is taken from Vulcan and fixed to fit the new common
    library and the project coding conventions. An exception handling and
    MT-safety review is required, as well as some cleanup.

    Responsible: Dmitry

    3) The lock manager is taken from Vulcan, cleaned up and reviewed. I
    don't agree with the way how the two cache modes are implemented there,
    it looks ugly. Also, we need to carefully examine all the Windows and
    Solaris specific changes made there.

    Responsible: Dmitry

    4) The JRD files are merged from the both trees. The page cache code and
    the metadata classes (as well as some other refactored code like blob
    classes, the mover, etc) are taken from Vulcan with a careful review.
    Other files (cmp/exe/dfw/etc) are taken from FB and adjusted to the
    Vulcan synchronization and metadata cache classes.

    Arno Brinkman commented: opt, btr, idx, Rsbxxx modules should be inherited from Vulcan IMO.
    Only missing pieces are the INTL stuff, which is not that big.
    //end of comment

    Dmitry Yemanov commented: As for Rsb modules, I agree. The same for opt.cpp and Optimizer.cpp, as
    they're already in sync with HEAD. I just want them to be ported at the end.

    But why do you want to preserve Vulcan's btr.cpp and idx.cpp? AFAIK,
    HEAD is more up-to-date in those parts (and more patches are in the way).
    //end of comment

    - Dmitry (synchronization, metadata, other)
    - Vlad (page cache, metadata)
    - Alex (execute statement, authentication)
    - Adriano (INTL stuff, other)

    5) The DSQL files are taken from Vulcan, with a total review of the
    metadata cache integration. This is the hardest part of the merge, IMO.
    I'm not satisfied with the half-way DSQL integration done in Vulcan, but
    I'm not sure we can offer something better in the short term. Changes in
    pass1/gen/make are ported from the FB codebase. The parser generator is
    most likely to be migrated from FB, it just lacks the MT-safe skeleton
    implementation. A replacement with a hand-made RDP can be considered in
    the long term.

    Arno Brinkman commented: Although it's for the long term, i send you something for review a long time ago?
    //end of comment

    Dmitry Yemanov commented: Yep, and I didn't have time to comment on it properly. Mea culpa.
    //end of comment

    Responsible: Vlad, Dmitry, Adriano, Alex

    6) The remote subsystem is taken from Vulcan, unless Alex objects. The
    multi-client mode related fixes by Alex, protocol extensions by
    Alex/Vlad/myself and various bugfixes should be backported from FB.
    Amount of our changes there is not very big, so it looks doable.

    Responsible: Alex, Vlad, Dmitry

    7) The entire INTL aware code is taken from the FB codebase, a proper
    MT-related review is to be performed.

    Responsible: Adriano

    8) Utilities code is to be taken from FB, the only merge-related thing
    is an interface with the Vulcan services provider. The UDF libraries are
    taken from FB. Guardian is to be considered for dying.

    Responsible: ?

    Special Notes

    1) The non-shared-cache mode is preserved, but it should be
    implemented using the config switch rather than #ifdefs. In particular,
    it means that synchronization primitives should unconditionally exist in
    all engine favors.

    2) The internal DSQL implementation (FbDbc) is not ported from Vulcan.
    We should either make it much more light-weight (to not carry the
    redundant semantics like metadata representation), or consider some
    other connectivity code, or keep GDML in the sources for the time being.
    Any volunteer for this task?

    3) I don't expect any serious INTL issues, as most of the INTL aware
    code will be taken from FB, but I expect Adriano to track all the
    related changes.

    4) The RSB refactoring is ported after all else is done. Being not
    critical part of Vulcan/FB3, it was one of the most buggiest parts of
    Vulcan and I'm not sure we solved all the issues. Also, Arno intends to
    make some improvements based on that code in the meantime.

    Arno Brinkman commented: Almost done, only more testing and some refactoring left.
    //end of comment

    Dmitry Yemanov commented: That's great :-)
    //end of comment

    5) If anybody not explicitly counted as an assignee above would like to
    assist in some parts, it would be appreciated.

    6) New code is committed into CVS on a per subsystem basis.

    Merge Steps

    1) HEAD is cleaned up to follow the new threading rules. It mostly means
    getting rid of the non-MT code branches (including signal-based ASTs).
    We could also perform whatever global cleanup we consider useful. It
    could be done in a separate CVS branch, if we'd like to keep the cleaned
    version reserved for production.

    Status: 80% done (in my private tree).

    2) Lock manager is replaced with the Vulcan's one, we perform some dbb
    adjustments and global synchronizations. Scheduler is removed. At this
    point we have a skeleton of the non-shared-cache implementation (based
    on the CS code) that could be tested.

    Status: 50% done (LM only).

    3) Y-valve is ported from Vulcan, DSQL is trivially moved into the
    engine. At this point we have a proper architecture in place.

    Status: 50% done (Y-valve only).

    4) JRD is merged. We get rid of the SUPERSERVER/SUPERCLIENT/REQUESTER
    conditionals. NBACKUP is carefully reviewed for compatibility with the
    Vulcan's page cache.

    5) DSQL is merged. Compiled statement cache is implemented.

    6) INTL is adjusted to the new code.

    At this point, we can start testing the embedded mode.

    7) Remote subsystem is replaced with Vulcan's one.

    Here we have the server mode working.

    8) Utilities and services are adjusted to the new code.

    Of course, some items could be moved in time, e.g. the remote subsystem
    merge could be started earlier.

    Your Major Question

    Why is FB used as the background for the whole tree if many of its
    subsystems will be replaced with Vulcan's ones? My answer consists of
    three parts:

    1) Using the FB codebase, we may have the initial steps performed
    without losing the stability much (and hence test the beast
    incrementally), because we replace subsystems one per one. With Vulcan
    being the base point, we start with bugs everywhere.

    2) Number of post-Vulcan-diverge changes in FB is really large. Tracking
    them one by one is not going to work and using a visual diff tool will
    be much complicated for the refactored modules. In this situation,
    porting the design ideas into a working code looks easier to me.

    3) Unfortunately, Vulcan's code is far from looking as a production one.
    Currently, it's a mixture of FB-style and Vulcan-style code that behave
    differently, with some parts being commented out or totally broken. It
    requires a total cleanup, reformatting, functional review and fixing. I
    doubt we can afford that now.

    Comments, additions, critique?


    Papers of Firebird Conference 2006

    The papers (where available) for the Firebird Conference 2006 talks are available for download here (you need to right click and use “Save As”).

    Sunday, January 07, 2007

    LinuxQuestions 2006 Members' Choice Awards has just launched the voting for its 2006 Members' Choice Awards. The awards enable Linux community members to select their favorite products of the year in 21 categories, including distribution, browser, office suite, desktop environment, and database.

    The polls will close on Feb. 18, with winners being announced shortly afterward. Last year's winners include Ubuntu, Firefox, and MySQL. Two years ago Firebird WON!

    Voting in all categories can be done here. Free registration is required at in order to vote.

    Thursday, January 04, 2007

    Devrace BlazeTop (former SQLHammer) version 1.7

    Devrace BlazeTop (former SQLHammer) version 1.7 is available for immediate download. Besides many fixes and enhancements it includes Firebird 2.0 support, SQL Editor optimization (text syntax highlighting) and full UNICODE support. Now you also ave an option to purchase BlazeTop for the price of 129 Euro only!

    DelphiSpeedUp Delphi/BCB/BDS IDE plugin Version 2.3

    A plugin for Delphi/C++Builder 5/6/7/2005, BDS 2006 and Turbo Delphi/C++/C# Professional. It speeds up the time to load the IDE and it also improves the whole speed of the IDE. This is achieved by replacing some often used RTL functions by FastCode function that are optimized for the used CPU. It also adds some caches for function that work on filenames like ExpandFileName().

    Important information: All these optimizations do not affect the compiled projects in any way. They are made in memory so all the files on disk are not modified. Uninstalling DelphiSpeedUp makes every change undone because the optimizations are not persistent. They only exist in memory and are limited to the Delphi/BCB/BDS process.

    WARNING: Not every access violation in DelphiSpeedUp.dll is a bug in DelphiSpeedUp. Actually many of the exceptions in the RTL package are now thrown in the DelphiSpeedUp.dll because the RTL functions are replaced by the DelphiSpeedUp functions and wrong parameters like nil-pointers, invalid pointers, ... now lead to access violations in the replacement code.

    • Improves Delphi/BCB/BDS's load times
    • Optimizes often used RTL functions by functions form the FastCode project
    • All optimizations are done in memory and do not change any file on disk
    • Adds a "Close all and kill" menu item to the "File" menu that terminates the IDE very fast
    • The fast termination is used when you close the IDE while pressing the CTRL key.
    • Version 2.3 (2007-01-01)
      • Added: Package Import Resolver for many System.pas functions and TList/TObjectList/TInterfaceList
      • Added: Some FastSys tweaks to improve speed in runtime packages
      • Added: .NET's SetThreadPriority(HIGHEST) during IDE loading is now ignored (Delphi 2005, BDS 2006)
      • Added: The IDE is terminated faster by pressing CTRL when closing the main form.
      • Added: DelphiSpeedUp calls BeginUpdate/EndUpdate for BDS's Tool Palette during startup.
    The new DelphiSpeedUp not only improves the speed of the RTL, it also removes the import table calls for some often called compiler magic functions. Another new function of DelphiSpeedUp is that the SetThreadPriority(HIGHEST) call from the .NET framework is ignored. It is now possible to start other applications while the IDE starts without the feeling that something blocks the whole computer. (Why on earth must the .NET framework "steal" CPU time?)

    MySQL Falcon Storage Engine Open Sourced - on /.

    From the Sweet Mother of Databases dept.:The code for the Falcon Storage Engine for MySQL has been released as open source. Jim Starkey, known as the father of Interbase, is behind its creation; previously he was involved with the Firebird SQL database project.

    article on slashdot via

    Firebird 1.5.4 Release Candidate 1

    Pre-release builds of a release candidate for Firebird 1.5.4 are ready for testing.