Subject | Re: [Firebird-Architect] Flowchart |
---|---|
Author | Ann W. Harrison |
Post date | 2006-04-24T18:23:29Z |
Jason Dodson wrote:
makes it a challenge to flow chart. Essentially, there's DSQL,
which is on the outside. It generates blr and goes into the engine.
Then there's the blr parser, then the request compiler, then the
optimizer. At that point, you've got at tree of execution blocks
for the statement. From there, you go to the execution layer,
which gets data from VIO (virtual I/0) which gets bits of records
from DPM (data page manager) which gets pages from CCH (cache
manager) which reads and writes pages through PIO (physical I/O).
Specialized subsystems include blb for blob handling, lck and
lock for lock management, sort, tra for transactions, ini for
initialization, sbm for sparse bitmaps, and many others. Intl
is a starting point for internationalization.
Index definitions are in idx, index maniuplation is in btr
(btree handling) and nav (navigational access).
The DSQL layer and the inner engine each have metadata caches.
Most metadata changes go through DSQL, then dyn, then VIO which
lists some changes for action on commit, met that does primary
metadata handling, and dfw (deferred work) which does the
commit actions.
It's a start, though not much. Going beyond that level gets
really complicated.
Regards,
Ann
> Is there any reasonable flow chart of the Firebird code... of any kind... for any version?No. I made a couple of starts at it, but the recursive behavior
>
makes it a challenge to flow chart. Essentially, there's DSQL,
which is on the outside. It generates blr and goes into the engine.
Then there's the blr parser, then the request compiler, then the
optimizer. At that point, you've got at tree of execution blocks
for the statement. From there, you go to the execution layer,
which gets data from VIO (virtual I/0) which gets bits of records
from DPM (data page manager) which gets pages from CCH (cache
manager) which reads and writes pages through PIO (physical I/O).
Specialized subsystems include blb for blob handling, lck and
lock for lock management, sort, tra for transactions, ini for
initialization, sbm for sparse bitmaps, and many others. Intl
is a starting point for internationalization.
Index definitions are in idx, index maniuplation is in btr
(btree handling) and nav (navigational access).
The DSQL layer and the inner engine each have metadata caches.
Most metadata changes go through DSQL, then dyn, then VIO which
lists some changes for action on commit, met that does primary
metadata handling, and dfw (deferred work) which does the
commit actions.
It's a start, though not much. Going beyond that level gets
really complicated.
Regards,
Ann