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

Commit5454b37

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parentc4ef93d commit5454b37

File tree

3 files changed

+93
-39
lines changed

3 files changed

+93
-39
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,5 +888,11 @@ Thu Mar 30 11:11:13 CEST 2000
888888
Fri Mar 31 08:25:58 CEST 2000
889889

890890
- Synced preproc.y with gram.y.
891+
892+
Mon Apr 3 21:20:27 CEST 2000
893+
894+
- Made sure pointers are correctly inserted by libecpg. My thanks go
895+
to Jan Urbanek <jan@urbanek.cz> for findin many bugs before the
896+
release.
891897
- Set library version to 3.1.0.
892898
- Set ecpg version to 2.7.0.

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

Lines changed: 83 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,17 @@ ECPGexecute(struct statement * stmt)
317317
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
318318
return false;
319319

320-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
320+
if (var->arrsize>1)
321+
{
322+
strncpy(mallocedval,"'{",sizeof("'{"));
321323

322-
for (element=0;element<var->arrsize;element++)
323-
sprintf(mallocedval+strlen(mallocedval),"%d,", ((short*)var->value)[element]);
324+
for (element=0;element<var->arrsize;element++)
325+
sprintf(mallocedval+strlen(mallocedval),"%hd,", ((short*)var->value)[element]);
324326

325-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
327+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
328+
}
329+
else
330+
sprintf(mallocedval,"%hd",*((short*)var->value));
326331

327332
tobeinserted=mallocedval;
328333
break;
@@ -331,12 +336,17 @@ ECPGexecute(struct statement * stmt)
331336
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
332337
return false;
333338

334-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
339+
if (var->arrsize>1)
340+
{
341+
strncpy(mallocedval,"'{",sizeof("'{"));
335342

336-
for (element=0;element<var->arrsize;element++)
337-
sprintf(mallocedval+strlen(mallocedval),"%d,", ((int*)var->value)[element]);
343+
for (element=0;element<var->arrsize;element++)
344+
sprintf(mallocedval+strlen(mallocedval),"%d,", ((int*)var->value)[element]);
338345

339-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
346+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
347+
}
348+
else
349+
sprintf(mallocedval,"%d",*((int*)var->value));
340350

341351
tobeinserted=mallocedval;
342352
break;
@@ -345,12 +355,17 @@ ECPGexecute(struct statement * stmt)
345355
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
346356
return false;
347357

348-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
358+
if (var->arrsize>1)
359+
{
360+
strncpy(mallocedval,"'{",sizeof("'{"));
349361

350-
for (element=0;element<var->arrsize;element++)
351-
sprintf(mallocedval+strlen(mallocedval),"%d,", ((unsigned short*)var->value)[element]);
362+
for (element=0;element<var->arrsize;element++)
363+
sprintf(mallocedval+strlen(mallocedval),"%hu,", ((unsigned short*)var->value)[element]);
352364

353-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
365+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
366+
}
367+
else
368+
sprintf(mallocedval,"%hu",*((unsigned short*)var->value));
354369

355370
tobeinserted=mallocedval;
356371
break;
@@ -359,26 +374,36 @@ ECPGexecute(struct statement * stmt)
359374
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
360375
return false;
361376

362-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
377+
if (var->arrsize>1)
378+
{
379+
strncpy(mallocedval,"'{",sizeof("'{"));
363380

364-
for (element=0;element<var->arrsize;element++)
365-
sprintf(mallocedval+strlen(mallocedval),"%d,", ((unsignedint*)var->value)[element]);
381+
for (element=0;element<var->arrsize;element++)
382+
sprintf(mallocedval+strlen(mallocedval),"%u,", ((unsignedint*)var->value)[element]);
366383

367-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
384+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
385+
}
386+
else
387+
sprintf(mallocedval,"%u",*((unsignedint*)var->value));
368388

369389
tobeinserted=mallocedval;
370390
break;
371391

372392
caseECPGt_long:
373393
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
374394
return false;
375-
376-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
377395

378-
for (element=0;element<var->arrsize;element++)
379-
sprintf(mallocedval+strlen(mallocedval),"%ld,", ((long*)var->value)[element]);
396+
if (var->arrsize>1)
397+
{
398+
strncpy(mallocedval,"'{",sizeof("'{"));
399+
400+
for (element=0;element<var->arrsize;element++)
401+
sprintf(mallocedval+strlen(mallocedval),"%ld,", ((long*)var->value)[element]);
380402

381-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
403+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
404+
}
405+
else
406+
sprintf(mallocedval,"%ld",*((long*)var->value));
382407

383408
tobeinserted=mallocedval;
384409
break;
@@ -387,12 +412,17 @@ ECPGexecute(struct statement * stmt)
387412
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
388413
return false;
389414

