diff --git a/gradle.properties b/gradle.properties index 4759c74..f4ef6e2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group = org.xbib name = database -version = 2.4.0 +version = 2.5.0 diff --git a/jdbc-mariadb/src/main/java/org/xbib/jdbc/mariadb/MariaDB.java b/jdbc-mariadb/src/main/java/org/xbib/jdbc/mariadb/MariaDB.java index 202c803..5c5952f 100644 --- a/jdbc-mariadb/src/main/java/org/xbib/jdbc/mariadb/MariaDB.java +++ b/jdbc-mariadb/src/main/java/org/xbib/jdbc/mariadb/MariaDB.java @@ -117,11 +117,6 @@ public class MariaDB implements Flavor { return "datetime(3)"; // 3 = millisecond resolution } - @Override - public String typeZonedDateTime() { - return "datetime(3)"; // 3 = millisecond resolution - } - @Override public String typeLocalDate() { return "date"; diff --git a/jdbc-oracle/src/main/java/org/xbib/jdbc/oracle/Oracle.java b/jdbc-oracle/src/main/java/org/xbib/jdbc/oracle/Oracle.java index b84a28a..654552e 100644 --- a/jdbc-oracle/src/main/java/org/xbib/jdbc/oracle/Oracle.java +++ b/jdbc-oracle/src/main/java/org/xbib/jdbc/oracle/Oracle.java @@ -96,11 +96,6 @@ public class Oracle implements Flavor { return "timestamp with time zone"; } - @Override - public String typeZonedDateTime() { - return "timestamp with time zone"; - } - @Override public String typeLocalDate() { // well, this is a full blown timestamp in Oracle diff --git a/jdbc-postgresql/src/main/java/org/xbib/jdbc/postgresql/Postgresql.java b/jdbc-postgresql/src/main/java/org/xbib/jdbc/postgresql/Postgresql.java index 7b6eaa5..f63ed33 100644 --- a/jdbc-postgresql/src/main/java/org/xbib/jdbc/postgresql/Postgresql.java +++ b/jdbc-postgresql/src/main/java/org/xbib/jdbc/postgresql/Postgresql.java @@ -114,11 +114,6 @@ public class Postgresql implements Flavor { return "timestamp with time zone"; } - @Override - public String typeZonedDateTime() { - return "timestamp with time zone"; - } - @Override public String typeLocalDate() { return "date"; diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/Flavor.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/Flavor.java index 798c2bd..bbb0584 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/Flavor.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/Flavor.java @@ -44,8 +44,6 @@ public interface Flavor { String typeOffsetDateTime(); - String typeZonedDateTime(); - String typeLocalDate(); boolean useStringForClob(); diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/Row.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/Row.java index e3ca351..3c9138c 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/Row.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/Row.java @@ -8,8 +8,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; /** * Interface for reading results from a database query. @@ -376,12 +374,6 @@ public interface Row { OffsetDateTime getOffsetDateTimeOrNull(String columnName); - ZonedDateTime getZonedDateTimeOrNull(); - - ZonedDateTime getZonedDateTimeOrNull(int columnOneBase); - - ZonedDateTime getZonedDateTimeOrNull(String columnName); - /** * Retrieve column as LocalDate, .i.e, date with no time. * diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/RowsAdapter.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/RowsAdapter.java index 8851934..bc5c9a9 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/RowsAdapter.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/RowsAdapter.java @@ -13,7 +13,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZonedDateTime; /** * Safely wrap a ResultSet and provide access to the data it contains. @@ -758,31 +757,6 @@ class RowsAdapter implements Rows { } } - @Override - public ZonedDateTime getZonedDateTimeOrNull() { - return getZonedDateTimeOrNull(column++); - } - - @Override - public ZonedDateTime getZonedDateTimeOrNull(int columnOneBased) { - try { - column = columnOneBased + 1; - return rs.getObject(columnOneBased, ZonedDateTime.class); - } catch (SQLException e) { - throw new DatabaseException(e); - } - } - - @Override - public ZonedDateTime getZonedDateTimeOrNull(String columnName) { - try { - column = rs.findColumn(columnName) + 1; - return rs.getObject(columnName, ZonedDateTime.class); - } catch (SQLException e) { - throw new DatabaseException(e); - } - } - @Override public Integer rowCount() { try { diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/Schema.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/Schema.java index 1103d66..3ece4bd 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/Schema.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/Schema.java @@ -238,9 +238,6 @@ public class Schema { case OffsetDateTime: sql.append(flavor.typeOffsetDateTime()); break; - case ZonedDateTime: - sql.append(flavor.typeZonedDateTime()); - break; case LocalDate: sql.append(flavor.typeLocalDate()); break; @@ -418,7 +415,6 @@ public class Schema { Instant, LocalDateTime, OffsetDateTime, - ZonedDateTime, LocalDate, Boolean } @@ -939,10 +935,6 @@ public class Schema { return asType(ColumnType.OffsetDateTime); } - public Column asZonedateTime() { - return asType(ColumnType.ZonedDateTime); - } - public Column asLocalDate() { return asType(ColumnType.LocalDate); } diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsert.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsert.java index 6299380..b649020 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsert.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsert.java @@ -7,8 +7,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; /** * Interface for configuring (setting parameters) and executing a chunk of SQL. @@ -55,10 +53,6 @@ public interface SqlInsert { SqlInsert argOffsetDateTime(String argName, OffsetDateTime arg); - SqlInsert argZonedDateTime(ZonedDateTime arg); - - SqlInsert argZonedDateTime(String argName, ZonedDateTime arg); - SqlInsert argLocalDate(LocalDate arg); SqlInsert argLocalDate( String argName, LocalDate arg); diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsertImpl.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsertImpl.java index 2621820..d7eecd6 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsertImpl.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlInsertImpl.java @@ -17,7 +17,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -183,16 +182,6 @@ public class SqlInsertImpl implements SqlInsert { return namedArg(argName, adaptor.nullOffsetDateTime(arg)); } - @Override - public SqlInsert argZonedDateTime(ZonedDateTime arg) { - return positionalArg(adaptor.nullZonedDateTime(arg)); - } - - @Override - public SqlInsert argZonedDateTime(String argName, ZonedDateTime arg) { - return namedArg(argName, adaptor.nullZonedDateTime(arg)); - } - @Override public SqlInsert argLocalDateTimeNowPerDb() { if (options.useClientClock()) { diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelect.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelect.java index 9fc950d..8d8845b 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelect.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelect.java @@ -5,7 +5,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZonedDateTime; import java.util.List; /** @@ -53,10 +52,6 @@ public interface SqlSelect { SqlSelect argOffsetDateTime(String argName, OffsetDateTime arg); - SqlSelect argZonedDateTime(ZonedDateTime arg); - - SqlSelect argZonedDateTime(String argName, ZonedDateTime arg); - SqlSelect argLocalDate(LocalDate arg); SqlSelect argLocalDate(String argName, LocalDate arg); @@ -139,10 +134,6 @@ public interface SqlSelect { List<LocalDateTime> queryLocalDateTimes(); - ZonedDateTime queryZonedDateTimeOrNull(); - - List<ZonedDateTime> queryZonedDateTimes(); - LocalDate queryLocalDateOrNull(); List<LocalDate> queryLocalDates(); diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelectImpl.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelectImpl.java index 91d47ce..c549ef2 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelectImpl.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/SqlSelectImpl.java @@ -13,7 +13,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -167,16 +166,6 @@ public class SqlSelectImpl implements SqlSelect { return namedArg(argName, adaptor.nullOffsetDateTime(arg)); } - @Override - public SqlSelect argZonedDateTime(ZonedDateTime arg) { - return positionalArg(adaptor.nullZonedDateTime(arg)); - } - - @Override - public SqlSelect argZonedDateTime(String argName, ZonedDateTime arg) { - return namedArg(argName, adaptor.nullZonedDateTime(arg)); - } - @Override public SqlSelect argLocalDate(LocalDate arg) { return positionalArg(adaptor.nullLocalDate(arg)); @@ -527,33 +516,8 @@ public class SqlSelectImpl implements SqlSelect { }); } - @Override - public ZonedDateTime queryZonedDateTimeOrNull() { - return queryWithTimeout(rs -> { - if (rs.next()) { - return rs.getZonedDateTimeOrNull(1); - } - return null; - }); - } - - @Override - public List<ZonedDateTime> queryZonedDateTimes() { - return queryWithTimeout(rs -> { - List<ZonedDateTime> result = new ArrayList<>(); - while (rs.next()) { - ZonedDateTime value = rs.getZonedDateTimeOrNull(1); - if (value != null) { - result.add(value); - } - } - return result; - }); - } - @Override public LocalDate queryLocalDateOrNull() { - // Date without time return queryWithTimeout(rs -> { if (rs.next()) { return rs.getLocalDateOrNull(1); @@ -564,7 +528,6 @@ public class SqlSelectImpl implements SqlSelect { @Override public List<LocalDate> queryLocalDates() { - // Date without time return queryWithTimeout(rs -> { List<LocalDate> result = new ArrayList<>(); while (rs.next()) { diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/StatementAdapter.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/StatementAdapter.java index 40a8f98..d6adc32 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/StatementAdapter.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/StatementAdapter.java @@ -17,7 +17,6 @@ import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZoneOffset; -import java.time.ZonedDateTime; import java.util.Date; import java.util.List; import java.util.logging.Level; @@ -105,10 +104,6 @@ public class StatementAdapter { return arg == null ? new SqlNull(Types.TIMESTAMP) : Timestamp.valueOf(arg); } - public Object nullZonedDateTime(ZonedDateTime arg) { - return arg == null ? new SqlNull(Types.TIMESTAMP) : Timestamp.valueOf(arg.toLocalDateTime()); - } - public Object nullOffsetDateTime(OffsetDateTime arg) { return arg == null ? new SqlNull(Types.TIMESTAMP) : Timestamp.valueOf(arg.toLocalDateTime()); } diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Derby.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Derby.java index 9628aa6..14afed4 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Derby.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Derby.java @@ -110,11 +110,6 @@ public class Derby implements Flavor { return "timestamptz"; } - @Override - public String typeZonedDateTime() { - return "timestamptz"; - } - @Override public String typeLocalDate() { return "date"; diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/H2.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/H2.java index 9897b1b..6aa9f6f 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/H2.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/H2.java @@ -110,11 +110,6 @@ public class H2 implements Flavor { return "timestamptz"; } - @Override - public String typeZonedDateTime() { - return "timestamptz"; - } - @Override public String typeLocalDate() { return "date"; diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Hsql.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Hsql.java index 84b0196..aa43e17 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Hsql.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/flavor/Hsql.java @@ -110,11 +110,6 @@ public class Hsql implements Flavor { return "timestamp with time zone"; } - @Override - public String typeZonedDateTime() { - return "timestamp with time zone"; - } - @Override public String typeLocalDate() { return "date"; diff --git a/jdbc-query/src/test/java/org/xbib/jdbc/query/test/RowStub.java b/jdbc-query/src/test/java/org/xbib/jdbc/query/test/RowStub.java index 09b7b32..203eae3 100644 --- a/jdbc-query/src/test/java/org/xbib/jdbc/query/test/RowStub.java +++ b/jdbc-query/src/test/java/org/xbib/jdbc/query/test/RowStub.java @@ -14,8 +14,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -632,23 +630,6 @@ public class RowStub { return toOffsetDateTime(rows.get(row)[columnIndexByName(columnName)]); } - @Override - public ZonedDateTime getZonedDateTimeOrNull() { - return toZonedDateTime(rows.get(row)[++col]); - } - - @Override - public ZonedDateTime getZonedDateTimeOrNull(int columnOneBased) { - col = columnOneBased; - return toZonedDateTime(rows.get(row)[columnOneBased - 1]); - } - - @Override - public ZonedDateTime getZonedDateTimeOrNull(String columnName) { - col = columnIndexByName(columnName) + 1; - return toZonedDateTime(rows.get(row)[columnIndexByName(columnName)]); - } - @Override public LocalDate getLocalDateOrNull() { return toLocalDate(rows.get(row)[++col]); @@ -751,12 +732,10 @@ public class RowStub { private LocalDateTime toLocalDateTime(Object o) { if (o instanceof String s) { if (s.length() == "yyyy-MM-dd".length()) { - return LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd")) - .atZone(ZoneId.systemDefault()).toLocalDateTime(); + return LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd")); } if (s.length() == "yyyy-MM-ddThh:mm:ss".length()) { - return LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-ddThh:mm:ss")) - .atZone(ZoneId.systemDefault()).toLocalDateTime(); + return LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-ddThh:mm:ss")); } throw new DatabaseException("Didn't understand date string: " + s); } @@ -776,19 +755,6 @@ public class RowStub { return (OffsetDateTime) o; } - private ZonedDateTime toZonedDateTime(Object o) { - if (o instanceof String s) { - if (s.length() == "yyyy-MM-dd".length()) { - return ZonedDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - } - if (s.length() == "yyyy-MM-ddThh:mm:ss".length()) { - return ZonedDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-ddThh:mm:ss")); - } - throw new DatabaseException("Didn't understand date string: " + s); - } - return (ZonedDateTime) o; - } - private LocalDate toLocalDate(Object o) { if (o instanceof String) { return LocalDate.parse((String) o); diff --git a/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java b/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java index 1195c53..398551e 100644 --- a/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java +++ b/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java @@ -32,7 +32,6 @@ import java.time.Month; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZoneOffset; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; @@ -70,8 +69,6 @@ public abstract class CommonTest { protected OffsetDateTime offsetDateTimeNow; - protected ZonedDateTime zonedDateTimeNow; - protected abstract DatabaseProvider createDatabaseProvider(OptionsOverride options) throws Exception; @BeforeEach @@ -79,7 +76,6 @@ public abstract class CommonTest { localDateTimeNow = LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS); localDateNow = LocalDate.now(); offsetDateTimeNow = OffsetDateTime.now(); - zonedDateTimeNow = ZonedDateTime.now(); dbp = createDatabaseProvider(new OptionsOverride() { }); db = dbp.get(); @@ -153,11 +149,10 @@ public abstract class CommonTest { .addColumn("date_millis").asLocalDateTime().table() .addColumn("local_date").asLocalDate().table() .addColumn("offset_date_time").asOffsetDateTime().table() - .addColumn("tz_date_time").asZonedateTime().table() .schema() .execute(db); BigDecimal bigDecimal = new BigDecimal("5.3"); - db.toInsert("insert into dbtest values (?,?,?,?,?,?,?,?,?,?,?,?,?)") + db.toInsert("insert into dbtest values (?,?,?,?,?,?,?,?,?,?,?,?)") .argInteger(1) .argLong(2L) .argFloat(3.2f) @@ -170,10 +165,9 @@ public abstract class CommonTest { .argLocalDateTime(localDateTimeNow) .argLocalDate(localDateNow) .argOffsetDateTime(offsetDateTimeNow) - .argZonedDateTime(zonedDateTimeNow) .insert(1); db.toSelect("select nbr_integer, nbr_long, nbr_float, nbr_double, nbr_big_decimal, str_varchar, str_fixed, str_lob, " - + "bin_blob, date_millis, local_date, offset_date_time, tz_date_time from dbtest") + + "bin_blob, date_millis, local_date, offset_date_time from dbtest") .query((RowsHandler<Void>) rs -> { assertTrue(rs.next()); assertEquals(Integer.valueOf(1), rs.getIntegerOrNull(1)); @@ -220,14 +214,11 @@ public abstract class CommonTest { rs.getOffsetDateTimeOrNull(12).truncatedTo(ChronoUnit.SECONDS)); assertEquals(offsetDateTimeNow.truncatedTo(ChronoUnit.SECONDS), rs.getOffsetDateTimeOrNull("offset_date_time").truncatedTo(ChronoUnit.SECONDS)); - // org.postgresql.util.PSQLException: conversion to class java.time.ZonedDateTime from timestamptz not supported - // assertEquals(zonedDateTimeNow, rs.getZonedDateTimeOrNull(13)); - // assertEquals(zonedDateTimeNow, rs.getZonedDateTimeOrNull("tz_date_time")); return null; }); // Repeat the above query, using the various methods that automatically infer the column db.toSelect("select nbr_integer, nbr_long, nbr_float, nbr_double, nbr_big_decimal, str_varchar, str_fixed, str_lob, " - + "bin_blob, date_millis, local_date, offset_date_time, tz_date_time from dbtest") + + "bin_blob, date_millis, local_date, offset_date_time from dbtest") .query((RowsHandler<Void>) rs -> { assertTrue(rs.next()); assertEquals(Integer.valueOf(1), rs.getIntegerOrNull()); @@ -242,12 +233,10 @@ public abstract class CommonTest { assertEquals(localDateTimeNow, rs.getLocalDateTimeOrNull()); assertEquals(localDateNow, rs.getLocalDateOrNull()); assertEquals(offsetDateTimeNow.truncatedTo(ChronoUnit.SECONDS), rs.getOffsetDateTimeOrNull().truncatedTo(ChronoUnit.SECONDS)); - // org.postgresql.util.PSQLException: conversion to class java.time.ZonedDateTime from timestamptz not supported - //assertEquals(zonedDateTimeNow, rs.getZonedDateTimeOrNull()); return null; }); db.toSelect("select nbr_integer, nbr_long, nbr_float, nbr_double, nbr_big_decimal, str_varchar, str_fixed, str_lob, " - + "bin_blob, date_millis, local_date, offset_date_time, tz_date_time from dbtest") + + "bin_blob, date_millis, local_date, offset_date_time from dbtest") .query((RowsHandler<Void>) rs -> { assertTrue(rs.next()); assertEquals(1, rs.getIntegerOrZero()); @@ -262,8 +251,6 @@ public abstract class CommonTest { assertEquals(localDateTimeNow, rs.getLocalDateTimeOrNull()); assertEquals(localDateNow, rs.getLocalDateOrNull()); assertEquals(offsetDateTimeNow.truncatedTo(ChronoUnit.SECONDS), rs.getOffsetDateTimeOrNull().truncatedTo(ChronoUnit.SECONDS)); - // org.postgresql.util.PSQLException: conversion to class java.time.ZonedDateTime from timestamptz not supported - //assertEquals(zonedDateTimeNow, rs.getZonedDateTimeOrNull()); return null; }); db.toSelect("select str_lob, bin_blob from dbtest").query((RowsHandler<Void>) rs -> {