summaryrefslogtreecommitdiff
path: root/dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch
Side-by-side diff
Diffstat (limited to 'dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch') (more/less context) (ignore whitespace changes)
-rw-r--r--dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch b/dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch
new file mode 100644
index 0000000..17e9d5a
--- a/dev/null
+++ b/dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch
@@ -0,0 +1,60 @@
+diff --git a/InterBase.pm b/InterBase.pm
+index bdd041e..f615cad 100644
+--- a/InterBase.pm
++++ b/InterBase.pm
+@@ -210,6 +210,55 @@ sub table_info
+
+ return $sth;
+ }
++
++sub column_info
++{
++ my $dbh = shift;
++ my ($catalog,$schema,$table,$column) = (@_);
++ my (@search)=();
++ if(defined($table) && length($table)) {
++ push @search, "r.rdb\$relation_name ". ($table =~ /[_%]/ ? "LIKE " : "= ") .$dbh->quote($table);
++ }
++ if(defined($column) && length($column)) {
++ push @search, "rf.rdb\$field_name ". ($column =~ /[_%]/ ? "LIKE " : "= ") .$dbh->quote($column);
++ }
++ my $wherefilter = join ' AND ','',@search;
++ my $sql = qq!
++ SELECT
++ NULL TABLE_CAT,
++ r.rdb\$owner_name TABLE_SCHEM,
++ r.rdb\$relation_name TABLE_NAME,
++ rf.rdb\$field_name COLUMN_NAME,
++ t.rdb\$type_name DATA_TYPE,
++ t.rdb\$type_name TYPE_NAME,
++ f.rdb\$character_length COLUMN_SIZE,
++ f.rdb\$field_length BUFFER_LENGTH,
++ NULL DECIMAL_DIGITS,
++ NULL NUM_PREC_RADIX,
++ rf.rdb\$null_flag NULLABLE,
++ rf.rdb\$description REMARKS,
++ rf.rdb\$default_value COLUMN_DEF,
++ t.rdb\$type_name SQL_DATA_TYPE,
++ NULL SQL_DATETIME_SUB,
++ f.rdb\$field_length CHAR_OCTET_LENGTH,
++ rf.rdb\$field_position ORDINAL_POSITION,
++ rf.rdb\$null_flag IS_NULLABLE
++ FROM
++ rdb\$relations r
++ JOIN rdb\$relation_fields rf ON (r.rdb\$relation_name=rf.rdb\$relation_name)
++ JOIN rdb\$fields f ON (rf.rdb\$field_source=f.rdb\$field_name)
++ JOIN rdb\$types t ON (f.rdb\$field_type=t.rdb\$type)
++ WHERE
++ ((r.rdb\$system_flag=0) OR (r.rdb\$system_flag IS NULL)) AND (r.rdb\$view_source IS NULL)
++ $wherefilter
++ ORDER BY r.rdb\$owner_name, r.rdb\$relation_name, rf.rdb\$field_position
++ !;
++#print "[[$sql]]";
++ my $sth = $dbh->prepare($sql);
++ $sth->execute() or return undef;
++
++ return $sth;
++}
+
+ sub ping
+ {