Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit15ab0e9

Browse files
author
Michael Meskes
committed
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.
1 parentde98ef6 commit15ab0e9

File tree

7 files changed

+44
-34
lines changed

7 files changed

+44
-34
lines changed

‎src/interfaces/ecpg/ecpglib/data.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.51 2010/02/27 21:53:21 tgl Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.52 2010/05/20 22:10:45 meskes Exp $ */
22

33
#definePOSTGRES_ECPG_INTERNAL
44
#include"postgres_fe.h"
@@ -177,12 +177,12 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
177177
caseECPGt_unsigned_long:
178178
*((long*) (ind+ind_offset*act_tuple))=value_for_indicator;
179179
break;
180-
#ifdefHAVE_LONG_LONG_INT_64
180+
#ifdefHAVE_LONG_LONG
181181
caseECPGt_long_long:
182182
caseECPGt_unsigned_long_long:
183183
*((long longint*) (ind+ind_offset*act_tuple))=value_for_indicator;
184184
break;
185-
#endif/*HAVE_LONG_LONG_INT_64 */
185+
#endif/*HAVE_LONG_LONG */
186186
caseECPGt_NO_INDICATOR:
187187
if (value_for_indicator==-1)
188188
{
@@ -265,12 +265,12 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
265265
caseECPGt_unsigned_long:
266266
*((long*) (ind+ind_offset*act_tuple))=size;
267267
break;
268-
#ifdefHAVE_LONG_LONG_INT_64
268+
#ifdefHAVE_LONG_LONG
269269
caseECPGt_long_long:
270270
caseECPGt_unsigned_long_long:
271271
*((long longint*) (ind+ind_offset*act_tuple))=size;
272272
break;
273-
#endif/*HAVE_LONG_LONG_INT_64 */
273+
#endif/*HAVE_LONG_LONG */
274274
default:
275275
break;
276276
}
@@ -350,7 +350,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
350350
}
351351
break;
352352

353-
#ifdefHAVE_LONG_LONG_INT_64
353+
#ifdefHAVE_LONG_LONG
354354
#ifdefHAVE_STRTOLL
355355
caseECPGt_long_long:
356356
*((long longint*) (var+offset*act_tuple))=strtoll(pval,&scan_length,10);
@@ -376,7 +376,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
376376

377377
break;
378378
#endif/* HAVE_STRTOULL */
379-
#endif/*HAVE_LONG_LONG_INT_64 */
379+
#endif/*HAVE_LONG_LONG */
380380

381381
caseECPGt_float:
382382
caseECPGt_double:
@@ -489,12 +489,12 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
489489
caseECPGt_unsigned_long:
490490
*((long*) (ind+ind_offset*act_tuple))=size;
491491
break;
492-
#ifdefHAVE_LONG_LONG_INT_64
492+
#ifdefHAVE_LONG_LONG
493493
caseECPGt_long_long:
494494
caseECPGt_unsigned_long_long:
495495
*((long longint*) (ind+ind_offset*act_tuple))=size;
496496
break;
497-
#endif/*HAVE_LONG_LONG_INT_64 */
497+
#endif/*HAVE_LONG_LONG */
498498
default:
499499
break;
500500
}
@@ -534,12 +534,12 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
534534
caseECPGt_unsigned_long:
535535
*((long*) (ind+offset*act_tuple))=variable->len;
536536
break;
537-
#ifdefHAVE_LONG_LONG_INT_64
537+
#ifdefHAVE_LONG_LONG
538538
caseECPGt_long_long:
539539
caseECPGt_unsigned_long_long:
540540
*((long longint*) (ind+ind_offset*act_tuple))=variable->len;
541541
break;
542-
#endif/*HAVE_LONG_LONG_INT_64 */
542+
#endif/*HAVE_LONG_LONG */
543543
default:
544544
break;
545545
}

‎src/interfaces/ecpg/ecpglib/descriptor.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* dynamic SQL support routines
22
*
3-
* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.36 2010/02/26 02:01:30 momjian Exp $
3+
* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.37 2010/05/20 22:10:45 meskes Exp $
44
*/
55

