A cut out and keep guide to the Firebird source code

By Ann Harrison and Paul Beach.

This document is a rough guide to the Firebird code tree. Parts of that code tree build the Firebird Server, parts build utilities, and parts provide additional elements of the Firebird kit, and a certain number of parts don't contribute anything, being specific to environments that no longer exist. In traditional ISC terminology, a component is equivalent to a directory and contains a number of related source and header files. Some components are independent programs, some are subsystems in a larger entity, and some are both. Within a component, the individual source files are called modules. Within a module, the individual functions are called routines and reference structures called blocks.

The major component of the server is JRD. Other components used exclusively in the server and client interfaces are DSQL, INTL, LOCK, UTILITIES, REMOTE, and WAL. Both LOCK and UTILITIES contain additional code that builds utilities to analyze the lock table and database contents, respectively. In addition, the components ALICE and BURP can be built either as part of the server, or standalone. The PYXIS and JOURNAL components are obsolete.

And the various tools are located in the following components:

Module names, TLAs, CFLAs, and other acronyms defined, by source directory structure, starting at the core of the engine (/JRD) and working outward.

back to top of page

/JRD

Jim's Relational Database with reference to original author.

back to top of page

/LOCK

Code for handling the lock table

/ALICE

GFIX

back to top of page

/BURP

GBAK BackUp and Restore Program.

/CSV

Central SerVer Precursor to Superserver. (Can be confusing, since another well known meaning is Comma Separated Values.)

back to top of page

/DSQL

(/DSQL) Dynamic Sequel Query Language.

back to top of page

/DUDLEY

(/DUDLEY) GDEF - old fashioned data definition language processor.

/EXAMPLE4, /EXAMPLE5, /EXAMPLES

Directories of examples & databases.

/EXTLIB

Modules for building the default UDF library.

back to top of page

/GPRE

Pre-compiler, pre-processor. Converts ESQL to its destination language (e.g. 'C').

back to top of page

/INTL

Depending on context, either International (i.e. I18n) or Internal (as in Internal Work/Release).

/IPSERVER

Single client TCP/IP server.

/ISCGUARD

Guardian process to restart server as necessary.

back to top of page

/ISQL

/JOURNAL

Journalling, the version before the most recently abandonned effort.

back to top of page

/MSGS

Stuff for managing the message database.

/PIPE

Ancient configuration for systems that didn't handle shared libraries.

back to top of page

/PYXIS

Archaic forms package.

back to top of page

/QLI

Query Language Interpreter that preceded the ISQL utility.

back to top of page

/REMOTE

The remote interface to access databases on a remote system. This includes all the platform/transport specific code. For each, there is a server side and a client side.

back to top of page

/UTILITIES

back to top of page

/WAL

Write Ahead Log, second failed attempt (after journaling).

back to top of page

Other useful definitions

This paper was written by Ann Harrison and Paul Beach in October 2001, and is copyright Ann Harrison, Paul Beach and IBPhoenix Inc. You may republish it verbatim, including this notation. You may update, correct, or expand the material, provided that you include a notation that the original work was produced by Ann Harrison, Paul Beach and IBPhoenix Inc.