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 后通过 GET 跟随 nextUri。返回的数据页由宿主结果 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 将选中 SQL 或整个文档传给宿主。运行器通过 POST 和 nextUri GET 获取结果,并根据 AbortSignal 尝试取消。

用于补全的 SHOW 查询与用户 SQL 执行相互独立。Run 和 Explain 使用宿主回调;取消时尝试向活动查询 URI 发送 DELETE。

查看GitHub文档与代码

编辑功能与集成职责

使用内置编辑工具、启用上下文分析,并通过应用连接元数据与查询执行。

编辑功能与集成职责 — 默认编辑 · SQL 语言支持 · 元数据 · 执行
使用内置编辑工具、启用上下文分析,并通过应用连接元数据与查询执行。点击图示可放大至原始尺寸。
1.默认编辑
使用高亮、补全、格式化和明暗主题。
2.SQL 语言支持
启用 Worker 文法分析和上下文候选项。
3.元数据
连接异步提供器与带缓存的 SHOW 查询。
4.执行
连接 Run、Explain 回调并在宿主应用显示结果。

contextAware 需显式启用。Worker 解析 SQL,Trino 执行查询。生产后端和结果界面由应用负责。

查看GitHub文档与代码

从 GitHub 开始

以 MIT 许可开源的 React 组件,示例与使用指南均在仓库中。