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

Commitc7fddd3

Browse files
author
Michael Meskes
committed
date, interval and timestamp data should be quoted.
1 parent23e4fc1 commitc7fddd3

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,6 +1546,10 @@ Wed Jul 2 09:45:59 CEST 2003
15461546

15471547
- Fixed initialization bug in compatlib.
15481548
- Added postgres_fe.h to all files in pgtypeslib.
1549+
1550+
Fri Jul 4 13:51:11 CEST 2003
1551+
1552+
- date, interval and timestamp data should be quoted.
15491553
- Set ecpg version to 3.0.0
15501554
- Set ecpg library to 4.0.0
15511555
- Set pgtypes library to 1.0.0

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

Lines changed: 7 additions & 7 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.15 2003/07/0411:30:48 meskes Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.16 2003/07/0412:00:52 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -885,7 +885,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
885885
{
886886
for (element=0;element<var->arrsize;element++)
887887
{
888-
str=PGTYPESinterval_to_asc((Interval*)((var+var->offset*element)->value));
888+
str=quote_postgres(PGTYPESinterval_to_asc((Interval*)((var+var->offset*element)->value)),stmt->lineno);
889889
slen=strlen (str);
890890

891891
if (!(mallocedval=ECPGrealloc(mallocedval,strlen(mallocedval)+slen+5,stmt->lineno)))
@@ -901,7 +901,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
901901
}
902902
else
903903
{
904-
str=PGTYPESinterval_to_asc((Interval*)(var->value));
904+
str=quote_postgres(PGTYPESinterval_to_asc((Interval*)(var->value)),stmt->lineno);
905905
slen=strlen (str);
906906

907907
if (!(mallocedval=ECPGalloc(slen+1,stmt->lineno)))
@@ -926,7 +926,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
926926
{
927927
for (element=0;element<var->arrsize;element++)
928928
{
929-
str=PGTYPESdate_to_asc(*(Date*)((var+var->offset*element)->value));
929+
str=quote_postgres(PGTYPESdate_to_asc(*(Date*)((var+var->offset*element)->value)),stmt->lineno);
930930
slen=strlen (str);
931931

932932
if (!(mallocedval=ECPGrealloc(mallocedval,strlen(mallocedval)+slen+5,stmt->lineno)))
@@ -942,7 +942,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
942942
}
943943
else
944944
{
945-
str=PGTYPESdate_to_asc(*(Date*)(var->value));
945+
str=quote_postgres(PGTYPESdate_to_asc(*(Date*)(var->value)),stmt->lineno);
946946
slen=strlen (str);
947947

948948
if (!(mallocedval=ECPGalloc(slen+1,stmt->lineno)))
@@ -967,7 +967,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
967967
{
968968
for (element=0;element<var->arrsize;element++)
969969
{
970-
str=PGTYPEStimestamp_to_asc(*(Timestamp*)((var+var->offset*element)->value));
970+
str=quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp*)((var+var->offset*element)->value)),stmt->lineno);
971971
slen=strlen (str);
972972

973973
if (!(mallocedval=ECPGrealloc(mallocedval,strlen(mallocedval)+slen+5,stmt->lineno)))
@@ -983,7 +983,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
983983
}
984984
else
985985
{
986-
str=PGTYPEStimestamp_to_asc(*(Timestamp*)(var->value));
986+
str=quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp*)(var->value)),stmt->lineno);
987987
slen=strlen (str);
988988

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

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ PGTYPESdate_to_asc(Date dDate)
8787
{
8888
structtmtt,*tm=&tt;
8989
charbuf[MAXDATELEN+1];
90-
intDateStyle=0;
90+
intDateStyle=1;
9191
boolEuroDates= FALSE;
9292

9393
j2date((dDate+date2j(2000,1,1)),&(tm->tm_year),&(tm->tm_mon),&(tm->tm_mday));

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ main()
1717
Date date2;
1818
int mdy[3] = { 4, 19, 1998 };
1919
char *fmt, *out, *in;
20+
char *d1 = "Mon Jan 17 1966";
21+
char *t1 = "2000-7-12 17:34:29";
2022

2123
FILE *dbgs;
2224

@@ -25,8 +27,12 @@ main()
2527
exec sql whenever sqlerror do sqlprint();
2628
exec sql connect to mm;
2729
exec sql create table date_test (d date, ts timestamp, iv interval);
30+
exec sql set datestyle to iso;
2831

29-
exec sql insert into date_test(d, ts, iv) values ('Mon Jan 17 1966', '2000-7-12 17:34:29', now()-'Mon Jan 17 1966');
32+
date1 = PGTYPESdate_from_asc(d1, NULL);
33+
ts1 = PGTYPEStimestamp_from_asc(t1, NULL);
34+
35+
exec sql insert into date_test(d, ts, iv) values (:date1, :ts1, now()-'Mon Jan 17 1966');
3036

3137
exec sql select * into :date1, :ts1 , :iv1 from date_test;
3238

@@ -38,7 +44,7 @@ main()
3844

3945
text = PGTYPESinterval_to_asc(&iv1);
4046
printf ("interval: %s\n", text);
41-
47+
4248
PGTYPESdate_mdyjul(mdy, &date2);
4349
printf("m: %d, d: %d, y: %d\n", mdy[0], mdy[1], mdy[2]);
4450
/* reset */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp