create table foo (f1 cube, f2 int);
drop extension cube; -- fail, foo.f1 requires it
ERROR: cannot drop extension cube because other objects depend on it
-DETAIL: table foo column f1 depends on type cube
+DETAIL: column f1 of table foo depends on type cube
HINT: Use DROP ... CASCADE to drop the dependent objects too.
drop table foo;
drop extension cube;
create table foo (f1 c.cube, f2 int);
drop extension cube; -- fail, foo.f1 requires it
ERROR: cannot drop extension cube because other objects depend on it
-DETAIL: table foo column f1 depends on type c.cube
+DETAIL: column f1 of table foo depends on type c.cube
HINT: Use DROP ... CASCADE to drop the dependent objects too.
drop schema c; -- fail, cube requires it
ERROR: cannot drop schema c because other objects depend on it
DETAIL: extension cube depends on schema c
-table foo column f1 depends on type c.cube
+column f1 of table foo depends on type c.cube
HINT: Use DROP ... CASCADE to drop the dependent objects too.
drop extension cube cascade;
-NOTICE: drop cascades to table foo column f1
+NOTICE: drop cascades to column f1 of table foo
\d foo
Table "public.foo"
Column | Type | Collation | Nullable | Default
CREATE SCHEMA import_dest5;
BEGIN;
DROP TYPE "Colors" CASCADE;
-NOTICE: drop cascades to table import_source.t5 column Col
+NOTICE: drop cascades to column Col of table import_source.t5
IMPORT FOREIGN SCHEMA import_source LIMIT TO (t5)
FROM SERVER loopback INTO import_dest5; -- ERROR
ERROR: type "public.Colors" does not exist
switch (getObjectClass(object))
{
case OCLASS_CLASS:
- getRelationDescription(&buffer, object->objectId);
- if (object->objectSubId != 0)
- appendStringInfo(&buffer, _(" column %s"),
+ if (object->objectSubId == 0)
+ getRelationDescription(&buffer, object->objectId);
+ else
+ {
+ /* column, not whole relation */
+ StringInfoData rel;
+
+ initStringInfo(&rel);
+ getRelationDescription(&rel, object->objectId);
+ /* translator: second %s is, e.g., "table %s" */
+ appendStringInfo(&buffer, _("column %s of %s"),
get_attname(object->objectId,
object->objectSubId,
- false));
+ false),
+ rel.data);
+ pfree(rel.data);
+ }
break;
case OCLASS_PROC:
colobject.objectId = attrdef->adrelid;
colobject.objectSubId = attrdef->adnum;
- appendStringInfo(&buffer, _("default for %s"),
+ /* translator: %s is typically "column %s of table %s" */
+ appendStringInfo(&buffer, _("default value for %s"),
getObjectDescription(&colobject));
systable_endscan(adscan);
(1 row)
drop domain mytype cascade;
-NOTICE: drop cascades to table foo column f2
+NOTICE: drop cascades to column f2 of table foo
select * from foo;
f1 | f3
----+----
CREATE TYPE test_typex AS (a int, b text);
CREATE TABLE test_tblx (x int, y test_typex check ((y).a > 0));
ALTER TYPE test_typex DROP ATTRIBUTE a; -- fails
-ERROR: cannot drop composite type test_typex column a because other objects depend on it
-DETAIL: constraint test_tblx_y_check on table test_tblx depends on composite type test_typex column a
+ERROR: cannot drop column a of composite type test_typex because other objects depend on it
+DETAIL: constraint test_tblx_y_check on table test_tblx depends on column a of composite type test_typex
HINT: Use DROP ... CASCADE to drop the dependent objects too.
ALTER TYPE test_typex DROP ATTRIBUTE a CASCADE;
NOTICE: drop cascades to constraint test_tblx_y_check on table test_tblx
CREATE TABLE collate_test23 (f1 text collate mycoll2);
DROP COLLATION mycoll2; -- fail
ERROR: cannot drop collation mycoll2 because other objects depend on it
-DETAIL: table collate_test23 column f1 depends on collation mycoll2
+DETAIL: column f1 of table collate_test23 depends on collation mycoll2
HINT: Use DROP ... CASCADE to drop the dependent objects too.
-- invalid: non-lowercase quoted identifiers
CREATE COLLATION case_coll ("Lc_Collate" = "POSIX", "Lc_Ctype" = "POSIX");
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
alter type comptype alter attribute r type bigint;
alter type comptype drop attribute r; -- fail
-ERROR: cannot drop composite type comptype column r because other objects depend on it
-DETAIL: constraint c1 depends on composite type comptype column r
+ERROR: cannot drop column r of composite type comptype because other objects depend on it
+DETAIL: constraint c1 depends on column r of composite type comptype
HINT: Use DROP ... CASCADE to drop the dependent objects too.
alter type comptype drop attribute i;
select conname, obj_description(oid, 'pg_constraint') from pg_constraint
update domnotnull set col1 = null;
drop domain dnotnulltest cascade;
NOTICE: drop cascades to 2 other objects
-DETAIL: drop cascades to table domnotnull column col1
-drop cascades to table domnotnull column col2
+DETAIL: drop cascades to column col1 of table domnotnull
+drop cascades to column col2 of table domnotnull
-- Test ALTER DOMAIN .. DEFAULT ..
create table domdeftest (col1 ddef1);
insert into domdeftest default values;
-- Both drops should fail, but with different error messages:
DROP SEQUENCE t1_f1_seq;
ERROR: cannot drop sequence t1_f1_seq because other objects depend on it
-DETAIL: default for table t1 column f1 depends on sequence t1_f1_seq
+DETAIL: default value for column f1 of table t1 depends on sequence t1_f1_seq
HINT: Use DROP ... CASCADE to drop the dependent objects too.
DROP SEQUENCE myseq2;
ERROR: cannot drop sequence myseq2 because other objects depend on it
-DETAIL: default for table t1 column f2 depends on sequence myseq2
+DETAIL: default value for column f2 of table t1 depends on sequence myseq2
HINT: Use DROP ... CASCADE to drop the dependent objects too.
-- This however will work:
DROP SEQUENCE myseq3;
^
-- check dependency restrictions
ALTER TABLE main_table DROP COLUMN b;
-ERROR: cannot drop table main_table column b because other objects depend on it
-DETAIL: trigger after_upd_b_row_trig on table main_table depends on table main_table column b
-trigger after_upd_a_b_row_trig on table main_table depends on table main_table column b
-trigger after_upd_b_stmt_trig on table main_table depends on table main_table column b
+ERROR: cannot drop column b of table main_table because other objects depend on it
+DETAIL: trigger after_upd_b_row_trig on table main_table depends on column b of table main_table
+trigger after_upd_a_b_row_trig on table main_table depends on column b of table main_table
+trigger after_upd_b_stmt_trig on table main_table depends on column b of table main_table
HINT: Use DROP ... CASCADE to drop the dependent objects too.
-- this should succeed, but we'll roll it back to keep the triggers around
begin;