Index: doc/src/sgml/array.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/array.sgml,v
retrieving revision 1.66
diff -c -r1.66 array.sgml
*** doc/src/sgml/array.sgml	28 Apr 2008 14:48:57 -0000	1.66
--- doc/src/sgml/array.sgml	15 Oct 2008 14:25:53 -0000
***************
*** 322,327 ****
--- 322,339 ----
             2
  (1 row)
  </programlisting>
+ 
+  <function>array_length</function> will return the length of a specified
+  array dimension:
+ 
+ <programlisting>
+ SELECT array_length(schedule, 1) FROM sal_emp WHERE name = 'Carol';
+ 
+  array_length
+ --------------
+             2
+ (1 row)
+ </programlisting>
   </para>
   </sect2>
  
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.450
diff -c -r1.450 func.sgml
*** doc/src/sgml/func.sgml	14 Oct 2008 17:12:32 -0000	1.450
--- doc/src/sgml/func.sgml	15 Oct 2008 14:25:57 -0000
***************
*** 9399,9404 ****
--- 9399,9415 ----
         <row>
          <entry>
           <literal>
+           <function>array_length</function>(<type>anyarray</type>, <type>int</type>)
+          </literal>
+         </entry>
+         <entry><type>int</type></entry>
+         <entry>returns length of the requested array dimension</entry>
+         <entry><literal>array_length(array[1,2,3], 1)</literal></entry>
+         <entry><literal>3</literal></entry>
+        </row>
+        <row>
+         <entry>
+          <literal>
            <function>array_lower</function>(<type>anyarray</type>, <type>int</type>)
           </literal>
          </entry>
Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.520
diff -c -r1.520 pg_proc.h
*** src/include/catalog/pg_proc.h	14 Oct 2008 17:12:33 -0000	1.520
--- src/include/catalog/pg_proc.h	15 Oct 2008 14:25:59 -0000
***************
*** 995,1000 ****
--- 995,1002 ----
  DESCR("array lower dimension");
  DATA(insert OID = 2092 (  array_upper	   PGNSP PGUID 12 1 0 0 f f t f i 2 23 "2277 23" _null_ _null_ _null_ array_upper _null_ _null_ _null_ ));
  DESCR("array upper dimension");
+ DATA(insert OID = 2176 (  array_length     PGNSP PGUID 14 1 0 0 f f t f i 2 23 "2277 23" _null_ _null_ _null_ "select array_upper( $1, $2 ) - array_lower( $1, $2 ) + 1" _null_ _null_ _null_ ));
+ DESCR("array length");
  DATA(insert OID = 378 (  array_append	   PGNSP PGUID 12 1 0 0 f f f f i 2 2277 "2277 2283" _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 i 2 2277 "2283 2277" _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
