Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[coverage] Conformance findings: SESSION-018

Ouverte
#950 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
58/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
api, backend

Piste de recherche

Start by locating the Python session path and its thrift_backend hostname handling, then compare it with the named test_server_hostname_url_scheme_parsed_case_insensitively in the coverage PR. Verify the existing lower-case behavior and reproduce the upper-case and mixed-case scheme cases. Done means explicit schemes are handled case-insensitively, while a prefix without the ':' delimiter preserves the full hostname in the error.

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

Description

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

  • SESSION-018 [thrift]: An explicit server_hostname URL scheme is matched case-sensitively: HTTPS://<host> is not recognized/stripped, so thrift_backend re-prefixes to https://HTTPS://<host> and the driver dials hostname https instead of the workspace
    • failing test: test_server_hostname_url_scheme_parsed_case_insensitively (see the coverage PR diff under tests/)
  • SESSION-018 [sea]: The Rust kernel's config.rs::normalise_host matches the scheme with lowercase-only starts_with("https://"), so HTTPS://<host> is treated as scheme-less and re-prefixed into the unreachable https://https//<host>/api/2.0/sql/sessions
    • failing test: test_server_hostname_url_scheme_parsed_case_insensitively (see the coverage PR diff under tests/)
  • SESSION-018: An explicit server_hostname URL scheme is matched case-sensitively: HTTPS://<host> / HtTpS://<host> are not recognized or stripped, so thrift_backend re-prefixes to https://HTTPS://<host> and the driver dials hostname https instead of the workspace (RFC 3986 §3.1 requires case-insensitive schemes; the connector's own url_utils.normalize_host_with_protocol already does this but the session path bypasses it)

Reproduce & Expected

SESSION-018 — Validates how the driver parses an explicit URL scheme on its server-hostname input.

Reproduce:

SELECT 1 AS test_value
SELECT 1 AS test_value
SELECT 1 AS test_value

Expected (per the shared spec):

  • completes without an exception
  • result has exactly 1 row(s)
  • completes without an exception
  • result has exactly 1 row(s)
  • completes without an exception
  • result has exactly 1 row(s)
  • full assertion contract:
result:
- label: lower_case_scheme
  no_exception: true
  description: "APPLICABILITY GATE, not the behavior under test. If this phase fails,\
    \ the\ndriver's host input does not accept an explicit URL scheme at all \u2014\
    \ report\na capability skip citing that absent capability, NOT a driver bug, and\
    \ do\nnot run the case-folding phases.\n"
- label: lower_case_scheme
  row_count: 1
- label: upper_case_scheme
  no_exception: true
  description: 'The upper-case scheme was recognized and stripped. A driver that matched
    the

    scheme case-sensitively would carry `HTTPS://` into the hostname and fail to

    reach the workspace.

    '
- label: upper_case_scheme
  row_count: 1
- label: mixed_case_scheme
  no_exception: true
- label: mixed_case_scheme
  row_count: 1
- label: prefix_without_delimiter
  error:
    contains:
    - httpbin.invalid
  description: 'The failure names the FULL, unmodified hostname. A driver that treated
    the

    leading `http` as a scheme without requiring the `:` delimiter would report

    the mangled `bin.invalid` instead, so the full string would be absent.

    '

Context

Langage dominant
Python
Étoiles
233
Forks
152
Merge moyen
21 h 5 min
PR mergées (30 j)
10

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de databricks/databricks-sql-python

Toutes les issues de databricks/databricks-sql-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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