diff --git a/doc/src/sgml/ref/select_into.sgml b/doc/src/sgml/ref/select_into.sgml index 787c106..0226608 100644 --- a/doc/src/sgml/ref/select_into.sgml +++ b/doc/src/sgml/ref/select_into.sgml @@ -24,7 +24,7 @@ PostgreSQL documentation [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] - INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table + INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] @@ -65,6 +65,16 @@ SELECT [ ALL | DISTINCT [ ON ( expression + + UNLOGGED + + + If specified, the table is created as an unlogged table. Refer + to for details. + + + + new_table diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 80ad516..1326a97 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -119,6 +119,12 @@ DefineSequence(CreateSeqStmt *seq) int i; NameData name; + /* Unlogged sequences are not allowed. */ + if (seq->sequence->relpersistence == RELPERSISTENCE_UNLOGGED) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("unlogged sequences are not supported"))); + /* Check and set all option values */ init_params(seq->options, true, &new, &owned_by); diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 22dfc92..1042195 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -465,6 +465,12 @@ DefineView(ViewStmt *stmt, const char *queryString) view->relname))); } + /* Unlogged views are not allowed. */ + if (view->relpersistence == RELPERSISTENCE_UNLOGGED) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("views cannot be unlogged because they do not have storage"))); + /* * Create the view relation * diff --git a/src/test/regress/expected/create_view.out b/src/test/regress/expected/create_view.out index f2c0685..557e077 100644 --- a/src/test/regress/expected/create_view.out +++ b/src/test/regress/expected/create_view.out @@ -281,4 +281,7 @@ drop cascades to table tbl3 drop cascades to table tbl4 drop cascades to view mytempview drop cascades to view pubview +-- should fail +CREATE UNLOGGED VIEW unlogged_view AS SELECT 1; +ERROR: views cannot be unlogged because they do not have storage SET search_path to public; diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out index 13e1565..be25a32 100644 --- a/src/test/regress/expected/sequence.out +++ b/src/test/regress/expected/sequence.out @@ -291,3 +291,6 @@ ERROR: permission denied for sequence seq3 ROLLBACK; DROP USER seq_user; DROP SEQUENCE seq; +-- should fail +CREATE UNLOGGED SEQUENCE unlogged_seq; +ERROR: unlogged sequences are not supported diff --git a/src/test/regress/sql/create_view.sql b/src/test/regress/sql/create_view.sql index 86cfc51..d24ab1b 100644 --- a/src/test/regress/sql/create_view.sql +++ b/src/test/regress/sql/create_view.sql @@ -194,4 +194,7 @@ And relnamespace IN (SELECT OID FROM pg_namespace WHERE nspname LIKE 'pg_temp%') DROP SCHEMA temp_view_test CASCADE; DROP SCHEMA testviewschm2 CASCADE; +-- should fail +CREATE UNLOGGED VIEW unlogged_view AS SELECT 1; + SET search_path to public; diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql index 29ea691..3422b83 100644 --- a/src/test/regress/sql/sequence.sql +++ b/src/test/regress/sql/sequence.sql @@ -120,3 +120,6 @@ ROLLBACK; DROP USER seq_user; DROP SEQUENCE seq; + +-- should fail +CREATE UNLOGGED SEQUENCE unlogged_seq;