@Override public List<Type> getColumnTypes() { return delegate.getColumnTypes(); }
@Override public List<Type> getColumnTypes() { return delegate.getColumnTypes(); }
@Override public List<Type> getColumnTypes() { return ImmutableList.<Type>builder() .addAll(delegate.getColumnTypes()) .addAll(appendedTypes) .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")); }
public RecordPageSource(RecordSet recordSet) { this(requireNonNull(recordSet, "recordSet is null").getColumnTypes(), recordSet.cursor()); }
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()); }
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 AppendingRecordCursor(delegate.cursor(), delegate.getColumnTypes().size(), appendedValues, appendedTypes); }
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 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 RecordSet lookupKeys(RecordSet recordSet) { checkArgument(recordSet.getColumnTypes().equals(keyTypes), "Input RecordSet keys do not match expected key type"); Iterable<RecordSet> outputRecordSets = Iterables.transform(tupleIterable(recordSet), key -> { for (Object value : key.getValues()) { if (value == null) { throw new IllegalArgumentException("TPCH index does not support null values"); } } return lookupKey(key); }); return new ConcatRecordSet(outputRecordSets, outputTypes); }
public static PrestoThriftPageResult fromRecordSet(RecordSet recordSet) { List<Type> types = recordSet.getColumnTypes(); int numberOfColumns = types.size(); int positions = totalRecords(recordSet); if (numberOfColumns == 0) { return new PrestoThriftPageResult(ImmutableList.of(), positions, null); } List<PrestoThriftBlock> thriftBlocks = new ArrayList<>(numberOfColumns); for (int columnIndex = 0; columnIndex < numberOfColumns; columnIndex++) { thriftBlocks.add(fromRecordSetColumn(recordSet, columnIndex, positions)); } return new PrestoThriftPageResult(thriftBlocks, positions, null); }
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(); }
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 static PrestoThriftBlock fromRecordSetColumn(RecordSet recordSet, int columnIndex, int totalRecords) { Type type = recordSet.getColumnTypes().get(columnIndex); switch (type.getTypeSignature().getBase()) { // use more efficient implementations for numeric types which are likely to be used in index join case INTEGER: return PrestoThriftInteger.fromRecordSetColumn(recordSet, columnIndex, totalRecords); case BIGINT: return PrestoThriftBigint.fromRecordSetColumn(recordSet, columnIndex, totalRecords); case DATE: return PrestoThriftDate.fromRecordSetColumn(recordSet, columnIndex, totalRecords); case TIMESTAMP: return PrestoThriftTimestamp.fromRecordSetColumn(recordSet, columnIndex, totalRecords); default: // less efficient implementation which converts to a block first return fromBlock(convertColumnToBlock(recordSet, columnIndex, totalRecords), type); } }
@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); } } } } }
@Test public void testGetColumnTypes() { RecordSet recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR), new JdbcColumnHandle("test", "text_short", JDBC_VARCHAR, createVarcharType(32)), new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(VARCHAR, createVarcharType(32), BIGINT)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, VARCHAR)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, BIGINT, VARCHAR)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of()); assertEquals(recordSet.getColumnTypes(), ImmutableList.of()); }
@Test public void testGetColumnTypes() { RecordSet recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR), new JdbcColumnHandle("test", "text_short", JDBC_VARCHAR, createVarcharType(32)), new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(VARCHAR, createVarcharType(32), BIGINT)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, VARCHAR)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of( new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "value", JDBC_BIGINT, BIGINT), new JdbcColumnHandle("test", "text", JDBC_VARCHAR, VARCHAR))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, BIGINT, VARCHAR)); recordSet = new JdbcRecordSet(jdbcClient, session, split, ImmutableList.of()); assertEquals(recordSet.getColumnTypes(), ImmutableList.of()); }
@Test public void testGetColumnTypes() { RecordSet recordSet = new ExampleRecordSet(new ExampleSplit("test", "schema", "table", dataUri), ImmutableList.of( new ExampleColumnHandle("test", "text", createUnboundedVarcharType(), 0), new ExampleColumnHandle("test", "value", BIGINT, 1))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(createUnboundedVarcharType(), BIGINT)); recordSet = new ExampleRecordSet(new ExampleSplit("test", "schema", "table", dataUri), ImmutableList.of( new ExampleColumnHandle("test", "value", BIGINT, 1), new ExampleColumnHandle("test", "text", createUnboundedVarcharType(), 0))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, createUnboundedVarcharType())); recordSet = new ExampleRecordSet(new ExampleSplit("test", "schema", "table", dataUri), ImmutableList.of( new ExampleColumnHandle("test", "value", BIGINT, 1), new ExampleColumnHandle("test", "value", BIGINT, 1), new ExampleColumnHandle("test", "text", createUnboundedVarcharType(), 0))); assertEquals(recordSet.getColumnTypes(), ImmutableList.of(BIGINT, BIGINT, createUnboundedVarcharType())); recordSet = new ExampleRecordSet(new ExampleSplit("test", "schema", "table", dataUri), ImmutableList.of()); assertEquals(recordSet.getColumnTypes(), ImmutableList.of()); }
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();