You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ch...@apache.org on 2017/03/29 09:07:07 UTC
[2/4] incubator-carbondata git commit: [CARBONDATA-826] Create
carbondata-connector for query carbon data in presto
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSetProvider.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSetProvider.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSetProvider.java
index 95895fc..85c53ad 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSetProvider.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSetProvider.java
@@ -56,241 +56,218 @@ import static java.util.Objects.requireNonNull;
public class CarbondataRecordSetProvider implements ConnectorRecordSetProvider {
- private final String connectorId;
- private final CarbonTableReader carbonTableReader;
-
- @Inject
- public CarbondataRecordSetProvider(
- CarbondataConnectorId connectorId,
- CarbonTableReader reader)
- {
- //this.config = requireNonNull(config, "config is null");
- //this.connector = requireNonNull(connector, "connector is null");
- this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
- this.carbonTableReader = reader;
+ private final String connectorId;
+ private final CarbonTableReader carbonTableReader;
+
+ @Inject
+ public CarbondataRecordSetProvider(CarbondataConnectorId connectorId, CarbonTableReader reader) {
+ //this.config = requireNonNull(config, "config is null");
+ //this.connector = requireNonNull(connector, "connector is null");
+ this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
+ this.carbonTableReader = reader;
+ }
+
+ @Override public RecordSet getRecordSet(ConnectorTransactionHandle transactionHandle,
+ ConnectorSession session, ConnectorSplit split, List<? extends ColumnHandle> columns) {
+ requireNonNull(split, "split is null");
+ requireNonNull(columns, "columns is null");
+
+ // Convert split
+ CarbondataSplit cdSplit =
+ checkType(split, CarbondataSplit.class, "split is not class CarbondataSplit");
+ checkArgument(cdSplit.getConnectorId().equals(connectorId), "split is not for this connector");
+
+ // Convert all columns handles
+ ImmutableList.Builder<CarbondataColumnHandle> handles = ImmutableList.builder();
+ for (ColumnHandle handle : columns) {
+ handles.add(checkType(handle, CarbondataColumnHandle.class, "handle"));
}
- @Override
- public RecordSet getRecordSet(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<? extends ColumnHandle> columns) {
- requireNonNull(split, "split is null");
- requireNonNull(columns, "columns is null");
-
- // Convert split
- CarbondataSplit cdSplit = checkType(split, CarbondataSplit.class, "split is not class CarbondataSplit");
- checkArgument(cdSplit.getConnectorId().equals(connectorId), "split is not for this connector");
-
- // Convert all columns handles
- ImmutableList.Builder<CarbondataColumnHandle> handles = ImmutableList.builder();
- for (ColumnHandle handle : columns) {
- handles.add(checkType(handle, CarbondataColumnHandle.class, "handle"));
- }
-
- // Build column projection(check the column order)
- String targetCols = "";
- for(ColumnHandle col : columns){
- targetCols += ((CarbondataColumnHandle)col).getColumnName() + ",";
- }
- targetCols = targetCols.substring(0, targetCols.length() -1 );
- //String cols = String.join(",", columns.stream().map(a -> ((CarbondataColumnHandle)a).getColumnName()).collect(Collectors.toList()));
-
- CarbonTableCacheModel tableCacheModel = carbonTableReader.getCarbonCache(cdSplit.getSchemaTableName());
- checkNotNull(tableCacheModel, "tableCacheModel should not be null");
- checkNotNull(tableCacheModel.carbonTable, "tableCacheModel.carbonTable should not be null");
- checkNotNull(tableCacheModel.tableInfo, "tableCacheModel.tableInfo should not be null");
-
- // Build Query Model
- CarbonTable targetTable = tableCacheModel.carbonTable;
- CarbonQueryPlan queryPlan = CarbonInputFormatUtil.createQueryPlan(targetTable, targetCols);
- QueryModel queryModel = QueryModel.createModel(targetTable.getAbsoluteTableIdentifier(), queryPlan, targetTable);
-
- // Push down filter
- fillFilter2QueryModel(queryModel, cdSplit.getConstraints(), targetTable);
-
- // Return new record set
- return new CarbondataRecordSet(targetTable,/*connector,*/ session, /*config, */cdSplit, handles.build(), queryModel);
+ // Build column projection(check the column order)
+ String targetCols = "";
+ for (ColumnHandle col : columns) {
+ targetCols += ((CarbondataColumnHandle) col).getColumnName() + ",";
}
-
- // Build filter for QueryModel (copy from CarbonInputFormat=> createRecordReader)
- private void fillFilter2QueryModel(QueryModel queryModel, TupleDomain<ColumnHandle> originalConstraint, CarbonTable carbonTable) {
-
- //queryModel.setFilterExpressionResolverTree(new FilterResolverIntf());
-
- //Build Predicate Expression
- ImmutableList.Builder<Expression> filters = ImmutableList.builder();
-
- Domain domain = null;
-
- for (ColumnHandle c : originalConstraint.getDomains().get().keySet()) {
-
- // Build ColumnExpresstion for Expresstion(Carbondata)
- CarbondataColumnHandle cdch = (CarbondataColumnHandle) c;
- Type type = cdch.getColumnType();
-
- DataType coltype = Spi2CarbondataTypeMapper(type);
- Expression colExpression = new ColumnExpression(cdch.getColumnName(), coltype);
-
- domain = originalConstraint.getDomains().get().get(c);
- checkArgument(domain.getType().isOrderable(), "Domain type must be orderable");
-
- if (domain.getValues().isNone()) {
- //return QueryBuilders.filteredQuery(null, FilterBuilders.missingFilter(columnName));
- //return domain.isNullAllowed() ? columnName + " IS NULL" : "FALSE";
- //new Expression()
- }
-
- if (domain.getValues().isAll()) {
- //return QueryBuilders.filteredQuery(null, FilterBuilders.existsFilter(columnName));
- //return domain.isNullAllowed() ? "TRUE" : columnName + " IS NOT NULL";
- }
-
- List<Object> singleValues = new ArrayList<>();
- List<Expression> rangeFilter = new ArrayList<>();
- for (Range range : domain.getValues().getRanges().getOrderedRanges()) {
- checkState(!range.isAll()); // Already checked
- if (range.isSingleValue()) {
- singleValues.add(range.getLow().getValue());
- }
- else
- {
- List<String> rangeConjuncts = new ArrayList<>();
- if (!range.getLow().isLowerUnbounded()) {
- Object value = ConvertDataByType(range.getLow().getValue(), type);
- switch (range.getLow().getBound()) {
- case ABOVE:
- if (type == TimestampType.TIMESTAMP) {
- //todo not now
- } else {
- GreaterThanExpression greater = new GreaterThanExpression(colExpression, new LiteralExpression(value, coltype));
- //greater.setRangeExpression(true);
- rangeFilter.add(greater);
- }
- break;
- case EXACTLY:
- GreaterThanEqualToExpression greater = new GreaterThanEqualToExpression(colExpression, new LiteralExpression(value, coltype));
- //greater.setRangeExpression(true);
- rangeFilter.add(greater);
- break;
- case BELOW:
- throw new IllegalArgumentException("Low marker should never use BELOW bound");
- default:
- throw new AssertionError("Unhandled bound: " + range.getLow().getBound());
- }
- }
- if (!range.getHigh().isUpperUnbounded()) {
- Object value = ConvertDataByType(range.getHigh().getValue(), type);
- switch (range.getHigh().getBound()) {
- case ABOVE:
- throw new IllegalArgumentException("High marker should never use ABOVE bound");
- case EXACTLY:
- LessThanEqualToExpression less = new LessThanEqualToExpression(colExpression, new LiteralExpression(value, coltype));
- //less.setRangeExpression(true);
- rangeFilter.add(less);
- break;
- case BELOW:
- LessThanExpression less2 = new LessThanExpression(colExpression, new LiteralExpression(value, coltype));
- //less2.setRangeExpression(true);
- rangeFilter.add(less2);
- break;
- default:
- throw new AssertionError("Unhandled bound: " + range.getHigh().getBound());
- }
- }
+ targetCols = targetCols.substring(0, targetCols.length() - 1);
+ //String cols = String.join(",", columns.stream().map(a -> ((CarbondataColumnHandle)a).getColumnName()).collect(Collectors.toList()));
+
+ CarbonTableCacheModel tableCacheModel =
+ carbonTableReader.getCarbonCache(cdSplit.getSchemaTableName());
+ checkNotNull(tableCacheModel, "tableCacheModel should not be null");
+ checkNotNull(tableCacheModel.carbonTable, "tableCacheModel.carbonTable should not be null");
+ checkNotNull(tableCacheModel.tableInfo, "tableCacheModel.tableInfo should not be null");
+
+ // Build Query Model
+ CarbonTable targetTable = tableCacheModel.carbonTable;
+ CarbonQueryPlan queryPlan = CarbonInputFormatUtil.createQueryPlan(targetTable, targetCols);
+ QueryModel queryModel =
+ QueryModel.createModel(targetTable.getAbsoluteTableIdentifier(), queryPlan, targetTable);
+
+ // Push down filter
+ fillFilter2QueryModel(queryModel, cdSplit.getConstraints(), targetTable);
+
+ // Return new record set
+ return new CarbondataRecordSet(targetTable,/*connector,*/ session, /*config, */cdSplit,
+ handles.build(), queryModel);
+ }
+
+ // Build filter for QueryModel (copy from CarbonInputFormat=> createRecordReader)
+ private void fillFilter2QueryModel(QueryModel queryModel,
+ TupleDomain<ColumnHandle> originalConstraint, CarbonTable carbonTable) {
+
+ //queryModel.setFilterExpressionResolverTree(new FilterResolverIntf());
+
+ //Build Predicate Expression
+ ImmutableList.Builder<Expression> filters = ImmutableList.builder();
+
+ Domain domain = null;
+
+ for (ColumnHandle c : originalConstraint.getDomains().get().keySet()) {
+
+ // Build ColumnExpresstion for Expresstion(Carbondata)
+ CarbondataColumnHandle cdch = (CarbondataColumnHandle) c;
+ Type type = cdch.getColumnType();
+
+ DataType coltype = Spi2CarbondataTypeMapper(type);
+ Expression colExpression = new ColumnExpression(cdch.getColumnName(), coltype);
+
+ domain = originalConstraint.getDomains().get().get(c);
+ checkArgument(domain.getType().isOrderable(), "Domain type must be orderable");
+
+ if (domain.getValues().isNone()) {
+ //return QueryBuilders.filteredQuery(null, FilterBuilders.missingFilter(columnName));
+ //return domain.isNullAllowed() ? columnName + " IS NULL" : "FALSE";
+ //new Expression()
+ }
+
+ if (domain.getValues().isAll()) {
+ //return QueryBuilders.filteredQuery(null, FilterBuilders.existsFilter(columnName));
+ //return domain.isNullAllowed() ? "TRUE" : columnName + " IS NOT NULL";
+ }
+
+ List<Object> singleValues = new ArrayList<>();
+ List<Expression> rangeFilter = new ArrayList<>();
+ for (Range range : domain.getValues().getRanges().getOrderedRanges()) {
+ checkState(!range.isAll()); // Already checked
+ if (range.isSingleValue()) {
+ singleValues.add(range.getLow().getValue());
+ } else {
+ List<String> rangeConjuncts = new ArrayList<>();
+ if (!range.getLow().isLowerUnbounded()) {
+ Object value = ConvertDataByType(range.getLow().getValue(), type);
+ switch (range.getLow().getBound()) {
+ case ABOVE:
+ if (type == TimestampType.TIMESTAMP) {
+ //todo not now
+ } else {
+ GreaterThanExpression greater = new GreaterThanExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //greater.setRangeExpression(true);
+ rangeFilter.add(greater);
}
+ break;
+ case EXACTLY:
+ GreaterThanEqualToExpression greater =
+ new GreaterThanEqualToExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //greater.setRangeExpression(true);
+ rangeFilter.add(greater);
+ break;
+ case BELOW:
+ throw new IllegalArgumentException("Low marker should never use BELOW bound");
+ default:
+ throw new AssertionError("Unhandled bound: " + range.getLow().getBound());
}
-
- if (singleValues.size() == 1) {
- Expression ex = null;
- if (coltype.equals(DataType.STRING)) {
- ex = new EqualToExpression(colExpression, new LiteralExpression(((Slice) singleValues.get(0)).toStringUtf8(), coltype));
- } else
- ex = new EqualToExpression(colExpression, new LiteralExpression(singleValues.get(0), coltype));
- filters.add(ex);
- }
- else if(singleValues.size() > 1) {
- ListExpression candidates = null;
- List<Expression> exs = singleValues.stream().map((a) ->
- {
- return new LiteralExpression(ConvertDataByType(a, type), coltype);
- }).collect(Collectors.toList());
- candidates = new ListExpression(exs);
-
- if(candidates != null)
- filters.add(new InExpression(colExpression, candidates));
- }
- else if(rangeFilter.size() > 0){
- if(rangeFilter.size() > 1) {
- Expression finalFilters = new OrExpression(rangeFilter.get(0), rangeFilter.get(1));
- if(rangeFilter.size() > 2)
- {
- for(int i = 2; i< rangeFilter.size(); i++)
- {
- filters.add(new AndExpression(finalFilters, rangeFilter.get(i)));
- }
- }
- }
- else if(rangeFilter.size() == 1)
- filters.add(rangeFilter.get(0));
+ }
+ if (!range.getHigh().isUpperUnbounded()) {
+ Object value = ConvertDataByType(range.getHigh().getValue(), type);
+ switch (range.getHigh().getBound()) {
+ case ABOVE:
+ throw new IllegalArgumentException("High marker should never use ABOVE bound");
+ case EXACTLY:
+ LessThanEqualToExpression less = new LessThanEqualToExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //less.setRangeExpression(true);
+ rangeFilter.add(less);
+ break;
+ case BELOW:
+ LessThanExpression less2 =
+ new LessThanExpression(colExpression, new LiteralExpression(value, coltype));
+ //less2.setRangeExpression(true);
+ rangeFilter.add(less2);
+ break;
+ default:
+ throw new AssertionError("Unhandled bound: " + range.getHigh().getBound());
}
+ }
}
-
- Expression finalFilters;
- List<Expression> tmp = filters.build();
- if(tmp.size() > 1) {
- finalFilters = new AndExpression(tmp.get(0), tmp.get(1));
- if(tmp.size() > 2)
- {
- for(int i = 2; i< tmp.size(); i++)
- {
- finalFilters = new AndExpression(finalFilters, tmp.get(i));
- }
+ }
+
+ if (singleValues.size() == 1) {
+ Expression ex = null;
+ if (coltype.equals(DataType.STRING)) {
+ ex = new EqualToExpression(colExpression,
+ new LiteralExpression(((Slice) singleValues.get(0)).toStringUtf8(), coltype));
+ } else ex = new EqualToExpression(colExpression,
+ new LiteralExpression(singleValues.get(0), coltype));
+ filters.add(ex);
+ } else if (singleValues.size() > 1) {
+ ListExpression candidates = null;
+ List<Expression> exs = singleValues.stream().map((a) -> {
+ return new LiteralExpression(ConvertDataByType(a, type), coltype);
+ }).collect(Collectors.toList());
+ candidates = new ListExpression(exs);
+
+ if (candidates != null) filters.add(new InExpression(colExpression, candidates));
+ } else if (rangeFilter.size() > 0) {
+ if (rangeFilter.size() > 1) {
+ Expression finalFilters = new OrExpression(rangeFilter.get(0), rangeFilter.get(1));
+ if (rangeFilter.size() > 2) {
+ for (int i = 2; i < rangeFilter.size(); i++) {
+ filters.add(new AndExpression(finalFilters, rangeFilter.get(i)));
}
- }
- else if(tmp.size() == 1)
- finalFilters = tmp.get(0);
- else
- return;
-
- // todo set into QueryModel
- CarbonInputFormatUtil.processFilterExpression(finalFilters, carbonTable);
- queryModel.setFilterExpressionResolverTree(CarbonInputFormatUtil.resolveFilter(finalFilters, queryModel.getAbsoluteTableIdentifier()));
- }
-
- public static DataType Spi2CarbondataTypeMapper(Type colType)
- {
- if(colType == BooleanType.BOOLEAN)
- return DataType.BOOLEAN;
- else if(colType == SmallintType.SMALLINT)
- return DataType.SHORT;
- else if(colType == IntegerType.INTEGER)
- return DataType.INT;
- else if(colType == BigintType.BIGINT)
- return DataType.LONG;
- else if(colType == DoubleType.DOUBLE)
- return DataType.DOUBLE;
- else if(colType == DecimalType.createDecimalType())
- return DataType.DECIMAL;
- else if(colType == VarcharType.VARCHAR)
- return DataType.STRING;
- else if(colType == DateType.DATE)
- return DataType.DATE;
- else if(colType == TimestampType.TIMESTAMP)
- return DataType.TIMESTAMP;
- else
- return DataType.STRING;
+ }
+ } else if (rangeFilter.size() == 1) filters.add(rangeFilter.get(0));
+ }
}
-
- public Object ConvertDataByType(Object rawdata, Type type)
- {
- if(type.equals(IntegerType.INTEGER))
- return new Integer((rawdata.toString()));
- else if(type.equals(BigintType.BIGINT))
- return (Long)rawdata;
- else if(type.equals(VarcharType.VARCHAR))
- return ((Slice)rawdata).toStringUtf8();
- else if(type.equals(BooleanType.BOOLEAN))
- return (Boolean)(rawdata);
-
- return rawdata;
- }
+ Expression finalFilters;
+ List<Expression> tmp = filters.build();
+ if (tmp.size() > 1) {
+ finalFilters = new AndExpression(tmp.get(0), tmp.get(1));
+ if (tmp.size() > 2) {
+ for (int i = 2; i < tmp.size(); i++) {
+ finalFilters = new AndExpression(finalFilters, tmp.get(i));
+ }
+ }
+ } else if (tmp.size() == 1) finalFilters = tmp.get(0);
+ else return;
+
+ // todo set into QueryModel
+ CarbonInputFormatUtil.processFilterExpression(finalFilters, carbonTable);
+ queryModel.setFilterExpressionResolverTree(
+ CarbonInputFormatUtil.resolveFilter(finalFilters, queryModel.getAbsoluteTableIdentifier()));
+ }
+
+ public static DataType Spi2CarbondataTypeMapper(Type colType) {
+ if (colType == BooleanType.BOOLEAN) return DataType.BOOLEAN;
+ else if (colType == SmallintType.SMALLINT) return DataType.SHORT;
+ else if (colType == IntegerType.INTEGER) return DataType.INT;
+ else if (colType == BigintType.BIGINT) return DataType.LONG;
+ else if (colType == DoubleType.DOUBLE) return DataType.DOUBLE;
+ else if (colType == DecimalType.createDecimalType()) return DataType.DECIMAL;
+ else if (colType == VarcharType.VARCHAR) return DataType.STRING;
+ else if (colType == DateType.DATE) return DataType.DATE;
+ else if (colType == TimestampType.TIMESTAMP) return DataType.TIMESTAMP;
+ else return DataType.STRING;
+ }
+
+ public Object ConvertDataByType(Object rawdata, Type type) {
+ if (type.equals(IntegerType.INTEGER)) return new Integer((rawdata.toString()));
+ else if (type.equals(BigintType.BIGINT)) return (Long) rawdata;
+ else if (type.equals(VarcharType.VARCHAR)) return ((Slice) rawdata).toStringUtf8();
+ else if (type.equals(BooleanType.BOOLEAN)) return (Boolean) (rawdata);
+
+ return rawdata;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplit.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplit.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplit.java
index 741dfcc..ecc41ef 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplit.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplit.java
@@ -33,64 +33,56 @@ import static java.util.Objects.requireNonNull;
public class CarbondataSplit implements ConnectorSplit {
- private final String connectorId;
- private final SchemaTableName schemaTableName;
- private final TupleDomain<ColumnHandle> constraints;
- private final CarbonLocalInputSplit localInputSplit;
- private final List<CarbondataColumnConstraint> rebuildConstraints;
- private final ImmutableList<HostAddress> addresses;
-
- @JsonCreator
- public CarbondataSplit( @JsonProperty("connectorId") String connectorId,
- @JsonProperty("schemaTableName") SchemaTableName schemaTableName,
- @JsonProperty("constraints") TupleDomain<ColumnHandle> constraints,
- @JsonProperty("localInputSplit") CarbonLocalInputSplit localInputSplit,
- @JsonProperty("rebuildConstraints") List<CarbondataColumnConstraint> rebuildConstraints) {
- this.connectorId = requireNonNull(connectorId, "connectorId is null");
- this.schemaTableName = requireNonNull(schemaTableName, "schemaTable is null");
- this.constraints = requireNonNull(constraints, "constraints is null");
- this.localInputSplit = requireNonNull(localInputSplit, "localInputSplit is null");
- this.rebuildConstraints = requireNonNull(rebuildConstraints, "rebuildConstraints is null");
- this.addresses = ImmutableList.of();
- }
-
-
- @JsonProperty
- public String getConnectorId() {
- return connectorId;
- }
-
- @JsonProperty
- public SchemaTableName getSchemaTableName(){
- return schemaTableName;
- }
-
- @JsonProperty
- public TupleDomain<ColumnHandle> getConstraints() {
- return constraints;
- }
-
- @JsonProperty
- public CarbonLocalInputSplit getLocalInputSplit(){return localInputSplit;}
-
- @JsonProperty
- public List<CarbondataColumnConstraint> getRebuildConstraints() {
- return rebuildConstraints;
- }
-
- @Override
- public boolean isRemotelyAccessible() {
- return true;
- }
-
- @Override
- public List<HostAddress> getAddresses() {
- return addresses;
- }
-
- @Override
- public Object getInfo() {
- return this;
- }
+ private final String connectorId;
+ private final SchemaTableName schemaTableName;
+ private final TupleDomain<ColumnHandle> constraints;
+ private final CarbonLocalInputSplit localInputSplit;
+ private final List<CarbondataColumnConstraint> rebuildConstraints;
+ private final ImmutableList<HostAddress> addresses;
+
+ @JsonCreator public CarbondataSplit(@JsonProperty("connectorId") String connectorId,
+ @JsonProperty("schemaTableName") SchemaTableName schemaTableName,
+ @JsonProperty("constraints") TupleDomain<ColumnHandle> constraints,
+ @JsonProperty("localInputSplit") CarbonLocalInputSplit localInputSplit,
+ @JsonProperty("rebuildConstraints") List<CarbondataColumnConstraint> rebuildConstraints) {
+ this.connectorId = requireNonNull(connectorId, "connectorId is null");
+ this.schemaTableName = requireNonNull(schemaTableName, "schemaTable is null");
+ this.constraints = requireNonNull(constraints, "constraints is null");
+ this.localInputSplit = requireNonNull(localInputSplit, "localInputSplit is null");
+ this.rebuildConstraints = requireNonNull(rebuildConstraints, "rebuildConstraints is null");
+ this.addresses = ImmutableList.of();
+ }
+
+ @JsonProperty public String getConnectorId() {
+ return connectorId;
+ }
+
+ @JsonProperty public SchemaTableName getSchemaTableName() {
+ return schemaTableName;
+ }
+
+ @JsonProperty public TupleDomain<ColumnHandle> getConstraints() {
+ return constraints;
+ }
+
+ @JsonProperty public CarbonLocalInputSplit getLocalInputSplit() {
+ return localInputSplit;
+ }
+
+ @JsonProperty public List<CarbondataColumnConstraint> getRebuildConstraints() {
+ return rebuildConstraints;
+ }
+
+ @Override public boolean isRemotelyAccessible() {
+ return true;
+ }
+
+ @Override public List<HostAddress> getAddresses() {
+ return addresses;
+ }
+
+ @Override public Object getInfo() {
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplitManager.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplitManager.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplitManager.java
index 86390e3..a8902eb 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplitManager.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataSplitManager.java
@@ -50,255 +50,224 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
-public class CarbondataSplitManager
- implements ConnectorSplitManager
-{
-
- private final String connectorId;
- private final CarbonTableReader carbonTableReader;
-
- @Inject
- public CarbondataSplitManager(CarbondataConnectorId connectorId, CarbonTableReader reader)
- {
- this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
- this.carbonTableReader = requireNonNull(reader, "client is null");
- }
-
- public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layout)
- {
- CarbondataTableLayoutHandle layoutHandle = (CarbondataTableLayoutHandle)layout;
- CarbondataTableHandle tableHandle = layoutHandle.getTable();
- SchemaTableName key = tableHandle.getSchemaTableName();
-
- //get all filter domain
- List<CarbondataColumnConstraint> rebuildConstraints = getColumnConstraints(layoutHandle.getConstraint());
-
- CarbonTableCacheModel cache = carbonTableReader.getCarbonCache(key);
- Expression filters = parseFilterExpression(layoutHandle.getConstraint(), cache.carbonTable);
-
- if(cache != null) {
- try {
- List<CarbonLocalInputSplit> splits = carbonTableReader.getInputSplits2(cache, filters);
-
- ImmutableList.Builder<ConnectorSplit> cSplits = ImmutableList.builder();
- for (CarbonLocalInputSplit split : splits) {
- cSplits.add(new CarbondataSplit(
- connectorId,
- tableHandle.getSchemaTableName(),
- layoutHandle.getConstraint(),
- split,
- rebuildConstraints
- ));
- }
- return new FixedSplitSource(cSplits.build());
- } catch (Exception ex) {
- System.out.println(ex.toString());
- }
+public class CarbondataSplitManager implements ConnectorSplitManager {
+
+ private final String connectorId;
+ private final CarbonTableReader carbonTableReader;
+
+ @Inject
+ public CarbondataSplitManager(CarbondataConnectorId connectorId, CarbonTableReader reader) {
+ this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
+ this.carbonTableReader = requireNonNull(reader, "client is null");
+ }
+
+ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle,
+ ConnectorSession session, ConnectorTableLayoutHandle layout) {
+ CarbondataTableLayoutHandle layoutHandle = (CarbondataTableLayoutHandle) layout;
+ CarbondataTableHandle tableHandle = layoutHandle.getTable();
+ SchemaTableName key = tableHandle.getSchemaTableName();
+
+ //get all filter domain
+ List<CarbondataColumnConstraint> rebuildConstraints =
+ getColumnConstraints(layoutHandle.getConstraint());
+
+ CarbonTableCacheModel cache = carbonTableReader.getCarbonCache(key);
+ Expression filters = parseFilterExpression(layoutHandle.getConstraint(), cache.carbonTable);
+
+ if (cache != null) {
+ try {
+ List<CarbonLocalInputSplit> splits = carbonTableReader.getInputSplits2(cache, filters);
+
+ ImmutableList.Builder<ConnectorSplit> cSplits = ImmutableList.builder();
+ for (CarbonLocalInputSplit split : splits) {
+ cSplits.add(new CarbondataSplit(connectorId, tableHandle.getSchemaTableName(),
+ layoutHandle.getConstraint(), split, rebuildConstraints));
}
- return null;
+ return new FixedSplitSource(cSplits.build());
+ } catch (Exception ex) {
+ System.out.println(ex.toString());
+ }
}
-
-
- public List<CarbondataColumnConstraint> getColumnConstraints(TupleDomain<ColumnHandle> constraint)
- {
- ImmutableList.Builder<CarbondataColumnConstraint> constraintBuilder = ImmutableList.builder();
- for (TupleDomain.ColumnDomain<ColumnHandle> columnDomain : constraint.getColumnDomains().get()) {
- CarbondataColumnHandle columnHandle = checkType(columnDomain.getColumn(), CarbondataColumnHandle.class, "column handle");
-
- constraintBuilder.add(new CarbondataColumnConstraint(
- columnHandle.getColumnName(),
- Optional.of(columnDomain.getDomain()),
- columnHandle.isInvertedIndex()));
- }
-
- return constraintBuilder.build();
+ return null;
+ }
+
+ public List<CarbondataColumnConstraint> getColumnConstraints(
+ TupleDomain<ColumnHandle> constraint) {
+ ImmutableList.Builder<CarbondataColumnConstraint> constraintBuilder = ImmutableList.builder();
+ for (TupleDomain.ColumnDomain<ColumnHandle> columnDomain : constraint.getColumnDomains()
+ .get()) {
+ CarbondataColumnHandle columnHandle =
+ checkType(columnDomain.getColumn(), CarbondataColumnHandle.class, "column handle");
+
+ constraintBuilder.add(new CarbondataColumnConstraint(columnHandle.getColumnName(),
+ Optional.of(columnDomain.getDomain()), columnHandle.isInvertedIndex()));
}
-
- public Expression parseFilterExpression(TupleDomain<ColumnHandle> originalConstraint, CarbonTable carbonTable)
- {
- ImmutableList.Builder<Expression> filters = ImmutableList.builder();
-
- Domain domain = null;
-
- for (ColumnHandle c : originalConstraint.getDomains().get().keySet()) {
-
- CarbondataColumnHandle cdch = (CarbondataColumnHandle) c;
- Type type = cdch.getColumnType();
-
- List<CarbonColumn> ccols = carbonTable.getCreateOrderColumn(carbonTable.getFactTableName());
- Optional<CarbonColumn> target = ccols.stream().filter(a -> a.getColName().equals(cdch.getColumnName())).findFirst();
-
- if(target.get() == null)
- return null;
-
- DataType coltype = target.get().getDataType();
- ColumnExpression colExpression = new ColumnExpression(cdch.getColumnName(), target.get().getDataType());
- //colExpression.setColIndex(cs.getSchemaOrdinal());
- colExpression.setDimension(target.get().isDimesion());
- colExpression.setDimension(carbonTable.getDimensionByName(carbonTable.getFactTableName(), cdch.getColumnName()));
- colExpression.setCarbonColumn(target.get());
-
- domain = originalConstraint.getDomains().get().get(c);
- checkArgument(domain.getType().isOrderable(), "Domain type must be orderable");
-
- if (domain.getValues().isNone()) {
- //return QueryBuilders.filteredQuery(null, FilterBuilders.missingFilter(columnName));
- //return domain.isNullAllowed() ? columnName + " IS NULL" : "FALSE";
- //new Expression()
- }
-
- if (domain.getValues().isAll()) {
- //return QueryBuilders.filteredQuery(null, FilterBuilders.existsFilter(columnName));
- //return domain.isNullAllowed() ? "TRUE" : columnName + " IS NOT NULL";
- }
-
- List<Object> singleValues = new ArrayList<>();
- List<Expression> rangeFilter = new ArrayList<>();
- for (Range range : domain.getValues().getRanges().getOrderedRanges()) {
- checkState(!range.isAll()); // Already checked
- if (range.isSingleValue()) {
- singleValues.add(range.getLow().getValue());
- }
- else
- {
- List<String> rangeConjuncts = new ArrayList<>();
- if (!range.getLow().isLowerUnbounded()) {
- Object value = ConvertDataByType(range.getLow().getValue(), type);
- switch (range.getLow().getBound()) {
- case ABOVE:
- if (type == TimestampType.TIMESTAMP) {
- //todo not now
- } else {
- GreaterThanExpression greater = new GreaterThanExpression(colExpression, new LiteralExpression(value, coltype));
- //greater.setRangeExpression(true);
- rangeFilter.add(greater);
- }
- break;
- case EXACTLY:
- GreaterThanEqualToExpression greater = new GreaterThanEqualToExpression(colExpression, new LiteralExpression(value, coltype));
- //greater.setRangeExpression(true);
- rangeFilter.add(greater);
- break;
- case BELOW:
- throw new IllegalArgumentException("Low marker should never use BELOW bound");
- default:
- throw new AssertionError("Unhandled bound: " + range.getLow().getBound());
- }
- }
- if (!range.getHigh().isUpperUnbounded()) {
- Object value = ConvertDataByType(range.getHigh().getValue(), type);
- switch (range.getHigh().getBound()) {
- case ABOVE:
- throw new IllegalArgumentException("High marker should never use ABOVE bound");
- case EXACTLY:
- LessThanEqualToExpression less = new LessThanEqualToExpression(colExpression, new LiteralExpression(value, coltype));
- //less.setRangeExpression(true);
- rangeFilter.add(less);
- break;
- case BELOW:
- LessThanExpression less2 = new LessThanExpression(colExpression, new LiteralExpression(value, coltype));
- //less2.setRangeExpression(true);
- rangeFilter.add(less2);
- break;
- default:
- throw new AssertionError("Unhandled bound: " + range.getHigh().getBound());
- }
- }
+ return constraintBuilder.build();
+ }
+
+ public Expression parseFilterExpression(TupleDomain<ColumnHandle> originalConstraint,
+ CarbonTable carbonTable) {
+ ImmutableList.Builder<Expression> filters = ImmutableList.builder();
+
+ Domain domain = null;
+
+ for (ColumnHandle c : originalConstraint.getDomains().get().keySet()) {
+
+ CarbondataColumnHandle cdch = (CarbondataColumnHandle) c;
+ Type type = cdch.getColumnType();
+
+ List<CarbonColumn> ccols = carbonTable.getCreateOrderColumn(carbonTable.getFactTableName());
+ Optional<CarbonColumn> target =
+ ccols.stream().filter(a -> a.getColName().equals(cdch.getColumnName())).findFirst();
+
+ if (target.get() == null) return null;
+
+ DataType coltype = target.get().getDataType();
+ ColumnExpression colExpression =
+ new ColumnExpression(cdch.getColumnName(), target.get().getDataType());
+ //colExpression.setColIndex(cs.getSchemaOrdinal());
+ colExpression.setDimension(target.get().isDimesion());
+ colExpression.setDimension(
+ carbonTable.getDimensionByName(carbonTable.getFactTableName(), cdch.getColumnName()));
+ colExpression.setCarbonColumn(target.get());
+
+ domain = originalConstraint.getDomains().get().get(c);
+ checkArgument(domain.getType().isOrderable(), "Domain type must be orderable");
+
+ if (domain.getValues().isNone()) {
+ //return QueryBuilders.filteredQuery(null, FilterBuilders.missingFilter(columnName));
+ //return domain.isNullAllowed() ? columnName + " IS NULL" : "FALSE";
+ //new Expression()
+ }
+
+ if (domain.getValues().isAll()) {
+ //return QueryBuilders.filteredQuery(null, FilterBuilders.existsFilter(columnName));
+ //return domain.isNullAllowed() ? "TRUE" : columnName + " IS NOT NULL";
+ }
+
+ List<Object> singleValues = new ArrayList<>();
+ List<Expression> rangeFilter = new ArrayList<>();
+ for (Range range : domain.getValues().getRanges().getOrderedRanges()) {
+ checkState(!range.isAll()); // Already checked
+ if (range.isSingleValue()) {
+ singleValues.add(range.getLow().getValue());
+ } else {
+ List<String> rangeConjuncts = new ArrayList<>();
+ if (!range.getLow().isLowerUnbounded()) {
+ Object value = ConvertDataByType(range.getLow().getValue(), type);
+ switch (range.getLow().getBound()) {
+ case ABOVE:
+ if (type == TimestampType.TIMESTAMP) {
+ //todo not now
+ } else {
+ GreaterThanExpression greater = new GreaterThanExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //greater.setRangeExpression(true);
+ rangeFilter.add(greater);
}
+ break;
+ case EXACTLY:
+ GreaterThanEqualToExpression greater =
+ new GreaterThanEqualToExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //greater.setRangeExpression(true);
+ rangeFilter.add(greater);
+ break;
+ case BELOW:
+ throw new IllegalArgumentException("Low marker should never use BELOW bound");
+ default:
+ throw new AssertionError("Unhandled bound: " + range.getLow().getBound());
}
-
- if (singleValues.size() == 1) {
- Expression ex = null;
- if (coltype.equals(DataType.STRING)) {
- ex = new EqualToExpression(colExpression, new LiteralExpression(((Slice) singleValues.get(0)).toStringUtf8(), coltype));
- } else
- ex = new EqualToExpression(colExpression, new LiteralExpression(singleValues.get(0), coltype));
- filters.add(ex);
- }
- else if(singleValues.size() > 1) {
- ListExpression candidates = null;
- List<Expression> exs = singleValues.stream().map((a) ->
- {
- return new LiteralExpression(ConvertDataByType(a, type), coltype);
- }).collect(Collectors.toList());
- candidates = new ListExpression(exs);
-
- if(candidates != null)
- filters.add(new InExpression(colExpression, candidates));
- }
- else if(rangeFilter.size() > 0){
- if(rangeFilter.size() > 1) {
- Expression finalFilters = new OrExpression(rangeFilter.get(0), rangeFilter.get(1));
- if(rangeFilter.size() > 2)
- {
- for(int i = 2; i< rangeFilter.size(); i++)
- {
- filters.add(new AndExpression(finalFilters, rangeFilter.get(i)));
- }
- }
- }
- else if(rangeFilter.size() == 1)//only have one value
- filters.add(rangeFilter.get(0));
+ }
+ if (!range.getHigh().isUpperUnbounded()) {
+ Object value = ConvertDataByType(range.getHigh().getValue(), type);
+ switch (range.getHigh().getBound()) {
+ case ABOVE:
+ throw new IllegalArgumentException("High marker should never use ABOVE bound");
+ case EXACTLY:
+ LessThanEqualToExpression less = new LessThanEqualToExpression(colExpression,
+ new LiteralExpression(value, coltype));
+ //less.setRangeExpression(true);
+ rangeFilter.add(less);
+ break;
+ case BELOW:
+ LessThanExpression less2 =
+ new LessThanExpression(colExpression, new LiteralExpression(value, coltype));
+ //less2.setRangeExpression(true);
+ rangeFilter.add(less2);
+ break;
+ default:
+ throw new AssertionError("Unhandled bound: " + range.getHigh().getBound());
}
+ }
}
-
- Expression finalFilters;
- List<Expression> tmp = filters.build();
- if(tmp.size() > 1) {
- finalFilters = new AndExpression(tmp.get(0), tmp.get(1));
- if(tmp.size() > 2)
- {
- for(int i = 2; i< tmp.size(); i++)
- {
- finalFilters = new AndExpression(finalFilters, tmp.get(i));
- }
+ }
+
+ if (singleValues.size() == 1) {
+ Expression ex = null;
+ if (coltype.equals(DataType.STRING)) {
+ ex = new EqualToExpression(colExpression,
+ new LiteralExpression(((Slice) singleValues.get(0)).toStringUtf8(), coltype));
+ } else ex = new EqualToExpression(colExpression,
+ new LiteralExpression(singleValues.get(0), coltype));
+ filters.add(ex);
+ } else if (singleValues.size() > 1) {
+ ListExpression candidates = null;
+ List<Expression> exs = singleValues.stream().map((a) -> {
+ return new LiteralExpression(ConvertDataByType(a, type), coltype);
+ }).collect(Collectors.toList());
+ candidates = new ListExpression(exs);
+
+ if (candidates != null) filters.add(new InExpression(colExpression, candidates));
+ } else if (rangeFilter.size() > 0) {
+ if (rangeFilter.size() > 1) {
+ Expression finalFilters = new OrExpression(rangeFilter.get(0), rangeFilter.get(1));
+ if (rangeFilter.size() > 2) {
+ for (int i = 2; i < rangeFilter.size(); i++) {
+ filters.add(new AndExpression(finalFilters, rangeFilter.get(i)));
}
- }
- else if(tmp.size() == 1)
- finalFilters = tmp.get(0);
- else//no filter
- return null;
-
- return finalFilters;
- }
-
- public static DataType Spi2CarbondataTypeMapper(Type colType)
- {
- if(colType == BooleanType.BOOLEAN)
- return DataType.BOOLEAN;
- else if(colType == SmallintType.SMALLINT)
- return DataType.SHORT;
- else if(colType == IntegerType.INTEGER)
- return DataType.INT;
- else if(colType == BigintType.BIGINT)
- return DataType.LONG;
- else if(colType == DoubleType.DOUBLE)
- return DataType.DOUBLE;
- else if(colType == DecimalType.createDecimalType())
- return DataType.DECIMAL;
- else if(colType == VarcharType.VARCHAR)
- return DataType.STRING;
- else if(colType == DateType.DATE)
- return DataType.DATE;
- else if(colType == TimestampType.TIMESTAMP)
- return DataType.TIMESTAMP;
- else
- return DataType.STRING;
+ }
+ } else if (rangeFilter.size() == 1)//only have one value
+ filters.add(rangeFilter.get(0));
+ }
}
-
- public Object ConvertDataByType(Object rawdata, Type type)
- {
- if(type.equals(IntegerType.INTEGER))
- return new Integer((rawdata.toString()));
- else if(type.equals(BigintType.BIGINT))
- return (Long)rawdata;
- else if(type.equals(VarcharType.VARCHAR))
- return ((Slice)rawdata).toStringUtf8();
- else if(type.equals(BooleanType.BOOLEAN))
- return (Boolean)(rawdata);
-
- return rawdata;
- }
+ Expression finalFilters;
+ List<Expression> tmp = filters.build();
+ if (tmp.size() > 1) {
+ finalFilters = new AndExpression(tmp.get(0), tmp.get(1));
+ if (tmp.size() > 2) {
+ for (int i = 2; i < tmp.size(); i++) {
+ finalFilters = new AndExpression(finalFilters, tmp.get(i));
+ }
+ }
+ } else if (tmp.size() == 1) finalFilters = tmp.get(0);
+ else//no filter
+ return null;
+
+ return finalFilters;
+ }
+
+ public static DataType Spi2CarbondataTypeMapper(Type colType) {
+ if (colType == BooleanType.BOOLEAN) return DataType.BOOLEAN;
+ else if (colType == SmallintType.SMALLINT) return DataType.SHORT;
+ else if (colType == IntegerType.INTEGER) return DataType.INT;
+ else if (colType == BigintType.BIGINT) return DataType.LONG;
+ else if (colType == DoubleType.DOUBLE) return DataType.DOUBLE;
+ else if (colType == DecimalType.createDecimalType()) return DataType.DECIMAL;
+ else if (colType == VarcharType.VARCHAR) return DataType.STRING;
+ else if (colType == DateType.DATE) return DataType.DATE;
+ else if (colType == TimestampType.TIMESTAMP) return DataType.TIMESTAMP;
+ else return DataType.STRING;
+ }
+
+ public Object ConvertDataByType(Object rawdata, Type type) {
+ if (type.equals(IntegerType.INTEGER)) return new Integer((rawdata.toString()));
+ else if (type.equals(BigintType.BIGINT)) return (Long) rawdata;
+ else if (type.equals(VarcharType.VARCHAR)) return ((Slice) rawdata).toStringUtf8();
+ else if (type.equals(BooleanType.BOOLEAN)) return (Boolean) (rawdata);
+
+ return rawdata;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableHandle.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableHandle.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableHandle.java
index b0caf52..0a3c820 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableHandle.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableHandle.java
@@ -28,57 +28,44 @@ import java.util.Objects;
import static java.util.Locale.ENGLISH;
import static java.util.Objects.requireNonNull;
-public class CarbondataTableHandle
- implements ConnectorTableHandle {
+public class CarbondataTableHandle implements ConnectorTableHandle {
- private final String connectorId;
- private final SchemaTableName schemaTableName;
+ private final String connectorId;
+ private final SchemaTableName schemaTableName;
- @JsonCreator
- public CarbondataTableHandle(
- @JsonProperty("connectorId") String connectorId,
- @JsonProperty("schemaTableName") SchemaTableName schemaTableName)
- {
- this.connectorId = requireNonNull(connectorId.toLowerCase(ENGLISH), "connectorId is null");
- this.schemaTableName = schemaTableName;
- }
-
- @JsonProperty
- public String getConnectorId()
- {
- return connectorId;
- }
+ @JsonCreator public CarbondataTableHandle(@JsonProperty("connectorId") String connectorId,
+ @JsonProperty("schemaTableName") SchemaTableName schemaTableName) {
+ this.connectorId = requireNonNull(connectorId.toLowerCase(ENGLISH), "connectorId is null");
+ this.schemaTableName = schemaTableName;
+ }
- @JsonProperty
- public SchemaTableName getSchemaTableName()
- {
- return schemaTableName;
- }
+ @JsonProperty public String getConnectorId() {
+ return connectorId;
+ }
- @Override
- public int hashCode()
- {
- return Objects.hash(connectorId, schemaTableName);
- }
+ @JsonProperty public SchemaTableName getSchemaTableName() {
+ return schemaTableName;
+ }
- @Override
- public boolean equals(Object obj)
- {
- if (this == obj) {
- return true;
- }
- if ((obj == null) || (getClass() != obj.getClass())) {
- return false;
- }
+ @Override public int hashCode() {
+ return Objects.hash(connectorId, schemaTableName);
+ }
- CarbondataTableHandle other = (CarbondataTableHandle) obj;
- return Objects.equals(this.connectorId, other.connectorId) && this.schemaTableName.equals(other.getSchemaTableName());
+ @Override public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
}
-
- @Override
- public String toString()
- {
- return Joiner.on(":").join(connectorId, schemaTableName.toString());
+ if ((obj == null) || (getClass() != obj.getClass())) {
+ return false;
}
+ CarbondataTableHandle other = (CarbondataTableHandle) obj;
+ return Objects.equals(this.connectorId, other.connectorId) && this.schemaTableName
+ .equals(other.getSchemaTableName());
+ }
+
+ @Override public String toString() {
+ return Joiner.on(":").join(connectorId, schemaTableName.toString());
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableLayoutHandle.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableLayoutHandle.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableLayoutHandle.java
index dc0506f..bf6318f 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableLayoutHandle.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTableLayoutHandle.java
@@ -29,60 +29,43 @@ import java.util.Objects;
import static com.google.common.base.Objects.toStringHelper;
import static java.util.Objects.requireNonNull;
-public class CarbondataTableLayoutHandle
- implements ConnectorTableLayoutHandle
-{
- private final CarbondataTableHandle table;
- private final TupleDomain<ColumnHandle> constraint;
+public class CarbondataTableLayoutHandle implements ConnectorTableLayoutHandle {
+ private final CarbondataTableHandle table;
+ private final TupleDomain<ColumnHandle> constraint;
- @JsonCreator
- public CarbondataTableLayoutHandle(@JsonProperty("table") CarbondataTableHandle table,
- @JsonProperty("constraint") TupleDomain<ColumnHandle> constraint)
- {
- this.table = requireNonNull(table, "table is null");
- this.constraint = requireNonNull(constraint, "constraint is null");
- }
-
- @JsonProperty
- public CarbondataTableHandle getTable()
- {
- return table;
- }
-
- @JsonProperty
- public TupleDomain<ColumnHandle> getConstraint()
- {
- return constraint;
- }
+ @JsonCreator
+ public CarbondataTableLayoutHandle(@JsonProperty("table") CarbondataTableHandle table,
+ @JsonProperty("constraint") TupleDomain<ColumnHandle> constraint) {
+ this.table = requireNonNull(table, "table is null");
+ this.constraint = requireNonNull(constraint, "constraint is null");
+ }
- @Override
- public boolean equals(Object obj)
- {
- if (this == obj) {
- return true;
- }
+ @JsonProperty public CarbondataTableHandle getTable() {
+ return table;
+ }
- if (obj == null || getClass() != obj.getClass()) {
- return false;
- }
+ @JsonProperty public TupleDomain<ColumnHandle> getConstraint() {
+ return constraint;
+ }
- CarbondataTableLayoutHandle other = (CarbondataTableLayoutHandle) obj;
- return Objects.equals(table, other.table)
- && Objects.equals(constraint, other.constraint);
+ @Override public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
}
- @Override
- public int hashCode()
- {
- return Objects.hash(table, constraint);
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
}
- @Override
- public String toString()
- {
- return toStringHelper(this)
- .add("table", table)
- .add("constraint", constraint)
- .toString();
- }
+ CarbondataTableLayoutHandle other = (CarbondataTableLayoutHandle) obj;
+ return Objects.equals(table, other.table) && Objects.equals(constraint, other.constraint);
+ }
+
+ @Override public int hashCode() {
+ return Objects.hash(table, constraint);
+ }
+
+ @Override public String toString() {
+ return toStringHelper(this).add("table", table).add("constraint", constraint).toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTransactionHandle.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTransactionHandle.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTransactionHandle.java
index 06a84e2..e95c490 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTransactionHandle.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataTransactionHandle.java
@@ -19,8 +19,6 @@ package org.apache.carbondata.presto;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
-public enum CarbondataTransactionHandle
- implements ConnectorTransactionHandle
-{
- INSTANCE
+public enum CarbondataTransactionHandle implements ConnectorTransactionHandle {
+ INSTANCE
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/Types.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/Types.java b/integration/presto/src/main/java/org/apache/carbondata/presto/Types.java
index b7b0d90..cb30907 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/Types.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/Types.java
@@ -23,16 +23,13 @@ import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
public class Types {
- private Types() {}
+ private Types() {
+ }
- public static <A, B extends A> B checkType(A value, Class<B> target, String name)
- {
- requireNonNull(value, String.format(Locale.ENGLISH, "%s is null", name));
- checkArgument(target.isInstance(value),
- "%s must be of type %s, not %s",
- name,
- target.getName(),
- value.getClass().getName());
- return target.cast(value);
- }
+ public static <A, B extends A> B checkType(A value, Class<B> target, String name) {
+ requireNonNull(value, String.format(Locale.ENGLISH, "%s is null", name));
+ checkArgument(target.isInstance(value), "%s must be of type %s, not %s", name, target.getName(),
+ value.getClass().getName());
+ return target.cast(value);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonLocalInputSplit.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonLocalInputSplit.java b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonLocalInputSplit.java
index 9cde7a6..9940061 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonLocalInputSplit.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonLocalInputSplit.java
@@ -24,70 +24,59 @@ import com.fasterxml.jackson.annotation.JsonProperty;
public class CarbonLocalInputSplit {
- private static final long serialVersionUID = 3520344046772190207L;
- private String segmentId;
- private String path;
- private long start;
- private long length;
- private List<String> locations;
- private short version;
- /**
- * Number of BlockLets in a block
- */
- private int numberOfBlocklets = 0;
+ private static final long serialVersionUID = 3520344046772190207L;
+ private String segmentId;
+ private String path;
+ private long start;
+ private long length;
+ private List<String> locations;
+ private short version;
+ /**
+ * Number of BlockLets in a block
+ */
+ private int numberOfBlocklets = 0;
+ @JsonProperty public short getVersion() {
+ return version;
+ }
- @JsonProperty
- public short getVersion(){
- return version;
- }
+ @JsonProperty public List<String> getLocations() {
+ return locations;
+ }
- @JsonProperty
- public List<String> getLocations() {
- return locations;
- }
+ @JsonProperty public long getLength() {
+ return length;
+ }
- @JsonProperty
- public long getLength() {
- return length;
- }
+ @JsonProperty public long getStart() {
+ return start;
+ }
- @JsonProperty
- public long getStart() {
- return start;
- }
+ @JsonProperty public String getPath() {
+ return path;
+ }
- @JsonProperty
- public String getPath() {
- return path;
- }
+ @JsonProperty public String getSegmentId() {
+ return segmentId;
+ }
- @JsonProperty
- public String getSegmentId() {
- return segmentId;
- }
+ @JsonProperty public int getNumberOfBlocklets() {
+ return numberOfBlocklets;
+ }
- @JsonProperty
- public int getNumberOfBlocklets() {
- return numberOfBlocklets;
- }
-
- @JsonCreator
- public CarbonLocalInputSplit(@JsonProperty("segmentId") String segmentId,
- @JsonProperty("path") String path,
- @JsonProperty("start") long start,
- @JsonProperty("length") long length,
- @JsonProperty("locations") List<String> locations,
- @JsonProperty("numberOfBlocklets") int numberOfBlocklets/*,
+ @JsonCreator public CarbonLocalInputSplit(@JsonProperty("segmentId") String segmentId,
+ @JsonProperty("path") String path, @JsonProperty("start") long start,
+ @JsonProperty("length") long length, @JsonProperty("locations") List<String> locations,
+ @JsonProperty("numberOfBlocklets") int numberOfBlocklets/*,
@JsonProperty("tableBlockInfo") TableBlockInfo tableBlockInfo*/,
- @JsonProperty("version") short version) {
- this.path = path;
- this.start = start;
- this.length = length;
- this.segmentId = segmentId;
- this.locations = locations;
- this.numberOfBlocklets = numberOfBlocklets;
- //this.tableBlockInfo = tableBlockInfo;
- this.version = version;
- }
+ @JsonProperty("version") short version) {
+ this.path = path;
+ this.start = start;
+ this.length = length;
+ this.segmentId = segmentId;
+ this.locations = locations;
+ this.numberOfBlocklets = numberOfBlocklets;
+ //this.tableBlockInfo = tableBlockInfo;
+ this.version = version;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableCacheModel.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableCacheModel.java b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableCacheModel.java
index ee636b1..b138f18 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableCacheModel.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableCacheModel.java
@@ -24,21 +24,17 @@ import org.apache.carbondata.core.util.path.CarbonTablePath;
public class CarbonTableCacheModel {
- public CarbonTableIdentifier carbonTableIdentifier;
- public CarbonTablePath carbonTablePath;
+ public CarbonTableIdentifier carbonTableIdentifier;
+ public CarbonTablePath carbonTablePath;
- public TableInfo tableInfo;
- public CarbonTable carbonTable;
- public String[] segments;
+ public TableInfo tableInfo;
+ public CarbonTable carbonTable;
+ public String[] segments;
- public boolean isValid()
- {
- if(carbonTable != null
- && carbonTablePath != null
- && carbonTableIdentifier != null)
- return true;
- else
- return false;
- }
+ public boolean isValid() {
+ if (carbonTable != null && carbonTablePath != null && carbonTableIdentifier != null)
+ return true;
+ else return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableConfig.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableConfig.java b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableConfig.java
index a682b66..a2b0a8c 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableConfig.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableConfig.java
@@ -22,41 +22,35 @@ import io.airlift.configuration.Config;
import javax.validation.constraints.NotNull;
public class CarbonTableConfig {
- //read from config
- private String dbPtah;
- private String tablePath;
- private String storePath;
-
- @NotNull
- public String getDbPtah() {
- return dbPtah;
- }
-
- @Config("carbondata-store")
- public CarbonTableConfig setDbPtah(String dbPtah) {
- this.dbPtah = dbPtah;
- return this;
- }
-
- @NotNull
- public String getTablePath() {
- return tablePath;
- }
-
- @Config("carbondata-store")
- public CarbonTableConfig setTablePath(String tablePath) {
- this.tablePath = tablePath;
- return this;
- }
-
- @NotNull
- public String getStorePath() {
- return storePath;
- }
-
- @Config("carbondata-store")
- public CarbonTableConfig setStorePath(String storePath) {
- this.storePath = storePath;
- return this;
- }
+ //read from config
+ private String dbPtah;
+ private String tablePath;
+ private String storePath;
+
+ @NotNull public String getDbPtah() {
+ return dbPtah;
+ }
+
+ @Config("carbondata-store") public CarbonTableConfig setDbPtah(String dbPtah) {
+ this.dbPtah = dbPtah;
+ return this;
+ }
+
+ @NotNull public String getTablePath() {
+ return tablePath;
+ }
+
+ @Config("carbondata-store") public CarbonTableConfig setTablePath(String tablePath) {
+ this.tablePath = tablePath;
+ return this;
+ }
+
+ @NotNull public String getStorePath() {
+ return storePath;
+ }
+
+ @Config("carbondata-store") public CarbonTableConfig setStorePath(String storePath) {
+ this.storePath = storePath;
+ return this;
+ }
}