Github user ravipesala commented on a diff in the pull request: https://github.com/apache/carbondata/pull/3019#discussion_r244097070 --- Diff: integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPageSourceProvider.java --- @@ -43,63 +44,81 @@ import static org.apache.carbondata.presto.Types.checkType; +import com.facebook.presto.hive.HdfsEnvironment; +import com.facebook.presto.hive.HiveClientConfig; +import com.facebook.presto.hive.HiveColumnHandle; +import com.facebook.presto.hive.HivePageSourceFactory; +import com.facebook.presto.hive.HivePageSourceProvider; +import com.facebook.presto.hive.HiveRecordCursorProvider; +import com.facebook.presto.hive.HiveSplit; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ConnectorPageSource; import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorSplit; -import com.facebook.presto.spi.connector.ConnectorPageSourceProvider; +import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.connector.ConnectorTransactionHandle; +import com.facebook.presto.spi.type.TypeManager; import com.google.common.collect.ImmutableList; import com.google.inject.Inject; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.TaskAttemptContextImpl; import org.apache.hadoop.mapred.TaskAttemptID; import org.apache.hadoop.mapreduce.TaskType; -import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; - /** * Provider Class for Carbondata Page Source class. */ -public class CarbondataPageSourceProvider implements ConnectorPageSourceProvider { +public class CarbondataPageSourceProvider extends HivePageSourceProvider { - private String connectorId; private CarbonTableReader carbonTableReader; private String queryId ; - - @Inject public CarbondataPageSourceProvider(CarbondataConnectorId connectorId, + private HdfsEnvironment hdfsEnvironment; + + @Inject public CarbondataPageSourceProvider( + HiveClientConfig hiveClientConfig, + HdfsEnvironment hdfsEnvironment, + Set<HiveRecordCursorProvider> cursorProviders, + Set<HivePageSourceFactory> pageSourceFactories, + TypeManager typeManager, CarbonTableReader carbonTableReader) { - this.connectorId = requireNonNull(connectorId, "connectorId is null").toString(); + super(hiveClientConfig, hdfsEnvironment, cursorProviders, pageSourceFactories, typeManager); this.carbonTableReader = requireNonNull(carbonTableReader, "carbonTableReader is null"); + this.hdfsEnvironment = hdfsEnvironment; } @Override public ConnectorPageSource createPageSource(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) { - this.queryId = ((CarbondataSplit)split).getQueryId(); + HiveSplit carbonSplit = + checkType(split, HiveSplit.class, "split is not class HiveSplit"); + if (carbonSplit.getSchema().getProperty("queryId") == null) { + return super.createPageSource(transactionHandle, session, split, columns); + } + this.queryId = carbonSplit.getSchema().getProperty("queryId"); + Configuration configuration = this.hdfsEnvironment.getConfiguration( + new HdfsEnvironment.HdfsContext(session, carbonSplit.getDatabase(), carbonSplit.getTable()), + new Path(carbonSplit.getSchema().getProperty("tablePath"))); + configuration = carbonTableReader.updateS3Properties(configuration); CarbonDictionaryDecodeReadSupport readSupport = new CarbonDictionaryDecodeReadSupport(); PrestoCarbonVectorizedRecordReader carbonRecordReader = - createReader(split, columns, readSupport); + createReader(carbonSplit, columns, readSupport, configuration); return new CarbondataPageSource(carbonRecordReader, columns); } /** - * @param split + * @param carbonSplit * @param columns * @param readSupport --- End diff -- ok
---