Expand description
Wire format support for the embedded pgrx schema linker section.
This module owns the bytes we embed into the extension shared object and later
decode from cargo-pgrx schema. That format is intentionally compact and
const-friendly because the producer side runs through macro expansion into
static linker-section entries, not through a normal runtime serializer.
Why this is a bespoke binary format instead of JSON:
- the producer must be able to size each entry at compile time
- the producer must emit raw bytes into a
staticitem placed in a custom linker section - the metadata we serialize is exposed to macro expansion through associated
consts such as
SqlTranslatable::{ARGUMENT_SQL, RETURN_SQL}
JSON would make the decode side simpler, but it would not remove the hard part. We would still need a handwritten const-time encoder, plus escaping logic for strings, SQL snippets, paths, and error payloads. That is not a clear win over the current length-prefixed binary layout.
So the current design choice is:
- keep the section format binary while the producer is const-time linker-section emission
- keep the wire format logic centralized in this module instead of spreading it across macro emitters
If we ever move away from linker-section bytes and toward a normal build-time manifest artifact, that would be the right time to re-evaluate a serde-based format such as JSON.
Structs§
Constants§
- AGGREGATE_
FINALIZE_ READ_ ONLY - AGGREGATE_
FINALIZE_ READ_ WRITE - AGGREGATE_
FINALIZE_ SHAREABLE - AGGREGATE_
PARALLEL_ RESTRICTED - AGGREGATE_
PARALLEL_ SAFE - AGGREGATE_
PARALLEL_ UNSAFE - ARG_
ERROR_ BARE_ U8 - ARG_
ERROR_ DATUM - ARG_
ERROR_ NESTED_ ARRAY - ARG_
ERROR_ NOT_ VALID - ARG_
ERROR_ SET_ OF - ARG_
ERROR_ SKIP_ IN_ ARRAY - ARG_
ERROR_ TABLE - ELF_
SECTION_ NAME - ENTITY_
AGGREGATE - ENTITY_
CUSTOM_ SQL - ENTITY_
ENUM - ENTITY_
FUNCTION - ENTITY_
HASH - ENTITY_
ORD - ENTITY_
SCHEMA - ENTITY_
SENTINEL - ENTITY_
TRIGGER - ENTITY_
TYPE - EXTERN_
ARG_ COST - EXTERN_
ARG_ CREATE_ OR_ REPLACE - EXTERN_
ARG_ IMMUTABLE - EXTERN_
ARG_ NAME - EXTERN_
ARG_ NO_ GUARD - EXTERN_
ARG_ PARALLEL_ RESTRICTED - EXTERN_
ARG_ PARALLEL_ SAFE - EXTERN_
ARG_ PARALLEL_ UNSAFE - EXTERN_
ARG_ RAW - EXTERN_
ARG_ REQUIRES - EXTERN_
ARG_ SCHEMA - EXTERN_
ARG_ SECURITY_ DEFINER - EXTERN_
ARG_ SECURITY_ INVOKER - EXTERN_
ARG_ SHOULD_ PANIC - EXTERN_
ARG_ STABLE - EXTERN_
ARG_ STRICT - EXTERN_
ARG_ SUPPORT - EXTERN_
ARG_ VOLATILE - EXTERN_
RET_ ITERATED - EXTERN_
RET_ NONE - EXTERN_
RET_ SET_ OF - EXTERN_
RET_ TRIGGER - EXTERN_
RET_ TYPE - MACHO_
SECTION_ NAME - MACHO_
SECTION_ PATH - MACHO_
SEGMENT_ NAME - OPERATOR_
CAST_ ASSIGNMENT - OPERATOR_
CAST_ DEFAULT - OPERATOR_
CAST_ IMPLICIT - POSITIONING_
REF_ FULL_ PATH - POSITIONING_
REF_ NAME - RESULT_
ERR - RESULT_
OK - RETURNS_
ERROR_ BARE_ U8 - RETURNS_
ERROR_ DATUM - RETURNS_
ERROR_ NESTED_ ARRAY - RETURNS_
ERROR_ NESTED_ SET_ OF - RETURNS_
ERROR_ NESTED_ TABLE - RETURNS_
ERROR_ SET_ OF_ CONTAINING_ TABLE - RETURNS_
ERROR_ SET_ OF_ IN_ ARRAY - RETURNS_
ERROR_ SKIP_ IN_ ARRAY - RETURNS_
ERROR_ TABLE_ CONTAINING_ SET_ OF - RETURNS_
ERROR_ TABLE_ IN_ ARRAY - RETURNS_
ONE - RETURNS_
SET_ OF - RETURNS_
TABLE - SECTION_
SENTINEL_ ENTRY_ LEN - SECTION_
SENTINEL_ MAGIC - SECTION_
SENTINEL_ PAYLOAD - SECTION_
SENTINEL_ PAYLOAD_ LEN - SQL_
DECLARED_ ENUM - SQL_
DECLARED_ FUNCTION - SQL_
DECLARED_ TYPE - SQL_
MAPPING_ ARRAY - SQL_
MAPPING_ AS - SQL_
MAPPING_ COMPOSITE - SQL_
MAPPING_ NUMERIC - SQL_
MAPPING_ SKIP - TYPE_
ORIGIN_ EXTERNAL - TYPE_
ORIGIN_ THIS_ EXTENSION