Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Questdb
提交
66e637c9
Q
Questdb
项目概览
jobily
/
Questdb
12 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
Questdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
66e637c9
编写于
4月 19, 2016
作者:
V
Vlad Ilyushchenko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
null in where clause can be used instead of NaN
上级
d918ac16
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
59 addition
and
22 deletion
+59
-22
core/src/main/java/com/nfsdb/ql/ops/FunctionFactories.java
core/src/main/java/com/nfsdb/ql/ops/FunctionFactories.java
+27
-2
core/src/main/java/com/nfsdb/ql/parser/VirtualColumnBuilder.java
...c/main/java/com/nfsdb/ql/parser/VirtualColumnBuilder.java
+19
-20
core/src/test/java/com/nfsdb/ql/parser/JoinQueryTest.java
core/src/test/java/com/nfsdb/ql/parser/JoinQueryTest.java
+13
-0
未找到文件。
core/src/main/java/com/nfsdb/ql/ops/FunctionFactories.java
浏览文件 @
66e637c9
...
...
@@ -137,10 +137,35 @@ public final class FunctionFactories {
break
;
case
STRING:
if
(
vc
.
getFlyweightStr
(
null
)
==
null
)
{
ColumnType
t
=
sig
.
paramTypes
.
getQuick
(
0
);
if
(
Chars
.
equals
(
sig
.
name
,
'='
))
{
return
StrEqualsNullOperator
.
FACTORY
;
switch
(
t
)
{
case
DOUBLE:
return
DoubleEqualsNanOperator
.
FACTORY
;
case
STRING:
return
StrEqualsNullOperator
.
FACTORY
;
case
INT:
return
IntEqualsNaNOperator
.
FACTORY
;
case
LONG:
case
DATE:
return
LongEqualsNaNOperator
.
FACTORY
;
default
:
break
;
}
}
else
if
(
Chars
.
equals
(
sig
.
name
,
"!="
))
{
return
StrNotEqualsNullOperator
.
FACTORY
;
switch
(
t
)
{
case
DOUBLE:
return
DoubleNotEqualsNanOperator
.
FACTORY
;
case
STRING:
return
StrNotEqualsNullOperator
.
FACTORY
;
case
INT:
return
IntNotEqualsNaNOperator
.
FACTORY
;
case
LONG:
case
DATE:
return
LongNotEqualsNaNOperator
.
FACTORY
;
default
:
break
;
}
}
}
break
;
...
...
core/src/main/java/com/nfsdb/ql/parser/VirtualColumnBuilder.java
浏览文件 @
66e637c9
/*******************************************************************************
*
___ _ ____ ____
*
/ _ \ _ _ ___ ___| |_| _ \| __ )
*
| | | | | | |/ _ \/ __| __| | | | _ \
*
| |_| | |_| | __/\__ \ |_| |_| | |_) |
*
\__\_\\__,_|\___||___/\__|____/|____/
*
* ___ _ ____ ____
* / _ \ _ _ ___ ___| |_| _ \| __ )
* | | | | | | |/ _ \/ __| __| | | | _ \
* | |_| | |_| | __/\__ \ |_| |_| | |_) |
* \__\_\\__,_|\___||___/\__|____/|____/
*
<p>
* Copyright (C) 2014-2016 Appsicle
*
*
<p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
*
<p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
<p>
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
<p>
* As a special exception, the copyright holders give permission to link the
* code of portions of this program with the OpenSSL library under certain
* conditions as described in each individual source file and distribute
...
...
@@ -30,7 +30,6 @@
* delete this exception statement from your version. If you delete this
* exception statement from all source files in the program, then also delete
* it in the license file.
*
******************************************************************************/
package
com.nfsdb.ql.parser
;
...
...
@@ -64,18 +63,10 @@ class VirtualColumnBuilder implements PostOrderTreeTraversalAlgo.Visitor {
private
CharSequenceIntHashMap
columnNameHistogram
;
private
CharSequenceObjHashMap
<
Parameter
>
parameterMap
;
public
VirtualColumnBuilder
(
PostOrderTreeTraversalAlgo
algo
)
{
VirtualColumnBuilder
(
PostOrderTreeTraversalAlgo
algo
)
{
this
.
algo
=
algo
;
}
public
VirtualColumn
createVirtualColumn
(
QueryModel
model
,
ExprNode
node
,
RecordMetadata
metadata
)
throws
ParserException
{
this
.
columnNameHistogram
=
model
.
getColumnNameHistogram
();
this
.
parameterMap
=
model
.
getParameterMap
();
this
.
metadata
=
metadata
;
algo
.
traverse
(
node
,
this
);
return
stack
.
poll
();
}
@Override
public
void
visit
(
ExprNode
node
)
throws
ParserException
{
int
argCount
=
node
.
paramCount
;
...
...
@@ -115,6 +106,14 @@ class VirtualColumnBuilder implements PostOrderTreeTraversalAlgo.Visitor {
}
}
VirtualColumn
createVirtualColumn
(
QueryModel
model
,
ExprNode
node
,
RecordMetadata
metadata
)
throws
ParserException
{
this
.
columnNameHistogram
=
model
.
getColumnNameHistogram
();
this
.
parameterMap
=
model
.
getParameterMap
();
this
.
metadata
=
metadata
;
algo
.
traverse
(
node
,
this
);
return
stack
.
poll
();
}
@SuppressFBWarnings
({
"LEST_LOST_EXCEPTION_STACK_TRACE"
})
private
VirtualColumn
lookupColumn
(
ExprNode
node
)
throws
ParserException
{
try
{
...
...
core/src/test/java/com/nfsdb/ql/parser/JoinQueryTest.java
浏览文件 @
66e637c9
...
...
@@ -843,6 +843,19 @@ public class JoinQueryTest extends AbstractOptimiserTest {
" limit 10,15"
);
}
@Test
public
void
testNullInsteadOfNaN
()
throws
Exception
{
assertThat
(
"1406\tVQHYIIQL\tKJE\tnull\tDYQFLMPNGEJKKJCRCKNPUTHTVNYXM\tDFDISBFBRCCQDV\tXTGNJ\t2015-07-10T00:00:01.406Z\tNaN\tNaN\tNaN\t\t\tnull\n"
+
"1414\tDHMTF\tRTGV\tnull\tHMDJSBGPXQTKPGGWFSTJSKSZSBEPDVNMFEVEMQCOHDBK\tJKBVDSERXZ\tOEENNEBQQEMXD\t2015-07-10T00:00:01.414Z\tNaN\tNaN\tNaN\t\t\tnull\n"
+
"1422\tEKVFCZGGCKCHK\tEEGCRISJP\tnull\tILWBREVXDHHWPREIFCMLRXSWMFWEKIOTXUPRNGEPIJVNKTXHNKYITYG\tYYBJER\tCNSFFLTRY\t2015-07-10T00:00:01.422Z\tNaN\tNaN\tNaN\t\t\tnull\n"
+
"1523\tV\tODSBTX\tnull\tECUZSRJCTRJLH\tVBNHX\tZHEI\t2015-07-10T00:00:01.523Z\tNaN\tNaN\tNaN\t\t\tnull\n"
+
"1567\tBWPEIFNITZK\tBIJXCYTOHOQT\tnull\tYZMMSEZIPCOCZZUFYIVELTS\tFVPDDGSEK\tUN\t2015-07-10T00:00:01.567Z\tNaN\tNaN\tNaN\t\t\tnull\n"
,
"customers c"
+
" outer join orders o on c.customerId = o.customerId "
+
" where orderId = null"
+
" limit 10,15"
);
}
@Test
public
void
testNullSymbol
()
throws
Exception
{
assertThat
(
""
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录