support `Cursor` attribute to provide ANSI SQL State Code
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 38/100
Piste de recherche
L’issue mentionne ConnectionManager.get_response() dans dbt ainsi que le message CommandComplete de PostgreSQL, mais aucun fichier ni test du dépôt. Commencez par localiser l’implémentation du curseur et la façon dont elle traite les métadonnées des commandes terminées, puis comparez le comportement des drivers disponibles avec les attributs statusmessage et sqlstate indiqués. Le travail est terminé lorsque le curseur expose les informations d’état SQL et que les détails de l’opération affectée sont conservés pour les commandes prises en charge.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
While a Cursor attribute providing SQL State Code is not officially a part of PEP 249: Python DB API 2.0 spec, there is an ANSI-standardized "SQL state code".
Many database drivers provide this as a Cursor attribute, dbt was able to depend on these drivers to provide it for ConnectionManager.get_response() method, which will report to users after successful queries the kind of operation performed (SELECT, INSERT, CREATE) and the numbers of rows affected. Originally the Redshift adapter for dbt, was supported by the psycopg2 driver, which provides this information in statusmessage.
As reported in https://github.com/dbt-labs/dbt-redshift/issues/785, after migrating the driver dependency to redshift-connector, users are in a degraded state and receive less information than previously due to the SQL state not being available.
Support for SQL state amongst popular analytics database drivers
| Driver | Cursor attribute (docs) |
|---|---|
| psycopg2 | statusmessage |
snowflake-connector-python |
sqlstate |
Ideal implementation
Postgres's CommandComplete message
| Command | Tag | rows indicates the number of rows |
|---|---|---|
INSERT |
INSERT 0 rows |
inserted |
DELETE |
DELETE rows |
deleted |
UPDATE |
UPDATE rows |
updated |
MERGE |
MERGE rows |
inserted, updated, or deleted |
SELECT / CREATE TABLE AS |
SELECT rows |
retrieved |
MOVE |
MOVE rows |
ursor's position has been changed by |
FETCH |
FETCH rows |
that have been retrieved from the cursor |
COPY |
COPY rows |
copied, only in PostgreSQL 8.2 and later |
- Langage dominant
- Python
- Étoiles
- 220
- Forks
- 86
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aws/amazon-redshift-python-driver
-
Difficulté 1/5 1-3 heures Accessibilité débutants 74/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
aws/amazon-redshift-python-driver#268 · 2 réactions ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
aws/amazon-redshift-python-driver#265 · 1 commentaire · 4 réactions ·
-
VARBYTE is decoded into utf-8 Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Toutes les issues de aws/amazon-redshift-python-driver
Issues similaires
-
bug confirmed issue
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
open-webui/open-webui#30750 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100