Skip to content

[SEA-NodeJS] (5/8) executeStatement + openSession (sessionConfig, initialCatalog/Schema)#382

Draft
msrathore-db wants to merge 2 commits into
msrathore/sea-authfrom
msrathore/sea-execution
Draft

[SEA-NodeJS] (5/8) executeStatement + openSession (sessionConfig, initialCatalog/Schema)#382
msrathore-db wants to merge 2 commits into
msrathore/sea-authfrom
msrathore/sea-execution

Conversation

@msrathore-db
Copy link
Copy Markdown
Contributor

@msrathore-db msrathore-db commented May 16, 2026

Stack

Linear stack of 8 PRs landing the M0 + M1 Phase 1 SEA NodeJS work. Merge in order from base ↑ to tip. The tip branch (msrathore/sea-auth-u2m, PR #383) is the single snapshot containing everything in flight — point your test or benchmark harness at it for an end-to-end check.

Pos PR Branch Scope
1/8 #378 sea-abstraction IBackend / ISessionBackend / IOperationBackend interfaces
2/8 #380 sea-napi-binding TS loader + build script for the kernel-provided .node artifact
3/8 #377 sea-errors-logging Kernel ErrorCode → JS error-class mapping (M0 minimum)
4/8 #379 sea-auth PAT auth via useSEA: true
5/8 #382 sea-execution executeStatement + openSession (sessionConfig, initialCatalog/Schema)
6/8 #381 sea-results CloudFetch + Inline Arrow result fetching
7/8 #384 sea-operation cancel / close / finished lifecycle + INTERVAL parity + napi-relocation acceptance (absorbed sea-integration content)
8/8 #383 sea-auth-u2m ← TIP M1 Phase 1 OAuth M2M + U2M (5 review rounds, ZERO HIGH at close)

Companion kernel stack (databricks/databricks-sql-kernel): 8 PRs — root #26 (async-public-api) → #27#25#29#28#30#24#23 (tip).

Policy: new PRs always stack on the current tip. No sibling/parallel topology. No force-pushes on existing PRs unless absolutely necessary; if a PR's content is wrong, add a fix-up commit on top of the stack tip rather than rewriting history.


This PR is position 5/8.

Summary

Implements SeaSessionBackend.executeStatement() and openSession() — the core SEA execution surface. Honors sessionConfig, initialCatalog, initialSchema on connect.

Size note (1439 LOC)

openSession + executeStatement are tightly coupled; splitting them creates a non-functional intermediate state. Reviewer-friendly approach: read commit-by-commit; each commit is a coherent slice of the feature.

Test plan

  • ✅ M0 e2e at 535ms vs pecotesting
  • ✅ runAsync polling internal to kernel; JS sees a sync-shaped promise
  • ✅ openSession honors sessionConfig + initialCatalog + initialSchema

Draft until you give the go for review.

Co-authored-by: Isaac

@github-actions
Copy link
Copy Markdown

Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase (git rebase -i main).

SeaSessionBackend wraps the napi Connection handle. executeStatement
passes through to napi.executeStatement and returns an
IOperationBackend (SeaOperationBackend in sea-results feature).
Session config + initialCatalog/initialSchema flow to napi
openSession. M0 stops at executeStatement; metadata methods +
per-stmt overrides defer to M1.

No new dependencies. Reuses existing ConnectionOptions / Session
config shapes.

Co-authored-by: Isaac
Two assertions in tests/unit/sea/execution.test.ts were specific to
the pre-merge SeaBackend / SeaOperationBackend stubs:

1. connect() missing-token rejection now flows through
   SeaAuth.buildSeaConnectionOptions which throws AuthenticationError
   (still a HiveDriverError subclass) with message "non-empty PAT".
   Updated the regex match accordingly.

2. fetchChunk() is no longer a stub — the merged
   SeaOperationBackend uses the sea-results pipeline
   (SeaResultsProvider + ArrowResultConverter + ResultSlicer). The
   "throws M1-deferred error owned by sea-results" test is now
   incorrect by design; removed it with a pointer comment to the
   real coverage in SeaOperationBackend.test.ts and
   results-e2e.test.ts.

891/891 unit tests passing post-merge.
@msrathore-db msrathore-db force-pushed the msrathore/sea-execution branch from 130b483 to d529954 Compare May 17, 2026 13:22
@msrathore-db msrathore-db changed the base branch from main to msrathore/sea-auth May 17, 2026 13:22
@github-actions
Copy link
Copy Markdown

Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase (git rebase -i main).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant