[coverage] Conformance findings: METADATA-035,STATEMENT-023
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Empieza por el diff del PR de cobertura en tests/, especialmente test_get_tables_empty_table_types_filter_matches_all y test_failed_statement_error_carries_sql_state, y después sigue las rutas correspondientes del backend Thrift. Reproduce la sentencia SQL de la tabla inexistente y compara Thrift con el backend del kernel. Se considera terminado cuando pasan ambas pruebas de fallo esperado: un table_types vacío coincide con todos los tipos y las sentencias fallidas exponen SQLSTATE 42P01 con el texto de error esperado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-python. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-sql-python) is fixed, then flips green as a tripwire.
Findings
- METADATA-035 [thrift]: Thrift backend forwards an empty getTables table_types list verbatim as TGetTablesReq(tableTypes=[]), so the server treats it as match-none and returns zero rows instead of behaving like None (match all types); the kernel backend correctly normalises [] to None
- failing test:
test_get_tables_empty_table_types_filter_matches_all(see the coverage PR diff undertests/)
- failing test:
- STATEMENT-023 [thrift]: Thrift backend drops the server SQLSTATE on a FAILED statement: it builds exceptions from errorMessage/displayMessage only and never copies TStatus.sqlState / TGetOperationStatusResp.sqlState, so no PEP 249 error attribute carries 42P01 for TABLE_OR_VIEW_NOT_FOUND; the kernel backend does forward sql_state
- failing test:
test_failed_statement_error_carries_sql_state(see the coverage PR diff undertests/)
- failing test:
Reproduce & Expected
STATEMENT-023 — Validates that when the server resolves a statement to a FAILED state, the driver surfaces the server's SQLSTATE on the raised error — not just a free-text message. A statement whose SQLSTATE is stable and server-assigned is used: a reference to a table that does not exist, which Databricks reports as TABLE_OR_VIEW_NOT_FOUND with SQLSTATE 42P01. The raised error must expose that SQLSTATE through the driver's standard error surface (ADBC AdbcException.SqlState, JDBC SQLException.getSQLState(), DBAPI error attributes, ODBC SQLGetDiagRec SQLSTATE, etc.). This pins the portable half of the cross-protocol error contract: consumers branch on the status/SQLSTATE pair, so both protocols must populate it identically even though each raises its own natural concrete exception class. The CONCRETE exception TYPE is deliberately NOT asserted — it legitimately differs per protocol and per driver (the reference driver raises DatabricksException on SEA and HiveServer2Exception on Thrift), so requiring one class would encode a driver-internal detail rather than the contract.
Reproduce:
SELECT * FROM nonexistent_catalog_xyz123.nonexistent_schema.nonexistent_table
Expected (per the shared spec):
- full assertion contract:
result:
- error:
sql_state: 42P01
- error:
contains:
- TABLE_OR_VIEW_NOT_FOUND
- not found
- cannot be found
Context
- The behavior was first fixed in a DIFFERENT driver — reference PR: https://github.com/adbc-drivers/databricks/pull/604 — which seeded the shared language-neutral spec. This issue tracks the same conformance gap in databricks/databricks-sql-python; the reference PR is for cross-referencing the intended behavior, NOT a change to this repo.
- Coverage PR carrying the reproducing xfail test(s): https://github.com/databricks/databricks-driver-test/pull/1072
- Lenguaje dominante
- Python
- Estrellas
- 236
- Forks
- 162
- Merge medio
- 13 h 13 min
- PR fusionados (30 d)
- 23
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de databricks/databricks-sql-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
databricks/databricks-sql-python#1034 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
databricks/databricks-sql-python#1012 ·
Los mantenedores suelen responder en 1 día
-
Token federation: `_exchange_token` raises KeyError('access_token') on error responses, discarding the real failure reasonPosiblemente ocupada @TangoEnSkai la tomó hace 82 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
databricks/databricks-sql-python#904 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
databricks/databricks-sql-python#865 ·
Los mantenedores suelen responder en 1 día
-
engineer-bot
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
databricks/databricks-sql-python#860 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de databricks/databricks-sql-python
Issues similares
-
AI bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
AUTO-MAS-Project/AUTO-MAS#1960 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
btclib-org/btclib-wallet#872 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: Scheduled returns scan all accepted minion keys causing extreme loadPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
saltstack/salt#70789 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
btclib-org/btclib#3093 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día