get_foreign_keys() missing @reflection.cache causes excessive DESCRIBE TABLE EXTENDED queries
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 90/100
Direzione di ricerca
Inizia in base.py, in get_foreign_keys(), intorno alla riga 256, e confrontalo con get_pk_constraint(), intorno alla riga 211; entrambi usano _describe_table_extended(). Aggiungi il decoratore mancante per la cache della reflection e verifica che DESCRIBE TABLE EXTENDED venga eseguito una sola volta per tabella durante reflection ripetute.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
get_foreign_keys() is missing the @reflection.cache decorator, causing a fresh DESCRIBE TABLE EXTENDED query to be issued to the SQL warehouse for every table on every reflection call.
Expected behaviour
Like get_pk_constraint(), has_table(), and get_table_comment(), get_foreign_keys() should be cached per-table per-connection so that DESCRIBE TABLE EXTENDED is only executed once per table during a reflection pass.
Actual behaviour
Every call to get_foreign_keys() unconditionally executes:
DESCRIBE TABLE EXTENDED `catalog`.`schema`.`table`
When reflecting schemas with many tables (or when reflection is triggered repeatedly, e.g. on each request in a web application), this produces a large number of redundant warehouse queries.
Root cause
base.py — get_foreign_keys() at line 256 lacks @reflection.cache. Compare with get_pk_constraint() (line 211) which uses the same _describe_table_extended() helper but is correctly decorated.
Fix
Add @reflection.cache to get_foreign_keys().
- Lingua principale
- Python
- Stelle
- 24
- Fork
- 18
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di databricks/databricks-sqlalchemy
-
get_columns() missing @reflection.cache causes a warehouse round-trip on every reflection call Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
databricks/databricks-sqlalchemy#73 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Cross catalog query support Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
Tutte le issue di databricks/databricks-sqlalchemy
Issue simili
-
documentation help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
simonw/sqlite-utils#872 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100