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

Commit54f5527

Browse files
author
Michael Meskes
committed
Descriptor values were quoted twice.
Fixed some regression test problems.
1 parenta313235 commit54f5527

File tree

9 files changed

+46
-33
lines changed

9 files changed

+46
-33
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2095,7 +2095,6 @@ Mo Aug 14 10:39:59 CEST 2006
20952095
- Fixed broken newline on Windows.
20962096
- Fixed a nasty buffer underrun that only occured when using Informix
20972097
no_indicator NULL setting on timestamps and intervals.
2098-
<<<<<<< ChangeLog
20992098

21002099
Fr 18. Aug 17:32:54 CEST 2006
21012100

@@ -2107,5 +2106,9 @@ Fr 18. Aug 17:32:54 CEST 2006
21072106
Sa 19. Aug 14:11:32 CEST 2006
21082107

21092108
- More SoC stuff.
2109+
2110+
Tu 22. Aug 13:54:08 CEST 2006
2111+
2112+
- Descriptor values were quoted twice.
21102113
- Set ecpg library version to 5.2.
21112114
- Set ecpg version to 4.2.1.

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

Lines changed: 17 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.59 2006/08/18 16:30:53 meskes Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.60 2006/08/22 12:46:17 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -39,9 +39,8 @@ static char *
3939
quote_postgres(char*arg,intlineno)
4040
{
4141
char*res= (char*)ECPGalloc(2*strlen(arg)+3,lineno);
42-
inti,
42+
inti,quoted= false,
4343
ri=0;
44-
4544
if (!res)
4645
return (res);
4746

@@ -51,16 +50,29 @@ quote_postgres(char *arg, int lineno)
5150
*/
5251
if (strchr(arg,'\\')!=NULL)
5352
res[ri++]=ESCAPE_STRING_SYNTAX;
53+
54+
i=0;
5455
res[ri++]='\'';
56+
/* do not quote the string if it is already quoted */
57+
if (*arg=='\''&&arg[strlen(arg)-1]=='\'')
58+
{
59+
quoted= true;
60+
i=1;
61+
}
5562

56-
for (i=0;arg[i];i++,ri++)
63+
for (;arg[i];i++,ri++)
5764
{
5865
if (SQL_STR_DOUBLE(arg[i], true))
5966
res[ri++]=arg[i];
6067
res[ri]=arg[i];
6168
}
6269

63-
res[ri++]='\'';
70+
/* do not quote the string if it is already quoted */
71+
if (quoted)
72+
ri--;
73+
else
74+
res[ri++]='\'';
75+
6476
res[ri]='\0';
6577

6678
ECPGfree(arg);

‎src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
8181
date1=PGTYPESdate_from_asc(d1,NULL);
8282
ts1=PGTYPEStimestamp_from_asc(t1,NULL);
8383

84-
{ECPGdo(__LINE__,0,1,NULL,"insert into date_test ( d , ts ) values( ? , ? )",
84+
{ECPGdo(__LINE__,0,1,NULL,"insert into date_test ( d , ts ) values( ? , ? )",
8585
ECPGt_date,&(date1),(long)1,(long)1,sizeof(date),
8686
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
8787
ECPGt_timestamp,&(ts1),(long)1,(long)1,sizeof(timestamp),
@@ -131,14 +131,13 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
131131

132132
ts1=PGTYPEStimestamp_from_asc("2003-12-04 17:34:29",NULL);
133133
text=PGTYPEStimestamp_to_asc(ts1);
134-
printf("date_day of %s is %d\n",text,PGTYPESdate_dayofweek(ts1));
135-
free(text);
136-
137134
fmt="(ddd), mmm. dd, yyyy, repeat: (ddd), mmm. dd, yyyy. end";
138135
out= (char*)malloc(strlen(fmt)+1);
139136
date1=PGTYPESdate_from_timestamp(ts1);
140137
PGTYPESdate_fmt_asc(date1,fmt,out);
138+
printf("date_day of %s is %d\n",text,PGTYPESdate_dayofweek(date1));
141139
printf("Above date in format \"%s\" is \"%s\"\n",fmt,out);
140+
free(text);
142141
free(out);
143142

144143
/* rdate_defmt_asc() */
@@ -418,16 +417,16 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
418417
free(text);
419418

420419
{ECPGtrans(__LINE__,NULL,"rollback");
421-
#line351 "dt_test.pgc"
420+
#line350 "dt_test.pgc"
422421

423422
if (sqlca.sqlcode<0)sqlprint ( );}
424-
#line351 "dt_test.pgc"
423+
#line350 "dt_test.pgc"
425424

426425
{ECPGdisconnect(__LINE__,"CURRENT");
427-
#line352 "dt_test.pgc"
426+
#line351 "dt_test.pgc"
428427

429428
if (sqlca.sqlcode<0)sqlprint ( );}
430-
#line352 "dt_test.pgc"
429+
#line351 "dt_test.pgc"
431430

432431

433432
return (0);

‎src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[NO_PID]: sqlca: code: 0, state: 00000
1111
[NO_PID]: ECPGexecute line 30 Ok: SET
1212
[NO_PID]: sqlca: code: 0, state: 00000
13-
[NO_PID]: ECPGexecute line 35: QUERY: insert into date_test ( d , ts ) values( date '1966-01-17' , timestamp '2000-07-12 17:34:29' ) on connection regress1
13+
[NO_PID]: ECPGexecute line 35: QUERY: insert into date_test ( d , ts ) values( date '1966-01-17' , timestamp '2000-07-12 17:34:29' )on connection regress1
1414
[NO_PID]: sqlca: code: 0, state: 00000
1515
[NO_PID]: ECPGexecute line 35 Ok: INSERT 0 1
1616
[NO_PID]: sqlca: code: 0, state: 00000
@@ -22,7 +22,7 @@
2222
[NO_PID]: sqlca: code: 0, state: 00000
2323
[NO_PID]: ECPGget_data line 37: RESULT: 2000-07-12 17:34:29 offset: -1 array: Yes
2424
[NO_PID]: sqlca: code: 0, state: 00000
25-
[NO_PID]: ECPGtrans line351 action = rollback connection = regress1
25+
[NO_PID]: ECPGtrans line350 action = rollback connection = regress1
2626
[NO_PID]: sqlca: code: 0, state: 00000
2727
[NO_PID]: ecpg_finish: Connection regress1 closed.
2828
[NO_PID]: sqlca: code: 0, state: 00000

‎src/interfaces/ecpg/test/expected/sql-desc.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ main(void)
4848
intval1=1 ;
4949

5050
#line 13 "desc.pgc"
51-
charval2 []="one" ,val2output []="AAA" ;
51+
charval2 [4]="one" ,val2output [4]="AAA" ;
5252

5353
#line 14 "desc.pgc"
5454
intval1output=2 ,val2i=0 ;
@@ -86,7 +86,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
8686
#line 24 "desc.pgc"
8787

8888
{ECPGset_desc(__LINE__,"indesc",2,ECPGd_data,
89-
ECPGt_char,&(val2),(long)-1,(long)1,(-1)*sizeof(char),ECPGd_indicator,
89+
ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char),ECPGd_indicator,
9090
ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int),ECPGd_EODT);
9191

9292
#line 25 "desc.pgc"
@@ -147,7 +147,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
147147
#line 36 "desc.pgc"
148148

149149
{ECPGset_desc(__LINE__,"indesc",2,ECPGd_data,
150-
ECPGt_char,&(val2),(long)-1,(long)1,(-1)*sizeof(char),ECPGd_indicator,
150+
ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char),ECPGd_indicator,
151151
ECPGt_int,&(val2null),(long)1,(long)1,sizeof(int),ECPGd_EODT);
152152

153153
#line 37 "desc.pgc"
@@ -176,7 +176,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
176176
#line 41 "desc.pgc"
177177

178178
{ECPGset_desc(__LINE__,"indesc",2,ECPGd_data,
179-
ECPGt_char,&(val2),(long)-1,(long)1,(-1)*sizeof(char),ECPGd_indicator,
179+
ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char),ECPGd_indicator,
180180
ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int),ECPGd_EODT);
181181

182182
#line 42 "desc.pgc"
@@ -199,7 +199,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
199199

200200

201201
{ECPGget_desc(__LINE__,"outdesc",1,ECPGd_data,
202-
ECPGt_char,&(val2output),(long)-1,(long)1,(-1)*sizeof(char),ECPGd_EODT);
202+
ECPGt_char,(val2output),(long)4,(long)1,(4)*sizeof(char),ECPGd_EODT);
203203

204204
#line 46 "desc.pgc"
205205

@@ -225,7 +225,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
225225
{ECPGdo(__LINE__,0,1,NULL,"fetch next from c1",ECPGt_EOIT,
226226
ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
227227
ECPGt_int,&(ind1),(long)1,(long)1,sizeof(int),
228-
ECPGt_char,&(val2output),(long)-1,(long)1,(-1)*sizeof(char),
228+
ECPGt_char,(val2output),(long)4,(long)1,(4)*sizeof(char),
229229
ECPGt_int,&(ind2),(long)1,(long)1,sizeof(int),ECPGt_EORT);
230230
#line 52 "desc.pgc"
231231

@@ -275,7 +275,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
275275
{ECPGdo(__LINE__,0,1,NULL,"fetch next from c2",ECPGt_EOIT,
276276
ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
277277
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
278-
ECPGt_char,&(val2output),(long)-1,(long)1,(-1)*sizeof(char),
278+
ECPGt_char,(val2output),(long)4,(long)1,(4)*sizeof(char),
279279
ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int),ECPGt_EORT);
280280
#line 64 "desc.pgc"
281281

@@ -294,7 +294,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
294294
{ECPGdo(__LINE__,0,1,NULL,"select * from test1 where a = 2 ",ECPGt_EOIT,
295295
ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
296296
ECPGt_NO_INDICATOR,NULL ,0L,0L,0L,
297-
ECPGt_char,&(val2output),(long)-1,(long)1,(-1)*sizeof(char),
297+
ECPGt_char,(val2output),(long)4,(long)1,(4)*sizeof(char),
298298
ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int),ECPGt_EORT);
299299
#line 69 "desc.pgc"
300300

‎src/interfaces/ecpg/test/expected/sql-desc.stderr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
[NO_PID]: sqlca: code: 0, state: 00000
1313
[NO_PID]: ECPGprepare line 32: QUERY: SELECT * from test1 where a = ?
1414
[NO_PID]: sqlca: code: 0, state: 00000
15-
[NO_PID]: ECPGexecute line 34: QUERY: INSERT INTO test1 VALUES ('1', '''one''') on connection regress1
15+
[NO_PID]: ECPGexecute line 34: QUERY: INSERT INTO test1 VALUES ('1', 'one') on connection regress1
1616
[NO_PID]: sqlca: code: 0, state: 00000
1717
[NO_PID]: ECPGexecute line 34 Ok: INSERT 0 1
1818
[NO_PID]: sqlca: code: 0, state: 00000
1919
[NO_PID]: ECPGexecute line 39: QUERY: INSERT INTO test1 VALUES ('2', null) on connection regress1
2020
[NO_PID]: sqlca: code: 0, state: 00000
2121
[NO_PID]: ECPGexecute line 39 Ok: INSERT 0 1
2222
[NO_PID]: sqlca: code: 0, state: 00000
23-
[NO_PID]: ECPGexecute line 44: QUERY: SELECT * from test1 where a = '1' and b = '''one''' on connection regress1
23+
[NO_PID]: ECPGexecute line 44: QUERY: SELECT * from test1 where a = '1' and b = 'one' on connection regress1
2424
[NO_PID]: sqlca: code: 0, state: 00000
2525
[NO_PID]: ECPGexecute line 44: Correctly got 1 tuples with 2 fields
2626
[NO_PID]: sqlca: code: 0, state: 00000
@@ -30,7 +30,7 @@
3030
[NO_PID]: sqlca: code: 0, state: 00000
3131
[NO_PID]: ECPGget_data line 46: RESULT: 1 offset: -1 array: Yes
3232
[NO_PID]: sqlca: code: 0, state: 00000
33-
[NO_PID]: ECPGexecute line 50: QUERY: declare c1 cursor for SELECT * from test1 where a = '1' and b = '''one''' on connection regress1
33+
[NO_PID]: ECPGexecute line 50: QUERY: declare c1 cursor for SELECT * from test1 where a = '1' and b = 'one' on connection regress1
3434
[NO_PID]: sqlca: code: 0, state: 00000
3535
[NO_PID]: ECPGexecute line 50 Ok: DECLARE CURSOR
3636
[NO_PID]: sqlca: code: 0, state: 00000
@@ -40,7 +40,7 @@
4040
[NO_PID]: sqlca: code: 0, state: 00000
4141
[NO_PID]: ECPGget_data line 52: RESULT: 1 offset: -1 array: Yes
4242
[NO_PID]: sqlca: code: 0, state: 00000
43-
[NO_PID]: ECPGget_data line 52: RESULT:'one' offset: -1 array: Yes
43+
[NO_PID]: ECPGget_data line 52: RESULT: one offset: -1 array: Yes
4444
[NO_PID]: sqlca: code: 0, state: 00000
4545
[NO_PID]: ECPGexecute line 56: QUERY: close c1 on connection regress1
4646
[NO_PID]: sqlca: code: 0, state: 00000
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
output = 1
2-
val1=1 (ind1: 0) val2='one' (ind2: 0)
2+
val1=1 (ind1: 0) val2=one (ind2: 0)
33
val1=2 val2=null
44
val1=2 val2=null

‎src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,13 @@ main(void)
6262

6363
ts1 = PGTYPEStimestamp_from_asc("2003-12-04 17:34:29", NULL);
6464
text = PGTYPEStimestamp_to_asc(ts1);
65-
printf("date_day of %s is %d\n", text, PGTYPESdate_dayofweek(ts1));
66-
free(text);
67-
6865
fmt = "(ddd), mmm. dd, yyyy, repeat: (ddd), mmm. dd, yyyy. end";
6966
out = (char*) malloc(strlen(fmt) + 1);
7067
date1 = PGTYPESdate_from_timestamp(ts1);
7168
PGTYPESdate_fmt_asc(date1, fmt, out);
69+
printf("date_day of %s is %d\n", text, PGTYPESdate_dayofweek(date1));
7270
printf("Above date in format \"%s\" is \"%s\"\n", fmt, out);
71+
free(text);
7372
free(out);
7473

7574
/* rdate_defmt_asc() */

‎src/interfaces/ecpg/test/sql/desc.pgc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ main(void)
1010
char *stmt3 = "SELECT * from test1 where a = ?";
1111

1212
int val1 = 1;
13-
char val2[] = "one", val2output[] = "AAA";
13+
char val2[4] = "one", val2output[4] = "AAA";
1414
int val1output = 2, val2i = 0;
1515
int val2null = -1;
1616
int ind1, ind2;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp