Repolode
pgcentralfoundation

pgcentralfoundation/pgrx

Framework de Rust para crear extensiones de PostgreSQL, con herramientas para configurarlas, ejecutarlas, probarlas y empaquetarlas para distintas versiones de Postgres.

Estrellas
4,823
Forks
342
Issues abiertos
340
Último commit
hace 7 días

¿Qué es?

pgrx es un framework para escribir extensiones de PostgreSQL en Rust. Asocia funciones, tipos y enumeraciones de Rust con objetos de Postgres y genera automáticamente el esquema SQL correspondiente. Así, puedes escribir una extensión íntegramente en Rust y exponer funciones y tipos personalizados en SQL.

El subcomando cargo-pgrx gestiona el flujo de desarrollo: crea proyectos de extensión, descarga y compila versiones de Postgres, inicia una sesión interactiva de psql con la extensión cargada, ejecuta pruebas con varias versiones de Postgres y genera paquetes de instalación. El proyecto admite Postgres de la versión 13 a la 18, además de una beta de la 19, desde una única base de código.

El framework prioriza la seguridad: convierte los panics de Rust en errores de Postgres que abortan la transacción, pero no el proceso, y gestiona la memoria según la semántica de drop de Rust. También permite acceder a SPI, los contextos de memoria, los hooks y los bindings sin procesar de pg_sys para trabajar a un nivel más bajo.

Funciones clave

  • 01Crear la estructura inicial, ejecutar, probar y empaquetar extensiones con el comando cargo-pgrx
  • 02Compatibilidad con Postgres de la versión 13 a la 18 desde una única base de código
  • 03Generar esquemas SQL automáticamente a partir de anotaciones de Rust como #[pg_extern]
  • 04Definir tipos y enumeraciones personalizados de Postgres con macros derive
  • 05Los panics se convierten en errores de Postgres que solo abortan la transacción
  • 06Acceder a SPI, los contextos de memoria, los hooks y los elementos internos sin procesar de pg_sys

Casos de uso

  • Escribir en Rust un tipo de datos personalizado de Postgres o una función relacionada con índices
  • Crear una extensión de PostgreSQL que integre una biblioteca de Rust para usarla en consultas SQL
  • Probar una extensión en CI con varias versiones principales de Postgres

Inicio rápido

  1. 1

    Instala el subcomando cargo-pgrx

    cargo install --locked cargo-pgrx
  2. 2

    Inicializa el directorio de inicio de PGRX (descarga y compila las versiones de PostgreSQL compatibles)

    cargo pgrx init
  3. 3

    Crea un nuevo proyecto de extensión

    cargo pgrx new my_extension
  4. 4

    Ejecuta la extensión de ejemplo en psql

    cargo pgrx run

Antes de usarlo

  • La licencia no está especificada claramente en los metadatos del proyecto, así que revisa la licencia del repositorio antes de usarlo.
  • El paso de inicialización descarga y compila varias versiones de PostgreSQL, lo que requiere tiempo y espacio en disco.
  • La compilación cruzada solo se muestra en nix y requiere configuración manual en otros entornos.

En colecciones

Temas

#postgres#postgresql#rust#database-extension#pg-extension#sql#postgresql-extension#rustlang

Preguntas frecuentes

¿Qué es pgrx?
Framework de Rust para crear extensiones de PostgreSQL, con herramientas para configurarlas, ejecutarlas, probarlas y empaquetarlas para distintas versiones de Postgres. pgrx es un framework para escribir extensiones de PostgreSQL en Rust. Asocia funciones, tipos y enumeraciones de Rust con objetos de Postgres y genera automáticamente el esquema SQL correspondiente. Así, puedes escribir una extensión íntegramente en Rust y exponer funciones y tipos personalizados en SQL.
¿pgrx es gratuito? ¿Qué licencia tiene?
pgrx es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿pgrx sigue mantenido?
Mantenimiento activo. El último commit de pgrx fue el 30 oct 2026.
¿Para qué puedo usar pgrx?
Escribir en Rust un tipo de datos personalizado de Postgres o una función relacionada con índices Crear una extensión de PostgreSQL que integre una biblioteca de Rust para usarla en consultas SQL Probar una extensión en CI con varias versiones principales de Postgres
¿Cómo se instala pgrx?
Instala el subcomando cargo-pgrx: cargo install --locked cargo-pgrx Inicializa el directorio de inicio de PGRX (descarga y compila las versiones de PostgreSQL compatibles): cargo pgrx init Crea un nuevo proyecto de extensión: cargo pgrx new my_extension Ejecuta la extensión de ejemplo en psql: cargo pgrx run
¿Dónde consigo pgrx?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/pgcentralfoundation/pgrx

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados