Skip site navigation (1) Skip section navigation (2)

Re: Fwd: Bug#249036: postgresql: zero bytes cannot be entered

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Martin Pitt <martin(at)piware(dot)de>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: Fwd: Bug#249036: postgresql: zero bytes cannot be entered
Date: 2004-05-17 12:37:52
Message-ID: 200405171237.i4HCbqp12790@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugs
Martin Pitt wrote:
> Hi PostgreSQL hackers!
> 
> We recently got the Debian bug report below. Does anybody have an idea about that?
> 
> Thanks and have a nice day!
>
> if i issue the following query:
> $ select decode(encode('\001\000\001'::bytea,'hex'),'hex');
> the result will always be '\001' and not '\001\000\001' as assumable.
> 
> i think the string is handled zero-delimited and not with its given
> size,
> and i think in this case this is not the wanted behaviour because to
> enter any bytea with zero bytes one will have to use
> decode('my string in hex', 'hex'), only then the zero bytes will be
> stored
> correctly.

The issue is that bytea needs double-backslashes because single
backslashes are processed by the parser into strings:
	
	test=> select decode(encode('\001\000\001'::bytea,'hex'),'hex');
	 decode
	--------
	 \001
	(1 row)
	
	test=> select decode(encode('\\001\\000\\001'::bytea,'hex'),'hex');
	    decode
	--------------
	 \001\000\001
	(1 row)

This is all in the documentation.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

In response to

Responses

pgsql-bugs by date

Next:From: Martin PittDate: 2004-05-17 12:41:06
Subject: Re: Fwd: Bug#249036: postgresql: zero bytes cannot be entered in string literal, not even with \000 notation
Previous:From: Martin PittDate: 2004-05-17 12:24:30
Subject: Patch for not going beyond NOFILE system limit

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group