@Test public void nonNumberArray() { Struct row = execute( Statement.newBuilder( "SELECT [IEEE_DIVIDE(1, 0), IEEE_DIVIDE(-1, 0), IEEE_DIVIDE(0, 0)]"), Type.array(Type.float64())); assertThat(row.getDoubleList(0)).hasSize(3); assertThat(row.getDoubleList(0).get(0)).isPositiveInfinity(); assertThat(row.getDoubleList(0).get(1)).isNegativeInfinity(); assertThat(row.getDoubleList(0).get(2)).isNaN(); }
@Test public void negativeInfinity() { Struct row = execute(Statement.newBuilder("SELECT IEEE_DIVIDE(-1, 0)"), Type.float64()); assertThat(row.getDouble(0)).isNegativeInfinity(); }
@Test public void simple() { Struct row = execute(Statement.of("SELECT 1"), Type.int64()); assertThat(row.getLong(0)).isEqualTo(1); }
@Test public void bindBoolArrayEmpty() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toBoolArray(Arrays.<Boolean>asList()), Type.array(Type.bool())); assertThat(row.isNull(0)).isFalse(); assertThat(row.getBooleanList(0)).containsExactly(); }
@Test public void bindStringArrayEmpty() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toStringArray(Arrays.<String>asList()), Type.array(Type.string())); assertThat(row.isNull(0)).isFalse(); assertThat(row.getStringList(0)).containsExactly(); }
@Test public void bindBoolArray() { Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toBoolArray(asList(true, null, false)), Type.array(Type.bool())); assertThat(row.isNull(0)).isFalse(); assertThat(row.getBooleanList(0)).containsExactly(true, null, false).inOrder(); }
@Test public void bindInt64() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to(1234), Type.int64()); assertThat(row.isNull(0)).isFalse(); assertThat(row.getLong(0)).isEqualTo(1234); }
@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 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 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 bindFloat64() { Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to(2.0), Type.float64()); assertThat(row.isNull(0)).isFalse(); assertThat(row.getDouble(0)).isWithin(0.0).of(2.0); }
@Test public void bindTimestamp() { Timestamp t = Timestamp.parseTimestamp("2016-09-18T00:00:00Z"); Struct row = execute(Statement.newBuilder("SELECT @v").bind("v").to(t), Type.timestamp()); assertThat(row.isNull(0)).isFalse(); assertThat(row.getTimestamp(0)).isEqualTo(t); }
@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 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 bindDateArray() { Date d1 = Date.parseDate("2016-09-18"); Date d2 = Date.parseDate("2016-09-19"); Struct row = execute( Statement.newBuilder("SELECT @v").bind("v").toDateArray(asList(d1, d2, null)), Type.array(Type.date())); assertThat(row.isNull(0)).isFalse(); assertThat(row.getDateList(0)).containsExactly(d1, d2, null).inOrder(); }
@Test public void bindEmptyStruct() { Struct p = Struct.newBuilder().build(); Struct row = execute(Statement.newBuilder("SELECT @p IS NULL").bind("p").to(p).build(), Type.bool()); assertThat(row.getBoolean(0)).isFalse(); }
@Test public void bindStructWithNullStructField() { Type emptyStructType = Type.struct(new ArrayList<StructField>()); Struct p = Struct.newBuilder().set("f1").to(emptyStructType, null).build(); Struct row = execute(Statement.newBuilder("SELECT @p.f1 IS NULL").bind("p").to(p).build(), Type.bool()); assertThat(row.getBoolean(0)).isTrue(); }
@Ignore // Not yet supported by the backend. @Test public void arrayOfStructNull() { Type structType = Type.struct(StructField.of("", Type.string()), StructField.of("", Type.int64())); Struct row = execute( Statement.of("SELECT CAST (NULL AS ARRAY<STRUCT<string,int64>>)"), Type.array(structType)); assertThat(row.isNull(0)).isTrue(); }