Line data Source code
1 : #include "sqltypes.h"
2 : #include <stdlib.h>
3 :
4 : $include ../regression;
5 : $define NUMBER 12;
6 :
7 : static void
8 40 : test_null(int type, char *ptr)
9 : {
10 40 : printf("null: %d\n", risnull(type, ptr));
11 40 : }
12 :
13 2 : int main(void)
14 : {
15 2 : $char c[] = "abc";
16 2 : $short s = 17;
17 2 : $int i = -74874;
18 2 : $bool b = 1;
19 2 : $float f = (float) 3.71;
20 2 : $long l = 487444;
21 2 : $double dbl = 404.404;
22 : $decimal dec;
23 : $date dat;
24 : $timestamp tmp;
25 :
26 2 : ECPGdebug(1, stderr);
27 : $whenever sqlerror do sqlprint();
28 :
29 2 : $connect to REGRESSDB1;
30 2 :
31 2 : $create table test(id int, c char(10), s smallint, i int, b bool,
32 : f float, l bigint, dbl double precision,
33 : dec decimal, dat date, tmp timestamptz);
34 2 : $commit;
35 2 :
36 2 : $insert into test (id, c, s, i, b, f, l, dbl) values (
37 : 1, :c, :s, :i, :b, :f, :l, :dbl
38 : );
39 2 : $commit;
40 2 :
41 2 : rsetnull(CCHARTYPE, (char *) c);
42 2 : rsetnull(CSHORTTYPE, (char *) &s);
43 2 : rsetnull(CINTTYPE, (char *) &i);
44 2 : rsetnull(CBOOLTYPE, (char *) &b);
45 2 : rsetnull(CFLOATTYPE, (char *) &f);
46 2 : rsetnull(CLONGTYPE, (char *) &l);
47 2 : rsetnull(CDOUBLETYPE, (char *) &dbl);
48 2 : rsetnull(CDECIMALTYPE, (char *) &dec);
49 2 : rsetnull(CDATETYPE, (char *) &dat);
50 2 : rsetnull(CDTIMETYPE, (char *) &tmp);
51 :
52 2 : $insert into test (id, c, s, i, b, f, l, dbl, dec, dat, tmp) values (
53 : 2, :c, :s, :i, :b, :f, :l, :dbl, :dec, :dat, :tmp
54 : );
55 2 : $commit;
56 2 :
57 2 : printf("first select\n");
58 :
59 2 : $select c, s, i, b, f, l, dbl, dec, dat, tmp
60 : into :c, :s, :i, :b, :f, :l, :dbl, :dec, :dat, :tmp
61 : from test where id = 1;
62 2 :
63 2 : test_null(CCHARTYPE, (char *) c);
64 2 : test_null(CSHORTTYPE, (char *) &s);
65 2 : test_null(CINTTYPE, (char *) &i);
66 2 : test_null(CBOOLTYPE, (char *) &b);
67 2 : test_null(CFLOATTYPE, (char *) &f);
68 2 : test_null(CLONGTYPE, (char *) &l);
69 2 : test_null(CDOUBLETYPE, (char *) &dbl);
70 2 : test_null(CDECIMALTYPE, (char *) &dec);
71 2 : test_null(CDATETYPE, (char *) &dat);
72 2 : test_null(CDTIMETYPE, (char *) &tmp);
73 :
74 2 : printf("second select\n");
75 :
76 2 : $select c, s, i, b, f, l, dbl, dec, dat, tmp
77 : into :c, :s, :i, :b, :f, :l, :dbl, :dec, :dat, :tmp
78 : from test where id = 2;
79 2 :
80 2 : test_null(CCHARTYPE, (char *) c);
81 2 : test_null(CSHORTTYPE, (char *) &s);
82 2 : test_null(CINTTYPE, (char *) &i);
83 2 : test_null(CBOOLTYPE, (char *) &b);
84 2 : test_null(CFLOATTYPE, (char *) &f);
85 2 : test_null(CLONGTYPE, (char *) &l);
86 2 : test_null(CDOUBLETYPE, (char *) &dbl);
87 2 : test_null(CDECIMALTYPE, (char *) &dec);
88 2 : test_null(CDATETYPE, (char *) &dat);
89 2 : test_null(CDTIMETYPE, (char *) &tmp);
90 :
91 2 : $drop table test;
92 2 : $commit;
93 2 :
94 2 : $close database;
95 2 :
96 2 : return 0;
97 : }
|