Skip to content

Commit

Permalink
merge filterUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
xubo245 committed Jul 16, 2019
1 parent 5798f30 commit 30a720c
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 141 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,11 @@
import org.apache.carbondata.core.scan.expression.Expression;
import org.apache.carbondata.core.scan.expression.ExpressionResult;
import org.apache.carbondata.core.scan.expression.LiteralExpression;
import org.apache.carbondata.core.scan.expression.conditional.ConditionalExpression;
import org.apache.carbondata.core.scan.expression.conditional.ImplicitExpression;
import org.apache.carbondata.core.scan.expression.conditional.InExpression;
import org.apache.carbondata.core.scan.expression.conditional.ListExpression;
import org.apache.carbondata.core.scan.expression.conditional.*;
import org.apache.carbondata.core.scan.expression.exception.FilterIllegalMemberException;
import org.apache.carbondata.core.scan.expression.exception.FilterUnsupportedException;
import org.apache.carbondata.core.scan.expression.logical.AndExpression;
import org.apache.carbondata.core.scan.expression.logical.OrExpression;
import org.apache.carbondata.core.scan.expression.logical.TrueExpression;
import org.apache.carbondata.core.scan.filter.executer.AndFilterExecuterImpl;
import org.apache.carbondata.core.scan.filter.executer.DimColumnExecuterFilterInfo;
Expand Down Expand Up @@ -2374,4 +2372,105 @@ public static void setMinMaxFlagForLegacyStore(boolean[] minMaxFlag,
Arrays.fill(minMaxFlag, index, minMaxFlag.length, false);
}

public static Expression prepareEqualToExpression(String columnName, String dataType,
Object value) {
if (DataTypes.STRING.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.STRING),
new LiteralExpression(value, DataTypes.STRING));
} else if (DataTypes.INT.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.INT),
new LiteralExpression(value, DataTypes.INT));
} else if (DataTypes.DOUBLE.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.DOUBLE),
new LiteralExpression(value, DataTypes.DOUBLE));
} else if (DataTypes.FLOAT.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.FLOAT),
new LiteralExpression(value, DataTypes.FLOAT));
} else if (DataTypes.SHORT.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.SHORT),
new LiteralExpression(value, DataTypes.SHORT));
} else if (DataTypes.BINARY.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.BINARY),
new LiteralExpression(value, DataTypes.BINARY));
} else if (DataTypes.DATE.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.DATE),
new LiteralExpression(value, DataTypes.DATE));
} else if (DataTypes.LONG.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.LONG),
new LiteralExpression(value, DataTypes.LONG));
} else if (DataTypes.TIMESTAMP.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.TIMESTAMP),
new LiteralExpression(value, DataTypes.TIMESTAMP));
} else if (DataTypes.BYTE.getName().equalsIgnoreCase(dataType)) {
return new EqualToExpression(
new ColumnExpression(columnName, DataTypes.BYTE),
new LiteralExpression(value, DataTypes.BYTE));
} else {
throw new IllegalArgumentException("Unsupported data type: " + dataType);
}
}

public static Expression prepareOrExpression(List<Expression> expressions) {
if (expressions.size() < 2) {
throw new RuntimeException("Please input at least two expressions");
}
Expression expression = expressions.get(0);
for (int i = 1; i < expressions.size(); i++) {
expression = new OrExpression(expression, expressions.get(i));
}
return expression;
}

private static Expression prepareEqualToExpressionSet(String columnName, DataType dataType,
List<Object> values) {
Expression expression = null;
if (0 == values.size()) {
expression = prepareEqualToExpression(columnName, dataType.getName(), null);
} else {
expression = prepareEqualToExpression(columnName, dataType.getName(), values.get(0));
}
for (int i = 1; i < values.size(); i++) {
Expression expression2 = prepareEqualToExpression(columnName,
dataType.getName(), values.get(i));
expression = new OrExpression(expression, expression2);
}
return expression;
}

public static Expression prepareEqualToExpressionSet(String columnName, String dataType,
List<Object> values) {
if (DataTypes.STRING.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.STRING, values);
} else if (DataTypes.INT.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.INT, values);
} else if (DataTypes.DOUBLE.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.DOUBLE, values);
} else if (DataTypes.FLOAT.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.FLOAT, values);
} else if (DataTypes.SHORT.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.SHORT, values);
} else if (DataTypes.BINARY.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.BINARY, values);
} else if (DataTypes.DATE.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.DATE, values);
} else if (DataTypes.LONG.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.LONG, values);
} else if (DataTypes.TIMESTAMP.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.TIMESTAMP, values);
} else if (DataTypes.BYTE.getName().equalsIgnoreCase(dataType)) {
return prepareEqualToExpressionSet(columnName, DataTypes.BYTE, values);
} else {
throw new IllegalArgumentException("Unsupported data type: " + dataType);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
import org.apache.commons.io.FileUtils;
import org.junit.*;

import static org.apache.carbondata.core.scan.expression.conditional.FilterUtil.prepareEqualToExpression;
import static org.apache.carbondata.core.scan.expression.conditional.FilterUtil.prepareEqualToExpressionSet;
import static org.apache.carbondata.core.scan.expression.conditional.FilterUtil.prepareOrExpression;
import static org.apache.carbondata.core.scan.filter.FilterUtil.prepareEqualToExpression;
import static org.apache.carbondata.core.scan.filter.FilterUtil.prepareEqualToExpressionSet;
import static org.apache.carbondata.core.scan.filter.FilterUtil.prepareOrExpression;

public class CarbonReaderTest extends TestCase {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
import java.util.Iterator;
import java.util.List;

import static org.apache.carbondata.core.scan.expression.conditional.FilterUtil.prepareEqualToExpression;
import static org.apache.carbondata.core.scan.filter.FilterUtil.prepareEqualToExpression;
import static org.apache.carbondata.sdk.file.utils.SDKUtil.listFiles;

public class ImageTest extends TestCase {
Expand Down

0 comments on commit 30a720c

Please sign in to comment.