Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Iotdb
提交
efabf333
I
Iotdb
项目概览
apache
/
Iotdb
10 个月 前同步成功
通知
25
Star
3344
Fork
916
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
Iotdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
efabf333
编写于
8月 30, 2019
作者:
1
151250176
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove duplicate cause by or and fix bugs
上级
91def7b7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
58 addition
and
5 deletion
+58
-5
spark-tsfile/src/main/java/org/apache/iotdb/tsfile/qp/QueryProcessor.java
.../main/java/org/apache/iotdb/tsfile/qp/QueryProcessor.java
+46
-1
spark-tsfile/src/main/java/org/apache/iotdb/tsfile/qp/common/TSQueryPlan.java
...n/java/org/apache/iotdb/tsfile/qp/common/TSQueryPlan.java
+8
-0
spark-tsfile/src/main/scala/org/apache/iotdb/tsfile/NewConverter.scala
...src/main/scala/org/apache/iotdb/tsfile/NewConverter.scala
+4
-4
未找到文件。
spark-tsfile/src/main/java/org/apache/iotdb/tsfile/qp/QueryProcessor.java
浏览文件 @
efabf333
...
...
@@ -18,7 +18,6 @@
*/
package
org.apache.iotdb.tsfile.qp
;
import
org.apache.iotdb.tsfile.read.TsFileSequenceReader
;
import
org.apache.iotdb.tsfile.qp.common.FilterOperator
;
import
org.apache.iotdb.tsfile.qp.common.SQLConstant
;
import
org.apache.iotdb.tsfile.qp.common.SingleQuery
;
...
...
@@ -29,9 +28,13 @@ import org.apache.iotdb.tsfile.qp.optimizer.DNFFilterOptimizer;
import
org.apache.iotdb.tsfile.qp.optimizer.MergeSingleFilterOptimizer
;
import
org.apache.iotdb.tsfile.qp.optimizer.PhysicalOptimizer
;
import
org.apache.iotdb.tsfile.qp.optimizer.RemoveNotOptimizer
;
import
org.apache.iotdb.tsfile.read.TsFileSequenceReader
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -73,6 +76,48 @@ public class QueryProcessor {
}
else
{
queryPlans
.
addAll
(
new
PhysicalOptimizer
(
columnNames
).
optimize
(
null
,
paths
,
in
,
start
,
end
));
}
// merge query plan
Map
<
List
<
String
>,
List
<
TSQueryPlan
>>
pathMap
=
new
HashMap
<>();
for
(
TSQueryPlan
tsQueryPlan
:
queryPlans
){
if
(
pathMap
.
containsKey
(
tsQueryPlan
.
getPaths
())){
pathMap
.
get
(
tsQueryPlan
.
getPaths
()).
add
(
tsQueryPlan
);
}
else
{
List
<
TSQueryPlan
>
plans
=
new
ArrayList
<>();
plans
.
add
(
tsQueryPlan
);
pathMap
.
put
(
tsQueryPlan
.
getPaths
(),
plans
);
}
}
queryPlans
.
clear
();
for
(
List
<
TSQueryPlan
>
plans
:
pathMap
.
values
()){
TSQueryPlan
mergePlan
=
null
;
for
(
TSQueryPlan
plan
:
plans
){
if
(
mergePlan
==
null
){
mergePlan
=
plan
;
}
else
{
FilterOperator
timeFilterOperator
=
new
FilterOperator
(
SQLConstant
.
KW_OR
);
List
<
FilterOperator
>
timeFilterChildren
=
new
ArrayList
<>();
timeFilterChildren
.
add
(
mergePlan
.
getTimeFilterOperator
());
timeFilterChildren
.
add
(
plan
.
getTimeFilterOperator
());
timeFilterOperator
.
setChildrenList
(
timeFilterChildren
);
mergePlan
.
setTimeFilterOperator
(
timeFilterOperator
);
FilterOperator
valueFilterOperator
=
new
FilterOperator
(
SQLConstant
.
KW_OR
);
List
<
FilterOperator
>
valueFilterChildren
=
new
ArrayList
<>();
valueFilterChildren
.
add
(
mergePlan
.
getValueFilterOperator
());
valueFilterChildren
.
add
(
plan
.
getValueFilterOperator
());
valueFilterOperator
.
setChildrenList
(
valueFilterChildren
);
mergePlan
.
setValueFilterOperator
(
valueFilterOperator
);
}
}
queryPlans
.
add
(
mergePlan
);
}
//
return
queryPlans
;
}
...
...
spark-tsfile/src/main/java/org/apache/iotdb/tsfile/qp/common/TSQueryPlan.java
浏览文件 @
efabf333
...
...
@@ -44,6 +44,14 @@ public class TSQueryPlan {
return
timeFilterOperator
;
}
public
void
setTimeFilterOperator
(
FilterOperator
timeFilterOperator
)
{
this
.
timeFilterOperator
=
timeFilterOperator
;
}
public
void
setValueFilterOperator
(
FilterOperator
valueFilterOperator
)
{
this
.
valueFilterOperator
=
valueFilterOperator
;
}
public
FilterOperator
getValueFilterOperator
()
{
return
valueFilterOperator
;
}
...
...
spark-tsfile/src/main/scala/org/apache/iotdb/tsfile/NewConverter.scala
浏览文件 @
efabf333
...
...
@@ -478,7 +478,7 @@ object NewConverter {
case
SQLConstant
.
LESSTHAN
=>
val
basicOperator
=
node
.
asInstanceOf
[
BasicOperator
]
if
(
QueryConstant
.
RESERVED_TIME
.
equals
(
basicOperator
.
getSeriesPath
.
toLowerCase
()))
{
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
eq
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
lt
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
}
else
{
filter
=
constructExpression
(
schema
,
basicOperator
.
getSeriesPath
,
basicOperator
.
getSeriesValue
,
FilterTypes
.
Lt
,
device_name
)
}
...
...
@@ -487,7 +487,7 @@ object NewConverter {
case
SQLConstant
.
LESSTHANOREQUALTO
=>
val
basicOperator
=
node
.
asInstanceOf
[
BasicOperator
]
if
(
QueryConstant
.
RESERVED_TIME
.
equals
(
basicOperator
.
getSeriesPath
.
toLowerCase
()))
{
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
e
q
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
ltE
q
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
}
else
{
filter
=
constructExpression
(
schema
,
basicOperator
.
getSeriesPath
,
basicOperator
.
getSeriesValue
,
FilterTypes
.
LtEq
,
device_name
)
}
...
...
@@ -496,7 +496,7 @@ object NewConverter {
case
SQLConstant
.
GREATERTHAN
=>
val
basicOperator
=
node
.
asInstanceOf
[
BasicOperator
]
if
(
QueryConstant
.
RESERVED_TIME
.
equals
(
basicOperator
.
getSeriesPath
.
toLowerCase
()))
{
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
eq
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
gt
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
}
else
{
filter
=
constructExpression
(
schema
,
basicOperator
.
getSeriesPath
,
basicOperator
.
getSeriesValue
,
FilterTypes
.
Gt
,
device_name
)
}
...
...
@@ -505,7 +505,7 @@ object NewConverter {
case
SQLConstant
.
GREATERTHANOREQUALTO
=>
val
basicOperator
=
node
.
asInstanceOf
[
BasicOperator
]
if
(
QueryConstant
.
RESERVED_TIME
.
equals
(
basicOperator
.
getSeriesPath
.
toLowerCase
()))
{
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
e
q
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
filter
=
new
GlobalTimeExpression
(
TimeFilter
.
gtE
q
(
java
.
lang
.
Long
.
parseLong
(
basicOperator
.
getSeriesValue
)))
}
else
{
filter
=
constructExpression
(
schema
,
basicOperator
.
getSeriesPath
,
basicOperator
.
getSeriesValue
,
FilterTypes
.
GtEq
,
device_name
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录