@Nullable private <S> S queryForStruct(final String queryText, final Class<S> structClass) { final SqlQuery<S> query = new SqlQuery<S>(queryText, rowOf(structOf(structClass))); return query(query); }
@Test public void struct_basic() { Tetra struct = queryForStruct("select 11 as A, 22 as B, 33 as C, 44 as D", Tetra.class); assertThat(struct).isEqualTo(new Tetra(11,22,33,44)); }
@Test public void million_of_ints() { SqlQuery<int[]> query = new SqlQuery<int[]>("select cast(X as int) from system_range(1,1000000)", columnOfInts(1000)); int[] array = query(query); assertThat(array).hasSize(1000000); assertThat(array[0]).isEqualTo(1); assertThat(array[999999]).isEqualTo(1000000); }
@Test public void struct_has_less_fields_than_query() { Tetra struct = queryForStruct( "select 11 as A, 22 as B, 99 as X, 33 as C, 88 as Y, 44 as D", Tetra.class); assertThat(struct).isEqualTo(new Tetra(11,22,33,44)); }
@Test public void million_of_longs() { SqlQuery<long[]> query = new SqlQuery<long[]>("select cast(X as bigint) from system_range(1,1000000)", columnOfLongs(1000)); long[] array = query(query); assertThat(array).hasSize(1000000); assertThat(array[0]).isEqualTo(1L); assertThat(array[999999]).isEqualTo(1000000L); }
@Test public void struct_fields_disordered() { Tetra struct = queryForStruct("select 33 as C, 11 as A, 44 as D, 22 as B", Tetra.class); assertThat(struct).isEqualTo(new Tetra(11,22,33,44)); }
@Test public void long_array_basic() { SqlQuery<long[]> query = new SqlQuery<long[]>("select 11, 22, 33", rowOf(arrayOfLongs())); long[] array = query(query); assertThat(array).containsExactly(11L,22L,33L); }
@Test public void struct_has_more_fields_than_query() { Tetra struct = queryForStruct("select 22 as B, 44 as D", Tetra.class); assertThat(struct).isEqualTo(new Tetra(0,22,0,44)); }
@Test public void array_row_basic() { SqlQuery<Integer[]> query = new SqlQuery<Integer[]>("select 11, 22, 33", rowOf(arrayOf(3, Integer.class))); Integer[] array = query(query); assertThat(array).isEqualTo(new Integer[] {11, 22, 33}); }
@Test public void char_in_struct() { CharStruct s = queryForStruct("select 'X' as c, 'Y' as h", CharStruct.class); assert s != null; assertThat(s.c).isEqualTo('X'); assertThat(s.h).isEqualTo('Y'); }
@Test public void int_array_basic() { SqlQuery<int[]> query = new SqlQuery<int[]>("select 11, 22, 33", rowOf(arrayOfInts())); int[] array = query(query); assertThat(array).containsExactly(11,22,33); }
@Test public void char_in_struct_nulls() { CharStruct s = queryForStruct("select null as c, null as h", CharStruct.class); assert s != null; assertThat(s.c).isEqualTo('\0'); assertThat(s.h).isNull(); }