BUG #6177: Size field type TEXT

Started by Claudio Oliveiraover 14 years ago5 messagesbugs
Jump to latest
#1Claudio Oliveira
claudiomsi@hotmail.com

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.

#2Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: Claudio Oliveira (#1)
Re: BUG #6177: Size field type TEXT

"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

#3Bruce Momjian
bruce@momjian.us
In reply to: Kevin Grittner (#2)
Re: BUG #6177: Size field type TEXT

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. +

#4Claudio Oliveira
claudiomsi@hotmail.com
In reply to: Bruce Momjian (#3)
Re: BUG #6177: Size field type TEXT

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.org

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. +

#5Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: Claudio Oliveira (#4)
Re: BUG #6177: Size field type TEXT

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