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);
}