BUG #6177: Size field type TEXT
The following bug has been logged online:
Bug reference: 6177
Logged by: Claudio Oliveira
Email address: claudiomsi@hotmail.com
PostgreSQL version: 9.1rc1
Operating system: Windows 7
Description: Size field type TEXT
Details:
Hello,
Use version 8.4 and have no issues with the field type TEXT.
In version 9.1rc1 is limited to 4680 characters.
Where do I change that size?
Thank you.
"Claudio Oliveira" <claudiomsi@hotmail.com> wrote:
Use version 8.4 and have no issues with the field type TEXT.
In version 9.1rc1 is limited to 4680 characters.
Where do I change that size?
test=# create table txt (val text);
CREATE TABLE
test=# insert into txt values (repeat('long string', 1000000));
INSERT 0 1
test=# select char_length(val) from txt;
char_length
-------------
11000000
(1 row)
What makes you think it's limited to 4680 characters?
-Kevin
Kevin Grittner wrote:
"Claudio Oliveira" <claudiomsi@hotmail.com> wrote:
Use version 8.4 and have no issues with the field type TEXT.
In version 9.1rc1 is limited to 4680 characters.
Where do I change that size?
test=# create table txt (val text);
CREATE TABLE
test=# insert into txt values (repeat('long string', 1000000));
INSERT 0 1
test=# select char_length(val) from txt;
char_length
-------------
11000000
(1 row)What makes you think it's limited to 4680 characters?
My guess is there is an index on the column:
test=> create table txt (val text);
CREATE TABLE
test=> create index i_txt on txt(val);
CREATE INDEX
test=> insert into txt values (repeat('long string', 1000000));
ERROR: index row requires 125944 bytes, maximum size is 8191
You should probably not index long columns but rather index an md5 hash
of the value.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
Hello,
I'm doing the test in PGAdmin.
Must be a bug in PGAdmim.
I'm sorry I have not tested in psql
create table txt (val text);
txt insert into values (repeat ('x', 4500));
char_length select (val) from txt;
txt insert into values (repeat ('x', 4685));
char_length select (val) from txt;
select *, length (val) val is null, (val ~ 'x') from txt;
Thank you.
Claudio Oliveira
http://www.msisolucoes.com.br
Show quoted text
From: bruce@momjian.us
Subject: Re: [BUGS] BUG #6177: Size field type TEXT
To: Kevin.Grittner@wicourts.gov
Date: Thu, 25 Aug 2011 13:20:22 -0400
CC: claudiomsi@hotmail.com; pgsql-bugs@postgresql.orgKevin Grittner wrote:
"Claudio Oliveira" <claudiomsi@hotmail.com> wrote:
Use version 8.4 and have no issues with the field type TEXT.
In version 9.1rc1 is limited to 4680 characters.
Where do I change that size?
test=# create table txt (val text);
CREATE TABLE
test=# insert into txt values (repeat('long string', 1000000));
INSERT 0 1
test=# select char_length(val) from txt;
char_length
-------------
11000000
(1 row)What makes you think it's limited to 4680 characters?
My guess is there is an index on the column:
test=> create table txt (val text);
CREATE TABLE
test=> create index i_txt on txt(val);
CREATE INDEX
test=> insert into txt values (repeat('long string', 1000000));
ERROR: index row requires 125944 bytes, maximum size is 8191You should probably not index long columns but rather index an md5 hash
of the value.--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com+ It's impossible for everything to be true. +
Claudio Oliveira <claudiomsi@hotmail.com> wrote:
I'm doing the test in PGAdmin.
Must be a bug in PGAdmim.
I'm sorry I have not tested in psql
create table txt (val text);
txt insert into values (repeat ('x', 4500));
char_length select (val) from txt;
txt insert into values (repeat ('x', 4685));
char_length select (val) from txt;select *, length (val) val is null, (val ~ 'x') from txt;
Hmm. Maybe you should try taking this to the pgadmin-support list.
Your script came out sort of mangled in email, and apparently has
funny characters in it because I couldn't copy/paste and modify -- I
had to retype. But this runs fine in psql for me: (Printing the
hundreds of x's omitted from the post, but that looks OK to me,
too.)
test=# create table txt (val text);
CREATE TABLE
test=# insert into txt values (repeat('x', 4500));
INSERT 0 1
test=# insert into txt values (repeat('x', 4685));
INSERT 0 1
test=# select char_length(val), val is null, (val ~ 'x') from txt;
char_length | ?column? | ?column?
-------------+----------+----------
4500 | f | t
4685 | f | t
(2 rows)
-Kevin