@Override public Struct read(ReadContext ctx, String key) { ResultSet resultSet = ctx.executeQuery( Statement.newBuilder("SELECT V FROM T WHERE K = @key") .bind("key") .to(key) .build()); assertThat(resultSet.next()).isTrue(); Struct row = resultSet.getCurrentRowAsStruct(); assertThat(resultSet.next()).isFalse(); return row; } });
@Test public void append() { Statement stmt = Statement.newBuilder("SELECT Name FROM Users") .append(" WHERE Id = @id") .bind("id") .to(1234) .append(" AND Status = @status") .bind("status") .to("ACTIVE") .build(); String expectedSql = "SELECT Name FROM Users WHERE Id = @id AND Status = @status"; assertThat(stmt.getSql()).isEqualTo(expectedSql); assertThat(stmt.hasBinding("id")).isTrue(); assertThat(stmt.hasBinding("status")).isTrue(); assertThat(stmt.getParameters()) .containsExactlyEntriesIn( ImmutableMap.of("id", Value.int64(1234), "status", Value.string("ACTIVE"))); assertThat(stmt.toString()).startsWith(expectedSql); assertThat(stmt.toString()).contains("id: 1234"); assertThat(stmt.toString()).contains("status: ACTIVE"); }
client.writeAtLeastOnce( asList( Mutation.newInsertBuilder("T").set("K").to("k1").set("V").to("v1").build(), Mutation.newInsertBuilder("T").set("K").to("k2").set("V").to("v2").build(), Mutation.newInsertBuilder("T").set("K").to("k3").set("V").to("v3").build(), Mutation.newInsertBuilder("T").set("K").to("k4").set("V").to("v4").build())); Statement.newBuilder("SELECT K, V FROM T WHERE K >= @min AND K < @max ORDER BY K ASC") .bind("min") .to("k13") .bind("max") .to("k32") .build(); ResultSet resultSet = statement.executeQuery(client.singleUse(TimestampBound.strong())); assertThat(resultSet.next()).isTrue(); assertThat(resultSet.getType()) .isEqualTo( Type.struct(StructField.of("K", Type.string()), StructField.of("V", Type.string()))); assertThat(resultSet.getString(0)).isEqualTo("k2"); assertThat(resultSet.getString(1)).isEqualTo("v2"); assertThat(resultSet.next()).isTrue(); assertThat(resultSet.getString("K")).isEqualTo("k3"); assertThat(resultSet.getString("V")).isEqualTo("v3"); assertThat(resultSet.next()).isFalse();
@Test public void bindBool() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to(true).build(), Type.bool()); assertThat(row.isNull(0)).isFalse(); assertThat(row.getBoolean(0)).isEqualTo(true); }
@Test public void bindBoolNull() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((Boolean) null), Type.bool()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindBoolArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toBoolArray((boolean[]) null), Type.array(Type.bool())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindTimestampArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toTimestampArray(null), Type.array(Type.timestamp())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindStringArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toStringArray(null), Type.array(Type.string())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindBytesArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toBytesArray(null), Type.array(Type.bytes())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindInt64ArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toInt64Array((long[]) null), Type.array(Type.int64())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindDateArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toDateArray(null), Type.array(Type.date())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindFloat64ArrayNull() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toFloat64Array((double[]) null), Type.array(Type.float64())); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindStringNull() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((String) null), Type.string()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindFloat64Null() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((Double) null), Type.float64()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindDateNull() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((Date) null), Type.date()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindInt64Null() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((Long) null), Type.int64()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindBytesNull() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((ByteArray) null), Type.bytes()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindTimestampNull() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to((Timestamp) null), Type.timestamp()); assertThat(row.isNull(0)).isTrue(); }
@Test public void bindStruct() { Struct p = structValue(); String query = "SELECT " + "@p.f_int," + "@p.f_bool," + "@p.f_double," + "@p.f_timestamp," + "@p.f_date," + "@p.f_string," + "@p.f_bytes"; Struct row = executeWithRowResultType(Statement.newBuilder(query).bind("p").to(p).build(), p.getType()); assertThat(row).isEqualTo(p); }