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