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

Commit1c7fad5

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parent3a81a1a commit1c7fad5

File tree

3 files changed

+252
-68
lines changed

3 files changed

+252
-68
lines changed

‎src/interfaces/ecpg/test/Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
all: test1 test2 test3 test4 perftest dyntest
1+
all: test1 test2 test3 test4 perftest dyntest dyntest2
22

33
#LDFLAGS=-g -I /usr/local/pgsql/include -L/usr/local/pgsql/lib -lecpg -lpq -lcrypt
4-
LDFLAGS=-g -I../include -I/usr/include/postgresql -L/usr/lib/postgresql -L../lib -lecpg -lpq -lcrypt
4+
LDFLAGS=-g -I../include -I/usr/include/postgresql -L../lib -L/usr/lib/postgresql -lecpg -lpq -lcrypt
55
#LDFLAGS=-g -I/usr/include/postgresql -lecpg -lpq -lcrypt
66

77
#ECPG=/usr/local/pgsql/bin/ecpg
@@ -16,9 +16,10 @@ test3: test3.c
1616
test4: test4.c
1717
perftest: perftest.c
1818
dyntest: dyntest.c
19+
dyntest2: dyntest2.c
1920

2021
.pgc.c:
2122
$(ECPG)$?
2223

2324
clean:
24-
-/bin/rm test1 test2 test3 test4 perftest*.c log dyntest
25+
-/bin/rm test1 test2 test3 test4 perftest*.c log dyntest dyntest2

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

Lines changed: 107 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* Copyright (c) 2000, Christof Petig <christof.petig@wtal.de>
44
*
5-
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/test/Attic/dyntest.pgc,v 1.4 2000/02/23 19:26:04 meskes Exp $
5+
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/test/Attic/dyntest.pgc,v 1.5 2000/03/03 13:24:06 meskes Exp $
66
*/
77

88
#include <stdio.h>
@@ -11,41 +11,36 @@ exec sql include sql3types;
1111
exec sql include sqlca;
1212

1313
void error()
14-
{
15-
printf("\n#%d:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
14+
{ printf("#%d:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
1615
exit(1);
1716
}
1817

1918
int main(int argc,char **argv)
20-
{
21-
exec sql begin declare section;
19+
{ exec sql begin declare section;
2220
int COUNT;
23-
int INTVAR, BOOLVAR;
21+
int INTVAR;
2422
int INDEX;
2523
int INDICATOR;
24+
bool BOOLVAR;
2625
int TYPE,LENGTH,OCTET_LENGTH,PRECISION,SCALE,NULLABLE,RETURNED_OCTET_LENGTH;
2726
int DATETIME_INTERVAL_CODE;
2827
char NAME[120];
2928
char STRINGVAR[1024];
3029
float FLOATVAR;
3130
double DOUBLEVAR;
3231
char QUERY[1024];
33-
exec sql end declare section;
32+
char DB[1024];
33+
exec sql end declare section;
3434
int done=0;
35-
FILE *dbgs;
36-
37-
exec sql var BOOLVAR is bool;
38-
39-
if ((dbgs = fopen("log", "w")) != NULL)
40-
ECPGdebug(1, dbgs);
4135

42-
snprintf(QUERY,sizeof QUERY,"select * from %s",argc>1?argv[1]:"pg_tables");
36+
snprintf(QUERY,sizeof QUERY,"select * from %s",argc>1 && argv[1][0]?argv[1]:"pg_tables");
4337

4438
exec sql whenever sqlerror do error();
4539

4640
exec sql allocate descriptor MYDESC;
47-
48-
exec sql connect to mm;
41+
42+
strncpy(DB,argc>2?argv[2]:"mm",sizeof DB);
43+
exec sql connect to :DB;
4944

5045
exec sql prepare MYQUERY from :QUERY;
5146
exec sql declare MYCURS cursor for MYQUERY;
@@ -59,83 +54,130 @@ exec sql end declare section;
5954

6055
exec sql get descriptor MYDESC :COUNT = count;
6156
if (!done)
62-
{ printf("Count %d\n",COUNT);
57+
{ printf("%d Columns\n",COUNT);
58+
for (INDEX=1;INDEX<=COUNT;++INDEX)
59+
{exec sql get descriptor MYDESC value :INDEX
60+
:TYPE = type,
61+
:LENGTH = length, :OCTET_LENGTH=octet_length,
62+
:PRECISION = precision, :SCALE=scale,
63+
:NULLABLE=nullable, :NAME=name;
64+
printf("%s ",NAME);
65+
switch (TYPE)
66+
{ case SQL3_BOOLEAN:
67+
printf("bool ");
68+
break;
69+
case SQL3_NUMERIC:
70+
printf("numeric(%d,%d) ",PRECISION,SCALE);
71+
break;
72+
case SQL3_DECIMAL:
73+
printf("decimal(%d,%d) ",PRECISION,SCALE);
74+
break;
75+
case SQL3_INTEGER:
76+
printf("integer ");
77+
break;
78+
case SQL3_SMALLINT:
79+
printf("smallint ");
80+
break;
81+
case SQL3_FLOAT:
82+
printf("float(%d,%d) ",PRECISION,SCALE);
83+
break;
84+
case SQL3_REAL:
85+
printf("real ");
86+
break;
87+
case SQL3_DOUBLE_PRECISION:
88+
printf("double precision ");
89+
break;
90+
case SQL3_DATE_TIME_TIMESTAMP:
91+
exec sql get descriptor MYDESC value :INDEX
92+
:DATETIME_INTERVAL_CODE=datetime_interval_code;
93+
switch(DATETIME_INTERVAL_CODE)
94+
{case SQL3_DDT_DATE:
95+
printf("date "); break;
96+
case SQL3_DDT_TIME:
97+
printf("time "); break;
98+
case SQL3_DDT_TIMESTAMP:
99+
printf("timestamp "); break;
100+
case SQL3_DDT_TIME_WITH_TIME_ZONE:
101+
printf("time with time zone "); break;
102+
case SQL3_DDT_TIMESTAMP_WITH_TIME_ZONE:
103+
printf("timestamp with time zone "); break;
104+
}
105+
break;
106+
case SQL3_INTERVAL:
107+
printf("interval ");
108+
break;
109+
case SQL3_CHARACTER:
110+
if (LENGTH>0) printf("char(%d) ",LENGTH);
111+
else printf("char(?) ");
112+
break;
113+
case SQL3_CHARACTER_VARYING:
114+
if (LENGTH>0) printf("varchar(%d) ",LENGTH);
115+
else printf("varchar() ");
116+
break;
117+
default:
118+
if (TYPE<0) printf("<OID %d> ",-TYPE);
119+
else printf("<SQL3 %d> ",TYPE);
120+
break;
121+
}
122+
if (!NULLABLE) printf("not null ");
123+
if (OCTET_LENGTH>0) printf("[%d bytes]",OCTET_LENGTH);
124+
putchar('\n');
125+
}
126+
putchar('\n');
63127
done=1;
64128
}
65129

66130
for (INDEX=1;INDEX<=COUNT;++INDEX)
67131
{ exec sql get descriptor MYDESC value :INDEX
68-
:TYPE = type,
69-
:LENGTH = length, :OCTET_LENGTH=octet_length,
70-
:RETURNED_OCTET_LENGTH=returned_octet_length,
71-
:PRECISION = precision, :SCALE=scale,
72-
:NULLABLE=nullable, :NAME=name,
132+
:TYPE = type, :SCALE=scale, :PRECISION = precision,
73133
:INDICATOR=indicator;
74-
printf("%2d\t%s (type: %d length: %d precision: %d scale: %d
75-
\toctet_length: %d returned_octet_length: %d nullable: %d)\n\t= "
76-
,INDEX,NAME,TYPE,LENGTH,PRECISION,SCALE
77-
,OCTET_LENGTH,RETURNED_OCTET_LENGTH,NULLABLE);
78-
if (INDICATOR==-1) printf("NULL\n");
134+
if (INDICATOR==-1) printf("NULL");
79135
else switch (TYPE)
80-
{
81-
case SQL3_BOOLEAN:
136+
{case SQL3_BOOLEAN:
82137
exec sql get descriptor MYDESC value :INDEX :BOOLVAR=data;
83-
printf("%s\n",BOOLVAR ?"true":"false");
84-
break;
85-
case SQL3_NUMERIC:
86-
case SQL3_DECIMAL:
87-
if (SCALE==0)
138+
printf(BOOLVAR?"true":"false");
139+
break;
140+
case SQL3_NUMERIC:
141+
case SQL3_DECIMAL:
142+
if (SCALE==0)// we might even print leading zeros "%0*d"
88143
{ exec sql get descriptor MYDESC value :INDEX :INTVAR=data;
89-
printf("%d\n",INTVAR);
144+
printf("%*d",PRECISION,INTVAR);
90145
}
91146
else
92147
{ exec sql get descriptor MYDESC value :INDEX :FLOATVAR=data;
93-
printf("%.*f\n",SCALE,FLOATVAR);
148+
printf("%*.*f",PRECISION+1,SCALE,FLOATVAR);
94149
}
95150
break;
96-
case SQL3_INTEGER:
97-
case SQL3_SMALLINT:
151+
case SQL3_INTEGER:
152+
case SQL3_SMALLINT:
98153
exec sql get descriptor MYDESC value :INDEX :INTVAR=data;
99-
printf("%d\n",INTVAR);
154+
printf("%d",INTVAR);
100155
break;
101-
case SQL3_FLOAT:
102-
case SQL3_REAL:
156+
case SQL3_FLOAT:
157+
case SQL3_REAL:
103158
exec sql get descriptor MYDESC value :INDEX :FLOATVAR=data;
104-
printf("%.*f\n",PRECISION,FLOATVAR);
159+
printf("%f",FLOATVAR);
105160
break;
106-
case SQL3_DOUBLE_PRECISION:
161+
case SQL3_DOUBLE_PRECISION:
107162
exec sql get descriptor MYDESC value :INDEX :DOUBLEVAR=data;
108-
printf("%.*f\n",PRECISION,DOUBLEVAR);
109-
break;
110-
case SQL3_DATE_TIME_TIMESTAMP:
111-
exec sql get descriptor MYDESC value :INDEX
112-
:DATETIME_INTERVAL_CODE=datetime_interval_code,
113-
:STRINGVAR=data;
114-
printf("%d \"%s\"\n",DATETIME_INTERVAL_CODE,STRINGVAR);
163+
printf("%f",DOUBLEVAR);
115164
break;
116-
case SQL3_INTERVAL:
165+
case SQL3_DATE_TIME_TIMESTAMP:
166+
case SQL3_INTERVAL:
167+
case SQL3_CHARACTER:
168+
case SQL3_CHARACTER_VARYING:
169+
default:
117170
exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data;
118-
printf("\"%s\"\n",STRINGVAR);
119-
break;
120-
case SQL3_CHARACTER:
121-
case SQL3_CHARACTER_VARYING:
122-
exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data;
123-
printf("\"%s\"\n",STRINGVAR);
124-
break;
125-
default:
126-
exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data;
127-
printf("<\"%s\">\n",STRINGVAR);
171+
printf("'%s'",STRINGVAR);
128172
break;
129173
}
174+
putchar('|');
130175
}
176+
putchar('\n');
131177
}
132178

133179
exec sql close MYCURS;
134180

135181
exec sql deallocate descriptor MYDESC;
136-
137-
if (dbgs != NULL)
138-
fclose(dbgs);
139-
140182
return 0;
141183
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp