OSDN Git Service

A few additional test cases for array functionality
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 5 Nov 2008 12:27:09 +0000 (12:27 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 5 Nov 2008 12:27:09 +0000 (12:27 +0000)
src/test/regress/expected/arrays.out
src/test/regress/sql/arrays.sql

index e429995..c538fad 100644 (file)
@@ -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)
+
index 54f8ab5..a15b81a 100644 (file)
@@ -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', '|'), '|');