From e2a277bd08530fa34bb493d0093c465099aa4783 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 5 Nov 2008 12:27:09 +0000 Subject: [PATCH] A few additional test cases for array functionality --- src/test/regress/expected/arrays.out | 63 +++++++++++++++++++++++++++- src/test/regress/sql/arrays.sql | 14 ++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out index e429995fc8..c538fad621 100644 --- a/src/test/regress/expected/arrays.out +++ b/src/test/regress/expected/arrays.out @@ -725,7 +725,14 @@ select * from arr_tbl where f1 > '{1,2,3}' and f1 <= '{1,5,3}'; {1,5,3} (2 rows) --- note: if above select doesn't produce the expected tuple order, +select * from arr_tbl where f1 >= '{1,2,3}' and f1 < '{1,5,3}'; + f1 +---------- + {1,2,3} + {1,2,10} +(2 rows) + +-- note: if above selects don't produce the expected tuple order, -- then you didn't get an indexscan plan, and something is busted. reset enable_seqscan; reset enable_bitmapscan; @@ -858,6 +865,12 @@ select array[]::text[]; {} (1 row) +select '[0:1]={1.1,2.2}'::float8[]; + float8 +----------------- + [0:1]={1.1,2.2} +(1 row) + -- all of the above should be accepted -- tests for array aggregates CREATE TEMP TABLE arraggtest ( f1 INT[], f2 TEXT[][], f3 FLOAT[]); @@ -1014,3 +1027,51 @@ ERROR: wrong number of array_subscripts DETAIL: Low bound array has different size than dimensions array. select array_fill(1, array[1,2,null]); ERROR: dimension values cannot be null +select string_to_array('1|2|3', '|'); + string_to_array +----------------- + {1,2,3} +(1 row) + +select string_to_array('1|2|3|', '|'); + string_to_array +----------------- + {1,2,3,""} +(1 row) + +select string_to_array('1||2|3||', '||'); + string_to_array +----------------- + {1,2|3,""} +(1 row) + +select string_to_array('1|2|3', ''); + string_to_array +----------------- + {1|2|3} +(1 row) + +select string_to_array('', '|'); + string_to_array +----------------- + +(1 row) + +select string_to_array('1|2|3', NULL); + string_to_array +----------------- + +(1 row) + +select string_to_array(NULL, '|'); + string_to_array +----------------- + +(1 row) + +select array_to_string(string_to_array('1|2|3', '|'), '|'); + array_to_string +----------------- + 1|2|3 +(1 row) + diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql index 54f8ab53e5..a15b81ab28 100644 --- a/src/test/regress/sql/arrays.sql +++ b/src/test/regress/sql/arrays.sql @@ -257,7 +257,8 @@ insert into arr_tbl values ('{1,2,10}'); set enable_seqscan to off; set enable_bitmapscan to off; select * from arr_tbl where f1 > '{1,2,3}' and f1 <= '{1,5,3}'; --- note: if above select doesn't produce the expected tuple order, +select * from arr_tbl where f1 >= '{1,2,3}' and f1 < '{1,5,3}'; +-- note: if above selects don't produce the expected tuple order, -- then you didn't get an indexscan plan, and something is busted. reset enable_seqscan; reset enable_bitmapscan; @@ -297,6 +298,7 @@ select '{ @ 1 hour @ 42 minutes @ 20 seconds }'::interval[]; select array[]::text[]; +select '[0:1]={1.1,2.2}'::float8[]; -- all of the above should be accepted -- tests for array aggregates @@ -374,3 +376,13 @@ select array_fill(1, null, array[2,2]); select array_fill(1, array[2,2], null); select array_fill(1, array[3,3], array[1,1,1]); select array_fill(1, array[1,2,null]); + +select string_to_array('1|2|3', '|'); +select string_to_array('1|2|3|', '|'); +select string_to_array('1||2|3||', '||'); +select string_to_array('1|2|3', ''); +select string_to_array('', '|'); +select string_to_array('1|2|3', NULL); +select string_to_array(NULL, '|'); + +select array_to_string(string_to_array('1|2|3', '|'), '|'); -- 2.40.0