/** Creates a path with a given list of names starting from a given root * schema. */ public static Path path(CalciteSchema rootSchema, Iterable<String> names) { final ImmutableList.Builder<Pair<String, Schema>> builder = ImmutableList.builder(); Schema schema = rootSchema.plus(); final Iterator<String> iterator = names.iterator(); if (!iterator.hasNext()) { return PathImpl.EMPTY; } if (!rootSchema.name.isEmpty()) { Preconditions.checkState(rootSchema.name.equals(iterator.next())); } for (;;) { final String name = iterator.next(); builder.add(Pair.of(name, schema)); if (!iterator.hasNext()) { return path(builder.build()); } schema = schema.getSubSchema(name); } }
/** Creates a path with a given list of names starting from a given root * schema. */ public static Path path(CalciteSchema rootSchema, Iterable<String> names) { final ImmutableList.Builder<Pair<String, Schema>> builder = ImmutableList.builder(); Schema schema = rootSchema.plus(); final Iterator<String> iterator = names.iterator(); if (!iterator.hasNext()) { return PathImpl.EMPTY; } if (!rootSchema.name.isEmpty()) { Preconditions.checkState(rootSchema.name.equals(iterator.next())); } for (;;) { final String name = iterator.next(); builder.add(Pair.of(name, schema)); if (!iterator.hasNext()) { return path(builder.build()); } schema = schema.getSubSchema(name); } }
@Override public Path getTablePath() { final ImmutableList.Builder<Pair<String, Schema>> builder = ImmutableList.builder(); for (String name : fromTable.names) { builder.add(Pair.of(name, null)); } return Schemas.path(builder.build()); }
@Override public Path getTablePath() { final ImmutableList.Builder<Pair<String, Schema>> builder = ImmutableList.builder(); for (String name : fromTable.names) { builder.add(Pair.of(name, null)); } return Schemas.path(builder.build()); }
/** Allows a sub-class to return an extension of {@link ModifiableViewTable} * by overriding this method. */ protected ModifiableViewTable modifiableViewTable(CalcitePrepare.AnalyzeViewResult parsed, String viewSql, List<String> schemaPath, List<String> viewPath, CalciteSchema schema) { final JavaTypeFactory typeFactory = (JavaTypeFactory) parsed.typeFactory; final Type elementType = typeFactory.getJavaClass(parsed.rowType); return new ModifiableViewTable(elementType, RelDataTypeImpl.proto(parsed.rowType), viewSql, schemaPath, viewPath, parsed.table, Schemas.path(schema.root(), parsed.tablePath), parsed.constraint, parsed.columnMapping); }
/** Allows a sub-class to return an extension of {@link ModifiableViewTable} * by overriding this method. */ protected ModifiableViewTable modifiableViewTable(CalcitePrepare.AnalyzeViewResult parsed, String viewSql, List<String> schemaPath, List<String> viewPath, CalciteSchema schema) { final JavaTypeFactory typeFactory = (JavaTypeFactory) parsed.typeFactory; final Type elementType = typeFactory.getJavaClass(parsed.rowType); return new ModifiableViewTable(elementType, RelDataTypeImpl.proto(parsed.rowType), viewSql, schemaPath, viewPath, parsed.table, Schemas.path(schema.root(), parsed.tablePath), parsed.constraint, parsed.columnMapping); }
rowType, backupTable, Schemas.path(rootSchema, view.alias)); QuarkViewTable table = new QuarkViewTable(parentSchema, view.table, relOptTable,
@Override protected ModifiableViewTable modifiableViewTable( CalcitePrepare.AnalyzeViewResult parsed, String viewSql, List<String> schemaPath, List<String> viewPath, CalciteSchema schema) { final JavaTypeFactory typeFactory = (JavaTypeFactory) parsed.typeFactory; final Type elementType = typeFactory.getJavaClass(parsed.rowType); return new MockModifiableViewTable(elementType, RelDataTypeImpl.proto(parsed.rowType), viewSql, schemaPath, viewPath, parsed.table, Schemas.path(schema.root(), parsed.tablePath), parsed.constraint, parsed.columnMapping); } }
@Override protected ModifiableViewTable modifiableViewTable( CalcitePrepare.AnalyzeViewResult parsed, String viewSql, List<String> schemaPath, List<String> viewPath, CalciteSchema schema) { final JavaTypeFactory typeFactory = (JavaTypeFactory) parsed.typeFactory; final Type elementType = typeFactory.getJavaClass(parsed.rowType); return new MockModifiableViewTable(elementType, RelDataTypeImpl.proto(parsed.rowType), viewSql, schemaPath, viewPath, parsed.table, Schemas.path(schema.root(), parsed.tablePath), parsed.constraint, parsed.columnMapping); } }
/** Test for {@link Path}. */ @Test public void testSchemaPath() { final SchemaPlus rootSchema = Frameworks.createRootSchema(true); final FrameworkConfig config = Frameworks.newConfigBuilder() .defaultSchema( CalciteAssert.addSchema(rootSchema, CalciteAssert.SchemaSpec.HR)) .build(); final Path path = Schemas.path(config.getDefaultSchema()); assertThat(path.size(), is(2)); assertThat(path.get(0).left, is("")); assertThat(path.get(1).left, is("hr")); assertThat(path.names().size(), is(1)); assertThat(path.names().get(0), is("hr")); assertThat(path.schemas().size(), is(2)); final Path parent = path.parent(); assertThat(parent.size(), is(1)); assertThat(parent.names().size(), is(0)); final Path grandparent = parent.parent(); assertThat(grandparent.size(), is(0)); try { Object o = grandparent.parent(); fail("expected exception, got " + o); } catch (IllegalArgumentException e) { // ok } }
/** Test for {@link Path}. */ @Test public void testSchemaPath() { final SchemaPlus rootSchema = Frameworks.createRootSchema(true); final FrameworkConfig config = Frameworks.newConfigBuilder() .defaultSchema( CalciteAssert.addSchema(rootSchema, CalciteAssert.SchemaSpec.HR)) .build(); final Path path = Schemas.path(config.getDefaultSchema()); assertThat(path.size(), is(2)); assertThat(path.get(0).left, is("")); assertThat(path.get(1).left, is("hr")); assertThat(path.names().size(), is(1)); assertThat(path.names().get(0), is("hr")); assertThat(path.schemas().size(), is(2)); final Path parent = path.parent(); assertThat(parent.size(), is(1)); assertThat(parent.names().size(), is(0)); final Path grandparent = parent.parent(); assertThat(grandparent.size(), is(0)); try { Object o = grandparent.parent(); fail("expected exception, got " + o); } catch (IllegalArgumentException e) { // ok } }
@Override public Table createTable(CalciteSchema schema, String viewSql, List<String> viewSchemaPath) { assert nzTile.tableName != null; CalciteCatalogReader calciteCatalogReader = new CalciteCatalogReader( schema.root(), false, queryContext.getDefaultSchemaPath(), queryContext.getTypeFactory()); CalciteSchema tileSchema = calciteCatalogReader.getTable(nzTile.tableName) .unwrap(CalciteSchema.class); assert tileSchema != null; CalciteSchema.TableEntry tileTEntry = tileSchema.getTable( Util.last(nzTile.tableName), false); assert tileTEntry != null; return new QuarkTileTable(nzTile, calciteCatalogReader, tileTEntry.getTable().getRowType(queryContext.getTypeFactory()), Schemas.path(rootSchema, nzTile.alias), (QuarkTable) tileTEntry.getTable()); } };