duckdb / duckdb/duckdb-python

`select()` ignores `distinct`

Open
#154 1 comment 0 reactions 0 assignees View on GitHub
needs triage
Dominant language
Python
Stars
186
Forks
113
Avg merge
13h 29m
Merged PRs (30d)
17

Description

### What happens?

`select("distinct ")` ignores `distinct`.

Expected behavior: a) throw an exception if this is not supported or b) apply the distinct.

E.g. `select(count("*")` throws an exception `_duckdb.BinderException: Binder Error: Aggregates cannot be present in a Project relation!`

### To Reproduce

```python
import duckdb
import pandas as pd

df = pd.DataFrame({"a": [1, 2, 1, 1], "b": [10, 10, 10, 20], "c": [0, 1, 2, 3]})
duckdb.execute("CREATE TABLE foo AS SELECT * FROM df")

sql_query_selectdistinct = duckdb.table("foo").select("DISTINCT a, b").sql_query()

print(sql_query_selectdistinct)

assert "SELECT DISTINCT a, b FROM main.foo" == sql_query_selectdistinct
assert duckdb.table("foo").select("a, b").distinct().sql_query() == sql_query_selectdistinct
```

Output:
```
SELECT a, b FROM main.foo
```

Both **assertions fail**

### OS:

Windows 11 x86_64

### DuckDB Package Version:

1.4.1

### Python Version:

3.13.6

### Full Name:

Clemens Korner

### Affiliation:

AIT Austrian Institute of Technology

### What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.

I have tested with a stable release

### Did you include all relevant data sets for reproducing the issue?

Yes

### Did you include all code required to reproduce the issue?

- [x] Yes, I have

### Did you include all relevant configuration to reproduce the issue?

- [x] Yes, I have

Contributor guide

Open the contributing guide

Research direction

Start by running the Python reproducer in the issue with the DuckDB table API and inspect how select("DISTINCT a, b") and distinct() build their SQL queries. The issue is done when the query includes SELECT DISTINCT a, b FROM main.foo, or when the API raises a clear exception if that form is unsupported.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas, python, sql
Domain
databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.