Age Owner 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 * 5667 meskes 17 UBC 0 : ecpg_type_name(enum ECPGttype typ) 18 : { 7329 19 0 : switch (typ) 20 : { 21 0 : case ECPGt_char: 22 : case ECPGt_string: 23 0 : return "char"; 24 0 : case ECPGt_unsigned_char: 25 0 : return "unsigned char"; 26 0 : case ECPGt_short: 27 0 : return "short"; 28 0 : case ECPGt_unsigned_short: 29 0 : return "unsigned short"; 30 0 : case ECPGt_int: 31 0 : return "int"; 32 0 : case ECPGt_unsigned_int: 33 0 : return "unsigned int"; 34 0 : case ECPGt_long: 35 0 : return "long"; 36 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"; 42 0 : case ECPGt_float: 43 0 : return "float"; 44 0 : case ECPGt_double: 45 0 : return "double"; 46 0 : case ECPGt_bool: 47 0 : return "bool"; 48 0 : case ECPGt_varchar: 49 0 : return "varchar"; 1511 50 0 : case ECPGt_bytea: 51 0 : return "bytea"; 7329 52 0 : case ECPGt_char_variable: 53 0 : return "char"; 7222 54 0 : case ECPGt_decimal: 7152 55 0 : return "decimal"; 7329 56 0 : case ECPGt_numeric: 7152 57 0 : return "numeric"; 7325 58 0 : case ECPGt_date: 7152 59 0 : return "date"; 7325 60 0 : case ECPGt_timestamp: 7152 61 0 : return "timestamp"; 7318 62 0 : case ECPGt_interval: 7152 63 0 : return "interval"; 7233 64 0 : case ECPGt_const: 65 0 : return "Const"; 7329 66 0 : default: 67 0 : abort(); 68 : } 69 : return ""; /* keep MSC compiler happy */ 70 : } 71 : 72 : int 5667 meskes 73 CBC 38 : ecpg_dynamic_type(Oid type) 74 : { 7329 75 38 : switch (type) 76 : { 77 4 : case BOOLOID: 78 4 : return SQL3_BOOLEAN; /* bool */ 7329 meskes 79 UBC 0 : case INT2OID: 2118 tgl 80 0 : return SQL3_SMALLINT; /* int2 */ 7329 meskes 81 CBC 4 : case INT4OID: 82 4 : return SQL3_INTEGER; /* int4 */ 83 4 : case TEXTOID: 2118 tgl 84 4 : return SQL3_CHARACTER; /* text */ 7329 meskes 85 UBC 0 : case FLOAT4OID: 86 0 : return SQL3_REAL; /* float4 */ 7329 meskes 87 CBC 4 : case FLOAT8OID: 2118 tgl 88 4 : return SQL3_DOUBLE_PRECISION; /* float8 */ 7329 meskes 89 4 : case BPCHAROID: 2118 tgl 90 4 : return SQL3_CHARACTER; /* bpchar */ 7329 meskes 91 UBC 0 : case VARCHAROID: 2118 tgl 92 0 : return SQL3_CHARACTER_VARYING; /* varchar */ 7329 meskes 93 CBC 4 : case DATEOID: 94 4 : return SQL3_DATE_TIME_TIMESTAMP; /* date */ 7329 meskes 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 */ 7329 meskes 101 CBC 14 : default: 4834 102 14 : return 0; 103 : } 104 : } 105 : 106 : int 4842 107 248 : sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat) 108 : { 109 248 : switch (type) 110 : { 111 92 : case CHAROID: 112 : case VARCHAROID: 113 : case BPCHAROID: 114 : case TEXTOID: 115 92 : return ECPGt_char; 4842 meskes 116 UBC 0 : case INT2OID: 117 0 : return ECPGt_short; 4842 meskes 118 CBC 52 : case INT4OID: 119 52 : return ECPGt_int; 120 40 : case FLOAT8OID: 121 40 : return ECPGt_double; 4842 meskes 122 UBC 0 : case FLOAT4OID: 123 0 : return ECPGt_float; 4842 meskes 124 CBC 40 : case NUMERICOID: 125 40 : return INFORMIX_MODE(compat) ? ECPGt_decimal : ECPGt_numeric; 4842 meskes 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; 4842 meskes 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 */ 4842 meskes 141 UBC 0 : default: 4834 142 0 : return ECPGt_char; 143 : } 144 : }