Remove SQL-compatibility function cardinality(). It is not exactly clear
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Apr 2009 17:39:50 +0000 (17:39 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Apr 2009 17:39:50 +0000 (17:39 +0000)
how this ought to behave for multi-dimensional arrays.  Per discussion,
not having it at all seems better than having it with what might prove
to be the wrong behavior.  We can always add it later when we have consensus
on the correct behavior.

doc/src/sgml/func.sgml
doc/src/sgml/release.sgml
src/backend/utils/adt/arrayfuncs.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h
src/include/utils/array.h
src/test/regress/expected/arrays.out
src/test/regress/sql/arrays.sql

index f42f3e9341217695ca665f1b24dbf61a419a64ee..5c3580aec68bd1cdc478bef0c20ff0a51135187d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.475 2009/04/07 00:31:25 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.476 2009/04/09 17:39:47 tgl Exp $ -->
 
  <chapter id="functions">
   <title>Functions and Operators</title>
@@ -9368,9 +9368,6 @@ SELECT NULLIF(value, '(none)') ...
  <indexterm>
     <primary>array_upper</primary>
   </indexterm>
-  <indexterm>
-    <primary>cardinality</primary>
-  </indexterm>
   <indexterm>
     <primary>string_to_array</primary>
   </indexterm>
@@ -9503,19 +9500,6 @@ SELECT NULLIF(value, '(none)') ...
         <entry><literal>array_upper(ARRAY[1,2,3,4], 1)</literal></entry>
         <entry><literal>4</literal></entry>
        </row>
-       <row>
-        <entry>
-         <literal>
-          <function>cardinality</function>(<type>anyarray</type>)
-         </literal>
-        </entry>
-        <entry><type>int</type></entry>
-        <entry>returns the length of the first dimension of the array
-        (special case of <function>array_length</function> for SQL
-        compatibility)</entry>
-        <entry><literal>cardinality(array[1,2,3])</literal></entry>
-        <entry><literal>3</literal></entry>
-       </row>
        <row>
         <entry>
          <literal>
index acd2786caad4a817175ef443bf58e9e16d348ebe..a13828d52c91e50c55dc809a154f2b6f950d6b91 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.624 2009/04/07 21:30:01 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.625 2009/04/09 17:39:47 tgl Exp $ -->
 <!--
 
 Typical markup:
@@ -1624,11 +1624,6 @@ do it for earlier branch release files.
         of an array for the specified dimensions (Jim Nasby, Robert
         Haas, Peter Eisentraut)
        </para>
-
-       <para>
-        Also add identically-functioning <acronym>SQL</>-standard
-        function <function>cardinality()</>.
-       </para>
       </listitem>
 
       <listitem>
index 8b36edc42fa927f89a6d3d9c3bcde5361ad36efc..bc661ae4171898d83a8920f926c4cd22f200fed2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.154 2009/04/05 22:28:59 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.155 2009/04/09 17:39:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1668,28 +1668,6 @@ array_length(PG_FUNCTION_ARGS)
    PG_RETURN_INT32(result);
 }
 
-/*
- * array_cardinality :
- *     SQL-spec alias for array_length(v, 1)
- */
-Datum
-array_cardinality(PG_FUNCTION_ARGS)
-{
-   ArrayType  *v = PG_GETARG_ARRAYTYPE_P(0);
-   int        *dimv;
-   int         result;
-
-   /* Sanity check: does it look like an array at all? */
-   if (ARR_NDIM(v) <= 0 || ARR_NDIM(v) > MAXDIM)
-       PG_RETURN_NULL();
-
-   dimv = ARR_DIMS(v);
-
-   result = dimv[0];
-
-   PG_RETURN_INT32(result);
-}
-
 /*
  * array_ref :
  *   This routine takes an array pointer and a subscript array and returns
index 64c6e08e4529cc18ec0cc70d7f460a0145e3b887..bf23d146237e892c002b4775326b505ddcfb0ae6 100644 (file)
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.529 2009/04/07 00:31:26 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.530 2009/04/09 17:39:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 200904061
+#define CATALOG_VERSION_NO 200904091
 
 #endif
index fb711375a07a2d5849d2f28d95fb50eb681b1037..504bb3ebd9c4abb27dd7ef2760d7958fd2482d3f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.541 2009/04/07 00:31:26 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.542 2009/04/09 17:39:48 tgl Exp $
  *
  * NOTES
  *   The script catalog/genbki.sh reads this file and generates .bki
@@ -1005,8 +1005,6 @@ DATA(insert OID = 2092 (  array_upper    PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23
 DESCR("array upper dimension");
 DATA(insert OID = 2176 (  array_length     PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_length _null_ _null_ _null_ ));
 DESCR("array length");
-DATA(insert OID = 2179 (  cardinality      PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2277" _null_ _null_ _null_ _null_ array_cardinality _null_ _null_ _null_ ));
-DESCR("array cardinality");
 DATA(insert OID = 378 (  array_append     PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
 DESCR("append element onto end of array");
 DATA(insert OID = 379 (  array_prepend    PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2283 2277" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
index f2c79a62196fa89c92dc4fd7a825d56a36d28073..b2942d8f8c57908f78dbb32efc3635f1ccf14328 100644 (file)
@@ -49,7 +49,7 @@
  * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.75 2009/04/05 22:28:59 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.76 2009/04/09 17:39:50 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -200,7 +200,6 @@ extern Datum array_dims(PG_FUNCTION_ARGS);
 extern Datum array_lower(PG_FUNCTION_ARGS);
 extern Datum array_upper(PG_FUNCTION_ARGS);
 extern Datum array_length(PG_FUNCTION_ARGS);
-extern Datum array_cardinality(PG_FUNCTION_ARGS);
 extern Datum array_larger(PG_FUNCTION_ARGS);
 extern Datum array_smaller(PG_FUNCTION_ARGS);
 extern Datum generate_subscripts(PG_FUNCTION_ARGS);
index ec2fd52c7f82d45caf402ede832ab81d991b3212..c7ddc2d7aa5eb8365f53ba463dde168e5e22a1d7 100644 (file)
@@ -1105,26 +1105,6 @@ select array_length(array[[1,2,3], [4,5,6]], 3);
              
 (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)
-
 select array_agg(unique1) from (select unique1 from tenk1 where unique1 < 15 order by unique1) ss;
               array_agg               
 --------------------------------------
@@ -1143,12 +1123,6 @@ select array_agg(nullif(ten, 4)) from (select ten from tenk1 where unique1 < 15
  {0,1,2,3,NULL,5,6,7,8,9,0,1,2,3,NULL}
 (1 row)
 
-select cardinality(array_agg(unique1)) from tenk1 where unique1 < 15;
- cardinality 
--------------
-          15
-(1 row)
-
 select array_agg(unique1) from tenk1 where unique1 < -15;
  array_agg 
 -----------
index a4a91b034c9ef1ab9c7e08ed22327572f555efbf..5e4933c31d3cd2750ee1793efe6eca4305fb273e 100644 (file)
@@ -392,14 +392,10 @@ 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;
 
 select array_agg(unique1) from (select unique1 from tenk1 where unique1 < 15 order by unique1) ss;
 select array_agg(ten) from (select ten from tenk1 where unique1 < 15 order by unique1) ss;
 select array_agg(nullif(ten, 4)) from (select ten from tenk1 where unique1 < 15 order by unique1) ss;
-select cardinality(array_agg(unique1)) from tenk1 where unique1 < 15;
 select array_agg(unique1) from tenk1 where unique1 < -15;
 
 select unnest(array[1,2,3]);