summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorPeter Eisentraut2008-11-12 13:09:28 +0000
committerPeter Eisentraut2008-11-12 13:09:28 +0000
commitf98f6ee0641e87c6ecc2524f5d0a8b54924ffd14 (patch)
treea192c5bf9cfea3c4581f16f19ec7f6e8245f3c2a /src/test
parent4c22564471e2724bcc62bc2c61ece796c946f16e (diff)
array_length() function, and for SQL compatibility also cardinality()
function as a special case. This version still has the suspicious behavior of returning null for an empty array (rather than zero), but this may need a wholesale revision of empty array behavior, currently under discussion. Jim Nasby, Robert Haas, Peter Eisentraut
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/arrays.out50
-rw-r--r--src/test/regress/sql/arrays.sql9
2 files changed, 59 insertions, 0 deletions
diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out
index c538fad621d..804d52b7982 100644
--- a/src/test/regress/expected/arrays.out
+++ b/src/test/regress/expected/arrays.out
@@ -1075,3 +1075,53 @@ select array_to_string(string_to_array('1|2|3', '|'), '|');
1|2|3
(1 row)
+select array_length(array[1,2,3], 1);
+ array_length
+--------------
+ 3
+(1 row)
+
+select array_length(array[[1,2,3], [4,5,6]], 0);
+ array_length
+--------------
+
+(1 row)
+
+select array_length(array[[1,2,3], [4,5,6]], 1);
+ array_length
+--------------
+ 2
+(1 row)
+
+select array_length(array[[1,2,3], [4,5,6]], 2);
+ array_length
+--------------
+ 3
+(1 row)
+
+select array_length(array[[1,2,3], [4,5,6]], 3);
+ array_length
+--------------
+
+(1 row)
+
+select cardinality(array[1,2,3]);
+ cardinality
+-------------
+ 3
+(1 row)
+
+select cardinality(array[[1,2,3], [4,5,6]]);
+ cardinality
+-------------
+ 2
+(1 row)
+
+select c, cardinality(c), d, cardinality(d) from arrtest;
+ c | cardinality | d | cardinality
+-------------------+-------------+---------------+-------------
+ {} | | {} |
+ {foobar,new_word} | 2 | {{elt1,elt2}} | 1
+ {foo,new_word} | 2 | {bar,foo} | 2
+(3 rows)
+
diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql
index a15b81ab286..04b19a4acea 100644
--- a/src/test/regress/sql/arrays.sql
+++ b/src/test/regress/sql/arrays.sql
@@ -386,3 +386,12 @@ select string_to_array('1|2|3', NULL);
select string_to_array(NULL, '|');
select array_to_string(string_to_array('1|2|3', '|'), '|');
+
+select array_length(array[1,2,3], 1);
+select array_length(array[[1,2,3], [4,5,6]], 0);
+select array_length(array[[1,2,3], [4,5,6]], 1);
+select array_length(array[[1,2,3], [4,5,6]], 2);
+select array_length(array[[1,2,3], [4,5,6]], 3);
+select cardinality(array[1,2,3]);
+select cardinality(array[[1,2,3], [4,5,6]]);
+select c, cardinality(c), d, cardinality(d) from arrtest;