Subject | Database Capabilities |
---|---|
Author | Jim Starkey |
Post date | 2005-07-21T15:34:06Z |
Firebird apparently has no mechanism to report what features and levels
are supported by the database engine. There is a version identification
string, which is at best a poor substitute, requiring both a problematic
parse and a knowledge of what features are associated with which versions.
I suggest we consider a more civilized approach. The obvious mechanism
is a database info item as that mechanism already exists and was
designed for extensibility.
To get the ball rolling, I suggest we add a new database info item,
fb_info_capabilities, that returns a byte vector of know capabilities.
Each capability, in turn, would be assigned a fixed index into the
vector. A byte of value zero or an vector shorted than an index means
the capability isn't present in the database engine or access path
(transmission layers get to tweak the info item on the way back to the
client). If the capability byte is present and non-zero, its value
indicates a capability "level" (or flags) that is necessarily
capability specific.
If we don't need level, we could drop back to simple flags, reducing the
length of the vector, but my gut says a byte of stuff about the feature
will be useful in the future.
--
Jim Starkey
Netfrastructure, Inc.
978 526-1376
are supported by the database engine. There is a version identification
string, which is at best a poor substitute, requiring both a problematic
parse and a knowledge of what features are associated with which versions.
I suggest we consider a more civilized approach. The obvious mechanism
is a database info item as that mechanism already exists and was
designed for extensibility.
To get the ball rolling, I suggest we add a new database info item,
fb_info_capabilities, that returns a byte vector of know capabilities.
Each capability, in turn, would be assigned a fixed index into the
vector. A byte of value zero or an vector shorted than an index means
the capability isn't present in the database engine or access path
(transmission layers get to tweak the info item on the way back to the
client). If the capability byte is present and non-zero, its value
indicates a capability "level" (or flags) that is necessarily
capability specific.
If we don't need level, we could drop back to simple flags, reducing the
length of the vector, but my gut says a byte of stuff about the feature
will be useful in the future.
--
Jim Starkey
Netfrastructure, Inc.
978 526-1376