The `dict_id` was lost when constructing the logic plan.
- Lingua principale
- Rust
- Stelle
- 9.3k
- Fork
- 2.4k
- Merge medio
- 3g 11h
- PR unite (30g)
- 360
Descrizione
### Describe the bug
One of the simplest sql statements: `select * from table;` In the construction of the logical plan, `Projection` will use `to_field` at the bottom to construct `DFField`, and then `to_field` ignore the `dict_id`. This will lead to encoding errors when using IPC if there are dictionary columns.
We are glad to contribute to the community and solve this problem.
To solve this problem, it may be necessary to add interfaces to the `ExprSchema`, for example by adding `dict_is_ordered` and `dict_id` interfaces, or by adding a direct `get_dffield` interface. Or there is a better way other than the two mentioned above. Both methods have a certain amount of work and we are not sure which one to use or if there is a better way. We hope community can provide some comments and help.
Here is a draft of one of the methods:
https://github.com/CeresDB/arrow-datafusion/pull/3
### To Reproduce
_No response_
### Expected behavior
_No response_
### Additional context
_No response_
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dalla costruzione del piano logico per Projection, in particolare da ExprSchema e dal relativo percorso to_field, dove l’issue indica che dict_id viene eliminato. Esamina l’approccio preliminare collegato nell’issue e riproduci il fallimento della codifica IPC con una colonna Dictionary. Il lavoro è completato quando il piano logico conserva dict_id durante la costruzione di DFField e l’errore di codifica è risolto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust, sql
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100