postgres.git / summary / log / commit / refs

commit    61307dccc5f2f352d7dfed5c13abf3f0e26ec85d
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Wed Jun 22 02:52:52 2011 +0000
First released in: 9.2.0

    Add smallserial pseudotype.
    
    This is just like serial and bigserial, except it generates an int2
    column rather than int4 or int8.
    
    Mike Pultz, reviewed by Brar Piening and Josh Kupershmidt


doc/src/sgml/datatype.sgml | 29 ++++++++++++++++++++++++++--- doc/src/sgml/ecpg.sgml | 5 +++++ doc/src/sgml/func.sgml | 2 +- src/backend/parser/parse_utilcmd.c | 9 ++++++++- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index ab8eb2d30bb..0b4f978d985 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -198,6 +198,12 @@ <entry>signed two-byte integer</entry> </row> + <row> + <entry><type>smallserial</type></entry> + <entry><type>serial2</type></entry> + <entry>autoincrementing two-byte integer</entry> + </row> + <row> <entry><type>serial</type></entry> <entry><type>serial4</type></entry> @@ -368,6 +374,13 @@ <entry>15 decimal digits precision</entry> </row> + <row> + <entry><type>smallserial</type></entry> + <entry>2 bytes</entry> + <entry>small autoincrementing integer</entry> + <entry>1 to 32767</entry> + </row> + <row> <entry><type>serial</></entry> <entry>4 bytes</entry> @@ -742,6 +755,10 @@ NUMERIC <sect2 id="datatype-serial"> <title>Serial Types</title> + <indexterm zone="datatype-serial"> + <primary>smallserial</primary> + </indexterm> + <indexterm zone="datatype-serial"> <primary>serial</primary> </indexterm> @@ -750,6 +767,10 @@ NUMERIC <primary>bigserial</primary> </indexterm> + <indexterm zone="datatype-serial"> + <primary>serial2</primary> + </indexterm> + <indexterm zone="datatype-serial"> <primary>serial4</primary> </indexterm> @@ -769,8 +790,8 @@ NUMERIC </indexterm> <para> - The data types <type>serial</type> and <type>bigserial</type> - are not true types, but merely + The data types <type>smallserial</type>, <type>serial</type> and + <type>bigserial</type> are not true types, but merely a notational convenience for creating unique identifier columns (similar to the <literal>AUTO_INCREMENT</literal> property supported by some other databases). In the current @@ -828,7 +849,9 @@ ALTER SEQUENCE <replaceable class="parameter">tablename</replaceable>_<replaceab the same way, except that they create a <type>bigint</type> column. <type>bigserial</type> should be used if you anticipate the use of more than 2<superscript>31</> identifiers over the - lifetime of the table. + lifetime of the table. The type names <type>smallserial</type> and + <type>serial2</type> also work the same way, execpt that they + create a <type>smallint</type> column. </para> <para> diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index def250c156c..847012293be 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -844,6 +844,11 @@ do <entry><type>double</type></entry> </row> + <row> + <entry><type>smallserial</type></entry> + <entry><type>short</type></entry> + </row> + <row> <entry><type>serial</type></entry> <entry><type>int</type></entry> diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 8f223d68913..628fbef0017 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -13366,7 +13366,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); <row> <entry><literal><function>pg_get_serial_sequence(<parameter>table_name</parameter>, <parameter>column_name</parameter>)</function></literal></entry> <entry><type>text</type></entry> - <entry>get name of the sequence that a <type>serial</type> or <type>bigserial</type> column + <entry>get name of the sequence that a <type>serial</type>, <type>smallserial</type> or <type>bigserial</type> column uses</entry> </row> <row> diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index 622efe592d4..8744654f34a 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -307,7 +307,14 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column) { char *typname = strVal(linitial(column->typeName->names)); - if (strcmp(typname, "serial") == 0 || + if (strcmp(typname, "smallserial") == 0 || + strcmp(typname, "serial2") == 0) + { + is_serial = true; + column->typeName->names = NIL; + column->typeName->typeOid = INT2OID; + } + else if (strcmp(typname, "serial") == 0 || strcmp(typname, "serial4") == 0) { is_serial = true; [parent: 7095003cbef6]