Josh Berkus wrote: > When saving \ escaped values into text array fields, the \ is escaped when > displaying the contents of the array, leading to an appearance that the > correct data was not saved: > > scratch=# create table test_arr ( tarr text[] ); > CREATE TABLE > scratch=# insert into test_arr values ( array['x\y','x\\y','x y'] ); > INSERT 5695623 1 > scratch=# select * from test_arr; > tarr > ------------------- > {xy,"x\\y","x y"} > (1 row)
> scratch=# select tarr[2] from test_arr; > tarr > ------ > x\y > (1 row) tarr[1] does not have a \, because it was eaten by the parser (so \y is the same as a plain y). tarr[2] does have a single backslash, which for output purposes is shown escaped with another backslash when part of an array, but unescaped when not. I'm not sure if this qualifies as a bug or not. You can pass the array back and it will be valid, but amusingly you must escape tarr[2] before passing it back. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match