summaryrefslogtreecommitdiff
path: root/dev-perl/DBD-InterBase/files/DBD-InterBase-0.46-column_info.patch
Unidiff
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 @@
1diff --git a/InterBase.pm b/InterBase.pm
2index bdd041e..f615cad 100644
3--- a/InterBase.pm
4+++ b/InterBase.pm
5@@ -210,6 +210,55 @@ sub table_info
6
7 return $sth;
8 }
9+
10+sub column_info
11+{
12+ my $dbh = shift;
13+ my ($catalog,$schema,$table,$column) = (@_);
14+ my (@search)=();
15+ if(defined($table) && length($table)) {
16 +push @search, "r.rdb\$relation_name ". ($table =~ /[_%]/ ? "LIKE " : "= ") .$dbh->quote($table);
17+ }
18+ if(defined($column) && length($column)) {
19 +push @search, "rf.rdb\$field_name ". ($column =~ /[_%]/ ? "LIKE " : "= ") .$dbh->quote($column);
20+ }
21+ my $wherefilter = join ' AND ','',@search;
22+ my $sql = qq!
23 + SELECT
24 + NULL TABLE_CAT,
25 + r.rdb\$owner_name TABLE_SCHEM,
26 + r.rdb\$relation_nameTABLE_NAME,
27 + rf.rdb\$field_nameCOLUMN_NAME,
28 + t.rdb\$type_name DATA_TYPE,
29 + t.rdb\$type_name TYPE_NAME,
30 + f.rdb\$character_lengthCOLUMN_SIZE,
31 + f.rdb\$field_lengthBUFFER_LENGTH,
32 + NULL DECIMAL_DIGITS,
33 + NULL NUM_PREC_RADIX,
34 + rf.rdb\$null_flag NULLABLE,
35 + rf.rdb\$descriptionREMARKS,
36 + rf.rdb\$default_valueCOLUMN_DEF,
37 + t.rdb\$type_name SQL_DATA_TYPE,
38 + NULL SQL_DATETIME_SUB,
39 + f.rdb\$field_lengthCHAR_OCTET_LENGTH,
40 + rf.rdb\$field_positionORDINAL_POSITION,
41 + rf.rdb\$null_flag IS_NULLABLE
42 + FROM
43 + rdb\$relations r
44 + JOIN rdb\$relation_fields rf ON (r.rdb\$relation_name=rf.rdb\$relation_name)
45 + JOIN rdb\$fields f ON (rf.rdb\$field_source=f.rdb\$field_name)
46 + JOIN rdb\$types t ON (f.rdb\$field_type=t.rdb\$type)
47 + WHERE
48 + ((r.rdb\$system_flag=0) OR (r.rdb\$system_flag IS NULL)) AND (r.rdb\$view_source IS NULL)
49 + $wherefilter
50 + ORDER BY r.rdb\$owner_name, r.rdb\$relation_name, rf.rdb\$field_position
51+ !;
52+#print "[[$sql]]";
53+ my $sth = $dbh->prepare($sql);
54+ $sth->execute() or return undef;
55+
56+ return $sth;
57+}
58
59 sub ping
60 {