Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Inherited columns are not removed from a table's Columns tab after removing the parent table from "Inherited from"

Aperta Adatta ai principianti
#10,470 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@G-Glitch404 ci sta già lavorando.

Dal 4/10/2026.

  • #10504 di @G-Glitch404 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
84/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, postgresql, python

Direzione di ricerca

Inizia con la logica di rimozione di deferredDepChange di coll_inherits in web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js e confrontala con get_formatted_columns in web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/utils.py. Controlla get_columns_for_table.sql e il percorso di recupero delle proprietà per confermare che inheritedid venga mantenuto dopo la riapertura. Il lavoro è completato quando la rimozione di un parent salvato rimuove le relative colonne ereditate senza influire sulle colonne proprie del child, con i test pertinenti superati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Bug

Describe the bug

When a parent table is added under "Inherited from" on a table's Columns tab, its columns are correctly pulled into the child's column list as read-only inherited columns. However, once the table has been saved and the Properties dialog reopened, removing that parent from "Inherited from" does not remove its columns from the Columns tab — they remain in the grid and are subsequently treated/saved as the child's own columns.

This is a separate, still-open issue from #10179 / #10332 — that fix addressed marking inherited columns read-only, not this removal path.

To Reproduce

  1. Open the Properties dialog of a table (or create a new one).
  2. On the Columns tab, add a parent table under "Inherited from".
  3. The parent's columns show up in the child's column list as inherited (read-only) columns.
  4. Save.
  5. Reopen the table's Properties dialog.
  6. Remove the parent table from "Inherited from".
  7. The previously-inherited columns stay in the Columns tab instead of being removed, and the list is what gets persisted on the next Save.

(Note: if the parent is added and removed within the same, unsaved dialog session, the columns are correctly removed — the bug only appears after a save + reopen cycle.)

Expected behavior

Removing a table from "Inherited from" should remove that parent's contributed columns from the child's Columns tab, leaving only the columns the child still legitimately owns — mirroring ALTER TABLE child NO INHERIT parent in PostgreSQL, and matching the "add" side of the same control.

Error message

N/A — no error is raised; this is a silent data/UI bug.

Screenshots

(attach if available)

Desktop (please complete the following information):

  • OS: (fill in)
  • pgAdmin version: 9.18-dev / master (f09776c22 or later, includes #10332) — (adjust to your actual build)
  • Mode: (Desktop or Server)
  • Browser (if running in server mode): (fill in)
  • Package type: (fill in)

Additional context

Root cause: table.ui.js's coll_inherits field's deferredDepChange "Remove columns logic" (around table.ui.js:685-706) removes stale columns by matching col.inheritedid == removeOid. That field is only present on columns fetched interactively via the get_columns endpoint (get_columns_for_table.sql, which returns both inheritedfrom and inheritedid).

Once the table is saved and reopened, its columns instead come from the properties fetch. get_formatted_columns (columns/utils.py, around L327-332) queries the same SQL for the parent's columns but only copies other_col['inheritedfrom'] into col['inheritedfromtable'] — it drops other_col['inheritedid'], even though it's available in the same row. So reopened columns carry no inheritedid, and the frontend's removal filter above can never match them — the parent's columns are stranded in the grid indefinitely.

Suggested fix: also stamp col['inheritedid'] = other_col['inheritedid'] in get_formatted_columns, so the existing frontend removal match works the same way whether a column was added interactively or loaded from a saved table's properties.

Verified against pgadmin-org/pgadmin4 master, commit f09776c22 (2026-09-15), which already includes the merged #10332 fix (153e3273d).

Lingua principale
Python
Stelle
3.9k
Fork
904
Merge medio
1g 3h
PR unite (30g)
30

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di pgadmin-org/pgadmin4

Tutte le issue di pgadmin-org/pgadmin4

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.