@Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession session, TupleDomain<Integer> constraint) { return DATA.cursor(); } }
public RecordPageSource(RecordSet recordSet) { this(requireNonNull(recordSet, "recordSet is null").getColumnTypes(), recordSet.cursor()); }
@Override public List<Type> getColumnTypes() { return delegate.getColumnTypes(); }
@Override public List<Type> getColumnTypes() { return delegate.getColumnTypes(); }
private static int totalRecords(RecordSet recordSet) { RecordCursor cursor = recordSet.cursor(); int result = 0; while (cursor.advanceNextPosition()) { result++; } return result; } }
@Override public RecordCursor cursor() { return new AppendingRecordCursor(delegate.cursor(), delegate.getColumnTypes().size(), appendedValues, appendedTypes); }
@Override public List<Type> getColumnTypes() { return ImmutableList.<Type>builder() .addAll(delegate.getColumnTypes()) .addAll(appendedTypes) .build(); }
@Override public RecordCursor cursor() { return new MappedRecordCursor(delegate.cursor(), delegateFieldIndex); }
private List<Long> readTimeStampsFrom(RecordSet recordSet) { ImmutableList.Builder<Long> result = ImmutableList.builder(); try (RecordCursor cursor = recordSet.cursor()) { while (cursor.advanceNextPosition()) { for (int i = 0; i < recordSet.getColumnTypes().size(); i++) { cursor.isNull(i); } if (cursor.isNull(0)) { return result.build(); } assertTrue(recordSet.getColumnTypes().get(0) instanceof TimestampType); result.add(cursor.getLong(0)); } } return result.build(); }
public ConcatRecordSet(Iterable<RecordSet> recordSets, List<Type> types) { this.recordSets = requireNonNull(recordSets, "recordSets is null"); for (RecordSet recordSet : recordSets) { checkState(recordSet.getColumnTypes().equals(types), "RecordSet types do not match declared types"); } this.types = ImmutableList.copyOf(requireNonNull(types, "types is null")); }
@Override public RecordCursor cursor() { return new FieldSetFilteringRecordCursor(delegate.cursor(), fieldSets); }
private static IndexedTable indexTable(RecordSet recordSet, final List<String> outputColumns, List<String> keyColumns) { List<Integer> keyPositions = keyColumns.stream() .map(columnName -> { int position = outputColumns.indexOf(columnName); checkState(position != -1); return position; }) .collect(toImmutableList()); ImmutableListMultimap.Builder<MaterializedTuple, MaterializedTuple> indexedValuesBuilder = ImmutableListMultimap.builder(); List<Type> outputTypes = recordSet.getColumnTypes(); List<Type> keyTypes = extractPositionValues(outputTypes, keyPositions); RecordCursor cursor = recordSet.cursor(); while (cursor.advanceNextPosition()) { List<Object> values = extractValues(cursor, outputTypes); List<Object> keyValues = extractPositionValues(values, keyPositions); indexedValuesBuilder.put(new MaterializedTuple(keyValues), new MaterializedTuple(values)); } return new IndexedTable(keyColumns, keyTypes, outputColumns, outputTypes, indexedValuesBuilder.build()); }
public MappedRecordSet(RecordSet delegate, List<Integer> delegateFieldIndex) { this.delegate = requireNonNull(delegate, "delegate is null"); this.delegateFieldIndex = Ints.toArray(requireNonNull(delegateFieldIndex, "delegateFieldIndex is null")); List<Type> types = delegate.getColumnTypes(); this.columnTypes = delegateFieldIndex.stream().map(types::get).collect(toImmutableList()); }
@Override public RecordCursor cursor() { return new FieldSetFilteringRecordCursor(delegate.cursor(), fieldSets); }
@Test public void testRecordSetProvider() throws Exception { for (SchemaTableName schemaTableName : metadata.listTables(SESSION, JMX_SCHEMA_NAME)) { RecordSet recordSet = getRecordSet(schemaTableName); try (RecordCursor cursor = recordSet.cursor()) { while (cursor.advanceNextPosition()) { for (int i = 0; i < recordSet.getColumnTypes().size(); i++) { cursor.isNull(i); } } } } }
public MappedRecordSet(RecordSet delegate, List<Integer> delegateFieldIndex) { this.delegate = requireNonNull(delegate, "delegate is null"); this.delegateFieldIndex = Ints.toArray(requireNonNull(delegateFieldIndex, "delegateFieldIndex is null")); List<Type> types = delegate.getColumnTypes(); this.columnTypes = delegateFieldIndex.stream().map(types::get).collect(toImmutableList()); }
@Override public RecordCursor cursor() { return new MappedRecordCursor(delegate.cursor(), delegateFieldIndex); }
private static Block convertColumnToBlock(RecordSet recordSet, int columnIndex, int positions) Type type = recordSet.getColumnTypes().get(columnIndex); BlockBuilder output = type.createBlockBuilder(null, positions); Class<?> javaType = type.getJavaType(); RecordCursor cursor = recordSet.cursor(); for (int position = 0; position < positions; position++) { checkState(cursor.advanceNextPosition(), "cursor has less values than expected");
public FieldSetFilteringRecordSet(FunctionRegistry functionRegistry, RecordSet delegate, List<Set<Integer>> fieldSets) { requireNonNull(functionRegistry, "functionRegistry is null"); this.delegate = requireNonNull(delegate, "delegate is null"); ImmutableList.Builder<Set<Field>> fieldSetsBuilder = ImmutableList.builder(); List<Type> columnTypes = delegate.getColumnTypes(); for (Set<Integer> fieldSet : requireNonNull(fieldSets, "fieldSets is null")) { ImmutableSet.Builder<Field> fieldSetBuilder = ImmutableSet.builder(); for (int field : fieldSet) { fieldSetBuilder.add(new Field( field, functionRegistry.getScalarFunctionImplementation(internalOperator(OperatorType.EQUAL, BooleanType.BOOLEAN, ImmutableList.of(columnTypes.get(field), columnTypes.get(field)))).getMethodHandle())); } fieldSetsBuilder.add(fieldSetBuilder.build()); } this.fieldSets = fieldSetsBuilder.build(); }
public static PrestoThriftBlock fromLongBasedColumn(RecordSet recordSet, int columnIndex, int positions, BiFunction<boolean[], long[], PrestoThriftBlock> result) { if (positions == 0) { return result.apply(null, null); } boolean[] nulls = null; long[] longs = null; RecordCursor cursor = recordSet.cursor(); for (int position = 0; position < positions; position++) { checkState(cursor.advanceNextPosition(), "cursor has less values than expected"); if (cursor.isNull(columnIndex)) { if (nulls == null) { nulls = new boolean[positions]; } nulls[position] = true; } else { if (longs == null) { longs = new long[positions]; } longs[position] = cursor.getLong(columnIndex); } } checkState(!cursor.advanceNextPosition(), "cursor has more values than expected"); return result.apply(nulls, longs); }