Skip to content

[SEA-NodeJS] (6/8) CloudFetch + Inline Arrow result fetching#381

Draft
msrathore-db wants to merge 1 commit into
msrathore/sea-executionfrom
msrathore/sea-results
Draft

[SEA-NodeJS] (6/8) CloudFetch + Inline Arrow result fetching#381
msrathore-db wants to merge 1 commit into
msrathore/sea-executionfrom
msrathore/sea-results

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 6/8.

Summary

SeaOperationBackend + SeaResultsProvider + SeaArrowIpc wire the kernel's CloudFetch and Inline Arrow paths to JS row-shape conversion.

Size note (964 LOC, marginally over cap)

CloudFetch and Inline Arrow share too much (ArrowResultConverter integration) to split cleanly. Reviewable in one pass.

Test plan

  • ✅ M0 parity gate clean against pecotesting at 23.2 MB/s on a 100k×17-column run
  • ✅ Default-on CloudFetch; per-statement useCloudFetch override forwarded via session_conf
  • ✅ Inline Arrow result fetching same converter path as thrift

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).

Implements IOperationBackend over the napi binding's Statement.
fetchChunk decodes Arrow IPC bytes → apache-arrow RecordBatch →
ArrowResultConverter (Phase 1+2 reused unchanged) → JS rows.

All M0 datatypes round-trip via the same converter the thrift path
uses (BOOL, INT8/16/32/64, FLOAT, DOUBLE, DECIMAL, STRING, BINARY,
DATE, TIMESTAMP, INTERVAL, ARRAY, MAP, STRUCT). Unit tests
construct synthetic IPC batches; e2e test against pecotesting
confirms byte-identical parity vs thrift.

No new dependencies. ArrowResultConverter / ResultSlicer /
OperationIterator all reused unchanged (DRY).
@msrathore-db msrathore-db force-pushed the msrathore/sea-results branch from fa6da7f to 5d64f20 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
@msrathore-db msrathore-db changed the base branch from msrathore/sea-auth to msrathore/sea-execution 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