1 /** 2 * PostgreSQL major types oids. 3 * 4 * Copyright: © 2014 DSoftOut 5 * Authors: NCrashed <ncrashed@gmail.com> 6 */ 7 8 module dpq2.oids; 9 10 import derelict.pq.pq: Oid; 11 12 package OidType oid2oidType(Oid oid) pure 13 { 14 return cast(OidType)(oid); 15 } 16 17 bool isNativeInteger(OidType t) pure 18 { 19 with(OidType) 20 switch(t) 21 { 22 case Int8: 23 case Int2: 24 case Int4: 25 return true; 26 default: 27 break; 28 } 29 30 return false; 31 } 32 33 bool isNativeFloat(OidType t) pure 34 { 35 with(OidType) 36 switch(t) 37 { 38 case Float4: 39 case Float8: 40 return true; 41 default: 42 break; 43 } 44 45 return false; 46 } 47 48 bool isSupportedArray(OidType t) pure 49 { 50 with(OidType) 51 switch(t) 52 { 53 case BoolArray: 54 case ByteArrayArray: 55 case CharArray: 56 case Int2Array: 57 case Int4Array: 58 case TextArray: 59 case Int8Array: 60 case Float4Array: 61 case Float8Array: 62 case TimeStampArray: 63 case DateArray: 64 case TimeArray: 65 case NumericArray: 66 case UUIDArray: 67 case JsonArray: 68 //case JsonbArray: 69 return true; 70 default: 71 break; 72 } 73 74 return false; 75 } 76 77 enum OidType : Oid 78 { 79 Bool = 16, 80 ByteArray = 17, 81 Char = 18, 82 Name = 19, 83 Int8 = 20, 84 Int2 = 21, 85 Int2Vector = 22, 86 Int4 = 23, 87 RegProc = 24, 88 Text = 25, 89 Oid = 26, 90 Tid = 27, 91 Xid = 28, 92 Cid = 29, 93 OidVector = 30, 94 95 AccessControlList = 1033, 96 TypeCatalog = 71, 97 AttributeCatalog = 75, 98 ProcCatalog = 81, 99 ClassCatalog = 83, 100 101 Json = 114, 102 Jsonb = 3802, 103 Xml = 142, 104 NodeTree = 194, 105 StorageManager = 210, 106 107 Point = 600, 108 LineSegment = 601, 109 Path = 602, 110 Box = 603, 111 Polygon = 604, 112 Line = 628, 113 114 Float4 = 700, 115 Float8 = 701, 116 AbsTime = 702, 117 RelTime = 703, 118 Interval = 704, 119 Unknown = 705, 120 121 Circle = 718, 122 Money = 790, 123 MacAddress = 829, 124 HostAddress = 869, 125 NetworkAddress = 650, 126 127 FixedString = 1042, 128 VariableString = 1043, 129 130 Date = 1082, 131 Time = 1083, 132 TimeStamp = 1114, 133 TimeStampWithZone = 1184, 134 TimeInterval = 1186, 135 TimeWithZone = 1266, 136 137 FixedBitString = 1560, 138 VariableBitString = 1562, 139 140 Numeric = 1700, 141 RefCursor = 1790, 142 RegProcWithArgs = 2202, 143 RegOperator = 2203, 144 RegOperatorWithArgs = 2204, 145 RegClass = 2205, 146 RegType = 2206, 147 148 UUID = 2950, 149 TSVector = 3614, 150 GTSVector = 3642, 151 TSQuery = 3615, 152 RegConfig = 3734, 153 RegDictionary = 3769, 154 TXidSnapshot = 2970, 155 156 Int4Range = 3904, 157 NumRange = 3906, 158 TimeStampRange = 3908, 159 TimeStampWithZoneRange = 3910, 160 DateRange = 3912, 161 Int8Range = 3926, 162 163 // Arrays 164 XmlArray = 143, 165 JsonArray = 3807, 166 JsonbArray = 199, 167 BoolArray = 1000, 168 ByteArrayArray = 1001, 169 CharArray = 1002, 170 NameArray = 1003, 171 Int2Array = 1005, 172 Int2VectorArray = 1006, 173 Int4Array = 1007, 174 RegProcArray = 1008, 175 TextArray = 1009, 176 OidArray = 1028, 177 TidArray = 1010, 178 XidArray = 1011, 179 CidArray = 1012, 180 OidVectorArray = 1013, 181 FixedStringArray = 1014, 182 VariableStringArray = 1015, 183 Int8Array = 1016, 184 PointArray = 1017, 185 LineSegmentArray = 1018, 186 PathArray = 1019, 187 BoxArray = 1020, 188 Float4Array = 1021, 189 Float8Array = 1022, 190 AbsTimeArray = 1023, 191 RelTimeArray = 1024, 192 IntervalArray = 1025, 193 PolygonArray = 1027, 194 AccessControlListArray = 1034, 195 MacAddressArray = 1040, 196 HostAdressArray = 1041, 197 NetworkAdressArray = 651, 198 CStringArray = 1263, 199 TimeStampArray = 1115, 200 DateArray = 1182, 201 TimeArray = 1183, 202 TimeStampWithZoneArray = 1185, 203 TimeIntervalArray = 1187, 204 NumericArray = 1231, 205 TimeWithZoneArray = 1270, 206 FixedBitStringArray = 1561, 207 VariableBitStringArray = 1563, 208 RefCursorArray = 2201, 209 RegProcWithArgsArray = 2207, 210 RegOperatorArray = 2208, 211 RegOperatorWithArgsArray = 2209, 212 RegClassArray = 2210, 213 RegTypeArray = 2211, 214 UUIDArray = 2951, 215 TSVectorArray = 3643, 216 GTSVectorArray = 3644, 217 TSQueryArray = 3645, 218 RegConfigArray = 3735, 219 RegDictionaryArray = 3770, 220 TXidSnapshotArray = 2949, 221 Int4RangeArray = 3905, 222 NumRangeArray = 3907, 223 TimeStampRangeArray = 3909, 224 TimeStampWithZoneRangeArray = 3911, 225 DateRangeArray = 3913, 226 Int8RangeArray = 3927, 227 228 // Pseudo types 229 Record = 2249, 230 RecordArray = 2287, 231 CString = 2275, 232 AnyVoid = 2276, 233 AnyArray = 2277, 234 Void = 2278, 235 Trigger = 2279, 236 EventTrigger = 3838, 237 LanguageHandler = 2280, 238 Internal = 2281, 239 Opaque = 2282, 240 AnyElement = 2283, 241 AnyNoArray = 2776, 242 AnyEnum = 3500, 243 FDWHandler = 3115, 244 AnyRange = 3831 245 }