We are trying to use Perl/DBI running on W2K to access UniVerse data stored on an AIX 
machine. We are using the UV ODBC drivers and have created a DSN to access the 
UniVerse data. We have no problem connecting to the database or running queries via 
perl/dbi, except that the fetchrow_array() stops when it reaches a row with a column 
with more than 26 characters. Once we set $dbh->{LongTruncOk} = 1; the 
fetchrow_array() processes all rows, but all columns are truncated to 26 chars. While 
we didn't think it relevant (the columns appear as varchar(255), not blobs or text), 
we set the $dbh->{LongReadLen} = 256 and found no change in effect.

With the dbi trace on we find that once the select is processed there are 2 sets of 
definition for the columns, the columns are correctly defined as varchars with a 
length of 254, but they have a second definition with a maxlen = 26 (dbi trace below):

  dbd_describe sql 31661464: num_fields=3
  col 1: VARCHAR len=254 disp= 26, prec=254 scale=0
  col 2: VARCHAR len=254 disp= 26, prec=254 scale=0
  col 3: VARCHAR len=254 disp= 26, prec=254 scale=0
  col 1: 'ADDR1' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=26
  col 2: 'MAIL_ADDR1' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=26
  col 3: 'MAIL_CSZ' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=26

Using the same ODBC DSN and running queries using the BrioQuery tool, we get no 
problems. We turned ODBC tracing and found that the connection and the select 
processing look different in the ODBC logs, via Brio there is no 2nd column definition 
with the maxlen=26 restriction.

We assume Perl/DBI is getting the maxlen from the UniVerse database but don't know how 
to fix the problem.

Thanks in advance for any help.

Regards,
Roger

Reply via email to