From: | Bruce Momjian <bruce(at)momjian(dot)us> |
---|---|
To: | Vlad Romascanu <vromascanu(at)accurev(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: converting E'C:\\something' to bytea |
Date: | 2011-03-16 15:51:46 |
Message-ID: | 201103161551.p2GFpko10411@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Vlad Romascanu wrote:
> Hello,
>
> Is there any way of casting (reinterpreting) a varchar/text field
> containing arbitrary backslashes to bytea without making an escaped
> copy of the varchar/text first? In the examples below I am using a
> constant E'...' for clarity, the value normally comes from a
> varchar/text column in a table but the end behaviour is the same.
>
> E.g.:
>
> 1) SELECT E'C:\\something'::bytea
> ERROR: invalid input syntax for type bytea
> --> essentially like calling decode(); bad in this case because of
> the naked backslash!
>
> 2) SELECT replace(E'C:\\something', E'\\', E'\\\\')::bytea
> --> works OK, but bad performance-wise because needed to make an
> escaped copy of the string which is inefficient
>
> 3) CREATE DOMAIN my_varlena AS text;
> CREATE CAST (my_varlena AS bytea) WITHOUT FUNCTION;
> SELECT E'C:\\something'::my_varlena::bytea
> ERROR: invalid input syntax for type bytea
> --> WHY?
Well, the '\\' is being converted to '\' because of the single-quotes,
and then bytea is saying it doesn't know how to process \something. It
sounds like you want bytea but don't want the ability to use backslash
escapes to input the bytea values. I am unsure how to accomplish that.
--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
From | Date | Subject | |
---|---|---|---|
Next Message | Vlad Romascanu | 2011-03-16 16:09:08 | Re: converting E'C:\\something' to bytea |
Previous Message | Davenport, Julie | 2011-03-16 15:49:24 | query taking much longer since Postgres 8.4 upgrade |