Thread: ARRAY[] with \'s is broken?

ARRAY[] with \'s is broken?

From
Rod Taylor
Date:
Can anyone explain what's going on with the slashes?

ssdb=# select version();                                 version
---------------------------------------------------------------------------PostgreSQL 8.0.1 on sparc-sun-solaris2.9,
compiledby GCC gcc (GCC)
 
3.4.2
(1 row)

ssdb=# select ARRAY['\\a']; array
---------{"\\a"}
(1 row)

ssdb=# select ARRAY['\a'];array
-------{a}
(1 row)

ssdb=# select ARRAY['\\\a']; array
---------{"\\a"}
(1 row)




-- 



Re: ARRAY[] with \'s is broken?

From
Rod Taylor
Date:
On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote:
> I don't see anything broken. V 7.4.8 shows the same:

How the heck do you store a single backslash in an text array?

> andrew=# select ARRAY['\\a'] as f1, ARRAY['\a']as f2 , ARRAY['\\\a'] as f2; 
> 
>    f1    | f2  |   f2    
> 
>  --------+-----+---------
> 
>  {"\\a"} | {a} | {"\\a"}
> 
> It might be mildly confusing because '\a' == 'a'

> cheers
> 
> andrew
> 
> 
> 
> Rod Taylor wrote:
> 
> >Can anyone explain what's going on with the slashes?
> >
> >ssdb=# select version();
> >                                  version
> >---------------------------------------------------------------------------
> > PostgreSQL 8.0.1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC)
> >3.4.2
> >(1 row)
> >
> >ssdb=# select ARRAY['\\a'];
> >  array
> >---------
> > {"\\a"}
> >(1 row)
> >
> >ssdb=# select ARRAY['\a'];
> > array
> >-------
> > {a}
> >(1 row)
> >
> >ssdb=# select ARRAY['\\\a'];
> >  array
> >---------
> > {"\\a"}
> >(1 row)
> >
> >
> >
> >
> >  
> >
> 
-- 



Re: ARRAY[] with \'s is broken?

From
Andrew Dunstan
Date:
I don't see anything broken. V 7.4.8 shows the same:

andrew=# select ARRAY['\\a'] as f1, ARRAY['\a']as f2 , ARRAY['\\\a'] as f2; 
  f1    | f2  |   f2    
--------+-----+---------
{"\\a"} | {a} | {"\\a"}

It might be mildly confusing because '\a' == 'a'

cheers

andrew



Rod Taylor wrote:

>Can anyone explain what's going on with the slashes?
>
>ssdb=# select version();
>                                  version
>---------------------------------------------------------------------------
> PostgreSQL 8.0.1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC)
>3.4.2
>(1 row)
>
>ssdb=# select ARRAY['\\a'];
>  array
>---------
> {"\\a"}
>(1 row)
>
>ssdb=# select ARRAY['\a'];
> array
>-------
> {a}
>(1 row)
>
>ssdb=# select ARRAY['\\\a'];
>  array
>---------
> {"\\a"}
>(1 row)
>
>
>
>
>  
>


Re: ARRAY[] with \'s is broken?

From
Tom Lane
Date:
Rod Taylor <pg@rbt.ca> writes:
> On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote:
>> I don't see anything broken. V 7.4.8 shows the same:

> How the heck do you store a single backslash in an text array?

You just did.  array_out doubles the backslashes again, though.

regression=# select ARRAY['\\a']; array
---------{"\\a"}
(1 row)

regression=# select (ARRAY['\\a'])[1];array
-------\a
(1 row)
        regards, tom lane


Re: ARRAY[] with \'s is broken?

From
Rod Taylor
Date:
> > How the heck do you store a single backslash in an text array?
> 
> ... array_out doubles the backslashes again, though.

That explains how I got confused.

> regression=# select ARRAY['\\a'];
>   array
> ---------
>  {"\\a"}
> (1 row)
> 
> regression=# select (ARRAY['\\a'])[1];
>  array
> -------
>  \a
> (1 row)
> 
>             regards, tom lane
> 
-- 



Re: ARRAY[] with \'s is broken?

From
Andrew Dunstan
Date:

Rod Taylor wrote:

>On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote:
>  
>
>>I don't see anything broken. V 7.4.8 shows the same:
>>    
>>
>
>How the heck do you store a single backslash in an text array?
>
>  
>

Well, in v 8.0 I use dollar quoting :-)

select ARRAY[$\$];

But as Tom says the text output  function will double it.

cheers

andrew