mirror of
https://github.com/postgres/postgres.git
synced 2025-12-07 12:02:30 +03:00
Fix array_out's failure to backslash backslashes, per bug# 524. Also,
remove brain-dead rule that double quotes are needed if and only if the datatype is pass-by-reference; neither direction of the implication holds water. Instead, examine the actual data string to see if it contains any characters that force us to quote it. Add some documentation about quoting of array values, which was previously explained nowhere AFAICT.
This commit is contained in:
@@ -28,11 +28,11 @@ INSERT INTO arrtest (a, b[2][2][1], c, d, e, f, g)
|
||||
INSERT INTO arrtest (a, b[1][2][2], c, d[2][1])
|
||||
VALUES ('{}', '{3,4}', '{foo,bar}', '{bar,foo}');
|
||||
SELECT * FROM arrtest;
|
||||
a | b | c | d | e | f | g
|
||||
-------------+-----------------+---------------+-------------------+---------------+-------------------+-----------------
|
||||
{1,2,3,4,5} | {{{0,0},{1,2}}} | {} | {} | | {} | {}
|
||||
{11,12,23} | {{3,4},{4,5}} | {"foobar"} | {{"elt1","elt2"}} | {"3.4","6.7"} | {"abc ","abcde"} | {"abc","abcde"}
|
||||
{} | {3,4} | {"foo","bar"} | {"bar","foo"} | | |
|
||||
a | b | c | d | e | f | g
|
||||
-------------+-----------------+-----------+---------------+-----------+-----------------+-------------
|
||||
{1,2,3,4,5} | {{{0,0},{1,2}}} | {} | {} | | {} | {}
|
||||
{11,12,23} | {{3,4},{4,5}} | {foobar} | {{elt1,elt2}} | {3.4,6.7} | {"abc ",abcde} | {abc,abcde}
|
||||
{} | {3,4} | {foo,bar} | {bar,foo} | | |
|
||||
(3 rows)
|
||||
|
||||
SELECT arrtest.a[1],
|
||||
@@ -62,11 +62,11 @@ SELECT a[1:3],
|
||||
c[1:2],
|
||||
d[1:1][1:2]
|
||||
FROM arrtest;
|
||||
a | b | c | d
|
||||
------------+-----------------+---------------+-------------------
|
||||
{1,2,3} | {{{0,0},{1,2}}} | |
|
||||
{11,12,23} | | {"foobar"} | {{"elt1","elt2"}}
|
||||
| | {"foo","bar"} |
|
||||
a | b | c | d
|
||||
------------+-----------------+-----------+---------------
|
||||
{1,2,3} | {{{0,0},{1,2}}} | |
|
||||
{11,12,23} | | {foobar} | {{elt1,elt2}}
|
||||
| | {foo,bar} |
|
||||
(3 rows)
|
||||
|
||||
SELECT array_dims(a) AS a,array_dims(b) AS b,array_dims(c) AS c
|
||||
@@ -98,11 +98,11 @@ UPDATE arrtest
|
||||
SET c[2:2] = '{"new_word"}'
|
||||
WHERE array_dims(c) is not null;
|
||||
SELECT a,b,c FROM arrtest;
|
||||
a | b | c
|
||||
---------------+-----------------------+-----------------------
|
||||
a | b | c
|
||||
---------------+-----------------------+-------------------
|
||||
{16,25,3,4,5} | {{{113,142},{1,147}}} | {}
|
||||
{} | {3,4} | {"foo","new_word"}
|
||||
{16,25,23} | {{3,4},{4,5}} | {"foobar","new_word"}
|
||||
{} | {3,4} | {foo,new_word}
|
||||
{16,25,23} | {{3,4},{4,5}} | {foobar,new_word}
|
||||
(3 rows)
|
||||
|
||||
SELECT a[1:3],
|
||||
@@ -110,10 +110,10 @@ SELECT a[1:3],
|
||||
c[1:2],
|
||||
d[1:1][2:2]
|
||||
FROM arrtest;
|
||||
a | b | c | d
|
||||
------------+-----------------------+-----------------------+------------
|
||||
{16,25,3} | {{{113,142},{1,147}}} | |
|
||||
| | {"foo","new_word"} |
|
||||
{16,25,23} | | {"foobar","new_word"} | {{"elt2"}}
|
||||
a | b | c | d
|
||||
------------+-----------------------+-------------------+----------
|
||||
{16,25,3} | {{{113,142},{1,147}}} | |
|
||||
| | {foo,new_word} |
|
||||
{16,25,23} | | {foobar,new_word} | {{elt2}}
|
||||
(3 rows)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user