Skip to content

Add Parquet file viewer with tree explorer and table view#6

Merged
bluestreak01 merged 2 commits intomasterfrom
parquet-viewer
Mar 26, 2026
Merged

Add Parquet file viewer with tree explorer and table view#6
bluestreak01 merged 2 commits intomasterfrom
parquet-viewer

Conversation

@nwoolmer
Copy link
Copy Markdown
Contributor

@nwoolmer nwoolmer commented Mar 25, 2026

Summary

  • Adds a custom Parquet file viewer using QuestDB's fork of the parquet2 library
  • Tree view (default): hierarchical metadata explorer — file info, key-value metadata, schema with physical/logical types, row groups with column details and inline data previews
  • Table view (Tab to switch): full-screen columnar data browser with horizontal scrolling and lazy row group loading
  • Supports PLAIN and RLE_DICTIONARY encoding, definition levels for nullable columns, and logical type formatting (Date, Timestamp, Decimal, String, UUID)

New files

File Lines Purpose
src/parquet_viewer.rs 1300 Core state, tree building, page decoding
src/ui/parquet_view.rs 391 Tree and table rendering

Integration

  • .parquet files are auto-detected in open_file and routed to the parquet viewer
  • AppMode::ParquetViewing added with full keyboard/mouse/goto-line support
  • Tree: Up/Down navigate, Enter/Right expand, Left collapse, Tab switches to table
  • Table: Up/Down scroll rows, Left/Right pan columns, Tab switches to tree

Test plan

  • Open a .parquet file — should show tree view with metadata
  • Expand Schema, Row Groups, Columns nodes
  • Expand Data Preview — should show decoded values
  • Press Tab — should switch to table view with column-aligned data
  • Scroll vertically and horizontally in table view
  • Press q/Esc to close viewer
  • Verify non-parquet files still open in text/hex viewer

🤖 Generated with Claude Code

nwoolmer and others added 2 commits March 25, 2026 22:18
Adds a custom parquet viewer using QuestDB's fork of the parquet2 library.
Opening a .parquet file launches the viewer instead of the hex/text viewer.

Tree view (default): hierarchical metadata explorer showing file info,
key-value metadata, schema with physical/logical types, row groups with
column details (compression, sizes), and inline data previews.

Table view (Tab to switch): full-screen columnar data browser with
horizontal scrolling and lazy row group loading.

Supports PLAIN and RLE_DICTIONARY encoding, definition levels for
nullable columns, and logical type formatting (Date, Timestamp, Decimal,
String, UUID).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…de, resolve clippy warnings

- decode_column now takes &mut File instead of opening the file per column call
- Extract decode_row_group_columns() and transpose_columns() to eliminate duplication
- Introduce TableStyles struct to reduce function argument count
- Fix clippy: map_or→is_some_and, iterator loops, needless indexing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bluestreak01 bluestreak01 merged commit a1a2751 into master Mar 26, 2026
@bluestreak01 bluestreak01 deleted the parquet-viewer branch April 6, 2026 05:50
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.

2 participants