pg_protobuf
Protobuf support for PostgreSQL
Repository
afiskon/pg_protobuf
https://github.com/afiskon/pg_protobuf
Source
pg_protobuf-1.0.tar.gz
pg_protobuf-1.0.tar.gz
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_protobuf | 1.0 | UTIL | MIT | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 4120 | pg_protobuf | No | Yes | No | Yes | No | Yes | - |
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 | 1817161514 | pg_protobuf | - |
| RPM | PIGSTY | 1.0 | 1817161514 | pg_protobuf_$v | - |
| DEB | PIGSTY | 1.0 | 1817161514 | postgresql-$v-pg-protobuf | - |
Build
You can build the RPM / DEB packages for pg_protobuf using pig build:
Install
You can install pg_protobuf directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Install
pig
dnf
apt
Create Extension:
Usage
Provides functions to decode Protocol Buffer binary data directly in SQL without schema definitions.
Functions
protobuf_decode(bytea) RETURNS cstring– Decode protobuf binary into a human-readable formatprotobuf_get_int(bytea, int) RETURNS bigint– Extract an integer field by field numberprotobuf_get_string(bytea, int) RETURNS text– Extract a string field by field numberprotobuf_get_bytes(bytea, int) RETURNS bytea– Extract raw bytes by field numberprotobuf_get_bool(bytea, int) RETURNS boolean– Extract a boolean field by field numberprotobuf_get_float(bytea, int) RETURNS real– Extract a float field by field numberprotobuf_get_double(bytea, int) RETURNS double precision– Extract a double field by field numberprotobuf_get_sfixed32(bytea, int) RETURNS int– Extract a signed fixed 32-bit fieldprotobuf_get_sfixed64(bytea, int) RETURNS bigint– Extract a signed fixed 64-bit fieldprotobuf_get_int_multi(bytea, int) RETURNS bigint[]– Extract repeated integer fieldsprotobuf_get_string_multi(bytea, int) RETURNS text[]– Extract repeated string fieldsprotobuf_get_bytes_multi(bytea, int) RETURNS bytea[]– Extract repeated bytes fieldsprotobuf_get_bool_multi(bytea, int) RETURNS boolean[]– Extract repeated boolean fieldsprotobuf_get_float_multi(bytea, int) RETURNS real[]– Extract repeated float fieldsprotobuf_get_double_multi(bytea, int) RETURNS double precision[]– Extract repeated double fieldsprotobuf_get_sfixed32_multi(bytea, int) RETURNS int[]– Extract repeated sfixed32 fieldsprotobuf_get_sfixed64_multi(bytea, int) RETURNS bigint[]– Extract repeated sfixed64 fields
Example
Limitations
- No modification of Protobuf data
- Enums readable via
protobuf_get_int - Unsigned types not directly supported (no unsigned integers in PostgreSQL)
[packed=true]not supported by*_multiprocedures (useprotobuf_get_bytes*instead)
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)