提交 aa468e07 编写于 作者: F Frankie Wu

bee-engine bug fix

上级 d83d0f41
package com.dianping.bee.engine.spi.evaluator;
import com.alibaba.cobar.parser.ast.expression.Expression;
import com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticSubtractExpression;
import com.alibaba.cobar.parser.util.ExprEvalUtils;
import com.alibaba.cobar.parser.util.Pair;
import com.dianping.bee.engine.spi.row.RowContext;
import com.site.lookup.ContainerHolder;
public abstract class AbstractEvaluator<S extends Expression, T> extends ContainerHolder implements Evaluator<S, T> {
@SuppressWarnings("unchecked")
protected <V> V eval(RowContext ctx, Expression child) {
Evaluator<Expression, V> evaluator = lookup(Evaluator.class, child.getClass().getName());
protected double compareNumber(Number n1, Number n2) {
Pair<Number, Number> pair = ExprEvalUtils.convertNum2SameLevel(n1, n2);
Number v1 = pair.getKey();
Number v2 = pair.getValue();
return (V) evaluator.evaluate(ctx, child);
return v1.doubleValue() - v2.doubleValue();
}
protected Integer compareTo(RowContext ctx, Expression left, Expression right) {
......@@ -29,19 +30,11 @@ public abstract class AbstractEvaluator<S extends Expression, T> extends Contain
if (v1 instanceof Number) {
Number n1 = (Number) v1;
Number n2 = ExprEvalUtils.string2Number(String.valueOf(v2));
Number result = ExprEvalUtils.calculate(new ArithmeticSubtractExpression(left, right), n1, n2);
if (result == null) {
return null;
} else if (result instanceof Integer) {
return (Integer) result;
}
double val = result.doubleValue();
double result = compareNumber(n1, n2);
if (val > -1e-6 && val < 1e-6) {
if (result > -1e-6 && result < 1e-6) {
return 0;
} else if (val > 0) {
} else if (result > 0) {
return 1;
} else {
return -1;
......@@ -50,4 +43,11 @@ public abstract class AbstractEvaluator<S extends Expression, T> extends Contain
return null;
}
@SuppressWarnings("unchecked")
protected <V> V eval(RowContext ctx, Expression child) {
Evaluator<Expression, V> evaluator = lookup(Evaluator.class, child.getClass().getName());
return (V) evaluator.evaluate(ctx, child);
}
}
......@@ -2,9 +2,9 @@ package com.dianping.bee.engine.spi.internal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.dianping.bee.engine.spi.Statement;
import com.dianping.bee.engine.spi.index.Index;
......@@ -25,7 +25,7 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
private int m_parameterSize;
private Map<ColumnMeta, Integer> m_allColumns = new TreeMap<ColumnMeta, Integer>();
private Map<ColumnMeta, Integer> m_allColumns = new LinkedHashMap<ColumnMeta, Integer>();
private Map<String, List<Object>> m_attributes = new HashMap<String, List<Object>>();
......
......@@ -88,7 +88,7 @@ public class TransactionIndexer implements Index {
}
private TransactionReport getHourlyReport(RowContext ctx) throws IOException, SAXException {
String domain = ctx.getFirstAttribute("domain", null);
String domain = ctx.getFirstAttribute("domain", "Cat");
String date = ctx.getFirstAttribute("starttime", "");
String ip = ctx.getFirstAttribute("ip", "All");
URL url = new URL(String.format("http://localhost:2281/cat/r/t?domain=%s&date=%s&ip=%s&xml=true", domain, date, ip));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册