Repolode
pgcentralfoundation

pgcentralfoundation/pgrx

Фреймворк на Rust для разработки расширений PostgreSQL с инструментами для настройки, запуска, тестирования и сборки пакетов под разные версии Postgres.

Звёзды
4,823
Форки
341
Открытые issues
343
Последний коммит
10 часов назад

Что это?

pgrx — это фреймворк для написания расширений PostgreSQL на Rust. Он преобразует функции, типы и перечисления Rust в объекты Postgres и автоматически генерирует для них SQL-схему. Благодаря этому расширение можно целиком написать на Rust и при этом предоставлять его функции и пользовательские типы в SQL.

Подкоманда cargo-pgrx управляет процессом разработки: создаёт проекты расширений, скачивает и собирает версии Postgres, запускает интерактивную сессию psql с загруженным расширением, выполняет тесты на нескольких версиях Postgres и собирает установочные пакеты. Проект поддерживает Postgres с 13-й по 18-ю версию, а также бета-версию 19, используя единую кодовую базу.

Фреймворк уделяет особое внимание безопасности: паники Rust преобразуются в ошибки Postgres, которые прерывают транзакцию, а не весь процесс, а управление памятью следует семантике drop в Rust. Кроме того, он предоставляет доступ к SPI, контекстам памяти, хукам и низкоуровневым привязкам pg_sys.

Ключевые возможности

  • 01Создание каркаса, запуск, тестирование и сборка пакетов расширений с помощью команды cargo-pgrx
  • 02Поддержка Postgres с 13-й по 18-ю версию из единой кодовой базы
  • 03Автоматическая генерация SQL-схем по аннотациям Rust, например #[pg_extern]
  • 04Определение пользовательских типов и перечислений Postgres с помощью derive-макросов
  • 05Паники преобразуются в ошибки Postgres, которые прерывают только транзакцию
  • 06Доступ к SPI, контекстам памяти, хукам и внутренним низкоуровневым API pg_sys

Сценарии использования

  • Написание на Rust пользовательского типа данных Postgres или функции, связанной с индексами
  • Разработка расширения PostgreSQL, которое оборачивает библиотеку Rust для использования в SQL-запросах
  • Тестирование расширения на нескольких основных версиях Postgres в CI

Быстрый старт

  1. 1

    Установите подкоманду cargo-pgrx

    cargo install --locked cargo-pgrx
  2. 2

    Инициализируйте домашний каталог PGRX (загружает и компилирует поддерживаемые версии PostgreSQL)

    cargo pgrx init
  3. 3

    Создайте новый проект расширения

    cargo pgrx new my_extension
  4. 4

    Запустите пример расширения в psql

    cargo pgrx run

Что важно знать

  • В метаданных проекта лицензия указана неясно, поэтому перед использованием проверьте лицензию в репозитории.
  • На этапе инициализации загружаются и компилируются несколько версий PostgreSQL, что требует времени и места на диске.
  • Кросс-компиляция показана только в nix; в других средах потребуется ручная настройка.

В подборках

Темы

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

Частые вопросы

Что такое pgrx?
Фреймворк на Rust для разработки расширений PostgreSQL с инструментами для настройки, запуска, тестирования и сборки пакетов под разные версии Postgres. pgrx — это фреймворк для написания расширений PostgreSQL на Rust. Он преобразует функции, типы и перечисления Rust в объекты Postgres и автоматически генерирует для них SQL-схему. Благодаря этому расширение можно целиком написать на Rust и при этом предоставлять его функции и пользовательские типы в SQL.
pgrx можно использовать бесплатно? Какая у него лицензия?
pgrx распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
pgrx всё ещё поддерживается?
Активно поддерживается. Последний коммит в pgrx — 7 нояб. 2026 г..
Для чего можно использовать pgrx?
Написание на Rust пользовательского типа данных Postgres или функции, связанной с индексами Разработка расширения PostgreSQL, которое оборачивает библиотеку Rust для использования в SQL-запросах Тестирование расширения на нескольких основных версиях Postgres в CI
Как установить pgrx?
Установите подкоманду cargo-pgrx: cargo install --locked cargo-pgrx Инициализируйте домашний каталог PGRX (загружает и компилирует поддерживаемые версии PostgreSQL): cargo pgrx init Создайте новый проект расширения: cargo pgrx new my_extension Запустите пример расширения в psql: cargo pgrx run
Где скачать pgrx?
Исходный код и инструкции по установке — на GitHub: https://github.com/pgcentralfoundation/pgrx

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты