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