PostgreSQL Source Code git master
compat_informix-test_informix2.c
Go to the documentation of this file.
1/* Processed by ecpg (regression mode) */
2/* These include files are added by the preprocessor */
3#include <ecpglib.h>
4#include <ecpgerrno.h>
5#include <sqlca.h>
6/* Needed for informix compatibility */
7#include <ecpg_informix.h>
8/* End of automatic include section */
9#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
10
11#line 1 "test_informix2.pgc"
12#include <stdio.h>
13#include <stdlib.h>
14#include "sqltypes.h"
15
16
17#line 1 "sqlca.h"
18#ifndef POSTGRES_SQLCA_H
19#define POSTGRES_SQLCA_H
20
21#ifndef PGDLLIMPORT
22#if defined(WIN32) || defined(__CYGWIN__)
23#define PGDLLIMPORT __declspec (dllimport)
24#else
25#define PGDLLIMPORT
26#endif /* __CYGWIN__ */
27#endif /* PGDLLIMPORT */
28
29#define SQLERRMC_LEN 150
30
31#ifdef __cplusplus
32extern "C"
33{
34#endif
35
36struct sqlca_t
37{
38 char sqlcaid[8];
39 long sqlabc;
40 long sqlcode;
41 struct
42 {
43 int sqlerrml;
46 char sqlerrp[8];
47 long sqlerrd[6];
48 /* Element 0: empty */
49 /* 1: OID of processed tuple if applicable */
50 /* 2: number of rows processed */
51 /* after an INSERT, UPDATE or */
52 /* DELETE statement */
53 /* 3: empty */
54 /* 4: empty */
55 /* 5: empty */
56 char sqlwarn[8];
57 /* Element 0: set to 'W' if at least one other is 'W' */
58 /* 1: if 'W' at least one character string */
59 /* value was truncated when it was */
60 /* stored into a host variable. */
61
62 /*
63 * 2: if 'W' a (hopefully) non-fatal notice occurred
64 */ /* 3: empty */
65 /* 4: empty */
66 /* 5: empty */
67 /* 6: empty */
68 /* 7: empty */
69
70 char sqlstate[5];
71};
72
73struct sqlca_t *ECPGget_sqlca(void);
74
75#ifndef POSTGRES_ECPG_INTERNAL
76#define sqlca (*ECPGget_sqlca())
77#endif
78
79#ifdef __cplusplus
80}
81#endif
82
83#endif
84
85#line 5 "test_informix2.pgc"
86
87
88#line 1 "regression.h"
89
90
91
92
93
94
95#line 6 "test_informix2.pgc"
96
97
98
99/* Check SQLCODE, and produce a "standard error" if it's wrong! */
100static void sql_check(const char *fn, const char *caller, int ignore)
101{
102 char errorstring[255];
103
104 if (SQLCODE == ignore)
105 return;
106 else
107 {
108 if (SQLCODE != 0)
109 {
110
111 sprintf(errorstring, "**SQL error %ld doing '%s' in function '%s'. [%s]",
112 SQLCODE, caller, fn, sqlca.sqlerrm.sqlerrmc);
113 fprintf(stderr, "%s", errorstring);
114 printf("%s\n", errorstring);
115
116 /* attempt a ROLLBACK */
117 { ECPGtrans(__LINE__, NULL, "rollback");}
118#line 27 "test_informix2.pgc"
119
120
121 if (SQLCODE == 0)
122 {
123 sprintf(errorstring, "Rollback successful.\n");
124 } else {
125 sprintf(errorstring, "Rollback failed with code %ld.\n", SQLCODE);
126 }
127
128 fprintf(stderr, "%s", errorstring);
129 printf("%s\n", errorstring);
130
131 exit(1);
132 }
133 }
134}
135
136int main(void)
137{
138 /* exec sql begin declare section */
139
140
141
142
143
144
145#line 47 "test_informix2.pgc"
146 int c ;
147
148#line 48 "test_informix2.pgc"
149 timestamp d ;
150
151#line 49 "test_informix2.pgc"
152 timestamp e ;
153
154#line 50 "test_informix2.pgc"
155 timestamp maxd ;
156
157#line 51 "test_informix2.pgc"
158 char dbname [ 30 ] ;
159/* exec sql end declare section */
160#line 52 "test_informix2.pgc"
161
162
163 interval *intvl;
164
165 /* exec sql whenever sqlerror stop ; */
166#line 56 "test_informix2.pgc"
167
168
169 ECPGdebug(1, stderr);
170
171 strcpy(dbname, "ecpg1_regression");
172 { ECPGconnect(__LINE__, 1, dbname , NULL, NULL , NULL, 0);
173#line 61 "test_informix2.pgc"
174
175if (sqlca.sqlcode < 0) exit (1);}
176#line 61 "test_informix2.pgc"
177
178 sql_check("main", "connect", 0);
179
180 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "set DateStyle to 'DMY'", ECPGt_EOIT, ECPGt_EORT);
181#line 64 "test_informix2.pgc"
182
183if (sqlca.sqlcode < 0) exit (1);}
184#line 64 "test_informix2.pgc"
185
186
187 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "create table history ( customerid integer , timestamp timestamp without time zone , action_taken char ( 5 ) , narrative varchar ( 100 ) )", ECPGt_EOIT, ECPGt_EORT);
188#line 66 "test_informix2.pgc"
189
190if (sqlca.sqlcode < 0) exit (1);}
191#line 66 "test_informix2.pgc"
192
193 sql_check("main", "create", 0);
194
195 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into history ( customerid , timestamp , action_taken , narrative ) values ( 1 , '2003-05-07 13:28:34 CEST' , 'test' , 'test' )", ECPGt_EOIT, ECPGt_EORT);
196#line 71 "test_informix2.pgc"
197
198if (sqlca.sqlcode < 0) exit (1);}
199#line 71 "test_informix2.pgc"
200
201 sql_check("main", "insert", 0);
202
203 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select max ( timestamp ) from history", ECPGt_EOIT,
204 ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp),
205 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
206#line 76 "test_informix2.pgc"
207
208if (sqlca.sqlcode < 0) exit (1);}
209#line 76 "test_informix2.pgc"
210
211 sql_check("main", "select max", 100);
212
213 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select customerid , timestamp from history where timestamp = $1 limit 1",
214 ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp),
215 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
216 ECPGt_int,&(c),(long)1,(long)1,sizeof(int),
217 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
218 ECPGt_timestamp,&(d),(long)1,(long)1,sizeof(timestamp),
219 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
220#line 83 "test_informix2.pgc"
221
222if (sqlca.sqlcode < 0) exit (1);}
223#line 83 "test_informix2.pgc"
224
225 sql_check("main", "select", 0);
226
227 printf("Read in customer %d\n", c);
228
229 intvl = PGTYPESinterval_from_asc("1 day 2 hours 24 minutes 65 seconds", NULL);
230 PGTYPEStimestamp_add_interval(&d, intvl, &e);
231 free(intvl);
232 c++;
233
234 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into history ( customerid , timestamp , action_taken , narrative ) values ( $1 , $2 , 'test' , 'test' )",
235 ECPGt_int,&(c),(long)1,(long)1,sizeof(int),
236 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
237 ECPGt_timestamp,&(e),(long)1,(long)1,sizeof(timestamp),
238 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
239#line 95 "test_informix2.pgc"
240
241if (sqlca.sqlcode < 0) exit (1);}
242#line 95 "test_informix2.pgc"
243
244 sql_check("main", "update", 0);
245
246 { ECPGtrans(__LINE__, NULL, "commit");
247#line 98 "test_informix2.pgc"
248
249if (sqlca.sqlcode < 0) exit (1);}
250#line 98 "test_informix2.pgc"
251
252
253 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "drop table history", ECPGt_EOIT, ECPGt_EORT);
254#line 100 "test_informix2.pgc"
255
256if (sqlca.sqlcode < 0) exit (1);}
257#line 100 "test_informix2.pgc"
258
259 sql_check("main", "drop", 0);
260
261 { ECPGtrans(__LINE__, NULL, "commit");
262#line 103 "test_informix2.pgc"
263
264if (sqlca.sqlcode < 0) exit (1);}
265#line 103 "test_informix2.pgc"
266
267
268 { ECPGdisconnect(__LINE__, "CURRENT");
269#line 105 "test_informix2.pgc"
270
271if (sqlca.sqlcode < 0) exit (1);}
272#line 105 "test_informix2.pgc"
273
274 sql_check("main", "disconnect", 0);
275
276 printf("All OK!\n");
277
278 exit(0);
279
280/*
281 Table "public.history"
282 Column | Type | Nullable
283--------------+-----------------------------+----------
284 customerid | integer | not null
285 timestamp | timestamp without time zone | not null
286 action_taken | character(5) | not null
287 narrative | character varying(100) |
288*/
289
290}
struct sqlca_t * ECPGget_sqlca(void)
Definition: misc.c:108
#define SQLERRMC_LEN
#define ECPGdebug(X, Y)
static void sql_check(const char *fn, const char *caller, int ignore)
bool ECPGdisconnect(int lineno, const char *connection_name)
Definition: connect.c:676
bool ECPGconnect(int lineno, int c, const char *name, const char *user, const char *passwd, const char *connection_name, int autocommit)
Definition: connect.c:255
#define fprintf(file, fmt, msg)
Definition: cubescan.l:21
#define SQLCODE
Definition: ecpglib.h:48
@ ECPGst_normal
Definition: ecpgtype.h:97
@ ECPGt_EOIT
Definition: ecpgtype.h:62
@ ECPGt_timestamp
Definition: ecpgtype.h:54
@ ECPGt_int
Definition: ecpgtype.h:44
@ ECPGt_NO_INDICATOR
Definition: ecpgtype.h:64
@ ECPGt_EORT
Definition: ecpgtype.h:63
bool ECPGdo(const int lineno, const int compat, const int force_indicator, const char *connection_name, const bool questionmarks, const int st, const char *query,...)
Definition: execute.c:2275
#define free(a)
Definition: header.h:65
bool ECPGtrans(int lineno, const char *connection_name, const char *transaction)
Definition: misc.c:160
exit(1)
interval * PGTYPESinterval_from_asc(char *str, char **endptr)
Definition: interval.c:1003
int64 timestamp
int PGTYPEStimestamp_add_interval(timestamp *tin, interval *span, timestamp *tout)
Definition: timestamp.c:858
#define sprintf
Definition: port.h:240
#define printf(...)
Definition: port.h:244
char * c
e
Definition: preproc-init.c:82
char * dbname
Definition: streamutil.c:50
Definition: sqlca.h:20
struct sqlca_t::@165 sqlerrm
char sqlerrp[8]
Definition: sqlca.h:29
long sqlerrd[6]
Definition: sqlca.h:30
char sqlstate[5]
Definition: sqlca.h:53
char sqlwarn[8]
Definition: sqlca.h:39
long sqlabc
Definition: sqlca.h:22
char sqlcaid[8]
Definition: sqlca.h:21
char sqlerrmc[SQLERRMC_LEN]
Definition: sqlca.h:27
long sqlcode
Definition: sqlca.h:23
int sqlerrml
Definition: sqlca.h:26
static void * fn(void *arg)
Definition: thread-alloc.c:119