<para>
This form changes the information which is written to the write-ahead log
to identify rows which are updated or deleted. This option has no effect
- except when logical replication is in use. <literal>DEFAULT</> records the
+ except when logical replication is in use. <literal>DEFAULT</>
+ (the default for non-system tables) records the
old values of the columns of the primary key, if any. <literal>USING INDEX</>
records the old values of the columns covered by the named index, which
must be unique, not partial, not deferrable, and include only columns marked
<literal>NOT NULL</>. <literal>FULL</> records the old values of all columns
in the row. <literal>NOTHING</> records no information about the old row.
+ (This is the default for system tables.)
In all cases, no old values are logged unless at least one of the columns
that would be logged differs between the old and new versions of the row.
</para>
The command form <literal>\d+</literal> is identical, except that
more information is displayed: any comments associated with the
columns of the table are shown, as is the presence of OIDs in the
- table, the view definition if the relation is a view.
+ table, the view definition if the relation is a view, a non-default
+ <link linkend="SQL-CREATETABLE-REPLICA-IDENTITY">replica
+ identity</link> setting.
</para>
<para>
printTableAddFooter(&cont, buf.data);
}
- if ((tableinfo.relkind == 'r' || tableinfo.relkind == 'm') &&
+ if (verbose && (tableinfo.relkind == 'r' || tableinfo.relkind == 'm') &&
/*
* No need to display default values; we already display a
* REPLICA IDENTITY marker on indexes.
*/
- tableinfo.relreplident != 'd' && tableinfo.relreplident != 'i' &&
- strcmp(schemaname, "pg_catalog") != 0)
+ tableinfo.relreplident != 'i' &&
+ ((strcmp(schemaname, "pg_catalog") != 0 && tableinfo.relreplident != 'd') ||
+ (strcmp(schemaname, "pg_catalog") == 0 && tableinfo.relreplident != 'n')))
{
const char *s = _("Replica Identity");
}
/* OIDs, if verbose and not a materialized view */
- if (verbose && tableinfo.relkind != 'm')
- {
- const char *s = _("Has OIDs");
-
- printfPQExpBuffer(&buf, "%s: %s", s,
- (tableinfo.hasoids ? _("yes") : _("no")));
- printTableAddFooter(&cont, buf.data);
- }
+ if (verbose && tableinfo.relkind != 'm' && tableinfo.hasoids)
+ printTableAddFooter(&cont, _("Has OIDs: yes"));
/* Tablespace info */
add_tablespace_footer(&cont, tableinfo.relkind, tableinfo.tablespace,
a | text | not null | main | |
b | text | | extended | |
c | text | | external | |
-Has OIDs: no
CREATE TABLE ctlt12_comments (LIKE ctlt1 INCLUDING COMMENTS, LIKE ctlt2 INCLUDING COMMENTS);
\d+ ctlt12_comments
a | text | not null | extended | | A
b | text | | extended | | B
c | text | | extended | | C
-Has OIDs: no
CREATE TABLE ctlt1_inh (LIKE ctlt1 INCLUDING CONSTRAINTS INCLUDING COMMENTS) INHERITS (ctlt1);
NOTICE: merging column "a" with inherited definition
Check constraints:
"ctlt1_a_check" CHECK (length(a) > 2)
Inherits: ctlt1
-Has OIDs: no
SELECT description FROM pg_description, pg_constraint c WHERE classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 'ctlt1_inh'::regclass;
description
"ctlt3_a_check" CHECK (length(a) < 5)
Inherits: ctlt1,
ctlt3
-Has OIDs: no
CREATE TABLE ctlt13_like (LIKE ctlt3 INCLUDING CONSTRAINTS INCLUDING COMMENTS INCLUDING STORAGE) INHERITS (ctlt1);
NOTICE: merging column "a" with inherited definition
"ctlt1_a_check" CHECK (length(a) > 2)
"ctlt3_a_check" CHECK (length(a) < 5)
Inherits: ctlt1
-Has OIDs: no
SELECT description FROM pg_description, pg_constraint c WHERE classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 'ctlt13_like'::regclass;
description
"ctlt_all_expr_idx" btree ((a || b))
Check constraints:
"ctlt1_a_check" CHECK (length(a) > 2)
-Has OIDs: no
SELECT c.relname, objsubid, description FROM pg_description, pg_index i, pg_class c WHERE classoid = 'pg_class'::regclass AND objoid = i.indexrelid AND c.oid = i.indexrelid AND i.indrelid = 'ctlt_all'::regclass ORDER BY c.relname, objsubid;
relname | objsubid | description
c3 | date | | | plain | |
Server: s0
FDW Options: (delimiter ',', quote '"', "be quoted" 'value')
-Has OIDs: no
\det+
List of foreign tables
c10 | integer | | (p1 'v1') | plain | |
Server: s0
FDW Options: (delimiter ',', quote '"', "be quoted" 'value')
-Has OIDs: no
-- can't change the column type if it's used elsewhere
CREATE TABLE use_ft1_column_type (x ft1);
dd | integer | | plain | |
Inherits: inht1,
inhs1
-Has OIDs: no
DROP TABLE inhts;
-- Test for renaming in diamond inheritance
z | integer | | plain | |
Inherits: inht2,
inht3
-Has OIDs: no
CREATE TABLE inhts (d int) INHERITS (inht2, inhs1);
NOTICE: merging multiple inherited definitions of column "b"
d | integer | | plain | |
Inherits: inht2,
inhs1
-Has OIDs: no
WITH RECURSIVE r AS (
SELECT 'inht1'::regclass AS inhrelid
Indexes:
"test_constraints_val1_val2_key" UNIQUE CONSTRAINT, btree (val1, val2)
Child tables: test_constraints_inh
-Has OIDs: no
ALTER TABLE ONLY test_constraints DROP CONSTRAINT test_constraints_val1_val2_key;
\d+ test_constraints
val1 | character varying | | extended | |
val2 | integer | | plain | |
Child tables: test_constraints_inh
-Has OIDs: no
\d+ test_constraints_inh
Table "public.test_constraints_inh"
val1 | character varying | | extended | |
val2 | integer | | plain | |
Inherits: test_constraints
-Has OIDs: no
DROP TABLE test_constraints_inh;
DROP TABLE test_constraints;
Indexes:
"test_ex_constraints_c_excl" EXCLUDE USING gist (c WITH &&)
Child tables: test_ex_constraints_inh
-Has OIDs: no
ALTER TABLE test_ex_constraints DROP CONSTRAINT test_ex_constraints_c_excl;
\d+ test_ex_constraints
--------+--------+-----------+---------+--------------+-------------
c | circle | | plain | |
Child tables: test_ex_constraints_inh
-Has OIDs: no
\d+ test_ex_constraints_inh
Table "public.test_ex_constraints_inh"
--------+--------+-----------+---------+--------------+-------------
c | circle | | plain | |
Inherits: test_ex_constraints
-Has OIDs: no
DROP TABLE test_ex_constraints_inh;
DROP TABLE test_ex_constraints;
"test_primary_constraints_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "test_foreign_constraints" CONSTRAINT "test_foreign_constraints_id1_fkey" FOREIGN KEY (id1) REFERENCES test_primary_constraints(id)
-Has OIDs: no
\d+ test_foreign_constraints
Table "public.test_foreign_constraints"
Foreign-key constraints:
"test_foreign_constraints_id1_fkey" FOREIGN KEY (id1) REFERENCES test_primary_constraints(id)
Child tables: test_foreign_constraints_inh
-Has OIDs: no
ALTER TABLE test_foreign_constraints DROP CONSTRAINT test_foreign_constraints_id1_fkey;
\d+ test_foreign_constraints
--------+---------+-----------+---------+--------------+-------------
id1 | integer | | plain | |
Child tables: test_foreign_constraints_inh
-Has OIDs: no
\d+ test_foreign_constraints_inh
Table "public.test_foreign_constraints_inh"
--------+---------+-----------+---------+--------------+-------------
id1 | integer | | plain | |
Inherits: test_foreign_constraints
-Has OIDs: no
DROP TABLE test_foreign_constraints_inh;
DROP TABLE test_foreign_constraints;
f
(1 row)
-\d test_replica_identity
- Table "public.test_replica_identity"
- Column | Type | Modifiers
---------+---------+--------------------------------------------------------------------
- id | integer | not null default nextval('test_replica_identity_id_seq'::regclass)
- keya | text | not null
- keyb | text | not null
- nonkey | text |
+\d+ test_replica_identity
+ Table "public.test_replica_identity"
+ Column | Type | Modifiers | Storage | Stats target | Description
+--------+---------+--------------------------------------------------------------------+----------+--------------+-------------
+ id | integer | not null default nextval('test_replica_identity_id_seq'::regclass) | plain | |
+ keya | text | not null | extended | |
+ keyb | text | not null | extended | |
+ nonkey | text | | extended | |
Indexes:
"test_replica_identity_pkey" PRIMARY KEY, btree (id)
"test_replica_identity_expr" UNIQUE, btree (keya, keyb, (3))
r3 AS
ON DELETE TO rules_src DO
NOTIFY rules_src_deletion
-Has OIDs: no
--
-- check alter rename rule
ALTER TABLE test_replica_identity REPLICA IDENTITY FULL;
SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass;
-\d test_replica_identity
+\d+ test_replica_identity
ALTER TABLE test_replica_identity REPLICA IDENTITY NOTHING;
SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass;