diff --git a/doc/src/sgml/array.sgml b/doc/src/sgml/array.sgml index b0d6e19abf7e7a42eef3ab27332b76437b6300b1..4d762c53d3575aa152f40a2e9604bea3d200f14b 100644 --- a/doc/src/sgml/array.sgml +++ b/doc/src/sgml/array.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.66 2008/04/28 14:48:57 alvherre Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.67 2008/10/29 11:24:52 petere Exp $ --> <sect1 id="arrays"> <title>Arrays</title> @@ -76,9 +76,12 @@ CREATE TABLE tictactoe ( <programlisting> pay_by_quarter integer ARRAY[4], </programlisting> - This syntax requires an integer constant to denote the array size. + Or, if no array size is to be specified: +<programlisting> + pay_by_quarter integer ARRAY, +</programlisting> As before, however, <productname>PostgreSQL</> does not enforce the - size restriction. + size restriction in any case. </para> </sect2> diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 4759e041340680942e7a919848dd8bc97af603c9..8b44e5b6ba4aebdd53b5b371a0aaf597585d9454 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.631 2008/10/28 14:09:45 petere Exp $ + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.632 2008/10/29 11:24:53 petere Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -7124,19 +7124,29 @@ Typename: SimpleTypename opt_array_bounds $$->arrayBounds = $3; $$->setof = TRUE; } + /* SQL standard syntax, currently only one-dimensional */ | SimpleTypename ARRAY '[' Iconst ']' { - /* SQL99's redundant syntax */ $$ = $1; $$->arrayBounds = list_make1(makeInteger($4)); } | SETOF SimpleTypename ARRAY '[' Iconst ']' { - /* SQL99's redundant syntax */ $$ = $2; $$->arrayBounds = list_make1(makeInteger($5)); $$->setof = TRUE; } + | SimpleTypename ARRAY + { + $$ = $1; + $$->arrayBounds = list_make1(makeInteger(-1)); + } + | SETOF SimpleTypename ARRAY + { + $$ = $2; + $$->arrayBounds = list_make1(makeInteger(-1)); + $$->setof = TRUE; + } ; opt_array_bounds: