From e9cda08b2b79303e36594e1d4e5e09ea2db84b6a Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 12 Jun 2003 07:49:43 +0000 Subject: [PATCH] Brief note about sequence cache not being cleared in other backends. Actually clear the cache in the backend making the alteration. This follows in the footsteps of setval(). Rod Taylor --- doc/src/sgml/keywords.sgml | 20 +++++++++++++++++++- doc/src/sgml/ref/alter_sequence.sgml | 8 +++++++- doc/src/sgml/ref/create_table.sgml | 25 +++++++++++++++++++++++-- src/backend/commands/sequence.c | 7 ++++++- 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml index 783b401e3f..26764553f8 100644 --- a/doc/src/sgml/keywords.sgml +++ b/doc/src/sgml/keywords.sgml @@ -1,4 +1,4 @@ - + <acronym>SQL</acronym> Key Words @@ -873,6 +873,12 @@ reserved + DEFAULTS + non-reserved + + + + DEFERRABLE reserved reserved @@ -1101,6 +1107,12 @@ reserved + EXCLUDING + non-reserved + + + + EXCLUSIVE non-reserved @@ -1395,6 +1407,12 @@ reserved + INCLUDING + non-reserved + + + + INCREMENT non-reserved diff --git a/doc/src/sgml/ref/alter_sequence.sgml b/doc/src/sgml/ref/alter_sequence.sgml index c6c3a7e33c..28a81022aa 100644 --- a/doc/src/sgml/ref/alter_sequence.sgml +++ b/doc/src/sgml/ref/alter_sequence.sgml @@ -1,5 +1,5 @@ @@ -236,6 +236,12 @@ ALTER SEQUENCE serial RESTART WITH 105; later aborts. This means that aborted transactions may leave unused "holes" in the sequence of assigned values. setval operations are never rolled back, either. + + ALTER SEQUENCE will not immediately affect backends, other than the + current one, which have cached sequence values. They must use up all cached values + prior to noticing the changed sequence parameters. The current backend will be + immediatly affected. + diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 9a29b645aa..2a33de6dfb 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -1,5 +1,5 @@ @@ -18,7 +18,8 @@ PostgreSQL documentation CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ] - | table_constraint } [, ... ] + | table_constraint + | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ INHERITS ( parent_table [, ... ] ) ] [ WITH OIDS | WITHOUT OIDS ] @@ -173,6 +174,26 @@ and table_constraint is: + LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] + + + The LIKE clause specifies a table from which + the new table automatically inherits all column names, their datatypes, and + NOT NULL constraints. + + + Unlike INHERITS, the new table and inherited table + are complete decoupled after creation has been completed. Data inserted + into the new table will not be reflected into the parent table. + + + Default expressions for the inherited column definitions will only be included if + INCLUDING DEFAULTS is specified. The default is to exclude + default expressions. + + + + INHERITS ( parent_table [, ... ] ) diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 308ee21310..cb49482630 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.95 2003/03/21 03:55:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.96 2003/06/12 07:49:43 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -345,6 +345,11 @@ AlterSequence(AlterSeqStmt *stmt) seq->log_cnt = 1; } + /* save info in local cache */ + elm->last = new.last_value; /* last returned number */ + elm->cached = new.last_value; /* last cached number (forget cached + * values) */ + START_CRIT_SECTION(); /* XLOG stuff */ -- 2.11.0