F. BROUARD / SQLpro <sqlpro@club-internet.fr> wrote:
> Hi there,
>
> "PostgreSQL 9.1.2, compiled by Visual C++ build 1500, 64-bit"
> catalog version : PG_9.1_201105231
>
> --> the table :
>
> CREATE TABLE T_TEST_TAILLE
> (TTT_ID SERIAL NOT NULL PRIMARY KEY,
> TTT_DATAFIX CHAR(16),
> TTT_DATAVAR VARCHAR(16),
> TTT_DATAVARBIG VARCHAR(6000));
>
> --> the inserts :
>
> INSERT INTO T_TEST_TAILLE (TTT_DATAFIX, TTT_DATAVAR, TTT_DATAVARBIG)
> SELECT NULL, NULL, NULL
> UNION ALL SELECT '', '', ''
> UNION ALL SELECT '12345678', '12345678', REPEAT('*', 3000)
> UNION ALL SELECT '1234567890123456', '1234567890123456',
> REPEAT('*', 6000)
>
> --> the query
>
> SELECT *, pg_column_size(TTT_DATAFIX),
> char_length(TTT_DATAFIX),
> octet_length(TTT_DATAFIX),
> pg_column_size(TTT_DATAVAR),
> char_length(TTT_DATAVAR),
> octet_length(TTT_DATAFIX),
> pg_column_size(TTT_DATAVARBIG),
> char_length(TTT_DATAVARBIG),
> octet_length(TTT_DATAFIX)
> FROM T_TEST_TAILLE;
>
> !!! PROBLEM !!!
>
> --> at this time the 4th row show nothing in ttt_datavarbig column...
> it is supposed to retrive the long '********************* ... '
> 6000 characters !
>
> What happened ?
try this:
,----[ my test ]
| kretschmer@tux:~$ psql test -c "SELECT *, pg_column_size(TTT_DATAFIX),
| char_length(TTT_DATAFIX),
| octet_length(TTT_DATAFIX),
| pg_column_size(TTT_DATAVAR),
| char_length(TTT_DATAVAR),
| octet_length(TTT_DATAFIX),
| pg_column_size(TTT_DATAVARBIG),
| char_length(TTT_DATAVARBIG),
| octet_length(TTT_DATAFIX)
| FROM T_TEST_TAILLE;" > out.txt
| kretschmer@tux:~$ ls -l out.txt
| -rw-r--r-- 1 kretschmer kretschmer 37134 2012-04-21 16:32 out.txt
`----
The result contains more than 37.000 chars - i think, including the 6000
+ 3000 '*' plus some '-' for the table and so on - you can read that
file with your favorite eidtor...
Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°