jsquery

jsquery

jsquery : data type for jsonb inspection

Overview

ID Extension Package Version Category License Language
2770
jsquery
jsquery
1.2
FEAT
PostgreSQL
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
See Also
pg_graphql
pg_jsonschema
plv8
jsonb_plperl
jsonb_plpython3u
pg_net
pg_summarize
age

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PGDG
1.2
18
17
16
15
14
jsquery -
RPM
PGDG
1.2
18
17
16
15
14
jsquery_$v -
DEB
PGDG
1.2
18
17
16
15
14
postgresql-$v-jsquery -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
el8.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
el9.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
el9.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
el10.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
el10.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
d12.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
d12.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
d13.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
d13.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
u22.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
u22.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
u24.x86_64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
u24.aarch64
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
PGDG 1.2
Package Version OS ORG SIZE File URL
jsquery_18 1.2 el8.x86_64 pgdg 49.3 KiB jsquery_18-1.2-4PGDG.rhel8.x86_64.rpm
jsquery_18 1.2 el8.aarch64 pgdg 46.6 KiB jsquery_18-1.2-4PGDG.rhel8.aarch64.rpm
jsquery_18 1.2 el9.x86_64 pgdg 48.8 KiB jsquery_18-1.2-4PGDG.rhel9.x86_64.rpm
jsquery_18 1.2 el9.aarch64 pgdg 47.5 KiB jsquery_18-1.2-4PGDG.rhel9.aarch64.rpm
jsquery_18 1.2 el10.x86_64 pgdg 50.0 KiB jsquery_18-1.2-4PGDG.rhel10.x86_64.rpm
jsquery_18 1.2 el10.aarch64 pgdg 48.6 KiB jsquery_18-1.2-4PGDG.rhel10.aarch64.rpm
postgresql-18-jsquery 1.2 d12.x86_64 pgdg 123.1 KiB postgresql-18-jsquery_1.2-3.pgdg12+1_amd64.deb
postgresql-18-jsquery 1.2 d12.aarch64 pgdg 120.1 KiB postgresql-18-jsquery_1.2-3.pgdg12+1_arm64.deb
postgresql-18-jsquery 1.2 d13.x86_64 pgdg 123.4 KiB postgresql-18-jsquery_1.2-3.pgdg13+1_amd64.deb
postgresql-18-jsquery 1.2 d13.aarch64 pgdg 120.5 KiB postgresql-18-jsquery_1.2-3.pgdg13+1_arm64.deb
postgresql-18-jsquery 1.2 u22.x86_64 pgdg 123.8 KiB postgresql-18-jsquery_1.2-3.pgdg22.04+1_amd64.deb
postgresql-18-jsquery 1.2 u22.aarch64 pgdg 120.5 KiB postgresql-18-jsquery_1.2-3.pgdg22.04+1_arm64.deb
postgresql-18-jsquery 1.2 u24.x86_64 pgdg 122.2 KiB postgresql-18-jsquery_1.2-3.pgdg24.04+1_amd64.deb
postgresql-18-jsquery 1.2 u24.aarch64 pgdg 119.9 KiB postgresql-18-jsquery_1.2-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
jsquery_17 1.2 el8.x86_64 pgdg 49.1 KiB jsquery_17-1.2-2PGDG.rhel8.x86_64.rpm
jsquery_17 1.2 el8.aarch64 pgdg 46.6 KiB jsquery_17-1.2-2PGDG.rhel8.aarch64.rpm
jsquery_17 1.2 el9.x86_64 pgdg 48.9 KiB jsquery_17-1.2-2PGDG.rhel9.x86_64.rpm
jsquery_17 1.2 el9.aarch64 pgdg 47.6 KiB jsquery_17-1.2-2PGDG.rhel9.aarch64.rpm
jsquery_17 1.2 el10.x86_64 pgdg 50.0 KiB jsquery_17-1.2-4PGDG.rhel10.x86_64.rpm
jsquery_17 1.2 el10.aarch64 pgdg 48.6 KiB jsquery_17-1.2-4PGDG.rhel10.aarch64.rpm
postgresql-17-jsquery 1.2 d12.x86_64 pgdg 123.1 KiB postgresql-17-jsquery_1.2-3.pgdg12+1_amd64.deb
postgresql-17-jsquery 1.2 d12.aarch64 pgdg 120.0 KiB postgresql-17-jsquery_1.2-3.pgdg12+1_arm64.deb
postgresql-17-jsquery 1.2 d13.x86_64 pgdg 123.4 KiB postgresql-17-jsquery_1.2-3.pgdg13+1_amd64.deb
postgresql-17-jsquery 1.2 d13.aarch64 pgdg 120.3 KiB postgresql-17-jsquery_1.2-3.pgdg13+1_arm64.deb
postgresql-17-jsquery 1.2 u22.x86_64 pgdg 130.8 KiB postgresql-17-jsquery_1.2-3.pgdg22.04+1_amd64.deb
postgresql-17-jsquery 1.2 u22.aarch64 pgdg 127.8 KiB postgresql-17-jsquery_1.2-3.pgdg22.04+1_arm64.deb
postgresql-17-jsquery 1.2 u24.x86_64 pgdg 122.3 KiB postgresql-17-jsquery_1.2-3.pgdg24.04+1_amd64.deb
postgresql-17-jsquery 1.2 u24.aarch64 pgdg 119.8 KiB postgresql-17-jsquery_1.2-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
jsquery_16 1.2 el8.x86_64 pgdg 49.0 KiB jsquery_16-1.2-1PGDG.rhel8.x86_64.rpm
jsquery_16 1.2 el8.aarch64 pgdg 46.3 KiB jsquery_16-1.2-1PGDG.rhel8.aarch64.rpm
jsquery_16 1.2 el9.x86_64 pgdg 48.5 KiB jsquery_16-1.2-1PGDG.rhel9.x86_64.rpm
jsquery_16 1.2 el9.aarch64 pgdg 47.0 KiB jsquery_16-1.2-1PGDG.rhel9.aarch64.rpm
jsquery_16 1.2 el10.x86_64 pgdg 49.9 KiB jsquery_16-1.2-4PGDG.rhel10.x86_64.rpm
jsquery_16 1.2 el10.aarch64 pgdg 48.4 KiB jsquery_16-1.2-4PGDG.rhel10.aarch64.rpm
postgresql-16-jsquery 1.2 d12.x86_64 pgdg 122.8 KiB postgresql-16-jsquery_1.2-3.pgdg12+1_amd64.deb
postgresql-16-jsquery 1.2 d12.aarch64 pgdg 119.7 KiB postgresql-16-jsquery_1.2-3.pgdg12+1_arm64.deb
postgresql-16-jsquery 1.2 d13.x86_64 pgdg 123.1 KiB postgresql-16-jsquery_1.2-3.pgdg13+1_amd64.deb
postgresql-16-jsquery 1.2 d13.aarch64 pgdg 120.3 KiB postgresql-16-jsquery_1.2-3.pgdg13+1_arm64.deb
postgresql-16-jsquery 1.2 u22.x86_64 pgdg 130.6 KiB postgresql-16-jsquery_1.2-3.pgdg22.04+1_amd64.deb
postgresql-16-jsquery 1.2 u22.aarch64 pgdg 127.6 KiB postgresql-16-jsquery_1.2-3.pgdg22.04+1_arm64.deb
postgresql-16-jsquery 1.2 u24.x86_64 pgdg 122.1 KiB postgresql-16-jsquery_1.2-3.pgdg24.04+1_amd64.deb
postgresql-16-jsquery 1.2 u24.aarch64 pgdg 119.5 KiB postgresql-16-jsquery_1.2-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
jsquery_15 1.2 el8.x86_64 pgdg 50.3 KiB jsquery_15-1.2-1PGDG.rhel8.x86_64.rpm
jsquery_15 1.2 el8.aarch64 pgdg 47.6 KiB jsquery_15-1.2-1PGDG.rhel8.aarch64.rpm
jsquery_15 1.2 el9.x86_64 pgdg 51.3 KiB jsquery_15-1.2-1PGDG.rhel9.x86_64.rpm
jsquery_15 1.2 el9.aarch64 pgdg 49.6 KiB jsquery_15-1.2-1PGDG.rhel9.aarch64.rpm
jsquery_15 1.2 el10.x86_64 pgdg 52.5 KiB jsquery_15-1.2-4PGDG.rhel10.x86_64.rpm
jsquery_15 1.2 el10.aarch64 pgdg 50.7 KiB jsquery_15-1.2-4PGDG.rhel10.aarch64.rpm
postgresql-15-jsquery 1.2 d12.x86_64 pgdg 124.3 KiB postgresql-15-jsquery_1.2-3.pgdg12+1_amd64.deb
postgresql-15-jsquery 1.2 d12.aarch64 pgdg 120.9 KiB postgresql-15-jsquery_1.2-3.pgdg12+1_arm64.deb
postgresql-15-jsquery 1.2 d13.x86_64 pgdg 124.5 KiB postgresql-15-jsquery_1.2-3.pgdg13+1_amd64.deb
postgresql-15-jsquery 1.2 d13.aarch64 pgdg 121.5 KiB postgresql-15-jsquery_1.2-3.pgdg13+1_arm64.deb
postgresql-15-jsquery 1.2 u22.x86_64 pgdg 132.6 KiB postgresql-15-jsquery_1.2-3.pgdg22.04+1_amd64.deb
postgresql-15-jsquery 1.2 u22.aarch64 pgdg 129.5 KiB postgresql-15-jsquery_1.2-3.pgdg22.04+1_arm64.deb
postgresql-15-jsquery 1.2 u24.x86_64 pgdg 124.2 KiB postgresql-15-jsquery_1.2-3.pgdg24.04+1_amd64.deb
postgresql-15-jsquery 1.2 u24.aarch64 pgdg 121.2 KiB postgresql-15-jsquery_1.2-3.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
jsquery_14 1.2 el8.x86_64 pgdg 50.3 KiB jsquery_14-1.2-1PGDG.rhel8.x86_64.rpm
jsquery_14 1.2 el8.aarch64 pgdg 47.6 KiB jsquery_14-1.2-1PGDG.rhel8.aarch64.rpm
jsquery_14 1.2 el9.x86_64 pgdg 51.3 KiB jsquery_14-1.2-1PGDG.rhel9.x86_64.rpm
jsquery_14 1.2 el9.aarch64 pgdg 49.7 KiB jsquery_14-1.2-1PGDG.rhel9.aarch64.rpm
jsquery_14 1.2 el10.x86_64 pgdg 52.5 KiB jsquery_14-1.2-4PGDG.rhel10.x86_64.rpm
jsquery_14 1.2 el10.aarch64 pgdg 50.7 KiB jsquery_14-1.2-4PGDG.rhel10.aarch64.rpm
postgresql-14-jsquery 1.2 d12.x86_64 pgdg 124.3 KiB postgresql-14-jsquery_1.2-3.pgdg12+1_amd64.deb
postgresql-14-jsquery 1.2 d12.aarch64 pgdg 121.0 KiB postgresql-14-jsquery_1.2-3.pgdg12+1_arm64.deb
postgresql-14-jsquery 1.2 d13.x86_64 pgdg 124.3 KiB postgresql-14-jsquery_1.2-3.pgdg13+1_amd64.deb
postgresql-14-jsquery 1.2 d13.aarch64 pgdg 121.3 KiB postgresql-14-jsquery_1.2-3.pgdg13+1_arm64.deb
postgresql-14-jsquery 1.2 u22.x86_64 pgdg 132.6 KiB postgresql-14-jsquery_1.2-3.pgdg22.04+1_amd64.deb
postgresql-14-jsquery 1.2 u22.aarch64 pgdg 129.3 KiB postgresql-14-jsquery_1.2-3.pgdg22.04+1_arm64.deb
postgresql-14-jsquery 1.2 u24.x86_64 pgdg 124.2 KiB postgresql-14-jsquery_1.2-3.pgdg24.04+1_amd64.deb
postgresql-14-jsquery 1.2 u24.aarch64 pgdg 121.3 KiB postgresql-14-jsquery_1.2-3.pgdg24.04+1_arm64.deb

