From d355579b65ea4bcfb091b878f6accadb081a620a Mon Sep 17 00:00:00 2001 From: reibitto Date: Sat, 21 Dec 2019 19:47:41 +0900 Subject: [PATCH] Fix interval overflow --- .../java/org/postgresql/util/PGInterval.java | 16 ++++++++-------- .../org/postgresql/test/jdbc2/IntervalTest.java | 9 +++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pgjdbc/src/main/java/org/postgresql/util/PGInterval.java b/pgjdbc/src/main/java/org/postgresql/util/PGInterval.java index 0e9ccfaddb..439300d8fb 100644 --- a/pgjdbc/src/main/java/org/postgresql/util/PGInterval.java +++ b/pgjdbc/src/main/java/org/postgresql/util/PGInterval.java @@ -17,10 +17,10 @@ public class PGInterval extends PGobject implements Serializable, Cloneable { private int years; - private byte months; - private byte days; - private byte hours; - private byte minutes; + private int months; + private int days; + private int hours; + private int minutes; private int wholeSeconds; private int microSeconds; @@ -280,7 +280,7 @@ public int getMonths() { * @param months months to set */ public void setMonths(int months) { - this.months = (byte) months; + this.months = months; } /** @@ -298,7 +298,7 @@ public int getDays() { * @param days days to set */ public void setDays(int days) { - this.days = (byte)days; + this.days = days; } /** @@ -316,7 +316,7 @@ public int getHours() { * @param hours hours to set */ public void setHours(int hours) { - this.hours = (byte)hours; + this.hours = hours; } /** @@ -334,7 +334,7 @@ public int getMinutes() { * @param minutes minutes to set */ public void setMinutes(int minutes) { - this.minutes = (byte)minutes; + this.minutes = minutes; } /** diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/IntervalTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/IntervalTest.java index ce3f413840..7351747863 100644 --- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/IntervalTest.java +++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/IntervalTest.java @@ -174,6 +174,15 @@ public void testOfflineTests() throws Exception { assertEquals(-15, pgi.getHours()); assertEquals(57, pgi.getMinutes()); assertEquals(-12.1, pgi.getSeconds(), 0); + + // Unjustified interval test + pgi = new PGInterval("@ 0 years 0 mons 0 days 900 hours 0 mins 0.00 secs"); + assertEquals(0, pgi.getYears()); + assertEquals(0, pgi.getMonths()); + assertEquals(0, pgi.getDays()); + assertEquals(900, pgi.getHours()); + assertEquals(0, pgi.getMinutes()); + assertEquals(0, pgi.getSeconds(), 0); } private Calendar getStartCalendar() {