pgrx_pg_sys/
include.rs

1//
2// our actual bindings modules -- these are generated by build.rs
3//
4
5#[cfg(all(feature = "pg12", not(docsrs)))]
6pub(crate) mod pg12 {
7    #![allow(clippy::all)]
8    include!(concat!(env!("OUT_DIR"), "/pg12.rs"));
9}
10#[cfg(all(feature = "pg12", docsrs))]
11pub(crate) mod pg12;
12
13#[cfg(all(feature = "pg13", not(docsrs)))]
14pub(crate) mod pg13 {
15    #![allow(clippy::all)]
16    include!(concat!(env!("OUT_DIR"), "/pg13.rs"));
17}
18#[cfg(all(feature = "pg13", docsrs))]
19pub(crate) mod pg13;
20
21#[cfg(all(feature = "pg14", not(docsrs)))]
22pub(crate) mod pg14 {
23    #![allow(clippy::all)]
24    include!(concat!(env!("OUT_DIR"), "/pg14.rs"));
25}
26#[cfg(all(feature = "pg14", docsrs))]
27pub(crate) mod pg14;
28
29#[cfg(all(feature = "pg15", not(docsrs)))]
30pub(crate) mod pg15 {
31    #![allow(clippy::all)]
32    include!(concat!(env!("OUT_DIR"), "/pg15.rs"));
33}
34#[cfg(all(feature = "pg15", docsrs))]
35pub(crate) mod pg15;
36
37#[cfg(all(feature = "pg16", not(docsrs)))]
38pub(crate) mod pg16 {
39    #![allow(clippy::all)]
40    include!(concat!(env!("OUT_DIR"), "/pg16.rs"));
41}
42#[cfg(all(feature = "pg16", docsrs))]
43pub(crate) mod pg16;
44
45#[cfg(all(feature = "pg17", not(docsrs)))]
46pub(crate) mod pg17 {
47    #![allow(clippy::all)]
48    include!(concat!(env!("OUT_DIR"), "/pg17.rs"));
49}
50#[cfg(all(feature = "pg17", docsrs))]
51pub(crate) mod pg17;
52
53// export each module publicly
54#[cfg(feature = "pg12")]
55pub use pg12::*;
56#[cfg(feature = "pg13")]
57pub use pg13::*;
58#[cfg(feature = "pg14")]
59pub use pg14::*;
60#[cfg(feature = "pg15")]
61pub use pg15::*;
62#[cfg(feature = "pg16")]
63pub use pg16::*;
64#[cfg(feature = "pg17")]
65pub use pg17::*;
66
67// feature gate each pg-specific oid module
68#[cfg(all(feature = "pg12", not(docsrs)))]
69mod pg12_oids {
70    include!(concat!(env!("OUT_DIR"), "/pg12_oids.rs"));
71}
72#[cfg(all(feature = "pg12", docsrs))]
73mod pg12_oids;
74
75#[cfg(all(feature = "pg13", not(docsrs)))]
76mod pg13_oids {
77    include!(concat!(env!("OUT_DIR"), "/pg13_oids.rs"));
78}
79#[cfg(all(feature = "pg13", docsrs))]
80mod pg13_oids;
81
82#[cfg(all(feature = "pg14", not(docsrs)))]
83mod pg14_oids {
84    include!(concat!(env!("OUT_DIR"), "/pg14_oids.rs"));
85}
86#[cfg(all(feature = "pg14", docsrs))]
87mod pg14_oids;
88
89#[cfg(all(feature = "pg15", not(docsrs)))]
90mod pg15_oids {
91    include!(concat!(env!("OUT_DIR"), "/pg15_oids.rs"));
92}
93#[cfg(all(feature = "pg15", docsrs))]
94mod pg15_oids;
95
96#[cfg(all(feature = "pg16", not(docsrs)))]
97mod pg16_oids {
98    include!(concat!(env!("OUT_DIR"), "/pg16_oids.rs"));
99}
100#[cfg(all(feature = "pg16", docsrs))]
101mod pg16_oids;
102#[cfg(all(feature = "pg17", not(docsrs)))]
103mod pg17_oids {
104    include!(concat!(env!("OUT_DIR"), "/pg17_oids.rs"));
105}
106#[cfg(all(feature = "pg17", docsrs))]
107mod pg17_oids;
108
109// export that module publicly
110#[cfg(feature = "pg12")]
111pub use pg12_oids::*;
112#[cfg(feature = "pg13")]
113pub use pg13_oids::*;
114#[cfg(feature = "pg14")]
115pub use pg14_oids::*;
116#[cfg(feature = "pg15")]
117pub use pg15_oids::*;
118#[cfg(feature = "pg16")]
119pub use pg16_oids::*;
120#[cfg(feature = "pg17")]
121pub use pg17_oids::*;
122
123mod internal {
124    //!
125    //! for specific versions
126    //!
127
128    #[cfg(feature = "pg12")]
129    pub(crate) mod pg12 {
130        pub use crate::pg12::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
131        pub type QueryCompletion = std::os::raw::c_char;
132
133        pub const QTW_EXAMINE_RTES: u32 = crate::pg12::QTW_EXAMINE_RTES_BEFORE;
134
135        /// # Safety
136        ///
137        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
138        /// inherently unsafe
139        pub unsafe fn IndexBuildHeapScan<T>(
140            heap_relation: crate::Relation,
141            index_relation: crate::Relation,
142            index_info: *mut crate::pg12::IndexInfo,
143            build_callback: crate::IndexBuildCallback,
144            build_callback_state: *mut T,
145        ) {
146            let heap_relation_ref = heap_relation.as_ref().unwrap();
147            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
148
149            table_am.index_build_range_scan.unwrap()(
150                heap_relation,
151                index_relation,
152                index_info,
153                true,
154                false,
155                true,
156                0,
157                crate::InvalidBlockNumber,
158                build_callback,
159                build_callback_state as *mut std::os::raw::c_void,
160                std::ptr::null_mut(),
161            );
162        }
163    }
164
165    #[cfg(feature = "pg13")]
166    pub(crate) mod pg13 {
167        pub use crate::pg13::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
168
169        pub const QTW_EXAMINE_RTES: u32 = crate::pg13::QTW_EXAMINE_RTES_BEFORE;
170
171        /// # Safety
172        ///
173        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
174        /// inherently unsafe
175        pub unsafe fn IndexBuildHeapScan<T>(
176            heap_relation: crate::Relation,
177            index_relation: crate::Relation,
178            index_info: *mut crate::IndexInfo,
179            build_callback: crate::IndexBuildCallback,
180            build_callback_state: *mut T,
181        ) {
182            let heap_relation_ref = heap_relation.as_ref().unwrap();
183            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
184
185            table_am.index_build_range_scan.unwrap()(
186                heap_relation,
187                index_relation,
188                index_info,
189                true,
190                false,
191                true,
192                0,
193                crate::InvalidBlockNumber,
194                build_callback,
195                build_callback_state as *mut std::os::raw::c_void,
196                std::ptr::null_mut(),
197            );
198        }
199    }
200
201    #[cfg(feature = "pg14")]
202    pub(crate) mod pg14 {
203        pub use crate::pg14::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
204
205        pub const QTW_EXAMINE_RTES: u32 = crate::pg14::QTW_EXAMINE_RTES_BEFORE;
206
207        /// # Safety
208        ///
209        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
210        /// inherently unsafe
211        pub unsafe fn IndexBuildHeapScan<T>(
212            heap_relation: crate::Relation,
213            index_relation: crate::Relation,
214            index_info: *mut crate::IndexInfo,
215            build_callback: crate::IndexBuildCallback,
216            build_callback_state: *mut T,
217        ) {
218            let heap_relation_ref = heap_relation.as_ref().unwrap();
219            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
220
221            table_am.index_build_range_scan.unwrap()(
222                heap_relation,
223                index_relation,
224                index_info,
225                true,
226                false,
227                true,
228                0,
229                crate::InvalidBlockNumber,
230                build_callback,
231                build_callback_state as *mut std::os::raw::c_void,
232                std::ptr::null_mut(),
233            );
234        }
235    }
236
237    #[cfg(feature = "pg15")]
238    pub(crate) mod pg15 {
239        pub use crate::pg15::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
240
241        pub const QTW_EXAMINE_RTES: u32 = crate::pg15::QTW_EXAMINE_RTES_BEFORE;
242
243        /// # Safety
244        ///
245        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
246        /// inherently unsafe
247        pub unsafe fn IndexBuildHeapScan<T>(
248            heap_relation: crate::Relation,
249            index_relation: crate::Relation,
250            index_info: *mut crate::IndexInfo,
251            build_callback: crate::IndexBuildCallback,
252            build_callback_state: *mut T,
253        ) {
254            let heap_relation_ref = heap_relation.as_ref().unwrap();
255            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
256
257            table_am.index_build_range_scan.unwrap()(
258                heap_relation,
259                index_relation,
260                index_info,
261                true,
262                false,
263                true,
264                0,
265                crate::InvalidBlockNumber,
266                build_callback,
267                build_callback_state as *mut std::os::raw::c_void,
268                std::ptr::null_mut(),
269            );
270        }
271    }
272
273    #[cfg(feature = "pg16")]
274    pub(crate) mod pg16 {
275        pub use crate::pg16::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
276
277        pub const QTW_EXAMINE_RTES: u32 = crate::pg16::QTW_EXAMINE_RTES_BEFORE;
278
279        /// # Safety
280        ///
281        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
282        /// inherently unsafe
283        pub unsafe fn IndexBuildHeapScan<T>(
284            heap_relation: crate::Relation,
285            index_relation: crate::Relation,
286            index_info: *mut crate::IndexInfo,
287            build_callback: crate::IndexBuildCallback,
288            build_callback_state: *mut T,
289        ) {
290            let heap_relation_ref = heap_relation.as_ref().unwrap();
291            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
292
293            table_am.index_build_range_scan.unwrap()(
294                heap_relation,
295                index_relation,
296                index_info,
297                true,
298                false,
299                true,
300                0,
301                crate::InvalidBlockNumber,
302                build_callback,
303                build_callback_state as *mut std::os::raw::c_void,
304                std::ptr::null_mut(),
305            );
306        }
307    }
308
309    #[cfg(feature = "pg17")]
310    pub(crate) mod pg17 {
311        pub use crate::pg17::AllocSetContextCreateInternal as AllocSetContextCreateExtended;
312
313        pub const QTW_EXAMINE_RTES: u32 = crate::pg17::QTW_EXAMINE_RTES_BEFORE;
314
315        /// # Safety
316        ///
317        /// This function wraps Postgres' internal `IndexBuildHeapScan` method, and therefore, is
318        /// inherently unsafe
319        pub unsafe fn IndexBuildHeapScan<T>(
320            heap_relation: crate::Relation,
321            index_relation: crate::Relation,
322            index_info: *mut crate::IndexInfo,
323            build_callback: crate::IndexBuildCallback,
324            build_callback_state: *mut T,
325        ) {
326            let heap_relation_ref = heap_relation.as_ref().unwrap();
327            let table_am = heap_relation_ref.rd_tableam.as_ref().unwrap();
328
329            table_am.index_build_range_scan.unwrap()(
330                heap_relation,
331                index_relation,
332                index_info,
333                true,
334                false,
335                true,
336                0,
337                crate::InvalidBlockNumber,
338                build_callback,
339                build_callback_state as *mut std::os::raw::c_void,
340                std::ptr::null_mut(),
341            );
342        }
343    }
344}
345
346// and things that are version-specific
347#[cfg(feature = "pg12")]
348pub use internal::pg12::*;
349
350#[cfg(feature = "pg13")]
351pub use internal::pg13::*;
352
353#[cfg(feature = "pg14")]
354pub use internal::pg14::*;
355
356#[cfg(feature = "pg15")]
357pub use internal::pg15::*;
358
359#[cfg(feature = "pg16")]
360pub use internal::pg16::*;
361
362#[cfg(feature = "pg17")]
363pub use internal::pg17::*;