private SpannerSchema getSchema() { return SpannerSchema.builder() .addColumn("tEsT", "key", "INT64", CELLS_PER_KEY) .addKeyPart("tEsT", "key", false) .build(); }
@Test public void testSingleTable() throws Exception { SpannerSchema schema = SpannerSchema.builder() .addColumn("test", "pk", "STRING(48)") .addKeyPart("test", "pk", false) .addColumn("test", "maxKey", "STRING(MAX)") .build(); assertEquals(1, schema.getTables().size()); assertEquals(2, schema.getColumns("test").size()); assertEquals(1, schema.getKeyParts("test").size()); }
@Test public void testTwoTables() throws Exception { SpannerSchema schema = SpannerSchema.builder() .addColumn("test", "pk", "STRING(48)") .addKeyPart("test", "pk", false) .addColumn("test", "maxKey", "STRING(MAX)") .addColumn("other", "pk", "INT64") .addKeyPart("other", "pk", true) .addColumn("other", "maxKey", "STRING(MAX)") .build(); assertEquals(2, schema.getTables().size()); assertEquals(2, schema.getColumns("test").size()); assertEquals(1, schema.getKeyParts("test").size()); assertEquals(2, schema.getColumns("other").size()); assertEquals(1, schema.getKeyParts("other").size()); } }
@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()); }
@Test public void deleteOrdering() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder(); builder.addColumn("test1", "key", "INT64"); builder.addKeyPart("test1", "key", false); builder.addColumn("test2", "key", "INT64"); builder.addKeyPart("test2", "key", false); SpannerSchema schema = builder.build(); // Verify that the encoded keys are ordered by table name then key List<Mutation> sortedMutations = Arrays.asList( Mutation.delete("test1", KeySet.all()), // non-point deletes come first Mutation.delete("test1", Key.of(1L)), Mutation.delete("test1", Key.of(2L)), Mutation.delete("test2", KeySet.prefixRange(Key.of(1L))), Mutation.delete("test2", Key.of(2L))); verifyEncodedOrdering(schema, sortedMutations); }
@Test public void tableNameOrdering() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder(); builder.addColumn("test1", "key", "INT64"); builder.addKeyPart("test1", "key", false); builder.addColumn("test2", "key", "INT64"); builder.addKeyPart("test2", "key", false); SpannerSchema schema = builder.build(); // Verify that the encoded keys are ordered by table name then key List<Mutation> sortedMutations = Arrays.asList( Mutation.newInsertOrUpdateBuilder("test1").set("key").to(1L).build(), Mutation.newInsertOrUpdateBuilder("test1").set("key").to(2L).build(), Mutation.newInsertOrUpdateBuilder("test1").set("key").to((Long) null).build(), Mutation.newInsertOrUpdateBuilder("test2").set("key").to(1L).build(), Mutation.newInsertOrUpdateBuilder("test2").set("key").to(2L).build()); verifyEncodedOrdering(schema, sortedMutations); }
@Test public void float64Keys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void int64Keys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void boolKeys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void stringKeys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void dateKeys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void bytesKeys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();
@Test public void timestampKeys() throws Exception { SpannerSchema.Builder builder = SpannerSchema.builder();