use of io.trino.spi.connector.RecordSet in project trino by trinodb.
the class TpchConnectorIndex method lookup.
@Override
public ConnectorPageSource lookup(RecordSet rawInputRecordSet) {
// convert the input record set from the column ordering in the query to
// match the column ordering of the index
RecordSet inputRecordSet = keyFormatter.apply(rawInputRecordSet);
// lookup the values in the index
RecordSet rawOutputRecordSet = indexedTable.lookupKeys(inputRecordSet);
// expect by the query
return new RecordPageSource(outputFormatter.apply(rawOutputRecordSet));
}
use of io.trino.spi.connector.RecordSet in project trino by trinodb.
the class TestLocalFileRecordSet method assertData.
private static void assertData(LocalFileTables localFileTables, LocalFileMetadata metadata) {
LocalFileTableHandle tableHandle = new LocalFileTableHandle(getSchemaTableName(), OptionalInt.of(0), OptionalInt.of(-1));
List<LocalFileColumnHandle> columnHandles = metadata.getColumnHandles(SESSION, tableHandle).values().stream().map(column -> (LocalFileColumnHandle) column).collect(Collectors.toList());
LocalFileSplit split = new LocalFileSplit(address);
RecordSet recordSet = new LocalFileRecordSet(localFileTables, split, tableHandle, columnHandles);
RecordCursor cursor = recordSet.cursor();
for (int i = 0; i < columnHandles.size(); i++) {
assertEquals(cursor.getType(i), columnHandles.get(i).getColumnType());
}
// test one row
assertTrue(cursor.advanceNextPosition());
assertEquals(cursor.getSlice(0).toStringUtf8(), address.toString());
assertEquals(cursor.getSlice(2).toStringUtf8(), "127.0.0.1");
assertEquals(cursor.getSlice(3).toStringUtf8(), "POST");
assertEquals(cursor.getSlice(4).toStringUtf8(), "/v1/memory");
assertTrue(cursor.isNull(5));
assertTrue(cursor.isNull(6));
assertEquals(cursor.getLong(7), 200);
assertEquals(cursor.getLong(8), 0);
assertEquals(cursor.getLong(9), 1000);
assertEquals(cursor.getLong(10), 10);
assertTrue(cursor.isNull(11));
assertTrue(cursor.advanceNextPosition());
assertEquals(cursor.getSlice(0).toStringUtf8(), address.toString());
assertEquals(cursor.getSlice(2).toStringUtf8(), "127.0.0.1");
assertEquals(cursor.getSlice(3).toStringUtf8(), "GET");
assertEquals(cursor.getSlice(4).toStringUtf8(), "/v1/service/presto/general");
assertEquals(cursor.getSlice(5).toStringUtf8(), "foo");
assertEquals(cursor.getSlice(6).toStringUtf8(), "ffffffff-ffff-ffff-ffff-ffffffffffff");
assertEquals(cursor.getLong(7), 200);
assertEquals(cursor.getLong(8), 0);
assertEquals(cursor.getLong(9), 37);
assertEquals(cursor.getLong(10), 1094);
assertEquals(cursor.getSlice(11).toStringUtf8(), "a7229d56-5cbd-4e23-81ff-312ba6be0f12");
}
use of io.trino.spi.connector.RecordSet in project trino by trinodb.
the class TestJmxSplitManager method testHistoryRecordSetProvider.
@Test
public void testHistoryRecordSetProvider() throws Exception {
for (SchemaTableName schemaTableName : metadata.listTables(SESSION, Optional.of(HISTORY_SCHEMA_NAME))) {
// wait for at least two samples
List<Long> timeStamps = ImmutableList.of();
for (int waited = 0; waited < TIMEOUT_TIME; waited += SLEEP_TIME) {
RecordSet recordSet = getRecordSet(schemaTableName);
timeStamps = readTimeStampsFrom(recordSet);
if (timeStamps.size() >= 2) {
break;
}
Thread.sleep(SLEEP_TIME);
}
assertTrue(timeStamps.size() >= 2);
// we don't have equality check here because JmxHistoryDumper scheduling can lag
assertTrue(timeStamps.get(1) - timeStamps.get(0) >= JMX_STATS_DUMP.toMillis());
}
}
use of io.trino.spi.connector.RecordSet in project trino by trinodb.
the class KinesisRecordSetProvider method getRecordSet.
@Override
public RecordSet getRecordSet(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<? extends ColumnHandle> columns) {
KinesisSplit kinesisSplit = (KinesisSplit) split;
List<KinesisColumnHandle> kinesisColumns = columns.stream().map(x -> (KinesisColumnHandle) x).collect(toImmutableList());
ImmutableList.Builder<KinesisColumnHandle> handleBuilder = ImmutableList.builder();
RowDecoder messageDecoder = decoderFactory.create(kinesisSplit.getMessageDataFormat(), new HashMap<>(), kinesisColumns.stream().filter(column -> !column.isInternal()).collect(toImmutableSet()));
for (ColumnHandle handle : columns) {
KinesisColumnHandle columnHandle = (KinesisColumnHandle) handle;
handleBuilder.add(columnHandle);
}
return new KinesisRecordSet(kinesisSplit, session, clientManager, handleBuilder.build(), messageDecoder, kinesisConfig);
}
use of io.trino.spi.connector.RecordSet in project trino by trinodb.
the class KafkaRecordSetProvider method getRecordSet.
@Override
public RecordSet getRecordSet(ConnectorTransactionHandle transaction, ConnectorSession session, ConnectorSplit split, ConnectorTableHandle table, List<? extends ColumnHandle> columns) {
KafkaSplit kafkaSplit = (KafkaSplit) split;
List<KafkaColumnHandle> kafkaColumns = columns.stream().map(KafkaColumnHandle.class::cast).collect(toImmutableList());
RowDecoder keyDecoder = decoderFactory.create(kafkaSplit.getKeyDataFormat(), getDecoderParameters(kafkaSplit.getKeyDataSchemaContents()), kafkaColumns.stream().filter(col -> !col.isInternal()).filter(KafkaColumnHandle::isKeyCodec).collect(toImmutableSet()));
RowDecoder messageDecoder = decoderFactory.create(kafkaSplit.getMessageDataFormat(), getDecoderParameters(kafkaSplit.getMessageDataSchemaContents()), kafkaColumns.stream().filter(col -> !col.isInternal()).filter(col -> !col.isKeyCodec()).collect(toImmutableSet()));
return new KafkaRecordSet(kafkaSplit, consumerFactory, session, kafkaColumns, keyDecoder, messageDecoder);
}
Aggregations