Fix _col=<pk> producing duplicate column in output (#2774)

Closes #1975
This commit is contained in:
Ritesh Kewlani 2026-06-24 02:48:49 +05:30 committed by GitHub
commit 463eea2bd0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 2 deletions

View file

@ -1606,8 +1606,8 @@ async def _columns_to_select(table_columns, pks, request):
"_col={} - invalid columns".format(", ".join(bad_columns)),
status=400,
)
# De-duplicate maintaining order:
columns.extend(dict.fromkeys(_cols))
# De-duplicate maintaining order, skipping columns already added (pks):
columns.extend(c for c in dict.fromkeys(_cols) if c not in columns)
if "_nocol" in request.args:
# Return all columns EXCEPT these
bad_columns = [

View file

@ -1420,6 +1420,16 @@ def test_generated_columns_are_visible_in_datasette():
"/fixtures/facetable.json?_col=state&_col=state",
["pk", "state"],
),
(
# https://github.com/simonw/datasette/issues/1975
"/fixtures/facetable.json?_col=pk&_col=state",
["pk", "state"],
),
(
# https://github.com/simonw/datasette/issues/1975
"/fixtures/facetable.json?_col=pk",
["pk"],
),
(
"/fixtures/facetable.json?_col=state&_col=created&_nocol=created",
["pk", "state"],