Skip to content

feat: add INLINE + ARROW_STREAM format support for analytics plugin#256

Open
jamesbroadhead wants to merge 6 commits intomainfrom
fix/arrow-stream-inline-support
Open

feat: add INLINE + ARROW_STREAM format support for analytics plugin#256
jamesbroadhead wants to merge 6 commits intomainfrom
fix/arrow-stream-inline-support

Conversation

@jamesbroadhead
Copy link
Copy Markdown

Summary

  • Some serverless warehouses only support ARROW_STREAM with INLINE disposition, but the analytics plugin only offered JSON_ARRAY (INLINE) and ARROW_STREAM (EXTERNAL_LINKS)
  • Adds a new "ARROW_STREAM" format option that uses INLINE disposition, making the plugin compatible with these warehouses
  • Updates the AnalyticsFormat type to include "ARROW_STREAM"

Test plan

  • Deploy an app against a warehouse that only supports ARROW_STREAM inline
  • Verify useAnalyticsQuery with format: "ARROW_STREAM" returns results
  • Verify existing "JSON" and "ARROW" formats are unaffected

Fixes #242

This pull request was AI-assisted by Isaac.

Some serverless warehouses only support ARROW_STREAM with INLINE
disposition, but the analytics plugin only offered JSON_ARRAY (INLINE)
and ARROW_STREAM (EXTERNAL_LINKS). This adds a new "ARROW_STREAM"
format option that uses INLINE disposition, making the plugin
compatible with these warehouses.

Fixes #242
Tests verify:
- ARROW_STREAM format passes INLINE disposition + ARROW_STREAM format
- ARROW format passes EXTERNAL_LINKS disposition + ARROW_STREAM format
- Default JSON format does not pass disposition or format overrides
The server-side ARROW_STREAM format added in the previous commit was
not exposed to the frontend or typegen:

- Add "ARROW_STREAM" to AnalyticsFormat in appkit-ui hooks
- Add "arrow_stream" to DataFormat in chart types
- Handle "arrow_stream" in useChartData's resolveFormat()
- Make typegen resilient to ARROW_STREAM-only warehouses by
  retrying DESCRIBE QUERY without format when JSON_ARRAY is rejected

Co-authored-by: Isaac
Signed-off-by: James Broadhead <jamesbroadhead@gmail.com>
…compatibility

ARROW_STREAM with INLINE disposition is the only format that works
across all warehouse types, including serverless warehouses that reject
JSON_ARRAY. Change the default from JSON to ARROW_STREAM throughout:

- Server: defaults.ts, analytics plugin request handler
- Client: useAnalyticsQuery, UseAnalyticsQueryOptions, useChartData
- Tests: update assertions for new default

JSON and ARROW formats remain available via explicit format parameter.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <jamesbroadhead@gmail.com>
When using the default ARROW_STREAM format, the analytics plugin now
automatically falls back through formats if the warehouse rejects one:
ARROW_STREAM → JSON → ARROW.

This handles warehouses that only support a subset of format/disposition
combinations without requiring users to know their warehouse's
capabilities. Explicit format requests (JSON, ARROW) are respected
without fallback.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <jamesbroadhead@gmail.com>
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.

Analytics plugin incompatible with ARROW_STREAM-only warehouses

1 participant