Source

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install jsquery;		# install via package name, for the active PG version

pig install jsquery -v 18;   # install for PG 18
pig install jsquery -v 17;   # install for PG 17
pig install jsquery -v 16;   # install for PG 16
pig install jsquery -v 15;   # install for PG 15
pig install jsquery -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION jsquery;

Usage

jsquery: data type for jsonb inspection

JsQuery provides a query language for JSONB data, similar to what tsquery does for full-text search. It offers a concise way to search nested objects and arrays with index support via GIN.

Operators

Operator Description
@@ Match operator: test whether a jsonb value matches a jsquery expression

Query Syntax

Expressions follow the pattern path operator value:

Binary operators:

  • = (equality), >, >=, <, <= (comparison)
  • IN (list membership)
  • && (overlap), @> (contains), <@ (contained in)

Unary operators:

  • = * (existence check)
  • IS ARRAY, IS NUMERIC, IS OBJECT, IS STRING, IS BOOLEAN (type checking)

Path Expressions

Symbol Meaning
# Any array index
#N Specific array index N
% Any object key
* Any sequence of keys/indexes
@# Array/object length
$ Entire document

“Every” semantics (all elements must match):

  • #: – all array elements
  • %: – all object keys
  • *: – all nested paths

Examples

Simple value matching:

