97 lines
2.1 KiB
Diff
97 lines
2.1 KiB
Diff
From fb2a42483d318186079469576ce5991437d7a635 Mon Sep 17 00:00:00 2001
|
|
From: Pavel Raiskup <praiskup@redhat.com>
|
|
Date: Mon, 18 Apr 2016 14:55:16 +0200
|
|
Subject: [PATCH] Revert "Fix the bug about MONEY type."
|
|
|
|
This reverts commit d5374bcc4d58556eb5cc70241c44dcad4d9b441e.
|
|
|
|
Proposed upstream:
|
|
http://www.postgresql.org/message-id/3259874.lgiBp3an9Y@nb.usersys.redhat.com
|
|
---
|
|
convert.c | 45 ++++++++-------------------------------------
|
|
pgtypes.c | 5 +++++
|
|
2 files changed, 13 insertions(+), 37 deletions(-)
|
|
|
|
diff --git a/convert.c b/convert.c
|
|
index 830910a..f9eba76 100644
|
|
--- a/convert.c
|
|
+++ b/convert.c
|
|
@@ -5255,50 +5255,21 @@ cleanup:
|
|
static BOOL
|
|
convert_money(const char *s, char *sout, size_t soutmax)
|
|
{
|
|
- char in, decp = 0;
|
|
size_t i = 0,
|
|
out = 0;
|
|
- int num_in = -1, period_in = -1, comma_in = -1;
|
|
|
|
for (i = 0; s[i]; i++)
|
|
{
|
|
- switch (in = s[i])
|
|
+ if (s[i] == '$' || s[i] == ',' || s[i] == ')')
|
|
+ ; /* skip these characters */
|
|
+ else
|
|
{
|
|
- case '.':
|
|
- if (period_in < 0)
|
|
- period_in = i;
|
|
- break;
|
|
- case ',':
|
|
- if (comma_in < 0)
|
|
- comma_in = i;
|
|
- break;
|
|
- default:
|
|
- if ('0' <= in && '9' >= in)
|
|
- num_in = i;
|
|
- break;
|
|
- }
|
|
- }
|
|
- if (period_in > comma_in)
|
|
- {
|
|
- if ( period_in >= num_in - 2)
|
|
- decp = '.';
|
|
- }
|
|
- else if (comma_in >= 0 &&
|
|
- comma_in >= num_in - 2)
|
|
- decp = ',';
|
|
- for (i = 0; s[i] && out + 1 < soutmax; i++)
|
|
- {
|
|
- switch (in = s[i])
|
|
- {
|
|
- case '(':
|
|
- case '-':
|
|
+ if (out + 1 >= soutmax)
|
|
+ return FALSE; /* sout is too short */
|
|
+ if (s[i] == '(')
|
|
sout[out++] = '-';
|
|
- break;
|
|
- default:
|
|
- if (in >= '0' && in <= '9')
|
|
- sout[out++] = in;
|
|
- else if (in == decp)
|
|
- sout[out++] = '.';
|
|
+ else
|
|
+ sout[out++] = s[i];
|
|
}
|
|
}
|
|
sout[out] = '\0';
|
|
diff --git a/pgtypes.c b/pgtypes.c
|
|
index d15b097..649a2f8 100644
|
|
--- a/pgtypes.c
|
|
+++ b/pgtypes.c
|
|
@@ -1282,6 +1282,11 @@ sqltype_to_bind_pgtype(const ConnectionClass *conn, SQLSMALLINT fSqlType)
|
|
pgType = PG_TYPE_DATE;
|
|
break;
|
|
|
|
+ case SQL_DOUBLE:
|
|
+ case SQL_FLOAT:
|
|
+ pgType = PG_TYPE_FLOAT8;
|
|
+ break;
|
|
+
|
|
case SQL_DECIMAL:
|
|
case SQL_NUMERIC:
|
|
pgType = PG_TYPE_NUMERIC;
|
|
--
|
|
2.5.5
|
|
|