Age Owner Branch data TLA Line data Source code
1 : : /* src/interfaces/ecpg/ecpglib/typename.c */
2 : :
3 : : #define POSTGRES_ECPG_INTERNAL
4 : : #include "postgres_fe.h"
5 : :
6 : : #include "catalog/pg_type_d.h"
7 : : #include "ecpglib.h"
8 : : #include "ecpglib_extern.h"
9 : : #include "ecpgtype.h"
10 : : #include "sql3types.h"
11 : : #include "sqltypes.h"
12 : :
13 : : /*
14 : : * This function is used to generate the correct type names.
15 : : */
16 : : const char *
6038 meskes@postgresql.or 17 :CBC 533 : ecpg_type_name(enum ECPGttype typ)
18 : : {
7700 19 [ + - + - : 533 : switch (typ)
+ - + - -
- + + + +
+ - + - -
- - - - ]
20 : : {
21 : 104 : case ECPGt_char:
22 : : case ECPGt_string:
23 : 104 : return "char";
7700 meskes@postgresql.or 24 :UBC 0 : case ECPGt_unsigned_char:
25 : 0 : return "unsigned char";
7700 meskes@postgresql.or 26 :CBC 45 : case ECPGt_short:
27 : 45 : return "short";
7700 meskes@postgresql.or 28 :UBC 0 : case ECPGt_unsigned_short:
29 : 0 : return "unsigned short";
7700 meskes@postgresql.or 30 :CBC 315 : case ECPGt_int:
31 : 315 : return "int";
7700 meskes@postgresql.or 32 :UBC 0 : case ECPGt_unsigned_int:
33 : 0 : return "unsigned int";
7700 meskes@postgresql.or 34 :CBC 21 : case ECPGt_long:
35 : 21 : return "long";
7700 meskes@postgresql.or 36 :UBC 0 : case ECPGt_unsigned_long:
37 : 0 : return "unsigned long";
38 : 0 : case ECPGt_long_long:
39 : 0 : return "long long";
40 : 0 : case ECPGt_unsigned_long_long:
41 : 0 : return "unsigned long long";
7700 meskes@postgresql.or 42 :CBC 6 : case ECPGt_float:
43 : 6 : return "float";
44 : 17 : case ECPGt_double:
45 : 17 : return "double";
46 : 17 : case ECPGt_bool:
47 : 17 : return "bool";
48 : 1 : case ECPGt_varchar:
49 : 1 : return "varchar";
1882 50 : 1 : case ECPGt_bytea:
51 : 1 : return "bytea";
7700 meskes@postgresql.or 52 :UBC 0 : case ECPGt_char_variable:
53 : 0 : return "char";
7593 meskes@postgresql.or 54 :CBC 6 : case ECPGt_decimal:
7523 55 : 6 : return "decimal";
7700 meskes@postgresql.or 56 :UBC 0 : case ECPGt_numeric:
7523 57 : 0 : return "numeric";
7696 58 : 0 : case ECPGt_date:
7523 59 : 0 : return "date";
7696 60 : 0 : case ECPGt_timestamp:
7523 61 : 0 : return "timestamp";
7689 62 : 0 : case ECPGt_interval:
7523 63 : 0 : return "interval";
7604 64 : 0 : case ECPGt_const:
65 : 0 : return "Const";
7700 66 : 0 : default:
67 : 0 : abort();
68 : : }
69 : : return ""; /* keep MSC compiler happy */
70 : : }
71 : :
72 : : int
6038 meskes@postgresql.or 73 :CBC 38 : ecpg_dynamic_type(Oid type)
74 : : {
7700 75 [ + - + + : 38 : switch (type)
- + + - +
- - - + ]
76 : : {
77 : 4 : case BOOLOID:
78 : 4 : return SQL3_BOOLEAN; /* bool */
7700 meskes@postgresql.or 79 :UBC 0 : case INT2OID:
2489 tgl@sss.pgh.pa.us 80 : 0 : return SQL3_SMALLINT; /* int2 */
7700 meskes@postgresql.or 81 :CBC 4 : case INT4OID:
82 : 4 : return SQL3_INTEGER; /* int4 */
83 : 4 : case TEXTOID:
2489 tgl@sss.pgh.pa.us 84 : 4 : return SQL3_CHARACTER; /* text */
7700 meskes@postgresql.or 85 :UBC 0 : case FLOAT4OID:
86 : 0 : return SQL3_REAL; /* float4 */
7700 meskes@postgresql.or 87 :CBC 4 : case FLOAT8OID:
2489 tgl@sss.pgh.pa.us 88 : 4 : return SQL3_DOUBLE_PRECISION; /* float8 */
7700 meskes@postgresql.or 89 : 4 : case BPCHAROID:
2489 tgl@sss.pgh.pa.us 90 : 4 : return SQL3_CHARACTER; /* bpchar */
7700 meskes@postgresql.or 91 :UBC 0 : case VARCHAROID:
2489 tgl@sss.pgh.pa.us 92 : 0 : return SQL3_CHARACTER_VARYING; /* varchar */
7700 meskes@postgresql.or 93 :CBC 4 : case DATEOID:
94 : 4 : return SQL3_DATE_TIME_TIMESTAMP; /* date */
7700 meskes@postgresql.or 95 :UBC 0 : case TIMEOID:
96 : 0 : return SQL3_DATE_TIME_TIMESTAMP; /* time */
97 : 0 : case TIMESTAMPOID:
98 : 0 : return SQL3_DATE_TIME_TIMESTAMP; /* datetime */
99 : 0 : case NUMERICOID:
100 : 0 : return SQL3_NUMERIC; /* numeric */
7700 meskes@postgresql.or 101 :CBC 14 : default:
5205 102 : 14 : return 0;
103 : : }
104 : : }
105 : :
106 : : int
5213 107 : 252 : sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat)
108 : : {
109 [ + - + + : 252 : switch (type)
- + - - -
+ - ]
110 : : {
111 : 94 : case CHAROID:
112 : : case VARCHAROID:
113 : : case BPCHAROID:
114 : : case TEXTOID:
115 : 94 : return ECPGt_char;
5213 meskes@postgresql.or 116 :UBC 0 : case INT2OID:
117 : 0 : return ECPGt_short;
5213 meskes@postgresql.or 118 :CBC 52 : case INT4OID:
119 : 52 : return ECPGt_int;
120 : 40 : case FLOAT8OID:
121 : 40 : return ECPGt_double;
5213 meskes@postgresql.or 122 :UBC 0 : case FLOAT4OID:
123 : 0 : return ECPGt_float;
5213 meskes@postgresql.or 124 :CBC 42 : case NUMERICOID:
125 [ + + - + ]: 42 : return INFORMIX_MODE(compat) ? ECPGt_decimal : ECPGt_numeric;
5213 meskes@postgresql.or 126 :UBC 0 : case DATEOID:
127 : 0 : return ECPGt_date;
128 : 0 : case TIMESTAMPOID:
129 : : case TIMESTAMPTZOID:
130 : 0 : return ECPGt_timestamp;
131 : 0 : case INTERVALOID:
132 : 0 : return ECPGt_interval;
5213 meskes@postgresql.or 133 :CBC 24 : case INT8OID:
134 : : #ifdef HAVE_LONG_LONG_INT_64
135 : : return ECPGt_long_long;
136 : : #endif
137 : : #ifdef HAVE_LONG_INT_64
138 : 24 : return ECPGt_long;
139 : : #endif
140 : : /* Unhandled types always return a string */
5213 meskes@postgresql.or 141 :UBC 0 : default:
5205 142 : 0 : return ECPGt_char;
143 : : }
144 : : }
|