duckdb / duckdb/duckdb-python

`select()` ignores `distinct`

Ouverte
#154 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
needs triage
Langage dominant
Python
Étoiles
187
Forks
112
Merge moyen
13 h 29 min
PR mergées (30 j)
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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par exécuter le reproducteur Python de l’issue avec la DuckDB table API et examinez comment select("DISTINCT a, b") et distinct() construisent leurs requêtes SQL. L’issue est terminée lorsque la requête inclut SELECT DISTINCT a, b FROM main.foo, ou lorsque l’API lève une exception explicite si cette forme n’est pas prise en charge.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
pandas, python, sql
Domaine
databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.