From 54055609e2d0b35edf236cad6a210592e145e57e Mon Sep 17 00:00:00 2001
From: Noah Misch <noah@leadboat.com>
Date: Thu, 8 May 2014 19:29:02 -0400
Subject: [PATCH] Un-break ecpg test suite under --disable-integer-datetimes.

Commit 4318daecc959886d001a6e79c6ea853e8b1dfb4b broke it.  The change in
sub-second precision at extreme dates is normal.  The inconsistent
truncation vs. rounding is essentially a bug, albeit a longstanding one.
Back-patch to 8.4, like the causative commit.
---
 src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c      | 5 +++--
 src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout | 1 -
 src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc             | 5 +++--
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
index 0ba1936f1db..4277c2615da 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
@@ -61,7 +61,7 @@ static char *times[] = { "0:04",
 				  "1:59 PDT",
 				  "13:24:40 -8:00",
 				  "13:24:40.495+3",
-				  "13:24:40.123456789+3",
+				  "13:24:40.123456123+3",
 				  NULL };
 
 char *intervals[] = { "1 minute",
@@ -145,7 +145,8 @@ main(void)
 				sprintf(t, "%s %s", dates[i], times[j]);
 				ts1 = PGTYPEStimestamp_from_asc(t, NULL);
 				text = PGTYPEStimestamp_to_asc(ts1);
-				if (i != 19 || j != 3) /* timestamp as integer or double differ for this case */
+				/* skip outputs sensitive to USE_INTEGER_DATETIMES */
+				if (i != 19 || (j != 3 && j != 4))
 					printf("TS[%d,%d]: %s\n",
 						i, j, errno ? "-" : text);
 				free(text);
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
index 9a4587b498e..941bffbd815 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
@@ -103,7 +103,6 @@ Date[19]: 0099-01-08 BC (N - F)
 TS[19,0]: 0099-01-08 00:04:00 BC
 TS[19,1]: 0099-01-08 01:59:00 BC
 TS[19,2]: 0099-01-08 13:24:40 BC
-TS[19,4]: 0099-01-08 13:24:40.123456 BC
 Date[20]: - (N - T)
 Date[21]: - (N - T)
 interval[0]: @ 1 min
diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
index a127dd93a66..0bd1fec109d 100644
--- a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
+++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
@@ -43,7 +43,7 @@ static char *times[] = { "0:04",
 				  "1:59 PDT",
 				  "13:24:40 -8:00",
 				  "13:24:40.495+3",
-				  "13:24:40.123456789+3",
+				  "13:24:40.123456123+3",
 				  NULL };
 
 char *intervals[] = { "1 minute",
@@ -110,7 +110,8 @@ main(void)
 				sprintf(t, "%s %s", dates[i], times[j]);
 				ts1 = PGTYPEStimestamp_from_asc(t, NULL);
 				text = PGTYPEStimestamp_to_asc(ts1);
-				if (i != 19 || j != 3) /* timestamp as integer or double differ for this case */
+				/* skip outputs sensitive to USE_INTEGER_DATETIMES */
+				if (i != 19 || (j != 3 && j != 4))
 					printf("TS[%d,%d]: %s\n",
 						i, j, errno ? "-" : text);
 				free(text);
-- 
GitLab