summaryrefslogtreecommitdiffstats
path: root/src/interfaces/ecpg/test/sql/define.pgc
blob: 83f328df46865218f44825bcd31eead5aaeeeee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
exec sql include sqlca;
exec sql include ../regression;
exec sql define STR 'abcdef';
exec sql define INSERTNULL 1;
exec sql define NUMBER 29;

int main(void)
{
   exec sql begin declare section;
     int i;
     char s[200];
   exec sql end declare section;

   ECPGdebug(1, stderr);

   exec sql whenever sqlerror do sqlprint();
   exec sql connect to REGRESSDB1;

   exec sql create table test (a int, b text);
   exec sql insert into test values (NUMBER, STR);

   exec sql ifdef INSERTNULL;
   exec sql insert into test values (NULL, 'defined');
   exec sql endif;

   exec sql ifndef INSERTNULL;
   exec sql insert into test values (NULL, 'not defined');
   exec sql elif SOMEOTHERVAR;
   exec sql insert into test values (NULL, 'someothervar defined');
   exec sql else;
   exec sql insert into test values (NULL, 'someothervar not defined');
   exec sql endif;

   exec sql define NUMBER 29;

   exec sql select INSERTNULL, NUMBER::text || '-' || STR INTO :i, :s;

   printf("i: %d, s: %s\n", i, s);

   exec sql undef STR;
   exec sql ifndef STR;
   exec sql insert into test values (NUMBER, 'no string');
   exec sql endif;

   exec sql define TZVAR;  /* no value */
   exec sql define TZVAR 'UTC';

   exec sql ifndef TZVAR;
   exec sql SET TIMEZONE TO 'GMT';
   exec sql elif TZNAME;
   exec sql SET TIMEZONE TO TZNAME;
   exec sql else;
   exec sql SET TIMEZONE TO TZVAR;
   exec sql endif;

   /* test handling of a macro defined on the command line */
   exec sql select CMDLINESYM INTO :i;
   printf("original CMDLINESYM: %d\n", i);

   exec sql define CMDLINESYM 42;

   exec sql select CMDLINESYM INTO :i;
   printf("redefined CMDLINESYM: %d\n", i);

   exec sql define CMDLINESYM 43;

   exec sql select CMDLINESYM INTO :i;
   printf("redefined CMDLINESYM: %d\n", i);

   exec sql undef CMDLINESYM;

   exec sql ifdef CMDLINESYM;
   exec sql insert into test values (NUMBER, 'no string');
   exec sql endif;

   /* this macro should not have carried over from define_prelim.pgc */
   exec sql ifdef NONCMDLINESYM;
   exec sql insert into test values (NUMBER, 'no string');
   exec sql endif;

   exec sql disconnect;
   return 0;
}