Inherited columns are not removed from a table's Columns tab after removing the parent table from "Inherited from"
I maintainer di solito rispondono entro 1 giorno
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
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
- Open the Properties dialog of a table (or create a new one).
- On the Columns tab, add a parent table under "Inherited from".
- The parent's columns show up in the child's column list as inherited (read-only) columns.
- Save.
- Reopen the table's Properties dialog.
- Remove the parent table from "Inherited from".
- 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 (
f09776c22or 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
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pgadmin-org/pgadmin4
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
pgadmin-org/pgadmin4#10503 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
pgadmin-org/pgadmin4#10462 ·
I maintainer di solito rispondono entro 1 giorno
-
Feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
pgadmin-org/pgadmin4#10426 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
pgadmin-org/pgadmin4#10424 ·
I maintainer di solito rispondono entro 1 giorno
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
pgadmin-org/pgadmin4#10418 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pgadmin-org/pgadmin4
Issue simili
-
Harmony OPeNDAP SubSetter (HOSS) Geographic LARC_CLOUD PREFIRE_SAT2_AUX-SAT R01 production
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
nasa/harmony-autotester#245 ·
-
feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
L: github:actions L: php:composer
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
dependabot/dependabot-core#16493 ·
I maintainer di solito rispondono entro 1 giorno
-
2.3 EDA: `np.log` example adds +1 to every value, so it can't produce the `-inf` output shownAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
DataTalksClub/machine-learning-zoomcamp#730 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 4 giorni