Skip to content

[coverage] Conformance findings: SESSION-018 #950

Description

@peco-engineer-bot

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions