[coverage] Conformance findings: SESSION-021

Đang mở
#521 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
52/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go
Lĩnh vực
database, databases

Hướng nghiên cứu

Start with TestStatementCreationOnClosedConnectionRejected in the coverage PR diff under tests/ and compare its expected behavior with the reference JDBC fix. Trace driver.Conn.Prepare and PrepareContext to find where closed connections should be rejected before any server call. Done means both methods reject eagerly, the connection can still run queries afterward, and the conformance assertions pass for thrift and sea.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

  • SESSION-021 [thrift]: driver.Conn.Prepare and PrepareContext on a CLOSED connection return a statement instead of rejecting eagerly, deferring the failure to a server-side "Invalid SessionHandle" 400 at execute
    • failing test: TestStatementCreationOnClosedConnectionRejected (see the coverage PR diff under tests/)
  • SESSION-021 [sea]: driver.Conn.Prepare and PrepareContext on a CLOSED connection return a statement instead of rejecting eagerly; the kernel only fails later at execute with kernel_session_new_statement: session and out must be non-null
    • failing test: TestStatementCreationOnClosedConnectionRejected (see the coverage PR diff under tests/)
  • SESSION-021: driver.Conn.Prepare and PrepareContext on a CLOSED connection return a statement instead of rejecting eagerly, deferring the failure to execute (thrift: server-side "Invalid SessionHandle" 400; sea/kernel: kernel_session_new_statement null-session error)

Reproduce & Expected

SESSION-021 — Validates that a CLOSED connection rejects statement creation EAGERLY -- at the create/prepare/retrieve call itself, before any execution is attempted -- and that the rejected attempt leaves no stale…

Reproduce:

SELECT 1
SELECT 1
SELECT 1

Expected (per the shared spec):

  • completes without an exception
  • completes without an exception
  • completes without an exception
  • completes without an exception
  • [thrift] exactly 0 OpenSession call(s)
  • [thrift] exactly 0 ExecuteStatement call(s)
  • [sea] exactly 0 CreateSession call(s)
  • [sea] exactly 0 ExecuteStatement call(s)
  • full assertion contract:
result:
- label: baseline
  no_exception: true
  row_count: 1
- label: baseline_metadata
  no_exception: true
- label: closed_create
  error:
    contains:
    - closed
    - disposed
    - not connected
- label: closed_prepare
  error:
    contains:
    - closed
    - disposed
    - not connected
- label: after_close
  no_exception: true
  row_count: 1
- label: after_close_metadata
  no_exception: true
- label: after_close_metadata
  metadata_path_unchanged_from: baseline_metadata
protocol:
  thrift:
  - call_count:
      method: OpenSession
      expected: 0
      label: closed_create
  - call_count:
      method: ExecuteStatement
      expected: 0
      label: closed_create
  - call_min:
      method: OpenSession
      min: 1
      label: after_close
  sea:
  - call_count:
      operation: CreateSession
      expected: 0
      label: closed_create
  - call_count:
      operation: ExecuteStatement
      expected: 0
      label: closed_create
  - call_min:
      operation: CreateSession
      min: 1
      label: after_close

Context

Ngôn ngữ chính
Go
Star
53
Fork
70
Merge trung bình
2 ngày 12 giờ
Pull request đã merge (30 ngày)
16

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của databricks/databricks-sql-go

Tất cả issue của databricks/databricks-sql-go

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.