ClickHouse 试运行查询

问题描述 投票:0回答:1

我在 ClickHouse 代理上工作,它将在将查询发送到 ClickHouse 之前验证和修改查询。为了实现验证逻辑,我需要知道用户请求哪些列。当用户在 select 中使用

*
时,问题就出现了。

对于像

select * from table
这样的简单查询,我可以自己扩展
*
并将原始查询转换为例如
select a,b,c from table

了解表和列的名称,并可以检查用户的权限是否可以访问这些列。但是如何处理包含许多连接、子查询等的复杂查询。我希望 ClickHouse 中可能有一个功能,允许在执行之前进行

dry-run
查询,然后 ClickHouse 会解析、分析、优化原始 SQL 并生成扩展 SQL没有
*

我在 ClickhHouse 文档中找不到类似的内容。我使用 sqlglot 库来转换 AST。有什么想法可以解决我的问题吗?

提前谢谢您

abstract-syntax-tree acl clickhouse dry-run sqlglot
1个回答
0
投票

我问了在 ClickHouse 工作的人。您可以在 ClickHouse 中运行

EXPLAIN <query>
,但不知道 ClickHouse 之外是否有独立的解析器。因为此结果需要表架构定义。

© www.soinside.com 2019 - 2024. All rights reserved.