390-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
415+
if (var->arrsize>1)
416+
{
417+
strncpy(mallocedval,"'{",sizeof("'{"));
391418

392-
for (element=0;element<var->arrsize;element++)
393-
sprintf(mallocedval+strlen(mallocedval),"%ld,", ((unsigned long*)var->value)[element]);
419+
for (element=0;element<var->arrsize;element++)
420+
sprintf(mallocedval+strlen(mallocedval),"%lu,", ((unsigned long*)var->value)[element]);
394421

395-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
422+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
423+
}
424+
else
425+
sprintf(mallocedval,"%lu",*((unsigned long*)var->value));
396426

397427
tobeinserted=mallocedval;
398428
break;
@@ -401,12 +431,17 @@ ECPGexecute(struct statement * stmt)
401431
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
402432
return false;
403433

404-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
434+
if (var->arrsize>1)
435+
{
436+
strncpy(mallocedval,"'{",sizeof("'{"));
405437

406-
for (element=0;element<var->arrsize;element++)
407-
sprintf(mallocedval+strlen(mallocedval),"%.14g,", ((float*)var->value)[element]);
438+
for (element=0;element<var->arrsize;element++)
439+
sprintf(mallocedval+strlen(mallocedval),"%.14g,", ((float*)var->value)[element]);
408440

409-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
441+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
442+
}
443+
else
444+
sprintf(mallocedval,"%.14g",*((float*)var->value));
410445

411446
tobeinserted=mallocedval;
412447
break;
@@ -415,12 +450,17 @@ ECPGexecute(struct statement * stmt)
415450
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
416451
return false;
417452

418-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
453+
if (var->arrsize>1)
454+
{
455+
strncpy(mallocedval,"'{",sizeof("'{"));
419456

420-
for (element=0;element<var->arrsize;element++)
421-
sprintf(mallocedval+strlen(mallocedval),"%.14g,", ((double*)var->value)[element]);
457+
for (element=0;element<var->arrsize;element++)
458+
sprintf(mallocedval+strlen(mallocedval),"%.14g,", ((double*)var->value)[element]);
422459

423-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
460+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
461+
}
462+
else
463+
sprintf(mallocedval,"%.14g",*((double*)var->value));
424464

425465
tobeinserted=mallocedval;
426466
break;
@@ -429,12 +469,17 @@ ECPGexecute(struct statement * stmt)
429469
if (!(mallocedval=ecpg_alloc(var->arrsize*20,stmt->lineno)))
430470
return false;
431471

432-
sprintf(mallocedval,"%s", (var->arrsize>1) ?"'{" :"");
472+
if (var->arrsize>1)
473+
{
474+
strncpy(mallocedval,"'{",sizeof("'{"));
433475

434-
for (element=0;element<var->arrsize;element++)
435-
sprintf(mallocedval+strlen(mallocedval),"%c,", (((char*)var->value)[element]) ?'t' :'f');
476+
for (element=0;element<var->arrsize;element++)
477+
sprintf(mallocedval+strlen(mallocedval),"%c,", (((char*)var->value)[element]) ?'t' :'f');
436478

437-
sprintf(mallocedval+strlen(mallocedval)-1,"%s", (var->arrsize>1) ?"}'" :"");
479+
strncpy(mallocedval+strlen(mallocedval)-1,"}'",sizeof("}'"));
480+
}
481+
else
482+
sprintf(mallocedval,"%c,", (*((char*)var->value)) ?'t' :'f');
438483

439484
tobeinserted=mallocedval;
440485
break;
@@ -814,7 +859,7 @@ ECPGdo(int lineno, const char *connection_name, char *query, ...)
814859
*
815860
* Copyright (c) 2000, Christof Petig <christof.petig@wtal.de>
816861
*
817-
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.2 2000/03/17 23:26:31 tgl Exp $
862+
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.3 2000/04/03 19:34:25 meskes Exp $
818863
*/
819864

820865
PGconn*ECPG_internal_get_connection(char*name);

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ int
88
main ()
99
{
1010
EXEC SQL BEGIN DECLARE SECTION;
11-
int i = 1;
11+
int i = 3;
12+
int *did = &i;
1213
int a[10] = {9,8,7,6,5,4,3,2,1,0};
1314
double f;
1415
EXEC SQL END DECLARE SECTION;
@@ -31,6 +32,8 @@ EXEC SQL END DECLARE SECTION;
3132
EXEC SQL INSERT INTO test(f,i,a) VALUES(404.90,1,'{0,1,2,3,4,5,6,7,8,9}');
3233

3334
EXEC SQL INSERT INTO test(f,i,a) VALUES(140787.0,2,:a);
35+
36+
EXEC SQL INSERT INTO test(f,i,a) VALUES(14.07,:did,:a);
3437

3538
EXEC SQL COMMIT;
3639

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp