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 }