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

Commit6fad73e

Browse files
author
Michael Meskes
committed
Some bugfixes for numerical library.
1 parenta6f00f3 commit6fad73e

File tree

8 files changed

+51
-16
lines changed

8 files changed

+51
-16
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.1 2003/03/16 10:42:53 meskes Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.2 2003/03/18 10:46:39 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -861,7 +861,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
861861
}
862862
else
863863
{
864-
*str=PGTYPESnumeric_ntoa((NumericVar*)(var->value));
864+
str=PGTYPESnumeric_ntoa((NumericVar*)(var->value));
865865
slen=strlen (str);
866866

867867
if (!(mallocedval=ECPGalloc(slen+1,stmt->lineno)))

‎src/interfaces/ecpg/include/decimal.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#include<pgtypes_numeric.h>
2+
3+
#ifndefdec_t
4+
#definedec_t NumericVar
5+
#endif/* dec_t */
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
#definePGTYPES_OVERFLOW201
22
#definePGTYPES_BAD_NUMERIC202
33
#definePGTYPES_DIVIDE_ZERO203
4+
5+
#definePGTYPES_BAD_DATE300
6+

‎src/interfaces/ecpg/pgtypeslib/numeric.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pgtypes_alloc(long size)
4040
return (new);
4141
}
4242

43+
#if0
4344
/* ----------
4445
* apply_typmod() -
4546
*
@@ -119,6 +120,7 @@ apply_typmod(NumericVar *var, long typmod)
119120
var->dscale=scale;
120121
return (0);
121122
}
123+
#endif
122124

123125
/* ----------
124126
* alloc_var() -
@@ -387,7 +389,9 @@ PGTYPESnumeric_aton(char *str, char **endptr)
387389
{
388390
NumericVar*value= (NumericVar*)pgtypes_alloc(sizeof(NumericVar));
389391
intret;
392+
#if0
390393
longtypmod=-1;
394+
#endif
391395
char*realptr;
392396
char**ptr= (endptr!=NULL) ?endptr :&realptr;
393397

@@ -398,10 +402,11 @@ PGTYPESnumeric_aton(char *str, char **endptr)
398402
if (ret)
399403
return (NULL);
400404

405+
#if0
401406
ret=apply_typmod(value,typmod);
402407
if (ret)
403408
return (NULL);
404-
409+
#endif
405410
return(value);
406411
}
407412

‎src/interfaces/ecpg/preproc/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.90 2003/02/14 13:17:13 meskes Exp $
1+
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.91 2003/03/18 10:46:39 meskes Exp $
22

33
subdir = src/interfaces/ecpg/preproc
44
top_builddir = ../../../..
@@ -18,7 +18,7 @@ override CFLAGS += -Wno-error
1818
endif
1919

2020
OBJS=preproc.o type.o ecpg.o ecpg_keywords.o output.o\
21-
keywords.o c_keywords.o ../lib/typename.o descriptor.o variable.o
21+
keywords.o c_keywords.o ../ecpglib/typename.o descriptor.o variable.o
2222

2323

2424
all: submake-libpgport ecpg

‎src/interfaces/ecpg/preproc/ecpg.c

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.62 2003/03/16 10:42:54 meskes Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.63 2003/03/18 10:46:39 meskes Exp $ */
22

33
/* New main for ecpg, the PostgreSQL embedded SQL precompiler. */
44
/* (C) Michael Meskes <meskes@postgresql.org> Feb 5th, 1998 */
@@ -7,6 +7,7 @@
77
#include"postgres_fe.h"
88

99
#include<unistd.h>
10+
#include<string.h>
1011
#ifdefHAVE_GETOPT_H
1112
#include<getopt.h>
1213
#endif
@@ -69,10 +70,27 @@ static void
6970
add_preprocessor_define(char*define)
7071
{
7172
struct_defines*pd=defines;
72-
73+
char*ptr,*define_copy=mm_strdup(define);
74+
7375
defines=mm_alloc(sizeof(struct_defines));
74-
defines->old=strdup(define);
75-
defines->new=strdup("");
76+
77+
/* look for = sign */
78+
ptr=strchr(define_copy,'=');
79+
if (ptr!=NULL)
80+
{
81+
char*tmp;
82+
83+
/* symbol gets a value */
84+
for (tmp=ptr-1;*tmp==' ';tmp--);
85+
tmp[1]='\0';
86+
defines->old=define_copy;
87+
defines->new=ptr+1;
88+
}
89+
else
90+
{
91+
defines->old=define_copy;
92+
defines->new=mm_strdup("");
93+
}
7694
defines->pertinent= true;
7795
defines->next=pd;
7896
}
@@ -137,7 +155,10 @@ main(int argc, char *const argv[])
137155
break;
138156
case'C':
139157
if (strcmp(optarg,"INFORMIX")==0)
158+
{
140159
compat=ECPG_COMPAT_INFORMIX;
160+
add_preprocessor_define("dec_t=NumericVar");
161+
}
141162
else
142163
{
143164
fprintf(stderr,"Try '%s --help' for more information.\n",argv[0]);
@@ -313,7 +334,7 @@ main(int argc, char *const argv[])
313334
lex_init();
314335

315336
/* we need several includes */
316-
fprintf(yyout,"/* Processed by ecpg (%d.%d.%d) */\n/* These four include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n#include <pgtypes_numeric.h>\n#line 1 \"%s\"\n",MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL,input_filename);
337+
fprintf(yyout,"/* Processed by ecpg (%d.%d.%d) */\n/* These four include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n#line 1 \"%s\"\n",MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL,input_filename);
317338

318339
/* add some compatibility headers */
319340
if (compat==ECPG_COMPAT_INFORMIX)

‎src/interfaces/ecpg/test/num_test.pgc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#include <stdio.h>
2+
#include <pgtypes_numeric.h>
23

34
int
45
main()
56
{
67
char *text="error\n";
7-
NumericVar *value1, *value2, *res;
8+
NumericVar *value1, *value2, *res;
89
exec sql begin declare section;
910
decimal(14,7) des = {0, 0, 0, 0, 0, NULL, NULL} ;
1011
exec sql end declare section;
@@ -23,8 +24,8 @@ main()
2324
text = PGTYPESnumeric_ntoa(value1);
2425
printf("long = %s\n", text);
2526

26-
value1 = PGTYPESnumeric_aton("2369.7",-1);
27-
value2 = PGTYPESnumeric_aton("10.0",-1);
27+
value1 = PGTYPESnumeric_aton("2369.7",NULL);
28+
value2 = PGTYPESnumeric_aton("10.0",NULL);
2829
res = PGTYPESnew();
2930
decadd(value1, value2, res);
3031
text = PGTYPESnumeric_ntoa(res);
@@ -37,7 +38,7 @@ main()
3738
PGTYPESnumeric_copy(res, &des);
3839
exec sql insert into test (text, num) values ('test', :des);
3940

40-
value2 = PGTYPESnumeric_aton("2369.7",-1);
41+
value2 = PGTYPESnumeric_aton("2369.7",NULL);
4142
PGTYPESnumeric_mul(value1, value2, res);
4243

4344
exec sql select num into :des from test where text = 'test';
@@ -46,7 +47,7 @@ main()
4647
text = PGTYPESnumeric_ntoa(res);
4748
printf("mul = %s\n", text);
4849

49-
value2 = PGTYPESnumeric_aton("10000",-1);
50+
value2 = PGTYPESnumeric_aton("10000",NULL);
5051
PGTYPESnumeric_div(res, value2, res);
5152
text = PGTYPESnumeric_ntoa(res);
5253
PGTYPESnumeric_ntod(res, &d);

‎src/interfaces/ecpg/test/test1.pgc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ exec sql endif;
5353
char *connection="pm";
5454
int how_many;
5555
exec sql end declare section;
56-
exec sql var name is string(AMOUNT);
56+
exec sql var name is string[AMOUNT];
5757
char msg[128];
5858
FILE *dbgs;
5959
int i,j;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp