use of java.sql.Time in project druid by alibaba.
the class ResultSetProxyImpl method getTime.
@Override
public Time getTime(String columnLabel, Calendar cal) throws SQLException {
FilterChainImpl chain = createChain();
Time value = chain.resultSet_getTime(this, columnLabel, cal);
recycleFilterChain(chain);
return value;
}
use of java.sql.Time in project druid by alibaba.
the class StatFilterBuildSlowParameterTest method test_buildSlowSql.
public void test_buildSlowSql() throws Exception {
long currentMillis = System.currentTimeMillis();
String sql = "select ?, ?, ?, ?, ?";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String dateText = dateFormat.format(date);
{
Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setBoolean(1, true);
stmt.setInt(2, 123);
stmt.setLong(3, 10001);
stmt.setTimestamp(4, new java.sql.Timestamp(currentMillis));
stmt.setDate(5, new java.sql.Date(currentMillis));
ResultSet rs = stmt.executeQuery();
rs.close();
stmt.close();
conn.close();
// //////
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
String slowParameters = sqlStat.getLastSlowParameters();
Assert.assertNotNull(slowParameters);
List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
Assert.assertEquals(5, parameters.size());
Assert.assertEquals(true, parameters.get(0));
Assert.assertEquals(123, parameters.get(1));
Assert.assertEquals(10001, parameters.get(2));
Assert.assertEquals(dateText, parameters.get(3));
Assert.assertEquals(dateText, parameters.get(4));
}
currentMillis = System.currentTimeMillis();
date = new Date(System.currentTimeMillis());
dateText = dateFormat.format(date);
{
Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setBoolean(1, false);
stmt.setInt(2, 234);
stmt.setLong(3, 10002);
stmt.setTimestamp(4, new java.sql.Timestamp(currentMillis));
stmt.setDate(5, new java.sql.Date(currentMillis));
ResultSet rs = stmt.executeQuery();
rs.close();
stmt.close();
conn.close();
// //////
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
String slowParameters = sqlStat.getLastSlowParameters();
Assert.assertNotNull(slowParameters);
List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
Assert.assertEquals(5, parameters.size());
Assert.assertEquals(false, parameters.get(0));
Assert.assertEquals(234, parameters.get(1));
Assert.assertEquals(10002, parameters.get(2));
Assert.assertEquals(dateText, parameters.get(3));
Assert.assertEquals(dateText, parameters.get(4));
}
{
StringBuilder buf = new StringBuilder();
for (int i = 0; i < 10; ++i) {
buf.append("abcdefghijklmnABCDEFGHIJKLMN1234567890!@#$%^&*(");
}
Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setNull(1, Types.VARCHAR);
stmt.setString(2, buf.toString());
stmt.setClob(3, new MockClob());
stmt.setNClob(4, new MockNClob());
stmt.setBlob(5, new MockBlob());
ResultSet rs = stmt.executeQuery();
rs.close();
stmt.close();
conn.close();
// //////
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
String slowParameters = sqlStat.getLastSlowParameters();
Assert.assertNotNull(slowParameters);
List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
Assert.assertEquals(5, parameters.size());
Assert.assertEquals(null, parameters.get(0));
Assert.assertEquals(buf.substring(0, 97) + "...", parameters.get(1));
Assert.assertEquals("<Clob>", parameters.get(2));
Assert.assertEquals("<NClob>", parameters.get(3));
Assert.assertEquals("<Blob>", parameters.get(4));
}
{
StringBuilder buf = new StringBuilder();
for (int i = 0; i < 10; ++i) {
buf.append("ä¸å›½abcdefghijklmnABCDEFGHIJKLMN1234567890!@#$%^&*(");
}
Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setBinaryStream(1, new ByteInputStream(new byte[0]));
stmt.setString(2, buf.toString());
stmt.setTime(3, new Time(currentMillis));
stmt.setBigDecimal(4, new BigDecimal("56789.123"));
stmt.setRowId(5, new MockRowId());
ResultSet rs = stmt.executeQuery();
rs.close();
stmt.close();
conn.close();
// //////
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
String slowParameters = sqlStat.getLastSlowParameters();
Assert.assertNotNull(slowParameters);
List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
Assert.assertEquals(5, parameters.size());
Assert.assertEquals("<InputStream>", parameters.get(0));
Assert.assertEquals(buf.substring(0, 97) + "...", parameters.get(1));
Assert.assertEquals(dateText, parameters.get(2));
Assert.assertEquals(56789.123, parameters.get(3));
Assert.assertEquals("<com.alibaba.druid.mock.MockRowId>", parameters.get(4));
}
}
use of java.sql.Time in project jOOQ by jOOQ.
the class DefaultBinding method set.
@Override
public void set(BindingSetSQLOutputContext<U> ctx) throws SQLException {
Configuration configuration = ctx.configuration();
T value = converter.to(ctx.value());
if (value == null) {
ctx.output().writeObject(null);
} else if (type == Blob.class) {
ctx.output().writeBlob((Blob) value);
} else if (type == Boolean.class) {
ctx.output().writeBoolean((Boolean) value);
} else if (type == BigInteger.class) {
ctx.output().writeBigDecimal(new BigDecimal((BigInteger) value));
} else if (type == BigDecimal.class) {
ctx.output().writeBigDecimal((BigDecimal) value);
} else if (type == Byte.class) {
ctx.output().writeByte((Byte) value);
} else if (type == byte[].class) {
// Use reflection to avoid dependency on OJDBC
if (isLob) {
Blob blob = null;
try {
blob = on("oracle.sql.BLOB").call("createTemporary", on(ctx.output()).call("getSTRUCT").call("getJavaSqlConnection").get(), false, on("oracle.sql.BLOB").get("DURATION_SESSION")).get();
blob.setBytes(1, (byte[]) value);
ctx.output().writeBlob(blob);
} finally {
DefaultExecuteContext.register(blob);
}
} else {
ctx.output().writeBytes((byte[]) value);
}
} else if (type == Clob.class) {
ctx.output().writeClob((Clob) value);
} else if (type == Date.class) {
Date date = (Date) value;
ctx.output().writeDate(date);
} else if (type == Double.class) {
ctx.output().writeDouble((Double) value);
} else if (type == Float.class) {
ctx.output().writeFloat((Float) value);
} else if (type == Integer.class) {
ctx.output().writeInt((Integer) value);
} else if (type == Long.class) {
ctx.output().writeLong((Long) value);
} else if (type == Short.class) {
ctx.output().writeShort((Short) value);
} else if (type == String.class) {
// Use reflection to avoid dependency on OJDBC
if (isLob) {
Clob clob = null;
try {
clob = on("oracle.sql.CLOB").call("createTemporary", on(ctx.output()).call("getSTRUCT").call("getJavaSqlConnection").get(), false, on("oracle.sql.CLOB").get("DURATION_SESSION")).get();
clob.setString(1, (String) value);
ctx.output().writeClob(clob);
} finally {
DefaultExecuteContext.register(clob);
}
} else {
ctx.output().writeString((String) value);
}
} else if (type == Time.class) {
ctx.output().writeTime((Time) value);
} else if (type == Timestamp.class) {
ctx.output().writeTimestamp((Timestamp) value);
} else if (type == YearToMonth.class) {
ctx.output().writeString(value.toString());
} else if (type == DayToSecond.class) {
ctx.output().writeString(value.toString());
} else // }
if (UNumber.class.isAssignableFrom(type)) {
ctx.output().writeString(value.toString());
} else if (type == UUID.class) {
ctx.output().writeString(value.toString());
} else if (EnumType.class.isAssignableFrom(type)) {
ctx.output().writeString(((EnumType) value).getLiteral());
} else if (UDTRecord.class.isAssignableFrom(type)) {
ctx.output().writeObject((UDTRecord<?>) value);
} else {
throw new UnsupportedOperationException("Type " + type + " is not supported");
}
}
use of java.sql.Time in project hibernate-orm by hibernate.
the class TimePropertyTest method testTimeAsDate.
@Test
public void testTimeAsDate() {
final Entity eOrig = new Entity();
eOrig.tAsDate = new Time(new Date().getTime());
Session s = openSession();
s.getTransaction().begin();
s.persist(eOrig);
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
final Entity eGotten = (Entity) s.get(Entity.class, eOrig.id);
// Some databases retain the milliseconds when being inserted and some don't;
final String tAsDateOrigFormatted = timeFormat.format(eOrig.tAsDate);
final String tAsDateGottenFormatted = timeFormat.format(eGotten.tAsDate);
assertEquals(tAsDateOrigFormatted, tAsDateGottenFormatted);
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
final Query queryWithParameter = s.createQuery("from TimePropertyTest$Entity where tAsDate=?").setParameter(0, eGotten.tAsDate);
final Entity eQueriedWithParameter = (Entity) queryWithParameter.uniqueResult();
assertNotNull(eQueriedWithParameter);
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
final Query query = s.createQuery("from TimePropertyTest$Entity where tAsDate=?").setTime(0, eGotten.tAsDate);
final Entity eQueried = (Entity) query.uniqueResult();
assertNotNull(eQueried);
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
s.delete(eQueried);
s.getTransaction().commit();
s.close();
}
use of java.sql.Time in project hibernate-orm by hibernate.
the class JdbcTimeCustomTimeZoneTest method testTimeZone.
@Test
public void testTimeZone() {
connectionProvider.clear();
doInHibernate(this::sessionFactory, s -> {
Person person = new Person();
person.id = 1L;
s.persist(person);
});
assertEquals(1, connectionProvider.getPreparedStatements().size());
PreparedStatement ps = connectionProvider.getPreparedStatements().get(0);
try {
ArgumentCaptor<Calendar> calendarArgumentCaptor = ArgumentCaptor.forClass(Calendar.class);
verify(ps, times(1)).setTime(anyInt(), any(Time.class), calendarArgumentCaptor.capture());
assertEquals(TIME_ZONE, calendarArgumentCaptor.getValue().getTimeZone());
} catch (SQLException e) {
fail(e.getMessage());
}
connectionProvider.clear();
doInHibernate(this::sessionFactory, s -> {
s.doWork(connection -> {
try (Statement st = connection.createStatement()) {
try (ResultSet rs = st.executeQuery("select createdOn from Person")) {
while (rs.next()) {
Time time = rs.getTime(1);
Time offsetTime = Time.valueOf(OffsetTime.ofInstant(Instant.ofEpochMilli(0), TIME_ZONE.toZoneId()).toLocalTime());
assertEquals(offsetTime, time);
}
}
}
});
Person person = s.find(Person.class, 1L);
assertEquals(0, person.createdOn.getTime() % TimeUnit.DAYS.toSeconds(1));
});
}
Aggregations