PostgreSQL Source Code  git master
typename.c
Go to the documentation of this file.
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 *
18 {
19  switch (typ)
20  {
21  case ECPGt_char:
22  case ECPGt_string:
23  return "char";
25  return "unsigned char";
26  case ECPGt_short:
27  return "short";
29  return "unsigned short";
30  case ECPGt_int:
31  return "int";
32  case ECPGt_unsigned_int:
33  return "unsigned int";
34  case ECPGt_long:
35  return "long";
37  return "unsigned long";
38  case ECPGt_long_long:
39  return "long long";
41  return "unsigned long long";
42  case ECPGt_float:
43  return "float";
44  case ECPGt_double:
45  return "double";
46  case ECPGt_bool:
47  return "bool";
48  case ECPGt_varchar:
49  return "varchar";
50  case ECPGt_bytea:
51  return "bytea";
53  return "char";
54  case ECPGt_decimal:
55  return "decimal";
56  case ECPGt_numeric:
57  return "numeric";
58  case ECPGt_date:
59  return "date";
60  case ECPGt_timestamp:
61  return "timestamp";
62  case ECPGt_interval:
63  return "interval";
64  case ECPGt_const:
65  return "Const";
66  default:
67  abort();
68  }
69  return ""; /* keep MSC compiler happy */
70 }
71 
72 int
74 {
75  switch (type)
76  {
77  case BOOLOID:
78  return SQL3_BOOLEAN; /* bool */
79  case INT2OID:
80  return SQL3_SMALLINT; /* int2 */
81  case INT4OID:
82  return SQL3_INTEGER; /* int4 */
83  case TEXTOID:
84  return SQL3_CHARACTER; /* text */
85  case FLOAT4OID:
86  return SQL3_REAL; /* float4 */
87  case FLOAT8OID:
88  return SQL3_DOUBLE_PRECISION; /* float8 */
89  case BPCHAROID:
90  return SQL3_CHARACTER; /* bpchar */
91  case VARCHAROID:
92  return SQL3_CHARACTER_VARYING; /* varchar */
93  case DATEOID:
94  return SQL3_DATE_TIME_TIMESTAMP; /* date */
95  case TIMEOID:
96  return SQL3_DATE_TIME_TIMESTAMP; /* time */
97  case TIMESTAMPOID:
98  return SQL3_DATE_TIME_TIMESTAMP; /* datetime */
99  case NUMERICOID:
100  return SQL3_NUMERIC; /* numeric */
101  default:
102  return 0;
103  }
104 }
105 
106 int
108 {
109  switch (type)
110  {
111  case CHAROID:
112  case VARCHAROID:
113  case BPCHAROID:
114  case TEXTOID:
115  return ECPGt_char;
116  case INT2OID:
117  return ECPGt_short;
118  case INT4OID:
119  return ECPGt_int;
120  case FLOAT8OID:
121  return ECPGt_double;
122  case FLOAT4OID:
123  return ECPGt_float;
124  case NUMERICOID:
126  case DATEOID:
127  return ECPGt_date;
128  case TIMESTAMPOID:
129  case TIMESTAMPTZOID:
130  return ECPGt_timestamp;
131  case INTERVALOID:
132  return ECPGt_interval;
133  case INT8OID:
134 #ifdef HAVE_LONG_LONG_INT_64
135  return ECPGt_long_long;
136 #endif
137 #ifdef HAVE_LONG_INT_64
138  return ECPGt_long;
139 #endif
140  /* Unhandled types always return a string */
141  default:
142  return ECPGt_char;
143  }
144 }
enum COMPAT_MODE compat
Definition: ecpg.c:25
COMPAT_MODE
#define INFORMIX_MODE(X)
ECPGttype
Definition: ecpgtype.h:42
@ ECPGt_float
Definition: ecpgtype.h:47
@ ECPGt_long_long
Definition: ecpgtype.h:45
@ 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_varchar
Definition: ecpgtype.h:48
@ 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_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_char
Definition: ecpgtype.h:43
@ ECPGt_string
Definition: ecpgtype.h:65
unsigned int Oid
Definition: postgres_ext.h:31
@ SQL3_DATE_TIME_TIMESTAMP
Definition: sql3types.h:18
@ SQL3_INTEGER
Definition: sql3types.h:13
@ SQL3_BOOLEAN
Definition: sql3types.h:24
@ SQL3_CHARACTER_VARYING
Definition: sql3types.h:20
@ SQL3_SMALLINT
Definition: sql3types.h:14
@ SQL3_DOUBLE_PRECISION
Definition: sql3types.h:17
@ SQL3_NUMERIC
Definition: sql3types.h:11
@ SQL3_CHARACTER
Definition: sql3types.h:10
@ SQL3_REAL
Definition: sql3types.h:16
const char * ecpg_type_name(enum ECPGttype typ)
Definition: typename.c:17
int sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat)
Definition: typename.c:107
int ecpg_dynamic_type(Oid type)
Definition: typename.c:73
const char * type