Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
d21dd5ee
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d21dd5ee
编写于
9月 14, 2012
作者:
F
Frankie Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bugs in aggregators
上级
6a5cd06a
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
71 addition
and
32 deletion
+71
-32
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/AvgEvaluator.java
.../dianping/bee/engine/evaluator/function/AvgEvaluator.java
+4
-3
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/CountEvaluator.java
...ianping/bee/engine/evaluator/function/CountEvaluator.java
+3
-3
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/MaxEvaluator.java
.../dianping/bee/engine/evaluator/function/MaxEvaluator.java
+6
-4
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/MinEvaluator.java
.../dianping/bee/engine/evaluator/function/MinEvaluator.java
+6
-4
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/SumEvaluator.java
.../dianping/bee/engine/evaluator/function/SumEvaluator.java
+4
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/Statement.java
.../src/main/java/com/dianping/bee/engine/spi/Statement.java
+3
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultRowListener.java
.../dianping/bee/engine/spi/internal/DefaultRowListener.java
+2
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultStatementManager.java
...ping/bee/engine/spi/internal/DefaultStatementManager.java
+5
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SelectField.java
...ava/com/dianping/bee/engine/spi/internal/SelectField.java
+14
-10
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatement.java
...ianping/bee/engine/spi/internal/SingleTableStatement.java
+23
-1
bee-engine/src/test/java/com/dianping/bee/engine/TestServer.java
...ine/src/test/java/com/dianping/bee/engine/TestServer.java
+1
-2
未找到文件。
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/AvgEvaluator.java
浏览文件 @
d21dd5ee
...
...
@@ -17,21 +17,22 @@ public class AvgEvaluator extends AbstractEvaluator<Avg, Number> {
Expression
first
=
expr
.
getArguments
().
get
(
0
);
Object
val
=
eval
(
ctx
,
first
);
if
(
val
!=
null
)
{
if
(
val
!=
null
&&
val
instanceof
Number
)
{
m_sum
+=
((
Number
)
val
).
doubleValue
();
m_count
++;
}
return
0
;
}
@Override
public
Object
getAggregatedValue
()
{
return
m_sum
/
m_count
;
return
m_
count
==
0
?
0
:
m_
sum
/
m_count
;
}
@Override
public
Class
<?>
getResultType
(
Avg
expr
)
{
return
Number
.
class
;
return
Double
.
class
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/CountEvaluator.java
浏览文件 @
d21dd5ee
...
...
@@ -4,15 +4,15 @@ import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Count;
import
com.dianping.bee.engine.evaluator.AbstractEvaluator
;
import
com.dianping.bee.engine.spi.RowContext
;
public
class
CountEvaluator
extends
AbstractEvaluator
<
Count
,
Long
>
{
public
class
CountEvaluator
extends
AbstractEvaluator
<
Count
,
Number
>
{
public
static
final
String
ID
=
Count
.
class
.
getName
();
private
long
m_count
;
@Override
public
Long
evaluate
(
RowContext
ctx
,
Count
expr
)
{
public
Number
evaluate
(
RowContext
ctx
,
Count
expr
)
{
m_count
++;
return
0
L
;
return
0
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/MaxEvaluator.java
浏览文件 @
d21dd5ee
...
...
@@ -16,8 +16,10 @@ public class MaxEvaluator extends AbstractEvaluator<Max, Number> {
Object
val
=
eval
(
ctx
,
first
);
if
(
val
!=
null
&&
val
instanceof
Number
)
{
if
(((
Number
)
val
).
doubleValue
()
>
m_max
)
{
m_max
=
((
Number
)
val
).
doubleValue
();
Number
value
=
(
Number
)
val
;
if
(
value
.
doubleValue
()
>
m_max
)
{
m_max
=
value
.
doubleValue
();
}
}
...
...
@@ -26,12 +28,12 @@ public class MaxEvaluator extends AbstractEvaluator<Max, Number> {
@Override
public
Object
getAggregatedValue
()
{
return
m_max
;
return
m_max
==
Double
.
MIN_VALUE
?
0
:
m_max
;
}
@Override
public
Class
<?>
getResultType
(
Max
expr
)
{
return
Number
.
class
;
return
Double
.
class
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/MinEvaluator.java
浏览文件 @
d21dd5ee
...
...
@@ -16,8 +16,10 @@ public class MinEvaluator extends AbstractEvaluator<Min, Number> {
Object
val
=
eval
(
ctx
,
first
);
if
(
val
!=
null
&&
val
instanceof
Number
)
{
if
(((
Number
)
val
).
doubleValue
()
<
m_min
)
{
m_min
=
((
Number
)
val
).
doubleValue
();
Number
value
=
(
Number
)
val
;
if
(
value
.
doubleValue
()
<
m_min
)
{
m_min
=
value
.
doubleValue
();
}
}
...
...
@@ -26,12 +28,12 @@ public class MinEvaluator extends AbstractEvaluator<Min, Number> {
@Override
public
Object
getAggregatedValue
()
{
return
m_min
;
return
m_min
==
Double
.
MAX_VALUE
?
0
:
m_min
;
}
@Override
public
Class
<?>
getResultType
(
Min
expr
)
{
return
Number
.
class
;
return
Double
.
class
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/evaluator/function/SumEvaluator.java
浏览文件 @
d21dd5ee
...
...
@@ -16,7 +16,9 @@ public class SumEvaluator extends AbstractEvaluator<Sum, Number> {
Object
val
=
eval
(
ctx
,
first
);
if
(
val
!=
null
)
{
m_sum
+=
((
Number
)
val
).
doubleValue
();
Number
value
=
(
Number
)
val
;
m_sum
+=
value
.
doubleValue
();
}
return
0
;
...
...
@@ -29,7 +31,7 @@ public class SumEvaluator extends AbstractEvaluator<Sum, Number> {
@Override
public
Class
<?>
getResultType
(
Sum
expr
)
{
return
Number
.
class
;
return
Double
.
class
;
}
@Override
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/Statement.java
浏览文件 @
d21dd5ee
...
...
@@ -9,6 +9,8 @@ public interface Statement {
public
int
getColumnSize
();
public
RowSet
query
();
public
String
getSQL
();
public
IndexMeta
getIndexMeta
();
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultRowListener.java
浏览文件 @
d21dd5ee
...
...
@@ -35,7 +35,7 @@ public class DefaultRowListener extends ContainerHolder implements RowListener {
@Override
public
void
onRow
(
RowContext
ctx
)
{
if
(
m_filter
!=
null
&&
!
m_filter
.
filter
(
ctx
))
{
return
;
return
;
}
int
len
=
m_fields
.
length
;
...
...
@@ -87,6 +87,7 @@ public class DefaultRowListener extends ContainerHolder implements RowListener {
if
(
field
.
isAggregator
(
ctx
))
{
m_values
[
i
]
=
field
.
getAggregatedValue
();
field
.
reset
();
}
cells
[
i
]
=
new
DefaultCell
(
field
,
m_values
[
i
]);
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/DefaultStatementManager.java
浏览文件 @
d21dd5ee
...
...
@@ -66,7 +66,11 @@ public class DefaultStatementManager extends ContainerHolder implements Statemen
try
{
statement
.
accept
(
builder
);
return
builder
.
getStatement
();
SingleTableStatement
stmt
=
builder
.
getStatement
();
stmt
.
setSQL
(
sql
);
return
stmt
;
}
finally
{
release
(
builder
);
}
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SelectField.java
浏览文件 @
d21dd5ee
...
...
@@ -55,6 +55,10 @@ class SelectField implements ColumnMeta {
}
}
public
Object
getAggregatedValue
()
{
return
getEvaluator
(
null
).
getAggregatedValue
();
}
@SuppressWarnings
(
"unchecked"
)
private
Evaluator
<
Expression
,
Object
>
getEvaluator
(
RowContext
ctx
)
{
if
(
m_evaluator
==
null
)
{
...
...
@@ -66,6 +70,14 @@ class SelectField implements ColumnMeta {
return
m_evaluator
;
}
public
String
getName
()
{
return
m_name
;
}
public
Class
<?>
getType
()
{
return
m_type
;
}
@SuppressWarnings
(
"unchecked"
)
public
boolean
isAggregator
(
RowContext
ctx
)
{
if
(
m_expr
!=
null
)
{
...
...
@@ -77,15 +89,7 @@ class SelectField implements ColumnMeta {
}
}
public
String
getName
()
{
return
m_name
;
}
public
Class
<?>
getType
()
{
return
m_type
;
}
public
Object
getAggregatedValue
()
{
return
getEvaluator
(
null
).
getAggregatedValue
();
public
void
reset
()
{
m_evaluator
=
null
;
}
}
\ No newline at end of file
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatement.java
浏览文件 @
d21dd5ee
...
...
@@ -5,6 +5,9 @@ import java.util.HashMap;
import
java.util.List
;
import
java.util.Map
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
com.dianping.bee.engine.RowSet
;
import
com.dianping.bee.engine.spi.ColumnMeta
;
import
com.dianping.bee.engine.spi.Index
;
...
...
@@ -16,10 +19,12 @@ import com.dianping.bee.engine.spi.Statement;
import
com.site.lookup.ContainerHolder
;
import
com.site.lookup.annotation.Inject
;
public
class
SingleTableStatement
extends
ContainerHolder
implements
Statement
{
public
class
SingleTableStatement
extends
ContainerHolder
implements
Statement
,
LogEnabled
{
@Inject
protected
RowContext
ctx
;
private
String
m_sql
;
private
IndexMeta
m_index
;
private
RowFilter
m_rowFilter
;
...
...
@@ -30,6 +35,8 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
private
Map
<
String
,
List
<
Object
>>
m_attributes
=
new
HashMap
<
String
,
List
<
Object
>>();
private
Logger
m_logger
;
public
void
addAttribute
(
String
name
,
Object
value
)
{
List
<
Object
>
list
=
m_attributes
.
get
(
name
);
...
...
@@ -41,6 +48,11 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
list
.
add
(
value
);
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
@Override
public
ColumnMeta
getColumnMeta
(
int
colIndex
)
{
return
m_fields
.
get
(
colIndex
);
...
...
@@ -56,6 +68,11 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
return
m_index
;
}
@Override
public
String
getSQL
()
{
return
m_sql
;
}
@Override
public
RowSet
query
()
{
Index
index
=
lookup
(
m_index
.
getIndexClass
());
...
...
@@ -72,6 +89,7 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
return
listener
.
getRowSet
();
}
catch
(
Exception
e
)
{
m_logger
.
error
(
String
.
format
(
"Error when handling query(%s)!"
,
this
),
e
);
throw
new
RuntimeException
(
e
);
}
finally
{
ctx
.
afterQuery
();
...
...
@@ -94,4 +112,8 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
public
void
setSelectFields
(
List
<
SelectField
>
fields
)
{
m_fields
=
fields
;
}
public
void
setSQL
(
String
sql
)
{
m_sql
=
sql
;
}
}
bee-engine/src/test/java/com/dianping/bee/
jdbc
/TestServer.java
→
bee-engine/src/test/java/com/dianping/bee/
engine
/TestServer.java
浏览文件 @
d21dd5ee
...
...
@@ -12,13 +12,12 @@
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.
jdbc
;
package
com.dianping.bee.
engine
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.JUnit4
;
import
com.dianping.bee.engine.TestEnvConfigurator
;
import
com.dianping.bee.server.SimpleServer
;
import
com.site.lookup.ComponentTestCase
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录