BUG: text(varchar) truncates at 31 bytes

From: Dave Blasby <dblasby(at)refractions(dot)net>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: BUG: text(varchar) truncates at 31 bytes
Date: 2001-10-03 18:39:19
Message-ID: 3BBB5B57.4FEF2C2B@refractions.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

#create table t (v varchar);
#insert into t values ('0123456789a0123456789b0123456789c0123456789d');

#select v from t;

v
----------------------------------------------
0123456789a0123456789b0123456789c0123456789d
(1 row)

So far, so good.

#select text(v) from t;

text
---------------------------------
0123456789a0123456789b012345678
(1 row)

Truncation occurs.

Work around:

# select v::text from t;
?column?
----------------------------------------------
0123456789a0123456789b0123456789c0123456789d
(1 row)

I couldnt figure out what happens during a text(varchar) call. I looked
around in pg_proc, but couldnt find the function. There's probably an
automagic type conversion going on or something.

Could someone explain what all the internal varchar-like types are (ie.
varchar,varchar(n),text,char,_char,bpchar) and when they're used? I
find it all really confusing - I'm sure others do too.

Is there anyway to determine what postgresql is doing in its automagic
function calls? I guess I'm asking for an EXPLAIN that describes
function calls. For example,
EXPLAIN select text(v) from t;

--> {Description of conversion from varchar to whatever the text()
function actually works on}

Thanks,
dave

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2001-10-03 18:56:02 Re: BUG: text(varchar) truncates at 31 bytes
Previous Message Bruce Momjian 2001-10-03 18:37:18 Re: HISTORY for 7.2