Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否考虑支持 SQL 这一更通用场景? #1

Open
taozuhong opened this issue Mar 21, 2021 · 3 comments
Open

是否考虑支持 SQL 这一更通用场景? #1

taozuhong opened this issue Mar 21, 2021 · 3 comments

Comments

@taozuhong
Copy link

看楼主实现的表达式 AST 实现已经比较成熟了,是否考虑支持 SQL 这一更通用场景?

支持 SQL AST 和多种 SQL方言(PL/SQL / TSQL / SQL Standard / )将会获得更广泛的用途和用户。

@cheng-zhao
Copy link
Owner

你好,感谢建议!
这个库的初衷是实现通用的底层算术和逻辑操作,而不囿于具体的数据结构。
至于上层的语法,我的原意是通过额外的语法解释器实现。

就 SQL 而言,如果要实现所有的关键字,那核心问题恐怕就不在于 AST,而是实现自己的数据库了。
但如果只需要用到简单的 WHERE 条件,那么倒是可以根据具体的数据表结构进行语法解释,也就是将 SQL 语句翻译成 libast 支持的字符串。

例如,SQL 语句

SELECT * FROM Customers WHERE age >= 18 AND city='Beijing'

中的条件可以翻译为

$1 >= 18 && $2 == "Beijing"

利用这一字符串建立了布尔类型的 AST 实例以后,只需要把表 Customers 中的 agecity 这两列的值赋予变量 $1$2 ,就可以使用 ast_eval 这一函数进行条件筛选了。

因这里的 SQL 实现依赖于具体的表结构,似乎独立于 libast,而在具体的应用场景中单独实现为宜。

@taozuhong
Copy link
Author

貌似我们想的不一样,我的意思是:支持把 SQL 语句解析成 AST 的形式,支持遍历和重建 SQL,JavasScript 这类库很多,C 方面的库很少,所以有此想法;

@cheng-zhao
Copy link
Owner

明白了,你说的是对 SQL 语句进行语法解析。
因为我们的工作重点在于数值计算,所以暂时不会增加对非数学表达式的支持,只能敬谢不敏了。
不论如何,还是感谢你的建议。将来若有余力,我会重新考虑这一意见 :-)

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

No branches or pull requests

2 participants