dbi-link questions + patch

From: Filip Rembiałkowski <filip(dot)rembialkowski(at)eo(dot)pl>
To: dbi-link-general(at)pgfoundry(dot)org, pgsql-general(at)postgresql(dot)org
Subject: dbi-link questions + patch
Date: 2006-09-27 13:50:46
Message-ID: 451A81B6.7050101@eo.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all :)

first, sorry for crossposting but dbilink mailinglist is extremely low traffic
so I decided to mail this also to pgsql-general

I'm looking for a solution that gives PostgreSQL "remote server" aka "proxy
tables" functionality.

We're trying here to evaluate dbi-link, and have some problems.
I got version 1.0.0 from PgFoundry.

First I had to do some fixes to make it install on PostgreSQL 8.1 with Perl
5.8.8 (the patch is below).
but then I also had some problems.

question 1)

-- PREPARATION (stripped output/diagnostic messages):
pgdba=# CREATE DATABASE local;
pgdba=# CREATE DATABASE remote;
pgdba=# \c remote
remote=# CREATE TABLE tab1(id bigserial, data text);
remote=# insert into tab1(data) values('AAA');
remote=# \c local
local=# CREATE LANGUAGE 'plperlu';
local=# \i dbi_link.sql
local=# SELECT dbi_link.make_accessor_functions(
local-# 'dbi:Pg:dbname=remote;host=localhost;port=5810', 'pgdba',
local-# NULL, '{AutoCommit => 1, RaiseError => 1}', 'public', NULL, remote');

-- TEST 1
local=# select * from remote.tab1;
NOTICE: Connected to database
NOTICE: sql is
COMMENT ON COLUMN tab1_rowtype.id IS 23361
bigint
23361

id | data
----+------
1 | AAA
(1 row)
------------- it is OK but... why these NOTICEs? is it normal behaviour?

-- TEST 2
local=# insert into remote.tab1(data) values('BBB');
ERROR: error from Perl trigger function: column "ad" does not exist at line 28.
------------- it is definitely not OK. what could be the problem here?

question 2)
why is DBI-Link marked as "stable" on PgFoundry?
if it does not even work out-of-the-box, it is not mature yet.
maybe it should be "beta"?

question 3)
did anyone try to establish DBI-Link between UTF8 encoded database and non-UTF8
encoded database? i'm asking because i got:
utf8db=# select count(*) from remotelatin2db.dict01;
(...)
ERROR: invalid UTF-8 byte sequence detected near byte 0xf3

question 4) could anyone please suggest some software that gives similar
functionality (and works)?

regards && thanks for your time
Filip

dbi-link-1.0.0 patch begin.

diff -Naur dbi-link-1.0.0/make_connection.sql dbi-link-1.0.0.1/make_connection.sql
--- dbi-link-1.0.0/make_connection.sql 2005-01-26 09:47:11.000000000 +0100
+++ dbi-link-1.0.0.1/make_connection.sql 2006-09-27 13:12:14.000000000 +0200
@@ -36,7 +36,7 @@
, db_password => $db_password
);

-return TRUE;
+return 'TRUE';

sub check_connection {
my %parms = (
diff -Naur dbi-link-1.0.0/remote_query.sql dbi-link-1.0.0.1/remote_query.sql
--- dbi-link-1.0.0/remote_query.sql 2005-01-26 09:47:11.000000000 +0100
+++ dbi-link-1.0.0.1/remote_query.sql 2006-09-27 13:15:12.000000000 +0200
@@ -164,7 +164,7 @@
FROM dbi_link.dbi_connection
WHERE ad = $data_source_id
SQL
-my ($data_source, $user, $auth, $dbh_attr);
+my ($data_source, $user_name, $auth, $dbh_attr);
my $driver_there = spi_exec_query($dtsql);
my $nrows = $driver_there->{processed};
if ($nrows == 0) {
@@ -260,6 +260,8 @@
RETURNS TRIGGER
LANGUAGE plperlu
AS $$
+our %_TD;
+my $user_name;
#####################################################
# #
# Immediately reject anything that's not an INSERT. #
@@ -371,7 +373,7 @@
INSERT INTO $table (
@{[join("\n, ", sort keys %$new) ]}
) VALUES (
- @{[join("\n, ", { $new->{$_} } sort keys %$new) ]}
+ @{[join("\n, ", map { $new->{$_} } sort keys %$new) ]}
)
SQL
my $sth = $dbh->prepare($sql);
@@ -379,7 +381,7 @@
}

sub update {
- my $table = $_TD{relname}
+ my $table = $_TD{relname};
my $sql = <<SQL;
UPDATE $table
SET
@@ -400,7 +402,7 @@
}

sub delete {
- my $table = $_TD{relname}
+ my $table = $_TD{relname};
my $sql = <<SQL;
DELETE FROM $table
WHERE

dbi-link-1.0.0 patch end.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jim Nasby 2006-09-27 14:14:20 Re: Documenting stored procedures and functions
Previous Message Martijn van Oosterhout 2006-09-27 12:23:39 Re: Insert/select union bug