[erlang-bugs] ODBC problem: varchar column contents truncated to 255 chars
Laura M. Castro
lcastro@REDACTED
Fri Apr 15 17:31:40 CEST 2011
Hello,
When accessing a data source using the ODBC application, retrieved
contents of columns with type 'varchar' are truncated to 255 chars.
Here's an example:
PostgreSQL table 'prueba':
postgres=# \d prueba
Table "public.prueba"
Column | Type | Modifiers
-------------+-------------------+-----------
oid | integer |
description | character varying |
Table 'prueba' contains a single row, which 'description' field is
300 chars long:
postgres=# select * from prueba;
oid |
description
-----+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(1 row)
But when the field is retrieved using Erlang+ODBC, only 255 chars
are returned:
Erlang R14A (erts-5.8) [source] [64-bit] [smp:4:4] [rq:4]
[async-threads:0] [kernel-poll:false]
Eshell V5.8 (abort with ^G)
1> application:start(odbc).
ok
2> {ok,C}=odbc:connect("DSN=postgres",[]).
{ok,<0.39.0>}
3> {selected, Columns, [{ID, LongString}]} = odbc:sql_query(C, "SELECT
* FROM prueba").
{selected,["oid","description"],
[{3,
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]}
4> length(LongString).
255
Accessing the same data source using other tools that also use the
underlying ODBC driver (unixODBC), such as Squirrel-SQL or OpenOffice
Base, data is retrieved correctly.
I have reproduced this behaviour on the following environments:
Debian GNU/Linux 2.6.38-2-amd64 #1 SMP x86_64 GNU/Linux
Erlang R14A (SMP,ASYNC_THREADS) (BEAM) emulator version 5.8
unixODBC 2.2.14p2-2
Ubuntu GNU/Linux 2.6.35-28-generic #49-Ubuntu SMP x86_64 GNU/Linux
Erlang R13B03 (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 5.7.4
unixODBC 2.2.14p2-1ubuntu1
Red Hat Linux 5 2.6.18-164.el5 #1 SMP i686 i386 GNU/Linux
Erlang R12B-5.6.el5.1 (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.6.5
unixODBC 2.2.11-7.1
Red Hat Linux 2.6.18-194.11.1.el5 #1 SMP i686 i386 GNU/Linux
Erlang R12B-5.6.el5.1 (THREADS,HIPE) (BEAM) emulator version 5.4.9
unixODBC 2.2.11-7.1
--
Laura M. Castro
Department of Computer Science
University of A Coruña
http://www.madsgroup.org/staff/laura
More information about the erlang-bugs
mailing list