summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2010-05-20 22:10:46 +0000
committerMichael Meskes <meskes@postgresql.org>2010-05-20 22:10:46 +0000
commit15ab0e9a6051ff5b6c88a729ddd9d57ac44f7a11 (patch)
treefef663d3ac0c32bc07b4702b2924b4e76dd2f943 /src/interfaces/ecpg/preproc
parentde98ef62c7fe7a2bf02fafab6a95ae2e138ed075 (diff)
Ecpg now accepts "long long" datatypes even if "long" is 64bit wide. This used to cover the equally long "long long" type. This patch closes bug #5464.
Diffstat (limited to 'src/interfaces/ecpg/preproc')
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.header7
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.trailer10
2 files changed, 11 insertions, 6 deletions
diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header
index 6b05776ee58..848a3a23dc9 100644
--- a/src/interfaces/ecpg/preproc/ecpg.header
+++ b/src/interfaces/ecpg/preproc/ecpg.header
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.header,v 1.14 2010/03/09 11:09:45 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.header,v 1.15 2010/05/20 22:10:46 meskes Exp $ */
/* Copyright comment */
%{
@@ -7,6 +7,11 @@
#include "extern.h"
#include <unistd.h>
+/* Do we know the C99 datatype "long long"? */
+#if defined(LLONG_MIN) || defined(LONGLONG_MIN) || defined(HAVE_LONG_LONG_INT_64)
+#define HAVE_LONG_LONG 1
+#endif
+
/* Location tracking support --- simpler than bison's default */
#define YYLLOC_DEFAULT(Current, Rhs, N) \
do { \
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index d5e16afab60..1d854d4bbc0 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.24 2010/03/31 08:45:18 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.25 2010/05/20 22:10:46 meskes Exp $ */
statements: /*EMPTY*/
| statements statement
@@ -781,7 +781,7 @@ unsigned_type: SQL_UNSIGNED SQL_SHORT { $$ = ECPGt_unsigned_short; }
| SQL_UNSIGNED SQL_LONG INT_P { $$ = ECPGt_unsigned_long; }
| SQL_UNSIGNED SQL_LONG SQL_LONG
{
-#ifdef HAVE_LONG_LONG_INT_64
+#ifdef HAVE_LONG_LONG
$$ = ECPGt_unsigned_long_long;
#else
$$ = ECPGt_unsigned_long;
@@ -789,7 +789,7 @@ unsigned_type: SQL_UNSIGNED SQL_SHORT { $$ = ECPGt_unsigned_short; }
}
| SQL_UNSIGNED SQL_LONG SQL_LONG INT_P
{
-#ifdef HAVE_LONG_LONG_INT_64
+#ifdef HAVE_LONG_LONG
$$ = ECPGt_unsigned_long_long;
#else
$$ = ECPGt_unsigned_long;
@@ -805,7 +805,7 @@ signed_type: SQL_SHORT { $$ = ECPGt_short; }
| SQL_LONG INT_P { $$ = ECPGt_long; }
| SQL_LONG SQL_LONG
{
-#ifdef HAVE_LONG_LONG_INT_64
+#ifdef HAVE_LONG_LONG
$$ = ECPGt_long_long;
#else
$$ = ECPGt_long;
@@ -813,7 +813,7 @@ signed_type: SQL_SHORT { $$ = ECPGt_short; }
}
| SQL_LONG SQL_LONG INT_P
{
-#ifdef HAVE_LONG_LONG_INT_64
+#ifdef HAVE_LONG_LONG
$$ = ECPGt_long_long;
#else
$$ = ECPGt_long;