DBD::F...::Basic(3pm)
π DBD::Firebird::TableInfo::Basic β ok bestie, let's get into it π
So you're reading DBD::F...::Basic(3pm), which lives in the β¨ User Contributed Perl Documentation β¨ pile. And what we have here is DBD::Firebird::TableInfo::Basic β a whole base class, and it's giving "lowest-common denominator Firebird table_info() querying." Like, it handles the absolute basics that every Firebird-ish thing agrees on, and you build the rest on top. Main character energy fr. π
πΈ NAME πΈ
DBD::Firebird::TableInfo::Basic β a base class for lowest-common denominator Firebird table_info() querying. That's it, that's the whole vibe. π¦
β¨ SYNOPSIS β¨
Like, here's how you'd actually use it, bestie. Say you wanna add support for some hypothetical IB derivative:
# Add support for a hypothetical IB derivative
package DBD::Firebird::TableInfo::HypotheticalIBDerivative
@ISA = qw(DBD::Firebird::TableInfo::Basic);
# What table types are supported?
sub supported_types {
('SYSTEM TABLE', 'TABLE', 'VIEW', 'SPECIAL TABLE TYPE');
}
sub table_info {
my ($self, $dbh, $table, @types) = @_;
}
See what's happening? You inherit, you declare your types, you handle table_info, and you're slaying. π
π INTERFACE π
Okay so here's every method, one by one, no skipping, I promised. pinky promise π«Ά
list_catalogs π«
$ti->list_catalogs($dbh); # $dbh->table_info('%', '', '')
You call this and you get back a statement handle with an empty result set. Why empty? Because IB literally does not support the DBI concept of catalogs, babe. Nothing to see here. (Rule 19a) π
list_schema π
$ti->list_schema($dbh); # $dbh->table_info('', '%', '')
Same situation, different noun: returns a statement handle with an empty result set, because IB does not support the DBI concept of schema either. (Rule 19b) ibidi-ibi, that's just how it is. π
list_tables π₯
$ti->list_tables($dbh, $table, @types); # $dbh->table_info('', '',
# 'FOO%',
# 'TABLE,VIEW');
This one gets called in response to $dbh->table_info($cat, $schem, $table, $types). And heads up β $cat and $schem are, like, presently ignored. Not their era. π
This is the workhorse method. It's the one that has to return an appropriate statement handle of tables given the requested $table pattern and @types. And real talk:
- A blank
$tablepattern means "any table" - An empty
@typeslist means "any type"
@types is a list of user-supplied, requested types, and "DBD::Firebird::db::table_info" will normalize the user-supplied types for you β stripping quote marks, uppercasing, and removing duplicates. It's giving personal assistant. π
list_types π
$tbl_info->list_types($dbh); # $dbh->table_info('', '', '', '%')
Called in response to $dbh->table_info('', '', '', '%'), and it returns a statement handle with a TABLE_TYPE column populated with the results of supported_types. (Rule 19c) β
Btw bestie, you normally do not override this one. Override supported_types instead. That's the move.
supported_types π
$tbl_info->supported_types($dbh);
Returns a list of supported DBI TABLE_TYPE entries. The default implementation supports 'TABLE', 'SYSTEM TABLE' and 'VIEW'. π«Ά
And guess what β this method is called by the default implementation of "list_types". They're a package deal, iykyk. π§
π¦ the sign-off, mwah π¦
That's the whole page, bestie, we ate and left no crumbs. π This lovely little doc is perl v5.42.3, dated 2026-08-20, and it's still filed under DBD::F...::Basic(3pm). Go forth and table_info() responsibly. πβ¨π
π¦ where this page comes from
- ubuntu stonking: libdbd-firebird-perl 1.39-2build1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms