converting E'C:\\something' to bytea

From: Vlad Romascanu <vromascanu(at)accurev(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: converting E'C:\\something' to bytea
Date: 2011-03-16 15:04:28
Message-ID: AANLkTikzasZXdCjMMNufumpBgZyCR+MsJOmOdbccOGZw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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?

Thanks,
V.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Davenport, Julie 2011-03-16 15:49:24 query taking much longer since Postgres 8.4 upgrade
Previous Message Merlin Moncure 2011-03-16 14:54:34 Re: equivalent of mysql's SET type?