BUG #18161: ALTER TABLE ... ALTER COLUMN does not remove dependencies in automatically from column and sequence.

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #18161: ALTER TABLE ... ALTER COLUMN does not remove dependencies in automatically from column and sequence.
Дата
Msg-id 18161-6f5840d311f0a100@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #18161: ALTER TABLE ... ALTER COLUMN does not remove dependencies in automatically from column and sequence.  (Laurenz Albe <laurenz.albe@cybertec.at>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      18161
Logged by:          Anthony Sotolongo León
Email address:      asotolongo@gmail.com
PostgreSQL version: 15.4
Operating system:   Ubuntu 22.04.3 LTS
Description:

I am trying to change the default value(a sequence) for a column to another
column, but the dependencies are not removed from the pg_depend table, then
I cannot delete the old column,  for example:

example=# CREATE TABLE example (i serial , j text);
CREATE TABLE
example=# \d+ example
                                                       Table
"public.example"
 Column |  Type   | Collation | Nullable |              Default
 | Storage  | Compression | Stats target | Description 

--------+---------+-----------+----------+------------------------------------+----------+-------------+--------------+-------------
 i      | integer |           | not null |
nextval('example_i_seq'::regclass) | plain    |             |              |

 j      | text    |           |          |
 | extended |             |              | 
Access method: heap

example=# alter table example add column i_new bigint;
ALTER TABLE
example=# alter table example alter column i drop default ;
ALTER TABLE
example=# alter table example alter column i_new set default
nextval('example_i_seq'::regclass);
ALTER TABLE
example=# \d+ example
                                                       Table
"public.example"
 Column |  Type   | Collation | Nullable |              Default
 | Storage  | Compression | Stats target | Description 

--------+---------+-----------+----------+------------------------------------+----------+-------------+--------------+-------------
 i      | integer |           | not null |
 | plain    |             |              | 
 j      | text    |           |          |
 | extended |             |              | 
 i_new  | bigint  |           |          |
nextval('example_i_seq'::regclass) | plain    |             |              |

Access method: heap

example=# alter table example drop column i;
ERROR:  cannot drop column i of table example because other objects depend
on it
DETAIL:  default value for column i_new of table example depends on sequence
example_i_seq
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
example=# SELECT t.oid::regclass AS table_name,
       a.attname AS column_name,
       s.relname AS sequence_name, d.*
FROM pg_class AS t
   JOIN pg_attribute AS a
      ON a.attrelid = t.oid
   JOIN pg_depend AS d
      ON d.refobjid = t.oid
         AND d.refobjsubid = a.attnum
   JOIN pg_class AS s
      ON s.oid = d.objid
WHERE d.classid = 'pg_catalog.pg_class'::regclass
  AND d.refclassid = 'pg_catalog.pg_class'::regclass
  AND d.deptype IN ('i', 'a')
  AND t.relkind IN ('r', 'P')
  AND s.relkind = 'S' ;

 table_name | column_name | sequence_name | classid |  objid  | objsubid |
refclassid | refobjid | refobjsubid | deptype 

------------+-------------+---------------+---------+---------+----------+------------+----------+-------------+---------
 example    | i           | example_i_seq |    1259 | 3217347 |        0 |
    1259 |  3217348 |           1 | a
(1 row)


--if i delete the dependency manually, then I can drop the column:

example=# delete from pg_depend where objid=3217347 and refclassid=1259 and
refobjid=3217348;
DELETE 1
example=# alter table example drop column i;
ALTER TABLE



In addition, neither I can not see the relationship between the i_new column
and the sequence

all of these, It is normal behavior or is it a bug?


В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #18160: first create table show "ERROR: permission denied for schema public", next create table works
Следующее
От: Erwin Brandstetter
Дата:
Сообщение: Variable substitution in jsonb functions fails for jsonpath operator like_regex