diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 13:44:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 13:44:03 +0000 |
commit | 293913568e6a7a86fd1479e1cff8e2ecb58d6568 (patch) | |
tree | fc3b469a3ec5ab71b36ea97cc7aaddb838423a0c /src/interfaces/ecpg/test/expected/preproc-outofscope.c | |
parent | Initial commit. (diff) | |
download | postgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.tar.xz postgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.zip |
Adding upstream version 16.2.upstream/16.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/interfaces/ecpg/test/expected/preproc-outofscope.c')
-rw-r--r-- | src/interfaces/ecpg/test/expected/preproc-outofscope.c | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/test/expected/preproc-outofscope.c b/src/interfaces/ecpg/test/expected/preproc-outofscope.c new file mode 100644 index 0000000..a040a69 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/preproc-outofscope.c @@ -0,0 +1,372 @@ +/* Processed by ecpg (regression mode) */ +/* These include files are added by the preprocessor */ +#include <ecpglib.h> +#include <ecpgerrno.h> +#include <sqlca.h> +/* End of automatic include section */ +#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) + +#line 1 "outofscope.pgc" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <limits.h> + + +#line 1 "regression.h" + + + + + + +#line 6 "outofscope.pgc" + + + +#line 1 "pgtypes_numeric.h" +#ifndef PGTYPES_NUMERIC +#define PGTYPES_NUMERIC + +#include <pgtypes.h> + +#define NUMERIC_POS 0x0000 +#define NUMERIC_NEG 0x4000 +#define NUMERIC_NAN 0xC000 +#define NUMERIC_NULL 0xF000 +#define NUMERIC_MAX_PRECISION 1000 +#define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION +#define NUMERIC_MIN_DISPLAY_SCALE 0 +#define NUMERIC_MIN_SIG_DIGITS 16 + +#define DECSIZE 30 + +typedef unsigned char NumericDigit; +typedef struct +{ + int ndigits; /* number of digits in digits[] - can be 0! */ + int weight; /* weight of first digit */ + int rscale; /* result scale */ + int dscale; /* display scale */ + int sign; /* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */ + NumericDigit *buf; /* start of alloc'd space for digits[] */ + NumericDigit *digits; /* decimal digits */ +} numeric; + +typedef struct +{ + int ndigits; /* number of digits in digits[] - can be 0! */ + int weight; /* weight of first digit */ + int rscale; /* result scale */ + int dscale; /* display scale */ + int sign; /* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */ + NumericDigit digits[DECSIZE]; /* decimal digits */ +} decimal; + +#ifdef __cplusplus +extern "C" +{ +#endif + +numeric *PGTYPESnumeric_new(void); +decimal *PGTYPESdecimal_new(void); +void PGTYPESnumeric_free(numeric *var); +void PGTYPESdecimal_free(decimal *var); +numeric *PGTYPESnumeric_from_asc(char *str, char **endptr); +char *PGTYPESnumeric_to_asc(numeric *num, int dscale); +int PGTYPESnumeric_add(numeric *var1, numeric *var2, numeric *result); +int PGTYPESnumeric_sub(numeric *var1, numeric *var2, numeric *result); +int PGTYPESnumeric_mul(numeric *var1, numeric *var2, numeric *result); +int PGTYPESnumeric_div(numeric *var1, numeric *var2, numeric *result); +int PGTYPESnumeric_cmp(numeric *var1, numeric *var2); +int PGTYPESnumeric_from_int(signed int int_val, numeric *var); +int PGTYPESnumeric_from_long(signed long int long_val, numeric *var); +int PGTYPESnumeric_copy(numeric *src, numeric *dst); +int PGTYPESnumeric_from_double(double d, numeric *dst); +int PGTYPESnumeric_to_double(numeric *nv, double *dp); +int PGTYPESnumeric_to_int(numeric *nv, int *ip); +int PGTYPESnumeric_to_long(numeric *nv, long *lp); +int PGTYPESnumeric_to_decimal(numeric *src, decimal *dst); +int PGTYPESnumeric_from_decimal(decimal *src, numeric *dst); + +#ifdef __cplusplus +} +#endif + +#endif /* PGTYPES_NUMERIC */ + +#line 8 "outofscope.pgc" + + +/* exec sql begin declare section */ + +#line 1 "struct.h" + + + + + /* dec_t */ + + + + typedef struct mytype MYTYPE ; + +#line 9 "struct.h" + + + + + + + + + + + typedef struct mynulltype MYNULLTYPE ; + +#line 19 "struct.h" + + +#line 11 "outofscope.pgc" + +struct mytype { +#line 3 "struct.h" + int id ; + +#line 4 "struct.h" + char t [ 64 ] ; + +#line 5 "struct.h" + double d1 ; + +#line 6 "struct.h" + double d2 ; + +#line 7 "struct.h" + char c [ 30 ] ; + } ; struct mynulltype { +#line 13 "struct.h" + int id ; + +#line 14 "struct.h" + int t ; + +#line 15 "struct.h" + int d1 ; + +#line 16 "struct.h" + int d2 ; + +#line 17 "struct.h" + int c ; + } ;/* exec sql end declare section */ +#line 12 "outofscope.pgc" + + +/* exec sql whenever sqlerror stop ; */ +#line 14 "outofscope.pgc" + + +/* Functions for test 1 */ + +static void +get_var1(MYTYPE **myvar0, MYNULLTYPE **mynullvar0) +{ + /* exec sql begin declare section */ + + + +#line 22 "outofscope.pgc" + MYTYPE * myvar = malloc ( sizeof ( MYTYPE ) ) ; + +#line 23 "outofscope.pgc" + MYNULLTYPE * mynullvar = malloc ( sizeof ( MYNULLTYPE ) ) ; +/* exec sql end declare section */ +#line 24 "outofscope.pgc" + + + /* Test DECLARE ... SELECT ... INTO with pointers */ + + ECPGset_var( 0, ( myvar ), __LINE__);\ + ECPGset_var( 1, ( mynullvar ), __LINE__);\ + /* declare mycur cursor for select * from a1 */ +#line 28 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1); +#line 28 "outofscope.pgc" + +#line 28 "outofscope.pgc" + + + if (sqlca.sqlcode != 0) + exit(1); + + *myvar0 = myvar; + *mynullvar0 = mynullvar; +} + +static void +open_cur1(void) +{ + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare mycur cursor for select * from a1", ECPGt_EOIT, + ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof( struct mynulltype ), ECPGt_EORT); +#line 40 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 40 "outofscope.pgc" + +} + +static void +get_record1(void) +{ + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch mycur", ECPGt_EOIT, + ECPGt_int,&((*( MYTYPE *)(ECPGget_var( 0)) ).id),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).id),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).t),(long)64,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).t),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d1),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d1),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_double,&((*( MYTYPE *)(ECPGget_var( 0)) ).d2),(long)1,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).d2),(long)1,(long)1,sizeof( struct mynulltype ), + ECPGt_char,&((*( MYTYPE *)(ECPGget_var( 0)) ).c),(long)30,(long)1,sizeof( struct mytype ), + ECPGt_int,&((*( MYNULLTYPE *)(ECPGget_var( 1)) ).c),(long)1,(long)1,sizeof( struct mynulltype ), ECPGt_EORT); +#line 46 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 46 "outofscope.pgc" + +} + +static void +close_cur1(void) +{ + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close mycur", ECPGt_EOIT, ECPGt_EORT); +#line 52 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 52 "outofscope.pgc" + +} + +int +main (void) +{ + MYTYPE *myvar; + MYNULLTYPE *mynullvar; + int loopcount; + char msg[128]; + + ECPGdebug(1, stderr); + + strcpy(msg, "connect"); + { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); +#line 66 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 66 "outofscope.pgc" + + + strcpy(msg, "set"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT); +#line 69 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 69 "outofscope.pgc" + + + strcpy(msg, "create"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table a1 ( id serial primary key , t text , d1 numeric , d2 float8 , c character ( 10 ) )", ECPGt_EOIT, ECPGt_EORT); +#line 72 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 72 "outofscope.pgc" + + + strcpy(msg, "insert"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into a1 ( id , t , d1 , d2 , c ) values ( default , 'a' , 1.0 , 2 , 'a' )", ECPGt_EOIT, ECPGt_EORT); +#line 75 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 75 "outofscope.pgc" + + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into a1 ( id , t , d1 , d2 , c ) values ( default , null , null , null , null )", ECPGt_EOIT, ECPGt_EORT); +#line 76 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 76 "outofscope.pgc" + + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into a1 ( id , t , d1 , d2 , c ) values ( default , 'b' , 2.0 , 3 , 'b' )", ECPGt_EOIT, ECPGt_EORT); +#line 77 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 77 "outofscope.pgc" + + + strcpy(msg, "commit"); + { ECPGtrans(__LINE__, NULL, "commit"); +#line 80 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 80 "outofscope.pgc" + + + /* Test out-of-scope DECLARE/OPEN/FETCH/CLOSE */ + + get_var1(&myvar, &mynullvar); + open_cur1(); + + for (loopcount = 0; loopcount < 100; loopcount++) + { + memset(myvar, 0, sizeof(MYTYPE)); + get_record1(); + if (sqlca.sqlcode == ECPG_NOT_FOUND) + break; + printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n", + myvar->id, mynullvar->id ? " (NULL)" : "", + myvar->t, mynullvar->t ? " (NULL)" : "", + myvar->d1, mynullvar->d1 ? " (NULL)" : "", + myvar->d2, mynullvar->d2 ? " (NULL)" : "", + myvar->c, mynullvar->c ? " (NULL)" : ""); + } + + close_cur1(); + + free(myvar); + free(mynullvar); + + strcpy(msg, "drop"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table a1", ECPGt_EOIT, ECPGt_EORT); +#line 107 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 107 "outofscope.pgc" + + + strcpy(msg, "commit"); + { ECPGtrans(__LINE__, NULL, "commit"); +#line 110 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 110 "outofscope.pgc" + + + strcpy(msg, "disconnect"); + { ECPGdisconnect(__LINE__, "CURRENT"); +#line 113 "outofscope.pgc" + +if (sqlca.sqlcode < 0) exit (1);} +#line 113 "outofscope.pgc" + + + return 0; +} |