SELECT * FROM jsonb_table WHERE data @@ 'name = "Alice"';
SELECT * FROM jsonb_table WHERE data @@ 'age > 21';
SELECT * FROM jsonb_table WHERE data @@ 'tags.#: IS STRING';

Logical combinations:

SELECT * FROM jsonb_table WHERE data @@ 'a = 1 AND (b = 2 OR c = 3)';

Array element matching (find array elements where both conditions hold):

SELECT * FROM jsonb_table WHERE data @@ '#(a = 1 AND b = 2)';

Object key range matching:

SELECT * FROM jsonb_table WHERE data @@ '%($ >= 10 AND $ <= 20)';

GIN Indexing

Two operator classes for different query patterns:

-- Best for range and exact searches when full path is known
CREATE INDEX ON jsonb_table USING gin (data jsonb_path_value_ops);

-- Best for exact value searches; supports % and * in paths
CREATE INDEX ON jsonb_table USING gin (data jsonb_value_path_ops);

Optimizer hints for index usage:

SELECT * FROM jsonb_table WHERE data @@ 'x = 1 /*-- index */ AND y = 2';
SELECT * FROM jsonb_table WHERE data @@ 'x = 1 /*-- noindex */ AND y = 2';

Schema Validation via CHECK Constraints

CREATE TABLE documents (
    id serial PRIMARY KEY,
    data jsonb CHECK (data @@ 'name IS STRING AND similar_ids.#: IS NUMERIC'::jsquery)
);
Last updated on