public ArrayTable.Content get() { final ColumnLoader loader = new ColumnLoader<T>(typeFactory, source, protoRowType, repList); return new ArrayTable.Content(loader.representationValues, loader.size(), loader.sortField); } }));
public static <T> TableInSchema createCloneTable(MutableSchema schema, String name, RelDataType rowType, Enumerable<T> source) { final ColumnLoader loader = new ColumnLoader<T>(schema.getTypeFactory(), source, rowType); final Type elementType = source instanceof Queryable ? ((Queryable) source).getElementType() : Object.class; ArrayTable<T> table = new ArrayTable<T>( schema, elementType, rowType, Expressions.call( schema.getExpression(), BuiltinMethod.DATA_CONTEXT_GET_TABLE.method, Expressions.constant(name), Expressions.constant(Types.toClass(elementType))), loader.representationValues, loader.size(), loader.sortField); return new TableInSchemaImpl(schema, name, TableType.TABLE, table); }
@Test public void testLoadSorted() { final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(); final RelDataType rowType = typeFactory.createStructType( new RelDataTypeFactory.FieldInfoBuilder() .add("empid", typeFactory.createType(int.class)) .add("deptno", typeFactory.createType(int.class)) .add("name", typeFactory.createType(String.class))); final Enumerable<Object[]> enumerable = Linq4j.asEnumerable( Arrays.asList( new Object[]{100, 10, "Bill"}, new Object[]{200, 20, "Eric"}, new Object[]{150, 10, "Sebastian"}, new Object[]{160, 10, "Theodore"})); final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, rowType); checkColumn( loader.representationValues.get(0), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=0, bitCount=8, primitive=INT, signed=false), value=[100, 150, 160, 200, 0, 0, 0, 0])"); checkColumn( loader.representationValues.get(1), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=1, bitCount=5, primitive=INT, signed=false), value=[10, 10, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0])"); checkColumn( loader.representationValues.get(2), ArrayTable.RepresentationType.OBJECT_ARRAY, "Column(representation=ObjectArray(ordinal=2), value=[Bill, Sebastian, Theodore, Eric])"); }
new Object[]{10, 160, "Theodore"})); final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, rowType);
new Object[]{160, 10, "Theodore"})); final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, RelDataTypeImpl.proto(rowType), null); checkColumn(
new Object[]{10, 160, "Theodore"})); final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, RelDataTypeImpl.proto(rowType), null);