#![allow(clippy::missing_safety_doc)]
#![allow(clippy::cast_ptr_alignment)]
#[macro_use]
extern crate bitflags;
extern crate alloc;
extern crate core;
pub use pgx_macros;
pub use pgx_macros::*;
pub mod prelude;
pub mod aggregate;
pub mod array;
pub mod atomics;
pub mod bgworkers;
pub mod callbacks;
pub mod datum;
pub mod enum_helper;
pub mod fcinfo;
pub mod ffi;
pub mod guc;
pub mod heap_tuple;
#[cfg(feature = "cshim")]
pub mod hooks;
pub mod htup;
pub mod inoutfuncs;
pub mod itemptr;
pub mod iter;
#[cfg(feature = "cshim")]
pub mod list;
pub mod lwlock;
pub mod memcxt;
pub mod misc;
#[cfg(feature = "cshim")]
pub mod namespace;
pub mod nodes;
pub mod pgbox;
pub mod rel;
pub mod shmem;
pub mod spi;
#[cfg(feature = "cshim")]
pub mod spinlock;
pub mod srf;
pub mod stringinfo;
pub mod trigger_support;
pub mod tupdesc;
pub mod varlena;
pub mod wrappers;
pub mod xid;
#[doc(hidden)]
pub use once_cell;
mod layout;
mod slice;
pub use aggregate::*;
pub use atomics::*;
pub use callbacks::*;
pub use datum::*;
pub use enum_helper::*;
pub use fcinfo::*;
pub use guc::*;
#[cfg(feature = "cshim")]
pub use hooks::*;
pub use htup::*;
pub use inoutfuncs::*;
pub use itemptr::*;
#[cfg(feature = "cshim")]
pub use list::*;
pub use lwlock::*;
pub use memcxt::*;
#[cfg(feature = "cshim")]
pub use namespace::*;
pub use nodes::*;
pub use pgbox::*;
pub use rel::*;
pub use shmem::*;
pub use spi::Spi; pub use stringinfo::*;
pub use trigger_support::*;
pub use tupdesc::*;
pub use varlena::*;
pub use wrappers::*;
pub use xid::*;
pub use pgx_pg_sys as pg_sys;
pub use pg_sys::elog::PgLogLevel;
pub use pg_sys::errcodes::PgSqlErrorCode;
pub use pg_sys::oids::PgOid;
pub use pg_sys::panic::pgx_extern_c_guard;
pub use pg_sys::pg_try::PgTryBuilder;
pub use pg_sys::utils::name_data_to_str;
pub use pg_sys::PgBuiltInOids;
pub use pg_sys::{
check_for_interrupts, debug1, debug2, debug3, debug4, debug5, ereport, error, function_name,
info, log, notice, warning, FATAL, PANIC,
};
#[doc(hidden)]
pub use pgx_sql_entity_graph;
pub use cstr_core;
#[macro_export]
macro_rules! pg_module_magic {
() => {
$crate::pg_magic_func!();
$crate::pg_sql_graph_magic!();
};
}
#[macro_export]
macro_rules! pg_magic_func {
() => {
#[no_mangle]
#[allow(non_snake_case)]
#[allow(unused)]
#[link_name = "Pg_magic_func"]
#[doc(hidden)]
pub extern "C" fn Pg_magic_func() -> &'static pgx::pg_sys::Pg_magic_struct {
use core::mem::size_of;
use pgx;
#[cfg(any(feature = "pg11", feature = "pg12"))]
const MY_MAGIC: pgx::pg_sys::Pg_magic_struct = pgx::pg_sys::Pg_magic_struct {
len: size_of::<pgx::pg_sys::Pg_magic_struct>() as i32,
version: pgx::pg_sys::PG_VERSION_NUM as i32 / 100,
funcmaxargs: pgx::pg_sys::FUNC_MAX_ARGS as i32,
indexmaxkeys: pgx::pg_sys::INDEX_MAX_KEYS as i32,
namedatalen: pgx::pg_sys::NAMEDATALEN as i32,
float4byval: pgx::pg_sys::USE_FLOAT4_BYVAL as i32,
float8byval: pgx::pg_sys::USE_FLOAT8_BYVAL as i32,
};
#[cfg(any(feature = "pg13", feature = "pg14"))]
const MY_MAGIC: pgx::pg_sys::Pg_magic_struct = pgx::pg_sys::Pg_magic_struct {
len: size_of::<pgx::pg_sys::Pg_magic_struct>() as i32,
version: pgx::pg_sys::PG_VERSION_NUM as i32 / 100,
funcmaxargs: pgx::pg_sys::FUNC_MAX_ARGS as i32,
indexmaxkeys: pgx::pg_sys::INDEX_MAX_KEYS as i32,
namedatalen: pgx::pg_sys::NAMEDATALEN as i32,
float8byval: pgx::pg_sys::USE_FLOAT8_BYVAL as i32,
};
#[cfg(any(feature = "pg15"))]
const MY_MAGIC: pgx::pg_sys::Pg_magic_struct = pgx::pg_sys::Pg_magic_struct {
len: size_of::<pgx::pg_sys::Pg_magic_struct>() as i32,
version: pgx::pg_sys::PG_VERSION_NUM as i32 / 100,
funcmaxargs: pgx::pg_sys::FUNC_MAX_ARGS as i32,
indexmaxkeys: pgx::pg_sys::INDEX_MAX_KEYS as i32,
namedatalen: pgx::pg_sys::NAMEDATALEN as i32,
float8byval: pgx::pg_sys::USE_FLOAT8_BYVAL as i32,
abi_extra: {
let magic = b"PostgreSQL";
let mut abi = [0 as ::pgx::ffi::c_char; 32];
let mut i = 0;
while i < magic.len() {
abi[i] = magic[i] as _;
i += 1;
}
abi
},
};
pgx::initialize();
&MY_MAGIC
}
};
}
#[macro_export]
macro_rules! pg_sql_graph_magic {
() => {
#[no_mangle]
#[doc(hidden)]
#[rustfmt::skip] pub extern "Rust" fn __pgx_marker(
_: (),
) -> $crate::pgx_sql_entity_graph::ControlFile {
use ::core::convert::TryFrom;
let package_version = env!("CARGO_PKG_VERSION");
let context = include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/",
env!("CARGO_CRATE_NAME"),
".control"
))
.replace("@CARGO_VERSION@", package_version);
let control_file =
$crate::pgx_sql_entity_graph::ControlFile::try_from(context.as_str())
.expect("Could not parse control file, is it valid?");
control_file
}
};
}
#[allow(unused)]
pub fn initialize() {
pg_sys::panic::register_pg_guard_panic_hook();
}