@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 query_calendar_values_parameters() { String queryText = queryCalendarValuesFromParameters(); if (isOracle) queryText += " from dual"; SqlQuery<CalendarValues> query = new SqlQuery<CalendarValues>(queryText, rowOf(structOf(CalendarValues.class))); CalendarValues cv = query(query, new java.sql.Timestamp(System.currentTimeMillis()), new java.sql.Timestamp(System.currentTimeMillis()), new java.sql.Timestamp(System.currentTimeMillis()), new java.sql.Timestamp(System.currentTimeMillis())/*, new java.sql.Time(System.currentTimeMillis())*/ ); assertThat(cv.javaDate) .isExactlyInstanceOf(java.util.Date.class); assertThat(cv.sqlDate) .isExactlyInstanceOf(java.sql.Date.class); assertThat(cv.sqlTimestamp).isExactlyInstanceOf(java.sql.Timestamp.class); assertThat(cv.sqlTime) .isExactlyInstanceOf(java.sql.Time.class); }
@Test public void query_boxed_numbers_positive() { final String queryText = "select 127 as B, 32767 as S, 2147483647 as I, 9223372036854775807 as L from X1"; final SqlQuery<BoxedNumbers> query = new SqlQuery<BoxedNumbers>(queryText, rowOf(structOf(BoxedNumbers.class))); BoxedNumbers bn = query(query); assertThat(bn.B).isEqualTo((byte) 127); assertThat(bn.S).isEqualTo((short)32767); assertThat(bn.I).isEqualTo(2147483647); assertThat(bn.L).isEqualTo(9223372036854775807L); }
@Test public void query_primitive_numbers_positive() { final String queryText = "select 127 as B, 32767 as S, 2147483647 as I, 9223372036854775807 as L from X1"; final SqlQuery<PrimitiveNumbers> query = new SqlQuery<PrimitiveNumbers>(queryText, rowOf(structOf(PrimitiveNumbers.class))); PrimitiveNumbers pn = query(query); assertThat(pn.B).isEqualTo((byte)127); assertThat(pn.S).isEqualTo((short)32767); assertThat(pn.I).isEqualTo(2147483647); assertThat(pn.L).isEqualTo(9223372036854775807L); }
@Test public void query_primitive_numbers_negative() { final String queryText = "select -128 as B, -32768 as S, -2147483648 as I, -9223372036854775808 as L from X1"; final SqlQuery<PrimitiveNumbers> query = new SqlQuery<PrimitiveNumbers>(queryText, rowOf(structOf(PrimitiveNumbers.class))); PrimitiveNumbers pn = query(query); assertThat(pn.B).isEqualTo((byte)-128); assertThat(pn.S).isEqualTo((short)-32768); assertThat(pn.I).isEqualTo(-2147483648); assertThat(pn.L).isEqualTo(-9223372036854775808L); }
@Test public void empty_cursor() { final SqlQuery<List<Tetra>> query = new SqlQuery<List<Tetra>>( "select 11,22,33,44 from information_schema.schemata where 1 is null", listOf(structOf(Tetra.class))); myFacade.inSession(new InSessionNoResult() { @Override public void run(@NotNull final DBSession session) { List<Tetra> result = session.query(query).run(); assertThat(result).isEmpty(); } }); }
@Test public void return_list_of_basic_struct() { final SqlQuery<List<IntAndString>> query = new SqlQuery<List<IntAndString>>(QUERY_RETURNS_TWO_BASIC_STRUCT_ROWS, listOf(structOf(IntAndString.class))); myFacade.inTransaction(new InTransactionNoResult() { @Override public void run(@NotNull final DBTransaction tran) { List<IntAndString> bs = tran.query(query).run(); assertThat(bs).isNotNull() .hasSize(2); assertThat(bs.get(0).the_int_value).isEqualTo(11); assertThat(bs.get(0).the_string_value).isEqualTo("one"); assertThat(bs.get(1).the_int_value).isEqualTo(22); assertThat(bs.get(1).the_string_value).isEqualTo("two"); } }); }
@Test public void return_array_of_basic_struct() { final SqlQuery<IntAndString[]> query = new SqlQuery<IntAndString[]>(QUERY_RETURNS_TWO_BASIC_STRUCT_ROWS, arrayOf(structOf(IntAndString.class))); myFacade.inTransaction(new InTransactionNoResult() { @Override public void run(@NotNull final DBTransaction tran) { IntAndString[] bs = tran.query(query).run(); assertThat(bs).isNotNull() .hasSize(2); assertThat(bs[0].the_int_value).isEqualTo(11); assertThat(bs[0].the_string_value).isEqualTo("one"); assertThat(bs[1].the_int_value).isEqualTo(22); assertThat(bs[1].the_string_value).isEqualTo("two"); } }); }
@Test public void query_calendar_values_now() { String queryText = "select NOW as javaDate, NOW as sqlDate, NOW as sqlTimestamp, NOW as sqlTime"; if (isOracle) queryText += " from dual"; SqlQuery<CalendarValues> query = new SqlQuery<CalendarValues>(queryText, rowOf(structOf(CalendarValues.class))) .rewrite(Rewriters.replace("NOW", sqlNow())); CalendarValues cv = query(query); assertThat(cv.javaDate) .isExactlyInstanceOf(java.util.Date.class); assertThat(cv.sqlDate) .isExactlyInstanceOf(java.sql.Date.class); assertThat(cv.sqlTimestamp).isExactlyInstanceOf(java.sql.Timestamp.class); assertThat(cv.sqlTime) .isExactlyInstanceOf(java.sql.Time.class); }
@Test public void return_one_basic_struct() { final String queryText = "select 44 as the_int_value, \n" + " 'million' as the_string_value \n"; final SqlQuery<IntAndString> query = new SqlQuery<IntAndString>(queryText, rowOf(structOf(IntAndString.class))); myFacade.inTransaction(new InTransactionNoResult() { @Override public void run(@NotNull final DBTransaction tran) { IntAndString bs = tran.query(query).run(); assertThat(bs).isNotNull(); assertThat(bs.the_int_value).isEqualTo(44); assertThat(bs.the_string_value).isEqualTo("million"); } }); }