AIF, aif.c: MPE/XL Architected Interface Facility. MPE/XL was an HP operating system, “almost like Unix - but not quite” and now called HP/IX. Referenced in the build but never used.
AIL, ail.c: After Image Log, part of the
Write Ahead Log. Not used but carried along.
ALIGN, align.c: Program stored in /JRD that determines the alignment and byte ordering rules for a platform.
ALL, all.c: Memory allocation routines. Used to allocate and deallocate data structures. Also manages the pool mechanism. Should really be renamed to ALLOC. It has relatives called ALLD (allocate in
DSQL), ALLR (allocate in
REMOTE) ALLI (allocate in
IPSERVER), ALLQ (allocate in
QLI (/QLI)).
ALT, alt.c: An ALTernative entry points. Over time, the prefix used for InterBase® external entry points has varied from gds_$ to gds__ to isc_. This is a translator for the “router” WHY. These start with isc_.
BKM, bkm.c: Bookmark. Part of the Dbase emulation code that placed markers in a record stream so the program could return directly to a point.
BLB, blb.c: Internal
Blob handling routines for the storage and retrieval of blobs.
BLF, blf.e, blf.c: Blob filter driver. Handles blob filters, if a blob filter for a blob then the blob is filtered through it. Contains therefore the code that handles the transformation of one blob type to another, possibly indirectly.
BLK blk.c: Block, the parent class of all the volatile storage handled by the various ALL modules. Blocks have a header which helps the system reuse them efficiently. Firebird has hundreds of block types, all essentially child classes of the parent block.
-
Blrtable.c: BLR to internal conversion table
generator.
BTR, btr.c: B-Tree Manager, handles the storing and updating of
index nodes and the other inner mechanisms of indexes.
BUILTIN, builtin.c: Entry points for poisonous built-in QA routines. Deprecated.
CCH, cch.c: Cache management code. Handles fetching and writing pages to disk. Handles database pages being maintained in memory for efficiency.
CMP, cmp.c: Request compiler, compiles a database request, which turns the relation BLR into executable blocks (aka nodes).
CODES, codes.e, codes.c: An independent program that creates a number of header files from the message database.
CVT, cvt.c: Converts (and moves) data from one
type and location to another type or location.
CVT2, cvt2.c: The second half of CVT. It just got too big and messy.
DBG, dbg.c: Debugging code.
DBT, dbt.c: Templates for block printer included for debugging.
DFLOAT, dfloat_stub.c: The early VAX version of double precision float.
DFW, dfw.e: Deferred work. Operations on
metadata objects (CREATE TABLE, ALTER TABLE, etc.) are completed when their transaction commits. This module catches and completes the work.
DLS, dls.c: Directory list services. Temporary files can be allocated in a number of directories. This module manages the list of directories for temporary files.
DMP, dmp.c: Page dump routine, part of the debugging subsystem.
DPM, dpm.e, dpm.c: Data Page Manager. Part of the I/O system that handles storing records on pages and retrieving records from pages. It sits between
CCH (which gets and puts pages) and
VIO.
DSC, dsc.c: Data elements (e.g.
field values) are passed interally through blocks called descriptors which include a pointer to the data, its type, size, scale, subtype, and a null flag. This module handles descriptors.
DYN, dyn.e, dyn_def(ine).e, dyn_del(elete).e, dyn_mod(ify).e, dyn_util(ility).e: Originally when data defintion was done through direct system table updates. That turned out to be more complicated than anyone could deal with so a set of calls was added to create “higher level” data definition calls. “Static” data definition was handled through
gdef which did direct system table updates. More modern utilities used dyn as a more dynamic way of updating metadata.
ENC, enc.c: Encryption routines. Cribbed from BSD.
ENVELOPE, envelope.e, envelope.c: Envelope generator, used at one time to create function declarations under various operating environments. Long since abandoned.
ERR, err.c: Generalized error handler for error processing, logging, etc.
EVENT, event.c: Event manager, implements database events, event registration, passing notification etc.
EVL, evl.c: Expression evaluation, part of the runtime environment. EVL takes an execution node (block) and produces its result. It adds, subtracts, compares etc, relying on CVT to produce comparable elements. It also evaluates more complex nodes l ike RSB's (Record Selection Blocks)
EXE, exe.c: Statement execution. “Runs” a database request doing the work specified. In this case, a “statement” corresponds to a call in the low-level
API that fetches data or changes the state of the data in the database.
EXT, ext.c: External table access for flat files.
EXTVMS, extvms.c: External file access for VAX/VMS RMS files, supported sequential and ISAM files.
FILTERS, fliters.c: Built-in
Blob filters to create human readable versions of the system table blobs.
FLU, flu.c: Function Lookup. Used to dynamically look up
UDF and blob filters.
FUN, fun.e, fun.c: Sorry, no fun at all. Function lookup mechanism. Handles external user-defined functions.
GDS, (Groton Database Systems, precursor to the slightly better named Interbase Software Corporation) gds.c: General purpose routines available to client programs that convert internal date formats to C tm structures, handle error reporting, and those used by
GPRE to make pre-processing an embedded program easier etc.
GDWEP, gdswep.c: WEP stands (I think) for Windows Exit P. It's a required routine for windows (not win32) libraries to allow cleanup.
GRAMMAR, grammar.y, grammar.c, jlex.c: Part of the debugging code, probably quite neglected.
GRANT, grant.e, grant.c: Processes a SQL
GRANT statement.
IBSTDIO, ib_stdio.c: Generally just a wrapper for standard I/O. On Solaris, it's the BSD standard io package. Solaris uses an eight bit file descriptor which really makes opening a lot of TCP connections difficult. This affects only buffered I/O.
IBERR, iberr.c, iberr.h: Code for managing the status vector, including two really spectacular macros.
IBINITDLL, ibinitdll.c: Win32 dll initialization routine.
IDX, idx.c: Index manager, updates indices to reflect which new records have been stored, or which records have been updated.
INF, inf.c: Information handler. Gathers information for gds_database_info() calls about database usage.
INI, ini.e, ini.c: Metadata initialization / population. Initializes an empty database and creates all the system tables.
INTL, intl.c: The code that calls the routines in the internationalization dlls. The actual code that handles a collating sequence or character set is in a separate dll. This module invokes the dll.
INUSE, inuse.c: INUSE marks objects (mutexes, rw_locks, and pages in cache) as in use and cleans up on thread switch.
ISC, isc.c: General purpose utilities that provide functions for the server like setting and clearing AST mode and reading the configuration file.
ISC_FILE, isc_file.c: Originally part of isc.c which became obese. This module contains routines that analyze filenames to avoid accidentally opening the same file twice, thinking it's two different databases, as well as other file services.
ISC_IPC, isc_ipc.c: Similar to ISC_FILE, but focused on issues of interprocess communication.
ISC_SYNC, isc_sync.c: Again, similar to ISC_FILE, but focused on process synchronization. ISC, ISC_FILE, ISC_IPC, and ISC_SYNC are all heavily conditionalized on operating system and might make more sense as something more like PIO, split by environment, not function.
JIO, jio.c: Journal I/O used to physically write to a pre
WAL journal file.
JRD, jrd.c: Holds the entry points for local database access.
JRN, jrn.c: Journal handling (pre 4.0 and WAL), contains routines for logically putting records into a journal, see
/JOURNAL component.
LAN, lan.c: gethostname for
OS/2.
LCK, lck.c: Lock handler, contains high level routines for handling locks and interfaces with the real LOCK manager found in the
/LOCK component.
LLIO, llio.c: Low level I/O for the WAL.
LOG, log.c: Logging facility for REPLAY, logs database calls and all their arguments, so a problem can be recreated in detail.
LOITER, loiter.c: LOITER_loiter yields control to the Windows non-pre-emptive “operating system.” It returns TRUE if the calling function is to continue its processing, and FALSE if the calling function is to break out of what-ever it was doing and return to the master executable.
MAP, map.c: Data type mapper, matches internal data types with external. E.g maps RDB data types to InterBase® data types.
MATH, math.c: Floating point operations which are explicitly performed outside the module in which they are requested. This allows us to place a stack switching layer in order to guarantee that the EXE stack is in effect at the time the floating point operations are performed. This is necessary for the floating point co-processor to handle floating point errors correctly (instead of GPFing). Obsolete.
MBLR, mblr.c: Maps MBLR commands to DYN commands. MBLR is the metadata update language used by Rdb.
MEM, mem.c: memcmp, memcpy, memset - emulations for systems that don't have them.
MET, met.e, met.c: Metadata handling, fetches and caches current metadata, and performs the required maintenance tasks when metatdata is being modified.
MISC, misc.c: Internal service routines - pop and push, plus mktemp for netware.
MOV, mov.c: moves data around, primarily by calling cvt.c.
NAV, nav.c: Navigational index retrieval.
NOD, nod.h: Node types.
NODEBUG, nodebug.c: Non-debugging place holder for debugging routines.
OLD, old.c: On Line Dump for starting the WAL journalling system.
OPT, opt.c: Request optimizer. Evaluates an expanded parse tree against current indices etc. and attempts to produce an optimal access method for a given query.
PAG, pag.c: Page level formatting.
PAR, par.c: BLR parser - generates tree structure of node blocks.
PCMET, pcmet.e, pcmet.c: Code for handling the dBase emulation metadata - things like expression indexes…
PCSLEEP, pcsleep.c: With a call to sleep, the current program is suspended from execution for the number of seconds specified by the argument seconds. The interval is only accurate to the nearest hundredth of a second, or the accuracy of the MS-DOS clock, whichever is less accurate.
PERF, perf.c: Interface to performance monitoring tools.
PIO, pio.h, apollo.c, mpexl.c, unix.c, vms.c windows.c, winnt.c: Physical I/O, with a module for each type of operating system, used to physically read and write database pages to disk. Other types of I/O (e.g. journalling, sort temporary files, etc.) are handled in other routines. Because Unix I/O is quite consistent, unix.c handles all of them.
PRINT, print.c: Program to print the event table.
PWD, pwd.c: Password database handling.
QATEST, qatest.c: “Built in” UDF's for destructive testing.
QUAD, quad.c: Quad word emulation routines, all of which return errors except compare.
RDB, rdb.c, rdbint.c, rdbgpas.c: RDB Relational Database, after DEC's Rdb/VMS, a precursor to InterBase®, now owned by Oracle. InterBase® did support a direct interface/bridge to it via OSRI (Jim's Open Standard Relational Interface), a superset of
DSRI (Digital Standard Relational Interface).
REC, rec.c: Recovery code for WAL.
RLCK, rlck.c: Record and relation locking.
RNG, rng.c: Refresh range handling for dBase emulation.
RSE, rse.c: Request Select Expression, this handles record stream retrieval and takes a RSB as input and produces a stream of records.
SBM, sbm.c: Sparse Bit Map handling, when records are accessed via an index, the RSE generates a sparse bitmap to indicate which records should be retrieved.
SCH, sch.c: SCH Voluntary thread scheduler for cooperative threading. Controls the running of threads in the database.
SCL, scl.e, scl.c: Performs security checks, compares the operation being performed with the access permissions that a user has on an object in the database.
SDL, sdl.c: Parses Slice Description Language, the
array slice manipulator.
SDW, sdw.c: Handles database shadowing.
SEG, seg.c: Segmented memory mover.
SHRFINIT, shrfinit.c: Imported symbol initialization for shared UDF library.
SHRINIT, shrinit.c: Imported symbol initialization for shared library.
SORT, sort.c: Record sorting. Physically sorts a table for ORDER BY, DISTINCT, GROUP BY, and MERGE SORT, writing intermediate runs to disk if necessary.
SQZ, sqz.c: Compression and decompression of records.
STATS, stats.e, stats.c: Record statistics manager.
STUBS, stubs.c: emulate gethostid.
SVC, svc.c: Interface to the services
API - access to various stuff.
SYM, sym.c: Symbol table, inserts objects in a symbol table and retrieves them.
THD, thd.c: Thread handling functions. Could also be pronounced “thud”, but then takes on quite a different meaning.
-
TRA, tra.c: Transaction handling.
UTL, utl.c: Utilities for blob handling.
UTLSWEP, utlswep.c: Windows DDL cleanup.
VAL, val.c: Validates a database, does
garbage collection of unused database pages, orphaned records and fragments.
VIO, vio.c: Virtual I/O manager, Does record manipulation things like retrieving and storing records, expanding back records, garbage collection etc.
VMSEVENT, vmsevent.c: Events are handled like locks, so they too need a separate VMS incarnation.
VMSLOCK, vmslock.c: Interface to the VMS Lock Manager. On VAX/VMS InterBase® used the Operating System Lock Manager rather than its own.
WHY why.c: Universal Y-valve. Obvious, isn't it? It's like a router. When you attach to a database InterBase® must decide which interface it will use to connect to the database. If the database is remote, then the remote interface is used, if it is local a number of other options are available. When a gds_attach_database call comes in the Y-valve calls a number of subsystems in an attempt to attach to the database. If a filename is passed and represents a database that a subsystem can open then the attachment will be successful. Current subsystems (entry points) are: JRD8, JRD5, REMOTE, CSI, RDB, PSI, PSI5 and IPI.
WINDOWS, windows.c: PIO (physical I/O) routines for 16 bit Windows.
WINNT, winnt.c: PIO (physical I/O) routines for Windows NT & WIN2K & Windows9x.