private static ColumnMetaData getArrayColumnMetaData(ScalarType componentType, int index, String name) { ArrayType arrayType = ColumnMetaData.array(componentType, "Array", Rep.ARRAY); return new ColumnMetaData( index, false, true, false, false, DatabaseMetaData.columnNullable, true, -1, name, name, null, 0, 0, null, null, arrayType, true, false, false, "ARRAY"); }
private static ColumnMetaData getArrayColumnMetaData(ScalarType componentType, int index, String name) { ArrayType arrayType = ColumnMetaData.array(componentType, "Array", Rep.ARRAY); return new ColumnMetaData( index, false, true, false, false, DatabaseMetaData.columnNullable, true, -1, name, name, null, 0, 0, null, null, arrayType, true, false, false, "ARRAY"); }
private static ColumnMetaData getArrayColumnMetaData(ScalarType componentType, int index, String name) { ArrayType arrayType = ColumnMetaData.array(componentType, "Array", Rep.ARRAY); return new ColumnMetaData( index, false, true, false, false, DatabaseMetaData.columnNullable, true, -1, name, name, null, 0, 0, null, null, arrayType, true, false, false, "ARRAY"); }
@Override public Array createArray(AvaticaType elementType, Iterable<Object> elements) { final ArrayType array = ColumnMetaData.array(elementType, elementType.name, Rep.ARRAY); final List<ColumnMetaData> types = Collections.singletonList(ColumnMetaData.dummy(array, true)); // Avoid creating a new List if we already have a List List<Object> elementList; if (elements instanceof List) { elementList = (List<Object>) elements; } else { elementList = new ArrayList<>(); for (Object element : elements) { elementList.add(element); } } try (ListIteratorCursor cursor = new ListIteratorCursor(createRowForArrayData(elementList))) { List<Accessor> accessor = cursor.createAccessors(types, Unsafe.localCalendar(), this); assert 1 == accessor.size(); return new ArrayImpl(elementList, (ArrayAccessor) accessor.get(0)); } }
@Override public Array createArray(AvaticaType elementType, Iterable<Object> elements) { final ArrayType array = ColumnMetaData.array(elementType, elementType.name, Rep.ARRAY); final List<ColumnMetaData> types = Collections.singletonList(ColumnMetaData.dummy(array, true)); // Avoid creating a new List if we already have a List List<Object> elementList; if (elements instanceof List) { elementList = (List<Object>) elements; } else { elementList = new ArrayList<>(); for (Object element : elements) { elementList.add(element); } } try (ListIteratorCursor cursor = new ListIteratorCursor(createRowForArrayData(elementList))) { List<Accessor> accessor = cursor.createAccessors(types, Unsafe.localCalendar(), this); assert 1 == accessor.size(); return new ArrayImpl(elementList, (ArrayAccessor) accessor.get(0)); } }
ColumnMetaData.AvaticaType arrayValueType = ColumnMetaData.scalar(Types.JAVA_OBJECT, metaData.getColumnTypeName(i), ColumnMetaData.Rep.OBJECT); t = ColumnMetaData.array(arrayValueType, metaData.getColumnTypeName(i), rep); } else { t = ColumnMetaData.scalar(metaData.getColumnType(i), metaData.getColumnTypeName(i), rep);
ColumnMetaData.AvaticaType arrayValueType = ColumnMetaData.scalar(Types.JAVA_OBJECT, metaData.getColumnTypeName(i), ColumnMetaData.Rep.OBJECT); t = ColumnMetaData.array(arrayValueType, metaData.getColumnTypeName(i), rep); } else { t = ColumnMetaData.scalar(metaData.getColumnType(i), metaData.getColumnTypeName(i), rep);
ColumnMetaData.AvaticaType arrayValueType = ColumnMetaData.scalar(Types.JAVA_OBJECT, metaData.getColumnTypeName(i), ColumnMetaData.Rep.OBJECT); t = ColumnMetaData.array(arrayValueType, metaData.getColumnTypeName(i), rep); } else { t = ColumnMetaData.scalar(metaData.getColumnType(i), metaData.getColumnTypeName(i), rep);
public static AvaticaType fromProto(Common.AvaticaType proto) { Common.Rep repProto = proto.getRep(); Rep rep = Rep.valueOf(repProto.name()); AvaticaType type; if (proto.hasComponent()) { // ArrayType // recurse on the type for the array elements AvaticaType nestedType = AvaticaType.fromProto(proto.getComponent()); type = ColumnMetaData.array(nestedType, proto.getName(), rep); } else if (proto.getColumnsCount() > 0) { // StructType List<ColumnMetaData> columns = new ArrayList<>(proto.getColumnsCount()); for (Common.ColumnMetaData protoColumn : proto.getColumnsList()) { columns.add(ColumnMetaData.fromProto(protoColumn)); } type = ColumnMetaData.struct(columns); } else { // ScalarType type = ColumnMetaData.scalar(proto.getId(), proto.getName(), rep); } return type; }
public static AvaticaType fromProto(Common.AvaticaType proto) { Common.Rep repProto = proto.getRep(); Rep rep = Rep.valueOf(repProto.name()); AvaticaType type; if (proto.hasComponent()) { // ArrayType // recurse on the type for the array elements AvaticaType nestedType = AvaticaType.fromProto(proto.getComponent()); type = ColumnMetaData.array(nestedType, proto.getName(), rep); } else if (proto.getColumnsCount() > 0) { // StructType List<ColumnMetaData> columns = new ArrayList<>(proto.getColumnsCount()); for (Common.ColumnMetaData protoColumn : proto.getColumnsList()) { columns.add(ColumnMetaData.fromProto(protoColumn)); } type = ColumnMetaData.struct(columns); } else { // ScalarType type = ColumnMetaData.scalar(proto.getId(), proto.getName(), rep); } return type; }
public static AvaticaType fromProto(Common.AvaticaType proto) { Common.Rep repProto = proto.getRep(); Rep rep = Rep.valueOf(repProto.name()); AvaticaType type; if (proto.hasComponent()) { // ArrayType // recurse on the type for the array elements AvaticaType nestedType = AvaticaType.fromProto(proto.getComponent()); type = ColumnMetaData.array(nestedType, proto.getName(), rep); } else if (proto.getColumnsCount() > 0) { // StructType List<ColumnMetaData> columns = new ArrayList<>(proto.getColumnsCount()); for (Common.ColumnMetaData protoColumn : proto.getColumnsList()) { columns.add(ColumnMetaData.fromProto(protoColumn)); } type = ColumnMetaData.struct(columns); } else { // ScalarType type = ColumnMetaData.scalar(proto.getId(), proto.getName(), rep); } return type; }
@Test public void resultSetFromArray() throws Exception { ArrayType arrayType = ColumnMetaData.array(intType, "INTEGER", Rep.INTEGER); ColumnMetaData arrayMetaData = MetaImpl.columnMetaData("MY_ARRAY", 1, arrayType, false); ArrayImpl.Factory factory = new ArrayFactoryImpl(Unsafe.localCalendar().getTimeZone());
final ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz); assert rep != null; return ColumnMetaData.array(componentType, typeName, rep); } else { int typeOrdinal = getTypeOrdinal(type);
final ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz); assert rep != null; return ColumnMetaData.array(componentType, typeName, rep); } else { final int typeOrdinal = getTypeOrdinal(type);
private ColumnMetaData.AvaticaType avaticaType(JavaTypeFactory typeFactory, RelDataType type, RelDataType fieldType) { final String typeName = getTypeName(type); if (type.getComponentType() != null) { final ColumnMetaData.AvaticaType componentType = avaticaType(typeFactory, type.getComponentType(), null); final Type clazz = typeFactory.getJavaClass(type.getComponentType()); final ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz); assert rep != null; return ColumnMetaData.array(componentType, typeName, rep); } else { final int typeOrdinal = getTypeOrdinal(type); switch (typeOrdinal) { case Types.STRUCT: final List<ColumnMetaData> columns = new ArrayList<>(); for (RelDataTypeField field : type.getFieldList()) { columns.add( metaData(typeFactory, field.getIndex(), field.getName(), field.getType(), null, null)); } return ColumnMetaData.struct(columns); default: final Type clazz = typeFactory.getJavaClass(Util.first(fieldType, type)); final ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz); assert rep != null; return ColumnMetaData.scalar(typeOrdinal, typeName, rep); } } }
@Test public void resultSetFromArray() throws Exception { ArrayType arrayType = ColumnMetaData.array(intType, "INTEGER", Rep.INTEGER); ColumnMetaData arrayMetaData = MetaImpl.columnMetaData("MY_ARRAY", 1, arrayType, false); ArrayImpl.Factory factory = new ArrayFactoryImpl(Unsafe.localCalendar().getTimeZone());
final ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz); assert rep != null; return ColumnMetaData.array(componentType, typeName, rep); } else { int typeOrdinal = getTypeOrdinal(type);
Struct struct3 = new StructImpl(Arrays.<Object>asList(3)); Struct struct4 = new StructImpl(Arrays.<Object>asList(4, "four")); ArrayType arrayType = ColumnMetaData.array(structType, "OBJECT", Rep.STRUCT); ColumnMetaData arrayMetaData = MetaImpl.columnMetaData("MY_ARRAY", 1, arrayType, false); ArrayImpl.Factory factory = new ArrayFactoryImpl(Unsafe.localCalendar().getTimeZone());
Struct struct3 = new StructImpl(Arrays.<Object>asList(3)); Struct struct4 = new StructImpl(Arrays.<Object>asList(4, "four")); ArrayType arrayType = ColumnMetaData.array(structType, "OBJECT", Rep.STRUCT); ColumnMetaData arrayMetaData = MetaImpl.columnMetaData("MY_ARRAY", 1, arrayType, false); ArrayImpl.Factory factory = new ArrayFactoryImpl(Unsafe.localCalendar().getTimeZone());
DatabaseMetaData.columnNoNulls), columnMetaData("array", 11, ColumnMetaData.array( ColumnMetaData.scalar(Types.INTEGER, "INTEGER", ColumnMetaData.Rep.PRIMITIVE_INT),