From e3232fb618484bf854678a78c7ece5575db00a32 Mon Sep 17 00:00:00 2001 From: "Joshua (D) Drake" <136637981+ChronicallyJD@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:54:57 -0600 Subject: [PATCH 1/4] Migrate uuid types into `pgrx::uuid` Moves `Uuid` and `UuidBytes` out of `pgrx::datum` into a new top-level `pgrx::uuid` module. Everything remains accessible from the previous paths via re-export, so this is purely organizational with no end-user impact except new path options. Part of #2194. Co-Authored-By: Claude Opus 4.8 (1M context) --- pgrx/src/datum/mod.rs | 3 +-- pgrx/src/datum/unbox.rs | 2 +- pgrx/src/lib.rs | 1 + pgrx/src/{datum => }/uuid.rs | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename pgrx/src/{datum => }/uuid.rs (100%) diff --git a/pgrx/src/datum/mod.rs b/pgrx/src/datum/mod.rs index 7dd3f38fa5..6bd8957d65 100644 --- a/pgrx/src/datum/mod.rs +++ b/pgrx/src/datum/mod.rs @@ -30,12 +30,11 @@ pub mod numeric_support; mod range; mod tuples; mod unbox; -mod uuid; mod varlena; -pub use self::uuid::*; pub use crate::datetime::support as datetime_support; pub use crate::datetime::*; +pub use crate::uuid::*; pub use anyarray::*; pub use anyelement::*; pub use array::*; diff --git a/pgrx/src/datum/unbox.rs b/pgrx/src/datum/unbox.rs index ae965010dc..7f08deacdc 100644 --- a/pgrx/src/datum/unbox.rs +++ b/pgrx/src/datum/unbox.rs @@ -1,6 +1,6 @@ use super::Datum; -use super::uuid::Uuid; use crate::prelude::*; +use crate::uuid::Uuid; use crate::varlena::{text_to_rust_str_unchecked, varlena_to_byte_slice}; use crate::{Json, JsonB}; use alloc::ffi::CString; diff --git a/pgrx/src/lib.rs b/pgrx/src/lib.rs index 46df33fc54..589e9cce62 100644 --- a/pgrx/src/lib.rs +++ b/pgrx/src/lib.rs @@ -77,6 +77,7 @@ pub mod spinlock; pub mod stringinfo; pub mod trigger_support; pub mod tupdesc; +pub mod uuid; pub mod varlena; pub mod wrappers; pub mod xid; diff --git a/pgrx/src/datum/uuid.rs b/pgrx/src/uuid.rs similarity index 100% rename from pgrx/src/datum/uuid.rs rename to pgrx/src/uuid.rs From 6875a6d84a7f0de73569eac92b7ff0e61af3927c Mon Sep 17 00:00:00 2001 From: "Joshua (D) Drake" <136637981+ChronicallyJD@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:56:23 -0600 Subject: [PATCH 2/4] Migrate json types into `pgrx::json` Moves `Json`, `JsonB`, and `JsonString` out of `pgrx::datum` into a new top-level `pgrx::json` module. Everything remains accessible from the previous paths via re-export, so this is purely organizational with no end-user impact except new path options. Part of #2194. Co-Authored-By: Claude Opus 4.8 (1M context) --- pgrx/src/datum/mod.rs | 3 +-- pgrx/src/{datum => }/json.rs | 0 pgrx/src/lib.rs | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) rename pgrx/src/{datum => }/json.rs (100%) diff --git a/pgrx/src/datum/mod.rs b/pgrx/src/datum/mod.rs index 6bd8957d65..cfa7487d68 100644 --- a/pgrx/src/datum/mod.rs +++ b/pgrx/src/datum/mod.rs @@ -23,7 +23,6 @@ pub mod geo; mod inet; mod internal; mod into; -mod json; pub mod numeric; pub mod numeric_support; #[deny(unsafe_op_in_unsafe_fn)] @@ -34,6 +33,7 @@ mod varlena; pub use crate::datetime::support as datetime_support; pub use crate::datetime::*; +pub use crate::json::*; pub use crate::uuid::*; pub use anyarray::*; pub use anyelement::*; @@ -44,7 +44,6 @@ pub use from::*; pub use inet::*; pub use internal::*; pub use into::*; -pub use json::*; pub use numeric::{AnyNumeric, Numeric}; pub use range::*; pub use unbox::*; diff --git a/pgrx/src/datum/json.rs b/pgrx/src/json.rs similarity index 100% rename from pgrx/src/datum/json.rs rename to pgrx/src/json.rs diff --git a/pgrx/src/lib.rs b/pgrx/src/lib.rs index 589e9cce62..f4adb16c92 100644 --- a/pgrx/src/lib.rs +++ b/pgrx/src/lib.rs @@ -56,6 +56,7 @@ pub mod htup; pub mod inoutfuncs; pub mod itemptr; pub mod iter; +pub mod json; pub mod layout; pub mod list; pub mod lwlock; From e119c2d4484a54711898805ee00f77ce7db2e371 Mon Sep 17 00:00:00 2001 From: "Joshua (D) Drake" <136637981+ChronicallyJD@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:57:24 -0600 Subject: [PATCH 3/4] Migrate inet types into `pgrx::net` Moves `Inet` out of `pgrx::datum` into a new top-level `pgrx::net` module. Everything remains accessible from the previous paths via re-export, so this is purely organizational with no end-user impact except new path options. Part of #2194. Co-Authored-By: Claude Opus 4.8 (1M context) --- pgrx/src/datum/mod.rs | 3 +-- pgrx/src/lib.rs | 1 + pgrx/src/{datum/inet.rs => net.rs} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename pgrx/src/{datum/inet.rs => net.rs} (100%) diff --git a/pgrx/src/datum/mod.rs b/pgrx/src/datum/mod.rs index cfa7487d68..e64395a35c 100644 --- a/pgrx/src/datum/mod.rs +++ b/pgrx/src/datum/mod.rs @@ -20,7 +20,6 @@ mod borrow; mod bytea_type; mod from; pub mod geo; -mod inet; mod internal; mod into; pub mod numeric; @@ -34,6 +33,7 @@ mod varlena; pub use crate::datetime::support as datetime_support; pub use crate::datetime::*; pub use crate::json::*; +pub use crate::net::*; pub use crate::uuid::*; pub use anyarray::*; pub use anyelement::*; @@ -41,7 +41,6 @@ pub use array::*; pub use borrow::*; pub use bytea_type::*; pub use from::*; -pub use inet::*; pub use internal::*; pub use into::*; pub use numeric::{AnyNumeric, Numeric}; diff --git a/pgrx/src/lib.rs b/pgrx/src/lib.rs index f4adb16c92..068d9283d1 100644 --- a/pgrx/src/lib.rs +++ b/pgrx/src/lib.rs @@ -65,6 +65,7 @@ pub mod memcxt; pub mod misc; #[cfg(feature = "cshim")] pub mod namespace; +pub mod net; pub mod nodes; pub mod nullable; pub mod palloc; diff --git a/pgrx/src/datum/inet.rs b/pgrx/src/net.rs similarity index 100% rename from pgrx/src/datum/inet.rs rename to pgrx/src/net.rs From 2de24cfd542da2556ee293df316f7fb41129df61 Mon Sep 17 00:00:00 2001 From: "Joshua (D) Drake" <136637981+ChronicallyJD@users.noreply.github.com> Date: Thu, 16 Jul 2026 18:07:20 -0600 Subject: [PATCH 4/4] Migrate numeric types into `pgrx::num` Moves `AnyNumeric`, `Numeric`, and their numeric_support module out of `pgrx::datum` into a new top-level `pgrx::num` module (with the support code at `pgrx::num::support`). Everything remains accessible from the previous paths via re-export, including the `pgrx::datum::numeric` and `pgrx::datum::numeric_support` module paths, so this is purely organizational with no end-user impact except new path options. Part of #2194. Co-Authored-By: Claude Opus 4.8 (1M context) --- pgrx/src/datum/mod.rs | 5 ++--- pgrx/src/lib.rs | 1 + pgrx/src/num.rs | 13 +++++++++++++ pgrx/src/{datum => num}/numeric.rs | 4 ++-- .../{datum/numeric_support => num/support}/cmp.rs | 0 .../numeric_support => num/support}/convert.rs | 2 +- .../support}/convert_anynumeric.rs | 0 .../support}/convert_numeric.rs | 0 .../support}/convert_primitive.rs | 0 .../{datum/numeric_support => num/support}/datum.rs | 0 .../{datum/numeric_support => num/support}/error.rs | 0 .../{datum/numeric_support => num/support}/hash.rs | 0 .../{datum/numeric_support => num/support}/mod.rs | 0 .../{datum/numeric_support => num/support}/ops.rs | 0 .../{datum/numeric_support => num/support}/serde.rs | 0 .../{datum/numeric_support => num/support}/sql.rs | 0 16 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 pgrx/src/num.rs rename pgrx/src/{datum => num}/numeric.rs (98%) rename pgrx/src/{datum/numeric_support => num/support}/cmp.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/convert.rs (99%) rename pgrx/src/{datum/numeric_support => num/support}/convert_anynumeric.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/convert_numeric.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/convert_primitive.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/datum.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/error.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/hash.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/mod.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/ops.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/serde.rs (100%) rename pgrx/src/{datum/numeric_support => num/support}/sql.rs (100%) diff --git a/pgrx/src/datum/mod.rs b/pgrx/src/datum/mod.rs index e64395a35c..e9439a0217 100644 --- a/pgrx/src/datum/mod.rs +++ b/pgrx/src/datum/mod.rs @@ -22,8 +22,6 @@ mod from; pub mod geo; mod internal; mod into; -pub mod numeric; -pub mod numeric_support; #[deny(unsafe_op_in_unsafe_fn)] mod range; mod tuples; @@ -34,6 +32,8 @@ pub use crate::datetime::support as datetime_support; pub use crate::datetime::*; pub use crate::json::*; pub use crate::net::*; +pub use crate::num::support as numeric_support; +pub use crate::num::{AnyNumeric, Numeric, numeric}; pub use crate::uuid::*; pub use anyarray::*; pub use anyelement::*; @@ -43,7 +43,6 @@ pub use bytea_type::*; pub use from::*; pub use internal::*; pub use into::*; -pub use numeric::{AnyNumeric, Numeric}; pub use range::*; pub use unbox::*; pub use varlena::*; diff --git a/pgrx/src/lib.rs b/pgrx/src/lib.rs index 068d9283d1..2e58a753e0 100644 --- a/pgrx/src/lib.rs +++ b/pgrx/src/lib.rs @@ -68,6 +68,7 @@ pub mod namespace; pub mod net; pub mod nodes; pub mod nullable; +pub mod num; pub mod palloc; pub mod pg_catalog; pub mod pgbox; diff --git a/pgrx/src/num.rs b/pgrx/src/num.rs new file mode 100644 index 0000000000..3638bbc7b9 --- /dev/null +++ b/pgrx/src/num.rs @@ -0,0 +1,13 @@ +//LICENSE Portions Copyright 2019-2021 ZomboDB, LLC. +//LICENSE +//LICENSE Portions Copyright 2021-2023 Technology Concepts & Design, Inc. +//LICENSE +//LICENSE Portions Copyright 2023-2023 PgCentral Foundation, Inc. +//LICENSE +//LICENSE All rights reserved. +//LICENSE +//LICENSE Use of this source code is governed by the MIT license that can be found in the LICENSE file. +pub mod numeric; +pub mod support; + +pub use numeric::{AnyNumeric, Numeric}; diff --git a/pgrx/src/datum/numeric.rs b/pgrx/src/num/numeric.rs similarity index 98% rename from pgrx/src/datum/numeric.rs rename to pgrx/src/num/numeric.rs index 2385b52258..f35beaaa73 100644 --- a/pgrx/src/datum/numeric.rs +++ b/pgrx/src/num/numeric.rs @@ -13,8 +13,8 @@ use std::cmp::Ordering; use std::fmt; use std::iter::Sum; -use crate::datum::numeric_support::convert::{FromPrimitiveFunc, from_primitive_helper}; -pub use crate::datum::numeric_support::error::Error; +use crate::num::support::convert::{FromPrimitiveFunc, from_primitive_helper}; +pub use crate::num::support::error::Error; use crate::{direct_function_call, pg_sys}; /// A wrapper around the Postgres SQL `NUMERIC(P, S)` type. Its `Precision` and `Scale` values diff --git a/pgrx/src/datum/numeric_support/cmp.rs b/pgrx/src/num/support/cmp.rs similarity index 100% rename from pgrx/src/datum/numeric_support/cmp.rs rename to pgrx/src/num/support/cmp.rs diff --git a/pgrx/src/datum/numeric_support/convert.rs b/pgrx/src/num/support/convert.rs similarity index 99% rename from pgrx/src/datum/numeric_support/convert.rs rename to pgrx/src/num/support/convert.rs index 10a986d520..248bf46e6e 100644 --- a/pgrx/src/datum/numeric_support/convert.rs +++ b/pgrx/src/num/support/convert.rs @@ -12,8 +12,8 @@ use pgrx_pg_sys::errcodes::PgSqlErrorCode; use pgrx_pg_sys::panic::CaughtError; use super::error::Error; -use crate::datum::numeric::make_typmod; use crate::datum::{AnyNumeric, FromDatum, IntoDatum, Numeric}; +use crate::num::numeric::make_typmod; use crate::{direct_function_call, direct_function_call_as_datum, pg_sys}; #[derive(Copy, Clone, Debug, PartialEq, Eq)] diff --git a/pgrx/src/datum/numeric_support/convert_anynumeric.rs b/pgrx/src/num/support/convert_anynumeric.rs similarity index 100% rename from pgrx/src/datum/numeric_support/convert_anynumeric.rs rename to pgrx/src/num/support/convert_anynumeric.rs diff --git a/pgrx/src/datum/numeric_support/convert_numeric.rs b/pgrx/src/num/support/convert_numeric.rs similarity index 100% rename from pgrx/src/datum/numeric_support/convert_numeric.rs rename to pgrx/src/num/support/convert_numeric.rs diff --git a/pgrx/src/datum/numeric_support/convert_primitive.rs b/pgrx/src/num/support/convert_primitive.rs similarity index 100% rename from pgrx/src/datum/numeric_support/convert_primitive.rs rename to pgrx/src/num/support/convert_primitive.rs diff --git a/pgrx/src/datum/numeric_support/datum.rs b/pgrx/src/num/support/datum.rs similarity index 100% rename from pgrx/src/datum/numeric_support/datum.rs rename to pgrx/src/num/support/datum.rs diff --git a/pgrx/src/datum/numeric_support/error.rs b/pgrx/src/num/support/error.rs similarity index 100% rename from pgrx/src/datum/numeric_support/error.rs rename to pgrx/src/num/support/error.rs diff --git a/pgrx/src/datum/numeric_support/hash.rs b/pgrx/src/num/support/hash.rs similarity index 100% rename from pgrx/src/datum/numeric_support/hash.rs rename to pgrx/src/num/support/hash.rs diff --git a/pgrx/src/datum/numeric_support/mod.rs b/pgrx/src/num/support/mod.rs similarity index 100% rename from pgrx/src/datum/numeric_support/mod.rs rename to pgrx/src/num/support/mod.rs diff --git a/pgrx/src/datum/numeric_support/ops.rs b/pgrx/src/num/support/ops.rs similarity index 100% rename from pgrx/src/datum/numeric_support/ops.rs rename to pgrx/src/num/support/ops.rs diff --git a/pgrx/src/datum/numeric_support/serde.rs b/pgrx/src/num/support/serde.rs similarity index 100% rename from pgrx/src/datum/numeric_support/serde.rs rename to pgrx/src/num/support/serde.rs diff --git a/pgrx/src/datum/numeric_support/sql.rs b/pgrx/src/num/support/sql.rs similarity index 100% rename from pgrx/src/datum/numeric_support/sql.rs rename to pgrx/src/num/support/sql.rs