com.facebook.presto.plugin.memory.MemoryPageSourceProvider Maven / Gradle / Ivy
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.presto.plugin.memory;
import com.facebook.presto.common.Page;
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.FixedPageSource;
import com.facebook.presto.spi.SplitContext;
import com.facebook.presto.spi.connector.ConnectorPageSourceProvider;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import javax.inject.Inject;
import java.util.List;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.toList;
public final class MemoryPageSourceProvider
implements ConnectorPageSourceProvider
{
private final MemoryPagesStore pagesStore;
@Inject
public MemoryPageSourceProvider(MemoryPagesStore pagesStore)
{
this.pagesStore = requireNonNull(pagesStore, "pagesStore is null");
}
@Override
public ConnectorPageSource createPageSource(
ConnectorTransactionHandle transactionHandle,
ConnectorSession session,
ConnectorSplit split,
List columns,
SplitContext splitContext)
{
MemorySplit memorySplit = (MemorySplit) split;
long tableId = memorySplit.getTableHandle().getTableId();
int partNumber = memorySplit.getPartNumber();
int totalParts = memorySplit.getTotalPartsPerWorker();
long expectedRows = memorySplit.getExpectedRows();
List columnIndexes = columns.stream()
.map(MemoryColumnHandle.class::cast)
.map(MemoryColumnHandle::getColumnIndex).collect(toList());
List pages = pagesStore.getPages(
tableId,
partNumber,
totalParts,
columnIndexes,
expectedRows);
return new FixedPageSource(pages);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy