.withServiceFactory(serviceFactory); DoFnTester<Void, SpannerSchema> tester = DoFnTester.of(new ReadSpannerSchema(config)); List<SpannerSchema> schemas = tester.processBundle(Arrays.asList((Void) null));
@ProcessElement public void processElement(ProcessContext c) throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder(); DatabaseClient databaseClient = spannerAccessor.getDatabaseClient(); try (ReadOnlyTransaction tx = databaseClient.readOnlyTransaction()) { ResultSet resultSet = readTableInfo(tx); while (resultSet.next()) { String tableName = resultSet.getString(0); String columnName = resultSet.getString(1); String type = resultSet.getString(2); long cellsMutated = resultSet.getLong(3); builder.addColumn(tableName, columnName, type, cellsMutated); } resultSet = readPrimaryKeyInfo(tx); while (resultSet.next()) { String tableName = resultSet.getString(0); String columnName = resultSet.getString(1); String ordering = resultSet.getString(2); builder.addKeyPart(tableName, columnName, "DESC".equalsIgnoreCase(ordering)); } } c.output(builder.build()); }
.apply( "Read information schema", ParDo.of(new ReadSpannerSchema(spec.getSpannerConfig()))) .apply("Schema View", View.asSingleton());