Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open Beginner friendly
#10,470 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@G-Glitch404 is already working on this.

Since Oct 4, 2026.

  • #10504 by @G-Glitch404 — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
84/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript, postgresql, python

Research direction

Start with the coll_inherits deferredDepChange removal logic in web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js and compare it with get_formatted_columns in web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/utils.py. Check get_columns_for_table.sql and the properties-fetch path to confirm inheritedid is preserved after reopening. Done means removing a saved parent removes its inherited columns without affecting the child's own columns, with the relevant tests passing.

Written by the indexing model from the issue text.

Description

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).

Dominant language
Python
Stars
3.9k
Forks
904
Avg merge
1d 5h
Merged PRs (30d)
28

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pgadmin-org/pgadmin4

All issues in pgadmin-org/pgadmin4

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.