66
#definePOSTGRES_ECPG_INTERNAL
@@ -127,14 +127,14 @@ get_int_item(int lineno, void *var, enum ECPGttype vartype, int value)
127127
caseECPGt_unsigned_long:
128128
*(unsigned long*)var= (unsigned long)value;
129129
break;
130-
#ifdefHAVE_LONG_LONG_INT_64
130+
#ifdefHAVE_LONG_LONG
131131
caseECPGt_long_long:
132132
*(long longint*)var= (long longint)value;
133133
break;
134134
caseECPGt_unsigned_long_long:
135135
*(unsigned long longint*)var= (unsigned long longint)value;
136136
break;
137-
#endif/*HAVE_LONG_LONG_INT_64 */
137+
#endif/*HAVE_LONG_LONG */
138138
caseECPGt_float:
139139
*(float*)var= (float)value;
140140
break;
@@ -172,14 +172,14 @@ set_int_item(int lineno, int *target, const void *var, enum ECPGttype vartype)
172172
caseECPGt_unsigned_long:
173173
*target=*(unsigned long*)var;
174174
break;
175-
#ifdefHAVE_LONG_LONG_INT_64
175+
#ifdefHAVE_LONG_LONG
176176
caseECPGt_long_long:
177177
*target=*(long longint*)var;
178178
break;
179179
caseECPGt_unsigned_long_long:
180180
*target=*(unsigned long longint*)var;
181181
break;
182-
#endif/*HAVE_LONG_LONG_INT_64 */
182+
#endif/*HAVE_LONG_LONG */
183183
caseECPGt_float:
184184
*target=*(float*)var;
185185
break;

