Thread: ARRAY[] with \'s is broken?
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) --
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) > > > > > > > > > > > > > --
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) > > > > > >
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
> > 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 > --
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