Обсуждение: Bug:Create a table with 1600 fields (reaching the upper limit), then drop several fields and create new ones, but the addition failed.

Поиск
Список
Период
Сортировка
Create a table with 1600 fields (reaching the upper limit), then drop several fields and create new ones, but the addition failed.

test=# alter table t1 add column co1599 int;
ALTER TABLE
test=# alter table t1 add column co1600 int;
ALTER TABLE
test=# alter table t1 add column co1601 int;
psql: ERROR:  table can have at most 1600 columns

then, I drop column co1600 and add it again, failed:

test=# alter table t1 drop column co1600;
ALTER TABLE
test=# alter table t1 add column co1600 int;
psql: ERROR:  table can have at most 1600 columns

then, I drop column co1600 again:

test=# alter table t1 drop column co1600;
psql: ERROR: column "co1600" of relation "t1" dose not exist
On Thu, May 4, 2023 at 9:09 AM BO ST <1599224321@qq.com> wrote:
Create a table with 1600 fields (reaching the upper limit), then drop several fields and create new ones, but the addition failed.

test=# alter table t1 add column co1599 int;
ALTER TABLE
test=# alter table t1 add column co1600 int;
ALTER TABLE
test=# alter table t1 add column co1601 int;
psql: ERROR:  table can have at most 1600 columns

then, I drop column co1600 and add it again, failed:

test=# alter table t1 drop column co1600;
ALTER TABLE
test=# alter table t1 add column co1600 int;
psql: ERROR:  table can have at most 1600 columns

then, I drop column co1600 again:

test=# alter table t1 drop column co1600;
psql: ERROR: column "co1600" of relation "t1" dose not exist

Implementation details - not all columns that are present on a table are user-visible.  In particular, dropped columns remain but are inaccessible in order to avoid rewriting the table.

David J.