[coverage] Conformance findings: CUSTOMHDR-002

Open Beginner friendly
#494 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
70/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
go
Domain
api

Research direction

Search the Go client for where Accept-Encoding or gzip transport is configured for ExecuteStatement / Statement Execution API requests (grep for Accept-Encoding, gzip, identity), and check how the HTTP client's compression settings are set up. The fix is to send identity on ExecuteStatement as the spec requires; done when TestSEARequestsDeclineResponseCompressionByDefault from the coverage PR (databricks/databricks-driver-test#1765) passes against this driver. The reference PR databricks/databricks-jdbc#1723 shows the intended behavior in another language.

Written by the indexing model from the issue text.

Description

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-go. 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-go) is fixed, then flips green as a tripwire.

Findings

  • CUSTOMHDR-002 [sea]: SEA statements client sends Accept-Encoding: gzip on ExecuteStatement instead of the explicit identity default, gzipping already-compressed base64-of-LZ4-Arrow inline results (wasted CPU on both ends; the gzipped JSON envelope can be larger on the wire than the raw bytes)
    • failing test: TestSEARequestsDeclineResponseCompressionByDefault (see the coverage PR diff under tests/)

Reproduce & Expected

CUSTOMHDR-002 — SEA (Statement Execution API) inline results are LZ4-compressed Arrow, base64-encoded and wrapped in a JSON envelope.

Reproduce:

SELECT 1 AS value

Expected (per the shared spec):

  • result has exactly 1 row(s)
  • col 0, row 0 == 1 (type Int32)
  • full assertion contract:
result:
- row_count: 1
- column:
    index: 0
    row: 0
    type: Int32
    equals: 1
protocol:
  sea:
  - request_header:
      operation: ExecuteStatement
      name: Accept-Encoding
      equals: identity

Context

Dominant language
Go
Stars
54
Forks
71
Avg merge
16h 3m
Merged PRs (30d)
21

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from databricks/databricks-sql-go

All issues in databricks/databricks-sql-go

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.