Updated SQL Parser (markdown)

wenshao
2013-03-05 22:24:55 -08:00
parent de67244084
commit fd488de52c
+3 -3
@@ -1,4 +1,4 @@
SQL Parser是Druid的一个重要组成部分,Druid内置使用SQL Parser来实现防御SQL注入([WallFilter](https://github.com/AlibabaTech/druid/wiki/%E7%AE%80%E4%BB%8B_WallFilter))、合并统计没有参数化的SQL([StatFilter](https://github.com/AlibabaTech/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter)的mergeSql)、[SQL格式化](https://github.com/AlibabaTech/druid/wiki/SQL%E6%A0%BC%E5%BC%8F%E5%8C%96)、分库分表。
SQL Parser是Druid的一个重要组成部分,Druid内置使用SQL Parser来实现防御SQL注入([WallFilter](https://github.com/alibaba/druid/wiki/%E7%AE%80%E4%BB%8B_WallFilter))、合并统计没有参数化的SQL([StatFilter](https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter)的mergeSql)、[SQL格式化](https://github.com/alibaba/druid/wiki/SQL%E6%A0%BC%E5%BC%8F%E5%8C%96)、分库分表。
# 各种语法支持
Druid的sql parser是目前支持各种数据语法最完备的SQL Parser。目前对各种数据库的支持如下:
@@ -19,7 +19,7 @@ Druid的SQL Parser是手工编写,性能是antlr、javacc之类工具生成的
这样的SQL,druid parser处理大约是5us,也就是每秒中可以处理20万次。
* 测试代码看这里: https://github.com/AlibabaTech/druid/blob/master/src/test/java/com/alibaba/druid/benckmark/sql/MySqlPerfTest.java
* 测试代码看这里: https://github.com/alibaba/druid/blob/master/src/test/java/com/alibaba/druid/benckmark/sql/MySqlPerfTest.java
# Druid SQL Parser的代码结构
Druid SQL Parser分三个模块:
@@ -40,7 +40,7 @@ Visitor是遍历AST的手段,是处理AST最方便的模式,Visitor是一个
* OutputVisitor用来把AST输出为字符串
* WallVisitor来分析SQL语意来防御SQL注入攻击
* ParameterizedOutputVisitor用来合并未参数化的SQL进行统计
* [EvalVisitor](https://github.com/AlibabaTech/druid/wiki/EvalVisitor) 用来对SQL表达式求值
* [EvalVisitor](https://github.com/alibaba/druid/wiki/EvalVisitor) 用来对SQL表达式求值
* ExportParameterVisitor用来提取SQL中的变量参数
* SchemaStatVisitor用来统计SQL中使用的表、字段、过滤条件、排序表达式、分组表达式