Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kvdb
rocksdb
提交
4b57d9a8
R
rocksdb
项目概览
kvdb
/
rocksdb
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rocksdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4b57d9a8
编写于
1月 08, 2015
作者:
S
stash93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed negative numbers comparison in DocumentDB
上级
9ef59a09
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
47 addition
and
4 deletion
+47
-4
utilities/document/document_db.cc
utilities/document/document_db.cc
+5
-2
utilities/document/document_db_test.cc
utilities/document/document_db_test.cc
+42
-2
未找到文件。
utilities/document/document_db.cc
浏览文件 @
4b57d9a8
...
...
@@ -312,8 +312,11 @@ bool EncodeJSONPrimitive(const JSONDocument& json, std::string* dst) {
break
;
case
JSONDocument
::
kInt64
:
dst
->
push_back
(
kInt64
);
// TODO(icanadi) oops, this will not work correctly for negative numbers
PutFixed64
(
dst
,
static_cast
<
uint64_t
>
(
json
.
GetInt64
()));
{
auto
val
=
json
.
GetInt64
();
dst
->
push_back
((
val
<
0
)
?
'0'
:
'1'
);
PutFixed64
(
dst
,
static_cast
<
uint64_t
>
(
val
));
}
break
;
case
JSONDocument
::
kString
:
dst
->
push_back
(
kString
);
...
...
utilities/document/document_db_test.cc
浏览文件 @
4b57d9a8
...
...
@@ -164,7 +164,9 @@ TEST(DocumentDBTest, ComplexQueryTest) {
"{'_id': 8, 'job_name': 'rock', 'priority': 3, 'progress': 93.24}"
,
"{'_id': 9, 'job_name': 'steady', 'priority': 3, 'progress': 9.1}"
,
"{'_id': 10, 'job_name': 'white', 'priority': 1, 'progress': 61.4}"
,
"{'_id': 11, 'job_name': 'who', 'priority': 4, 'progress': 39.41}"
,
};
"{'_id': 11, 'job_name': 'who', 'priority': 4, 'progress': 39.41}"
,
"{'_id': 12, 'job_name': 'who', 'priority': -1, 'progress': 39.42}"
,
"{'_id': 13, 'job_name': 'who', 'priority': -2, 'progress': 39.42}"
,
};
// add index on the fly!
CreateIndexes
({
job_name_index
});
...
...
@@ -185,6 +187,15 @@ TEST(DocumentDBTest, ComplexQueryTest) {
AssertCursorIDs
(
cursor
.
get
(),
{
4
,
8
});
}
// -1 <= priority <= 1, index priority
{
std
::
unique_ptr
<
JSONDocument
>
query
(
Parse
(
"[{'$filter': {'priority': {'$lte': 1, '$gte': -1},"
" '$index': 'priority'}}]"
));
std
::
unique_ptr
<
Cursor
>
cursor
(
db_
->
Query
(
ReadOptions
(),
*
query
));
AssertCursorIDs
(
cursor
.
get
(),
{
6
,
10
,
12
});
}
// 2 < priority < 4 AND progress > 10.0, index progress
{
std
::
unique_ptr
<
JSONDocument
>
query
(
Parse
(
...
...
@@ -209,7 +220,7 @@ TEST(DocumentDBTest, ComplexQueryTest) {
"[{'$filter': {'progress': {'$gt': 5.0, '$gte': 35.0, '$lt': 65.5}, "
"'$index': 'progress'}}]"
));
std
::
unique_ptr
<
Cursor
>
cursor
(
db_
->
Query
(
ReadOptions
(),
*
query
));
AssertCursorIDs
(
cursor
.
get
(),
{
2
,
5
,
10
,
11
});
AssertCursorIDs
(
cursor
.
get
(),
{
2
,
5
,
10
,
11
,
12
,
13
});
}
// 2 < priority <= 4, index priority
...
...
@@ -244,6 +255,35 @@ TEST(DocumentDBTest, ComplexQueryTest) {
ASSERT_OK
(
db_
->
Update
(
ReadOptions
(),
WriteOptions
(),
*
query
,
*
update
));
}
// priority < 0
{
std
::
unique_ptr
<
JSONDocument
>
query
(
Parse
(
"[{'$filter': {'priority': {'$lt': 0}, '$index': 'priority'}}]"
));
std
::
unique_ptr
<
Cursor
>
cursor
(
db_
->
Query
(
ReadOptions
(),
*
query
));
ASSERT_OK
(
cursor
->
status
());
AssertCursorIDs
(
cursor
.
get
(),
{
12
,
13
});
}
// -2 < priority < 0
{
std
::
unique_ptr
<
JSONDocument
>
query
(
Parse
(
"[{'$filter': {'priority': {'$gt': -2, '$lt': 0},"
" '$index': 'priority'}}]"
));
std
::
unique_ptr
<
Cursor
>
cursor
(
db_
->
Query
(
ReadOptions
(),
*
query
));
ASSERT_OK
(
cursor
->
status
());
AssertCursorIDs
(
cursor
.
get
(),
{
12
});
}
// -2 <= priority < 0
{
std
::
unique_ptr
<
JSONDocument
>
query
(
Parse
(
"[{'$filter': {'priority': {'$gte': -2, '$lt': 0},"
" '$index': 'priority'}}]"
));
std
::
unique_ptr
<
Cursor
>
cursor
(
db_
->
Query
(
ReadOptions
(),
*
query
));
ASSERT_OK
(
cursor
->
status
());
AssertCursorIDs
(
cursor
.
get
(),
{
12
,
13
});
}
// 4 < priority
{
std
::
unique_ptr
<
JSONDocument
>
query
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录