PostgreSQL Source Code git master
ecpgtype.h
Go to the documentation of this file.
1/*
2 * This file implements a data structure that is built and maintained by the
3 * preprocessor.
4 *
5 * All types that can be handled for host variable declarations has to
6 * be handled eventually.
7 *
8 * src/interfaces/ecpg/include/ecpgtype.h
9 */
10
11/*
12 * Here are all the types that we are to handle. Note that it is the type
13 * that is registered and that has nothing whatsoever to do with the storage
14 * class.
15 *
16 * Simple types
17 * integers: char, short, int, long (signed and unsigned)
18 * floats: float, double
19 *
20 * Complex types:
21 * VARCHAR, VARCHAR2 - Strings with length (maxlen is given in the declaration)
22 * Arrays of simple types and of VARCHAR, VARCHAR2 (size given in declaration)
23 * Records build of simple types, arrays and other structs.
24 *
25 * Complicating things:
26 * typedefs and struct names!
27 *
28 * Conclusion:
29 * This is a typically recursive definition. A structure of typed list elements
30 * would probably work fine:
31 */
32
33#ifndef _ECPGTYPE_H
34#define _ECPGTYPE_H
35
36#ifdef __cplusplus
37extern "C"
38{
39#endif
40
42{
49 ECPGt_numeric, /* this is a decimal that stores its digits in
50 * a malloced array */
51 ECPGt_decimal, /* this is a decimal that stores its digits in
52 * a fixed array */
59 ECPGt_descriptor, /* sql descriptor, no C variable */
61 ECPGt_const, /* a constant is needed sometimes */
62 ECPGt_EOIT, /* End of insert types. */
63 ECPGt_EORT, /* End of result types. */
64 ECPGt_NO_INDICATOR, /* no indicator */
65 ECPGt_string, /* trimmed (char *) type */
66 ECPGt_sqlda, /* C struct descriptor */
68};
69
70 /* descriptor items */
72{
88 ECPGd_EODT, /* End of descriptor types. */
90};
91
92#define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string) || ((type) == ECPGt_bytea))
93
94/* we also have to handle different statement types */
96{
104
105#ifdef __cplusplus
106}
107#endif
108
109#endif /* _ECPGTYPE_H */
ECPG_statement_type
Definition: ecpgtype.h:96
@ ECPGst_normal
Definition: ecpgtype.h:97
@ ECPGst_execute
Definition: ecpgtype.h:98
@ ECPGst_exec_immediate
Definition: ecpgtype.h:99
@ ECPGst_exec_with_exprlist
Definition: ecpgtype.h:102
@ ECPGst_prepare
Definition: ecpgtype.h:101
@ ECPGst_prepnormal
Definition: ecpgtype.h:100
ECPGttype
Definition: ecpgtype.h:42
@ ECPGt_float
Definition: ecpgtype.h:47
@ ECPGt_EOIT
Definition: ecpgtype.h:62
@ ECPGt_long_long
Definition: ecpgtype.h:45
@ ECPGt_sqlda
Definition: ecpgtype.h:66
@ ECPGt_short
Definition: ecpgtype.h:43
@ ECPGt_decimal
Definition: ecpgtype.h:51
@ ECPGt_char_variable
Definition: ecpgtype.h:60
@ ECPGt_bytea
Definition: ecpgtype.h:67
@ ECPGt_numeric
Definition: ecpgtype.h:49
@ ECPGt_union
Definition: ecpgtype.h:58
@ ECPGt_varchar
Definition: ecpgtype.h:48
@ ECPGt_struct
Definition: ecpgtype.h:57
@ ECPGt_timestamp
Definition: ecpgtype.h:54
@ ECPGt_unsigned_short
Definition: ecpgtype.h:43
@ ECPGt_int
Definition: ecpgtype.h:44
@ ECPGt_long
Definition: ecpgtype.h:44
@ ECPGt_unsigned_char
Definition: ecpgtype.h:43
@ ECPGt_double
Definition: ecpgtype.h:47
@ ECPGt_varchar2
Definition: ecpgtype.h:48
@ ECPGt_array
Definition: ecpgtype.h:56
@ ECPGt_NO_INDICATOR
Definition: ecpgtype.h:64
@ ECPGt_EORT
Definition: ecpgtype.h:63
@ ECPGt_date
Definition: ecpgtype.h:53
@ ECPGt_interval
Definition: ecpgtype.h:55
@ ECPGt_unsigned_long
Definition: ecpgtype.h:44
@ ECPGt_const
Definition: ecpgtype.h:61
@ ECPGt_bool
Definition: ecpgtype.h:46
@ ECPGt_unsigned_long_long
Definition: ecpgtype.h:45
@ ECPGt_unsigned_int
Definition: ecpgtype.h:44
@ ECPGt_descriptor
Definition: ecpgtype.h:59
@ ECPGt_char
Definition: ecpgtype.h:43
@ ECPGt_string
Definition: ecpgtype.h:65
ECPGdtype
Definition: ecpgtype.h:72
@ ECPGd_scale
Definition: ecpgtype.h:86
@ ECPGd_precision
Definition: ecpgtype.h:83
@ ECPGd_length
Definition: ecpgtype.h:79
@ ECPGd_nullable
Definition: ecpgtype.h:81
@ ECPGd_di_precision
Definition: ecpgtype.h:76
@ ECPGd_type
Definition: ecpgtype.h:87
@ ECPGd_cardinality
Definition: ecpgtype.h:89
@ ECPGd_indicator
Definition: ecpgtype.h:77
@ ECPGd_ret_length
Definition: ecpgtype.h:84
@ ECPGd_di_code
Definition: ecpgtype.h:75
@ ECPGd_count
Definition: ecpgtype.h:73
@ ECPGd_name
Definition: ecpgtype.h:80
@ ECPGd_key_member
Definition: ecpgtype.h:78
@ ECPGd_EODT
Definition: ecpgtype.h:88
@ ECPGd_octet
Definition: ecpgtype.h:82
@ ECPGd_ret_octet
Definition: ecpgtype.h:85
@ ECPGd_data
Definition: ecpgtype.h:74