Open Source

Trino Monaco SQL Editor

Trino のための Monaco ベース React SQL エディタコンポーネント。ANTLR による文法解析とライブクラスタのメタデータで、IDE 級の SQL 編集体験を提供します。

MIT License · Open SourceGitHub リポジトリ

ブラウザ編集と Trino 実行

Monaco での編集、Worker の文法解析、メタデータ取得、ホストが接続するクエリ実行を役割ごとに分けます。

ブラウザ編集と Trino 実行 — 構成要素と実行境界を示す図: React で SQL を編集 → Worker で文法解析 → メタデータを取得 → ホスト経由で実行
01 React で SQL を編集 → 02 Worker で文法解析 → 03 メタデータを取得 → 04 ホスト経由で実行図を選択すると元のサイズに拡大できます。
1.React で SQL を編集
TrinoEditor が Monaco・Monarch に Trino 言語、キーワード、テーマを登録し、文書・カーソル・操作コールバックを接続します。
2.Worker で文法解析
contextAware を有効にすると、Comlink Web Worker が ANTLR と antlr4-c3 でカーソル文脈、別名、文法エラー位置を解析します。
3.メタデータを取得
メインスレッドのプロバイダーが SHOW クエリでカタログ・スキーマ・テーブル・カラムを取得します。既定 5 分のキャッシュを使い、補完候補へ統合します。
4.ホスト経由で実行
onRunQuery に接続したランナーが Trino statement API を呼び出し、POST 後に nextUri を GET でたどります。結果ページはホストの UI が表示します。

contextAware の既定値は false です。本番用バックエンド・認証・結果 UI はホストアプリ側で統合します。Worker は SQL を解析し、Trino が実行します。

GitHubの文書・コードを見る

補完からクエリ結果まで

入力した別名に対応するカラム候補を取得し、文法を確認してから明示的な実行操作で結果ページを受け取ります。

補完からクエリ結果まで — 構成要素と実行境界を示す図: カーソル文脈を把握 → 対応するカラムを取得 → 候補と文法エラーを表示 → 実行して結果を受信
01 カーソル文脈を把握 → 02 対応するカラムを取得 → 03 候補と文法エラーを表示 → 04 実行して結果を受信図を選択すると元のサイズに拡大できます。
1.カーソル文脈を把握
SELECT o. FROM iceberg.sales.orders o などの文で、Worker が o. のカラム文脈と別名 o の参照テーブルを把握します。
2.対応するカラムを取得
キャッシュを再利用するか、SHOW COLUMNS で orders のカラム名と型を取得します。接続はホストのプロキシ・認証設定に従います。
3.候補と文法エラーを表示
Monaco がメタデータと文法に基づく候補を統合します。入力後 250ms 待機して文法を検証しますが、意味的な正しさや実行成功を保証するものではありません。
4.実行して結果を受信
Ctrl/Cmd+Enter が選択範囲または全文をホストに渡します。ランナーは POST と nextUri GET で結果を取得し、AbortSignal でキャンセルを試みます。

補完用 SHOW クエリとユーザー SQL の実行は別です。Run・Explain はホストのコールバックを使用し、キャンセル時は実行中 URI への DELETE を試みます。

GitHubの文書・コードを見る

編集機能と連携の構成

標準編集、文脈解析、アプリ経由のメタデータ取得と実行を組み合わせます。

編集機能と連携の構成 — 標準編集 · SQL 言語支援 · メタデータ · 実行
標準編集、文脈解析、アプリ経由のメタデータ取得と実行を組み合わせます。図を選択すると元のサイズに拡大できます。
1.標準編集
強調表示、補完、整形、明暗テーマを使います。
2.SQL 言語支援
Worker での文法解析と文脈候補を有効にします。
3.メタデータ
非同期プロバイダーとキャッシュ付き SHOW 照会を接続します。
4.実行
Run、Explain のコールバックとホスト結果画面を接続します。

contextAware は任意です。Worker は解析、Trino は実行を担当します。本番バックエンドと結果画面はアプリ側で構成します。

GitHubの文書・コードを見る

GitHub ですぐに始められます

MIT ライセンスで公開された React コンポーネントです。デモと使用ガイドはリポジトリにあります。