aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/test/Makefile.regress1
-rw-r--r--src/interfaces/ecpg/test/compat_informix/dec_test.pgc13
-rw-r--r--src/interfaces/ecpg/test/expected/compat_informix-dec_test.c34
-rw-r--r--src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c70
-rw-r--r--src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr26
-rw-r--r--src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout2
-rw-r--r--src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c36
-rw-r--r--src/interfaces/ecpg/test/pgtypeslib/num_test.pgc11
-rw-r--r--src/interfaces/ecpg/test/pgtypeslib/num_test2.pgc11
-rw-r--r--src/interfaces/ecpg/test/printf_hack.h29
10 files changed, 170 insertions, 63 deletions
diff --git a/src/interfaces/ecpg/test/Makefile.regress b/src/interfaces/ecpg/test/Makefile.regress
index 06c0461f667..4da1bb8a036 100644
--- a/src/interfaces/ecpg/test/Makefile.regress
+++ b/src/interfaces/ecpg/test/Makefile.regress
@@ -15,6 +15,7 @@ ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include -I$(srcdir)
# Files that most or all ecpg preprocessor test outputs depend on
ECPG_TEST_DEPENDENCIES = ../../preproc/ecpg$(X) \
$(srcdir)/../regression.h \
+ $(srcdir)/../printf_hack.h \
$(srcdir)/../../include/sqlca.h \
$(srcdir)/../../include/sqlda.h \
$(srcdir)/../../include/sqltypes.h \
diff --git a/src/interfaces/ecpg/test/compat_informix/dec_test.pgc b/src/interfaces/ecpg/test/compat_informix/dec_test.pgc
index c6a4ed85ee7..f6a9f425d6f 100644
--- a/src/interfaces/ecpg/test/compat_informix/dec_test.pgc
+++ b/src/interfaces/ecpg/test/compat_informix/dec_test.pgc
@@ -7,14 +7,7 @@
exec sql include ../regression;
-
-/*
-
-NOTE: This file has a different expect file for regression tests on MinGW32
-
-*/
-
-
+exec sql include ../printf_hack;
/*
@@ -115,7 +108,9 @@ main(void)
/* this is a libc problem since we only call strtod() */
r = dectodbl(dec, &dbl);
if (r) check_errno();
- printf("dec[%d,10]: %g (r: %d)\n", i, r?0.0:dbl, r);
+ printf("dec[%d,10]: ", i);
+ print_double(r ? 0.0 : dbl);
+ printf(" (r: %d)\n", r);
}
PGTYPESdecimal_free(din);
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
index 8951cdb227f..8586650e879 100644
--- a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
+++ b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
@@ -28,12 +28,38 @@
+#line 1 "printf_hack.h"
/*
+ * print_double(x) has the same effect as printf("%g", x), but is intended
+ * to produce the same formatting across all platforms.
+ */
+static void
+print_double(double x)
+{
+#ifdef WIN32
+ /* Change Windows' 3-digit exponents to look like everyone else's */
+ char convert[128];
+ int vallen;
-NOTE: This file has a different expect file for regression tests on MinGW32
+ sprintf(convert, "%g", x);
+ vallen = strlen(convert);
-*/
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ convert[vallen - 1] = '\0';
+ }
+
+ printf("%s", convert);
+#else
+ printf("%g", x);
+#endif
+}
+#line 10 "dec_test.pgc"
@@ -135,7 +161,9 @@ main(void)
/* this is a libc problem since we only call strtod() */
r = dectodbl(dec, &dbl);
if (r) check_errno();
- printf("dec[%d,10]: %g (r: %d)\n", i, r?0.0:dbl, r);
+ printf("dec[%d,10]: ", i);
+ print_double(r ? 0.0 : dbl);
+ printf(" (r: %d)\n", r);
}
PGTYPESdecimal_free(din);
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
index 1b1239eacad..bf312549b4f 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c
@@ -24,11 +24,39 @@
+#line 1 "printf_hack.h"
/*
+ * print_double(x) has the same effect as printf("%g", x), but is intended
+ * to produce the same formatting across all platforms.
+ */
+static void
+print_double(double x)
+{
+#ifdef WIN32
+ /* Change Windows' 3-digit exponents to look like everyone else's */
+ char convert[128];
+ int vallen;
+
+ sprintf(convert, "%g", x);
+ vallen = strlen(convert);
+
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ convert[vallen - 1] = '\0';
+ }
+
+ printf("%s", convert);
+#else
+ printf("%g", x);
+#endif
+}
-NOTE: This file has a different expect file for regression tests on MinGW32
+#line 8 "num_test.pgc"
-*/
int
@@ -40,10 +68,10 @@ main(void)
/* = {0, 0, 0, 0, 0, NULL, NULL} ; */
-#line 22 "num_test.pgc"
+#line 17 "num_test.pgc"
numeric * des ;
/* exec sql end declare section */
-#line 24 "num_test.pgc"
+#line 19 "num_test.pgc"
double d;
long l1, l2;
@@ -51,27 +79,27 @@ main(void)
ECPGdebug(1, stderr);
/* exec sql whenever sqlerror do sqlprint ( ) ; */
-#line 30 "num_test.pgc"
+#line 25 "num_test.pgc"
{ ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
-#line 32 "num_test.pgc"
+#line 27 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 32 "num_test.pgc"
+#line 27 "num_test.pgc"
{ ECPGsetcommit(__LINE__, "off", NULL);
-#line 34 "num_test.pgc"
+#line 29 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 34 "num_test.pgc"
+#line 29 "num_test.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test ( text char ( 5 ) , num numeric ( 14 , 7 ) )", ECPGt_EOIT, ECPGt_EORT);
-#line 35 "num_test.pgc"
+#line 30 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 35 "num_test.pgc"
+#line 30 "num_test.pgc"
value1 = PGTYPESnumeric_new();
@@ -100,10 +128,10 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test ( text , num ) values ( 'test' , $1 )",
ECPGt_numeric,&(des),(long)1,(long)0,sizeof(numeric),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 60 "num_test.pgc"
+#line 55 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 60 "num_test.pgc"
+#line 55 "num_test.pgc"
value2 = PGTYPESnumeric_from_asc("2369.7", NULL);
@@ -113,10 +141,10 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select num from test where text = 'test'", ECPGt_EOIT,
ECPGt_numeric,&(des),(long)1,(long)0,sizeof(numeric),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 66 "num_test.pgc"
+#line 61 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 66 "num_test.pgc"
+#line 61 "num_test.pgc"
PGTYPESnumeric_mul(res, des, res);
@@ -129,7 +157,9 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
PGTYPESnumeric_div(res, value2, res);
text = PGTYPESnumeric_to_asc(res, -1);
PGTYPESnumeric_to_double(res, &d);
- printf("div = %s %e\n", text, d);
+ printf("div = %s ", text);
+ print_double(d);
+ printf("\n");
PGTYPESnumeric_free(value1);
PGTYPESnumeric_free(value2);
@@ -145,16 +175,16 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
PGTYPESnumeric_free(res);
{ ECPGtrans(__LINE__, NULL, "rollback");
-#line 93 "num_test.pgc"
+#line 90 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 93 "num_test.pgc"
+#line 90 "num_test.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");
-#line 94 "num_test.pgc"
+#line 91 "num_test.pgc"
if (sqlca.sqlcode < 0) sqlprint ( );}
-#line 94 "num_test.pgc"
+#line 91 "num_test.pgc"
return 0;
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr
index d834c22aab9..a7d125402af 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr
@@ -2,31 +2,31 @@
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ECPGconnect: opening database ecpg1_regression on <DEFAULT> port <DEFAULT>
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGsetcommit on line 34: action "off"; connection "ecpg1_regression"
+[NO_PID]: ECPGsetcommit on line 29: action "off"; connection "ecpg1_regression"
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 35: query: create table test ( text char ( 5 ) , num numeric ( 14 , 7 ) ); with 0 parameter(s) on connection ecpg1_regression
+[NO_PID]: ecpg_execute on line 30: query: create table test ( text char ( 5 ) , num numeric ( 14 , 7 ) ); with 0 parameter(s) on connection ecpg1_regression
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 35: using PQexec
+[NO_PID]: ecpg_execute on line 30: using PQexec
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 35: OK: CREATE TABLE
+[NO_PID]: ecpg_process_output on line 30: OK: CREATE TABLE
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 60: query: insert into test ( text , num ) values ( 'test' , $1 ); with 1 parameter(s) on connection ecpg1_regression
+[NO_PID]: ecpg_execute on line 55: query: insert into test ( text , num ) values ( 'test' , $1 ); with 1 parameter(s) on connection ecpg1_regression
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 60: using PQexecParams
+[NO_PID]: ecpg_execute on line 55: using PQexecParams
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_free_params on line 60: parameter 1 = 2369.7
+[NO_PID]: ecpg_free_params on line 55: parameter 1 = 2369.7
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 60: OK: INSERT 0 1
+[NO_PID]: ecpg_process_output on line 55: OK: INSERT 0 1
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 66: query: select num from test where text = 'test'; with 0 parameter(s) on connection ecpg1_regression
+[NO_PID]: ecpg_execute on line 61: query: select num from test where text = 'test'; with 0 parameter(s) on connection ecpg1_regression
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 66: using PQexec
+[NO_PID]: ecpg_execute on line 61: using PQexec
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 66: correctly got 1 tuples with 1 fields
+[NO_PID]: ecpg_process_output on line 61: correctly got 1 tuples with 1 fields
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 66: RESULT: 2369.7000000 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 61: RESULT: 2369.7000000 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGtrans on line 93: action "rollback"; connection "ecpg1_regression"
+[NO_PID]: ECPGtrans on line 90: action "rollback"; connection "ecpg1_regression"
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_finish: connection ecpg1_regression closed
[NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout
index 52515ebde26..204c3cf6c07 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout
@@ -2,5 +2,5 @@ from int = 1407.0
add = 2379.7
sub = 2369.7
mul = 13306998429.873000000
-div = 1330699.84298730000 1.330700e+06
+div = 1330699.84298730000 1.3307e+06
to long(0) = 20000000 14
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
index aaab4ad7d70..9debc34e791 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c
@@ -25,11 +25,39 @@
+#line 1 "printf_hack.h"
/*
+ * print_double(x) has the same effect as printf("%g", x), but is intended
+ * to produce the same formatting across all platforms.
+ */
+static void
+print_double(double x)
+{
+#ifdef WIN32
+ /* Change Windows' 3-digit exponents to look like everyone else's */
+ char convert[128];
+ int vallen;
+
+ sprintf(convert, "%g", x);
+ vallen = strlen(convert);
+
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ convert[vallen - 1] = '\0';
+ }
+
+ printf("%s", convert);
+#else
+ printf("%g", x);
+#endif
+}
-NOTE: This file has a different expect file for regression tests on MinGW32
+#line 9 "num_test2.pgc"
-*/
char* nums[] = { "2E394", "-2", ".794", "3.44", "592.49E21", "-32.84e4",
@@ -126,7 +154,9 @@ main(void)
r = PGTYPESnumeric_to_double(num, &d);
if (r) check_errno();
- printf("num[%d,10]: %g (r: %d)\n", i, r?0.0:d, r);
+ printf("num[%d,10]: ", i);
+ print_double(r ? 0.0 : d);
+ printf(" (r: %d)\n", r);
}
/* do not test double to numeric because
diff --git a/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc b/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc
index 98912704947..254aeb4129b 100644
--- a/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc
+++ b/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc
@@ -5,12 +5,7 @@
exec sql include ../regression;
-
-/*
-
-NOTE: This file has a different expect file for regression tests on MinGW32
-
-*/
+exec sql include ../printf_hack;
int
@@ -75,7 +70,9 @@ main(void)
PGTYPESnumeric_div(res, value2, res);
text = PGTYPESnumeric_to_asc(res, -1);
PGTYPESnumeric_to_double(res, &d);
- printf("div = %s %e\n", text, d);
+ printf("div = %s ", text);
+ print_double(d);
+ printf("\n");
PGTYPESnumeric_free(value1);
PGTYPESnumeric_free(value2);
diff --git a/src/interfaces/ecpg/test/pgtypeslib/num_test2.pgc b/src/interfaces/ecpg/test/pgtypeslib/num_test2.pgc
index edc0c8c0578..8241d45ca51 100644
--- a/src/interfaces/ecpg/test/pgtypeslib/num_test2.pgc
+++ b/src/interfaces/ecpg/test/pgtypeslib/num_test2.pgc
@@ -6,12 +6,7 @@
exec sql include ../regression;
-
-/*
-
-NOTE: This file has a different expect file for regression tests on MinGW32
-
-*/
+exec sql include ../printf_hack;
char* nums[] = { "2E394", "-2", ".794", "3.44", "592.49E21", "-32.84e4",
@@ -108,7 +103,9 @@ main(void)
r = PGTYPESnumeric_to_double(num, &d);
if (r) check_errno();
- printf("num[%d,10]: %g (r: %d)\n", i, r?0.0:d, r);
+ printf("num[%d,10]: ", i);
+ print_double(r ? 0.0 : d);
+ printf(" (r: %d)\n", r);
}
/* do not test double to numeric because
diff --git a/src/interfaces/ecpg/test/printf_hack.h b/src/interfaces/ecpg/test/printf_hack.h
new file mode 100644
index 00000000000..ef584c0d548
--- /dev/null
+++ b/src/interfaces/ecpg/test/printf_hack.h
@@ -0,0 +1,29 @@
+/*
+ * print_double(x) has the same effect as printf("%g", x), but is intended
+ * to produce the same formatting across all platforms.
+ */
+static void
+print_double(double x)
+{
+#ifdef WIN32
+ /* Change Windows' 3-digit exponents to look like everyone else's */
+ char convert[128];
+ int vallen;
+
+ sprintf(convert, "%g", x);
+ vallen = strlen(convert);
+
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ convert[vallen - 1] = '\0';
+ }
+
+ printf("%s", convert);
+#else
+ printf("%g", x);
+#endif
+}