‎src/interfaces/ecpg/ecpglib/execute.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.95 2010/02/26 02:01:30 momjian Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.96 2010/05/20 22:10:45 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -541,13 +541,13 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
541541
if (*(long*)var->ind_value<0L)
542542
*tobeinserted_p=NULL;
543543
break;
544-
#ifdefHAVE_LONG_LONG_INT_64
544+
#ifdefHAVE_LONG_LONG
545545
caseECPGt_long_long:
546546
caseECPGt_unsigned_long_long:
547547
if (*(long longint*)var->ind_value< (long long)0)
548548
*tobeinserted_p=NULL;
549549
break;
550-
#endif/*HAVE_LONG_LONG_INT_64 */
550+
#endif/*HAVE_LONG_LONG */
551551
caseECPGt_NO_INDICATOR:
552552
if (force_indicator== false)
553553
{
@@ -679,7 +679,7 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
679679

680680
*tobeinserted_p=mallocedval;
681681
break;
682-
#ifdefHAVE_LONG_LONG_INT_64
682+
#ifdefHAVE_LONG_LONG
683683
caseECPGt_long_long:
684684
if (!(mallocedval=ecpg_alloc(asize*30,lineno)))
685685
return false;
@@ -717,7 +717,7 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
717717

718718
*tobeinserted_p=mallocedval;
719719
break;
720-
#endif/*HAVE_LONG_LONG_INT_64 */
720+
#endif/*HAVE_LONG_LONG */
721721
caseECPGt_float:
722722
if (!(mallocedval=ecpg_alloc(asize*25,lineno)))
723723
return false;

‎src/interfaces/ecpg/ecpglib/extern.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/extern.h,v 1.39 2010/02/26 02:01:30 momjian Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/extern.h,v 1.40 2010/05/20 22:10:45 meskes Exp $ */
22

33
#ifndef_ECPG_LIB_EXTERN_H
44
#define_ECPG_LIB_EXTERN_H
@@ -13,6 +13,11 @@
1313
#include<limits.h>
1414
#endif
1515

16+
/* Do we know the C99 data type "long long"? */
17+
#if defined(LLONG_MIN)|| defined(LONGLONG_MIN)|| defined(HAVE_LONG_LONG_INT_64)
18+
#defineHAVE_LONG_LONG 1
19+
#endif
20+
1621
enumCOMPAT_MODE
1722
{
1823
ECPG_COMPAT_PGSQL=0,ECPG_COMPAT_INFORMIX,ECPG_COMPAT_INFORMIX_SE

‎src/interfaces/ecpg/ecpglib/misc.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.56 2010/02/26 02:01:30 momjian Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.57 2010/05/20 22:10:46 meskes Exp $ */
22

33
#definePOSTGRES_ECPG_INTERNAL
44
#include"postgres_fe.h"
@@ -17,7 +17,7 @@
1717
#include"pgtypes_interval.h"
1818
#include"pg_config_paths.h"
1919

20-
#ifdefHAVE_LONG_LONG_INT_64
20+
#ifdefHAVE_LONG_LONG
2121
#ifndefLONG_LONG_MIN
2222
#ifdefLLONG_MIN
2323
#defineLONG_LONG_MIN LLONG_MIN
@@ -327,12 +327,12 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
327327
caseECPGt_date:
328328
*((long*)ptr)=LONG_MIN;
329329
break;
330-
#ifdefHAVE_LONG_LONG_INT_64
330+
#ifdefHAVE_LONG_LONG
331331
caseECPGt_long_long:
332332
caseECPGt_unsigned_long_long:
333333
*((long long*)ptr)=LONG_LONG_MIN;
334334
break;
335-
#endif/*HAVE_LONG_LONG_INT_64 */
335+
#endif/*HAVE_LONG_LONG */
336336
caseECPGt_float:
337337
memset((char*)ptr,0xff,sizeof(float));
338338
break;
@@ -399,13 +399,13 @@ ECPGis_noind_null(enum ECPGttype type, void *ptr)
399399
if (*((long*)ptr)==LONG_MIN)
400400
return true;
401401
break;
402-
#ifdefHAVE_LONG_LONG_INT_64
402+
#ifdefHAVE_LONG_LONG
403403
caseECPGt_long_long:
404404
caseECPGt_unsigned_long_long:
405405
if (*((long long*)ptr)==LONG_LONG_MIN)
406406
return true;
407407
break;
408-
#endif/*HAVE_LONG_LONG_INT_64 */
408+
#endif/*HAVE_LONG_LONG */
409409
caseECPGt_float:
410410
return (_check(ptr,sizeof(float)));
411411
break;

‎src/interfaces/ecpg/preproc/ecpg.header

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.header,v 1.14 2010/03/09 11:09:45 meskes Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.header,v 1.15 2010/05/20 22:10:46 meskes Exp $ */
22

33
/* Copyright comment */
44
%{
@@ -7,6 +7,11 @@
77
#include "extern.h"
88
#include <unistd.h>
99

10+
/* Do we know the C99 datatype "long long"? */
11+
#if defined(LLONG_MIN) || defined(LONGLONG_MIN) || defined(HAVE_LONG_LONG_INT_64)
12+
#define HAVE_LONG_LONG 1
13+
#endif
14+
1015
/* Location tracking support --- simpler than bison's default */
1116
#define YYLLOC_DEFAULT(Current, Rhs, N) \
1217
do { \

‎src/interfaces/ecpg/preproc/ecpg.trailer

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.24 2010/03/31 08:45:18 meskes Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.25 2010/05/20 22:10:46 meskes Exp $ */
22

33
statements: /*EMPTY*/
44
| statements statement
@@ -781,15 +781,15 @@ unsigned_type: SQL_UNSIGNED SQL_SHORT{ $$ = ECPGt_unsigned_short; }
781781
| SQL_UNSIGNED SQL_LONG INT_P{ $$ = ECPGt_unsigned_long; }
782782
| SQL_UNSIGNED SQL_LONG SQL_LONG
783783
{
784-
#ifdefHAVE_LONG_LONG_INT_64
784+
#ifdefHAVE_LONG_LONG
785785
$$ = ECPGt_unsigned_long_long;
786786
#else
787787
$$ = ECPGt_unsigned_long;
788788
#endif
789789
}
790790
| SQL_UNSIGNED SQL_LONG SQL_LONG INT_P
791791
{
792-
#ifdefHAVE_LONG_LONG_INT_64
792+
#ifdefHAVE_LONG_LONG
793793
$$ = ECPGt_unsigned_long_long;
794794
#else
795795
$$ = ECPGt_unsigned_long;
@@ -805,15 +805,15 @@ signed_type: SQL_SHORT{ $$ = ECPGt_short; }
805805
| SQL_LONG INT_P{ $$ = ECPGt_long; }
806806
| SQL_LONG SQL_LONG
807807
{
808-
#ifdefHAVE_LONG_LONG_INT_64
808+
#ifdefHAVE_LONG_LONG
809809
$$ = ECPGt_long_long;
810810
#else
811811
$$ = ECPGt_long;
812812
#endif
813813
}
814814
| SQL_LONG SQL_LONG INT_P
815815
{
816-
#ifdefHAVE_LONG_LONG_INT_64
816+
#ifdefHAVE_LONG_LONG
817817
$$ = ECPGt_long_long;
818818
#else
819819
$$ = ECPGt_long;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp