#include <ecpglib.h>#include <ecpgerrno.h>#include <sqlca.h>#include <ecpg_informix.h>#include <stdio.h>#include <stdlib.h>#include "sqltypes.h"
Go to the source code of this file.
Data Structures | |
| struct | sqlca_t |
Defines | |
| #define | ECPGdebug(X, Y) ECPGdebug((X)+100,(Y)) |
| #define | PGDLLIMPORT |
| #define | SQLERRMC_LEN 150 |
| #define | sqlca (*ECPGget_sqlca()) |
Functions | |
| struct sqlca_t * | ECPGget_sqlca (void) |
| static void | sql_check (char *fn, char *caller, int ignore) |
| int | main (void) |
| #define ECPGdebug | ( | X, | ||
| Y | ||||
| ) | ECPGdebug((X)+100,(Y)) |
Definition at line 9 of file compat_informix-test_informix2.c.
| #define PGDLLIMPORT |
Definition at line 25 of file compat_informix-test_informix2.c.
| #define sqlca (*ECPGget_sqlca()) |
Definition at line 76 of file compat_informix-test_informix2.c.
Referenced by main(), and sql_check().
| #define SQLERRMC_LEN 150 |
Definition at line 29 of file compat_informix-test_informix2.c.
| struct sqlca_t* ECPGget_sqlca | ( | void | ) | [read] |
Definition at line 135 of file misc.c.
{
#ifdef ENABLE_THREAD_SAFETY
struct sqlca_t *sqlca;
pthread_once(&sqlca_key_once, ecpg_sqlca_key_init);
sqlca = pthread_getspecific(sqlca_key);
if (sqlca == NULL)
{
sqlca = malloc(sizeof(struct sqlca_t));
ecpg_init_sqlca(sqlca);
pthread_setspecific(sqlca_key, sqlca);
}
return (sqlca);
#else
return (&sqlca);
#endif
}
| int main | ( | void | ) |
Definition at line 138 of file compat_informix-test_informix2.c.
References ECPGconnect(), ECPGdebug, ECPGdisconnect(), ECPGdo(), ECPGst_normal, ECPGt_EOIT, ECPGt_EORT, ECPGt_int, ECPGt_NO_INDICATOR, ECPGt_timestamp, ECPGtrans(), free, NULL, PGTYPESinterval_from_asc(), PGTYPEStimestamp_add_interval(), sql_check(), sqlca, and sqlprint().
{
/* exec sql begin declare section */
#line 49 "test_informix2.pgc"
int c ;
#line 50 "test_informix2.pgc"
timestamp d ;
#line 51 "test_informix2.pgc"
timestamp e ;
#line 52 "test_informix2.pgc"
timestamp maxd ;
#line 53 "test_informix2.pgc"
char dbname [ 30 ] ;
/* exec sql end declare section */
#line 54 "test_informix2.pgc"
interval *intvl;
/* exec sql whenever sqlerror sqlprint ; */
#line 58 "test_informix2.pgc"
ECPGdebug(1, stderr);
strcpy(dbname, "regress1");
{ ECPGconnect(__LINE__, 1, dbname , NULL, NULL , NULL, 0);
#line 63 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 63 "test_informix2.pgc"
sql_check("main", "connect", 0);
{ ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "set DateStyle to 'DMY'", ECPGt_EOIT, ECPGt_EORT);
#line 66 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 66 "test_informix2.pgc"
{ 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);
#line 68 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 68 "test_informix2.pgc"
sql_check("main", "create", 0);
{ 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);
#line 73 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 73 "test_informix2.pgc"
sql_check("main", "insert", 0);
{ ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select max ( timestamp ) from history", ECPGt_EOIT,
ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 78 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 78 "test_informix2.pgc"
sql_check("main", "select max", 100);
{ ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select customerid , timestamp from history where timestamp = $1 limit 1",
ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(c),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_timestamp,&(d),(long)1,(long)1,sizeof(timestamp),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 85 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 85 "test_informix2.pgc"
sql_check("main", "select", 0);
printf("Read in customer %d\n", c);
intvl = PGTYPESinterval_from_asc("1 day 2 hours 24 minutes 65 seconds", NULL);
PGTYPEStimestamp_add_interval(&d, intvl, &e);
free(intvl);
c++;
{ ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into history ( customerid , timestamp , action_taken , narrative ) values ( $1 , $2 , 'test' , 'test' )",
ECPGt_int,&(c),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_timestamp,&(e),(long)1,(long)1,sizeof(timestamp),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
#line 97 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 97 "test_informix2.pgc"
sql_check("main", "update", 0);
{ ECPGtrans(__LINE__, NULL, "commit");
#line 100 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 100 "test_informix2.pgc"
{ ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "drop table history", ECPGt_EOIT, ECPGt_EORT);
#line 102 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 102 "test_informix2.pgc"
sql_check("main", "drop", 0);
{ ECPGtrans(__LINE__, NULL, "commit");
#line 105 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 105 "test_informix2.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");
#line 107 "test_informix2.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 107 "test_informix2.pgc"
sql_check("main", "disconnect", 0);
printf("All OK!\n");
exit(0);
/*
Table "public.history"
Column | Type | Modifiers
--------------+-----------------------------+-----------
customerid | integer | not null
timestamp | timestamp without time zone | not null
action_taken | character(5) | not null
narrative | character varying(100) |
*/
}
| static void sql_check | ( | char * | fn, | |
| char * | caller, | |||
| int | ignore | |||
| ) | [static] |
Definition at line 100 of file compat_informix-test_informix2.c.
References ECPGtrans(), NULL, sqlca, and SQLCODE.
Referenced by main().
{
char errorstring[255];
if (SQLCODE == ignore)
return;
else
{
if (SQLCODE != 0)
{
sprintf(errorstring, "**SQL error %ld doing '%s' in function '%s'. [%s]",
SQLCODE, caller, fn, sqlca.sqlerrm.sqlerrmc);
fprintf(stderr, "%s", errorstring);
printf("%s\n", errorstring);
/* attempt a ROLLBACK */
{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 27 "test_informix2.pgc"
if (SQLCODE == 0)
{
sprintf(errorstring, "Rollback successful.\n");
} else {
sprintf(errorstring, "Rollback failed with code %ld.\n", SQLCODE);
}
fprintf(stderr, "%s", errorstring);
printf("%s\n", errorstring);
exit(1);
}
}
}
1.7.1