From 291919a69b889dfe744fc65a4c19f313ecdda34d Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 4 May 2021 11:54:30 +0200 Subject: [PATCH] Add some more fixtures based on current data This includes most models that just contain "metadata" as well as the complete feature matrix (because it's useful). Also add a script to refresh the contents of the fixtures. Still has to be run manually, but mayeb it helps us keep it slightly more up to date. --- pgweb/docs/fixtures/data.json | 82 + pgweb/downloads/fixtures/data.json | 94 + pgweb/dump_initial_data.sh | 11 + pgweb/featurematrix/fixtures/data.json | 8534 ++++++++++++++++++++++++ pgweb/lists/fixtures/data.json | 58 + pgweb/load_initial_data.sh | 5 - pgweb/sponsors/fixtures/data.json | 29 + 7 files changed, 8808 insertions(+), 5 deletions(-) create mode 100644 pgweb/docs/fixtures/data.json create mode 100644 pgweb/downloads/fixtures/data.json create mode 100644 pgweb/dump_initial_data.sh create mode 100644 pgweb/featurematrix/fixtures/data.json create mode 100644 pgweb/lists/fixtures/data.json create mode 100644 pgweb/sponsors/fixtures/data.json diff --git a/pgweb/docs/fixtures/data.json b/pgweb/docs/fixtures/data.json new file mode 100644 index 00000000..7c671d11 --- /dev/null +++ b/pgweb/docs/fixtures/data.json @@ -0,0 +1,82 @@ +[ +{ + "model": "docs.docpagealias", + "pk": 1, + "fields": { + "file1": "app-pgreceivexlog.html", + "file2": "app-pgreceivewal.html" + } +}, +{ + "model": "docs.docpagealias", + "pk": 2, + "fields": { + "file1": "legalnotice.html", + "file2": "LEGALNOTICE.html" + } +}, +{ + "model": "docs.docpagealias", + "pk": 3, + "fields": { + "file1": "app-pgresetxlog.html", + "file2": "app-pgresetwal.html" + } +}, +{ + "model": "docs.docpagealias", + "pk": 5, + "fields": { + "file1": "pgxlogdump.html", + "file2": "pgwaldump.html" + } +}, +{ + "model": "docs.docpagealias", + "pk": 6, + "fields": { + "file1": "catalog-pg-replication-slots.html", + "file2": "view-pg-replication-slots.html" + } +}, +{ + "model": "docs.docpageredirect", + "pk": 1, + "fields": { + "redirect_from": "pgxlogdump.html", + "redirect_to": "pgwaldump.html" + } +}, +{ + "model": "docs.docpageredirect", + "pk": 2, + "fields": { + "redirect_from": "catalog-pg-replication-slots.html", + "redirect_to": "view-pg-replication-slots.html" + } +}, +{ + "model": "docs.docpageredirect", + "pk": 3, + "fields": { + "redirect_from": "app-pgresetxlog.html", + "redirect_to": "app-pgresetwal.html" + } +}, +{ + "model": "docs.docpageredirect", + "pk": 4, + "fields": { + "redirect_from": "LEGALNOTICE.html", + "redirect_to": "legalnotice.html" + } +}, +{ + "model": "docs.docpageredirect", + "pk": 5, + "fields": { + "redirect_from": "app-pgreceivexlog.html", + "redirect_to": "app-pgreceivewal.html" + } +} +] diff --git a/pgweb/downloads/fixtures/data.json b/pgweb/downloads/fixtures/data.json new file mode 100644 index 00000000..1a503fb6 --- /dev/null +++ b/pgweb/downloads/fixtures/data.json @@ -0,0 +1,94 @@ +[ +{ + "model": "downloads.category", + "pk": 1, + "fields": { + "catname": "Administration/development tools", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 2, + "fields": { + "catname": "Drivers and interfaces", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 3, + "fields": { + "catname": "Clustering/replication", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 4, + "fields": { + "catname": "Procedural languages", + "blurb": "Note: Postgres has four languages that are part of the core distribution:\r\nPL/pgSQL, PL/Tcl, PL/Perl, and PL/Python." + } +}, +{ + "model": "downloads.category", + "pk": 5, + "fields": { + "catname": "Reporting tools", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 6, + "fields": { + "catname": "PostgreSQL extensions", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 7, + "fields": { + "catname": "Applications", + "blurb": "" + } +}, +{ + "model": "downloads.category", + "pk": 8, + "fields": { + "catname": "PostgreSQL-derived servers", + "blurb": "" + } +}, +{ + "model": "downloads.licencetype", + "pk": 1, + "fields": { + "typename": "Open source" + } +}, +{ + "model": "downloads.licencetype", + "pk": 2, + "fields": { + "typename": "Freeware" + } +}, +{ + "model": "downloads.licencetype", + "pk": 3, + "fields": { + "typename": "Commercial" + } +}, +{ + "model": "downloads.licencetype", + "pk": 4, + "fields": { + "typename": "Multiple" + } +} +] diff --git a/pgweb/dump_initial_data.sh b/pgweb/dump_initial_data.sh new file mode 100644 index 00000000..8c3919c5 --- /dev/null +++ b/pgweb/dump_initial_data.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Run this script to refresh the contents of the fixtures based on data currently in the database. + +./python manage.py dumpdata --indent 1 --format json core.version core.importedrssfeed core.country > pgweb/core/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json contributors.contributortype > pgweb/contributors/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json docs.docpagealias docs.docpageredirect > pgweb/docs/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json downloads.category downloads.licencetype > pgweb/downloads/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json featurematrix.featuregroup featurematrix.feature > pgweb/featurematrix/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json lists.mailinglistgroup > pgweb/lists/fixtures/data.json +./python manage.py dumpdata --indent 1 --format json sponsors.sponsortype > pgweb/sponsors/fixtures/data.json diff --git a/pgweb/featurematrix/fixtures/data.json b/pgweb/featurematrix/fixtures/data.json new file mode 100644 index 00000000..7d95abe9 --- /dev/null +++ b/pgweb/featurematrix/fixtures/data.json @@ -0,0 +1,8534 @@ +[ +{ + "model": "featurematrix.featuregroup", + "pk": 1, + "fields": { + "groupname": "Performance", + "groupsort": 10 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 2, + "fields": { + "groupname": "Procedural Languages", + "groupsort": 35 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 3, + "fields": { + "groupname": "Additional Modules (contrib)", + "groupsort": 40 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 4, + "fields": { + "groupname": "Backend", + "groupsort": 0 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 5, + "fields": { + "groupname": "Internationalisation", + "groupsort": 38 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 6, + "fields": { + "groupname": "Security", + "groupsort": 20 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 7, + "fields": { + "groupname": "Network", + "groupsort": 45 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 8, + "fields": { + "groupname": "Platforms", + "groupsort": 50 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 9, + "fields": { + "groupname": "Data Types, Functions, & Operators", + "groupsort": 2 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 10, + "fields": { + "groupname": "Custom Functions, Stored Procedures, & Triggers", + "groupsort": 30 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 11, + "fields": { + "groupname": "Foreign Data Wrappers", + "groupsort": 27 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 13, + "fields": { + "groupname": "Indexing & Constraints", + "groupsort": 4 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 14, + "fields": { + "groupname": "Data Definition Language (DDL)", + "groupsort": 7 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 15, + "fields": { + "groupname": "SQL", + "groupsort": 6 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 16, + "fields": { + "groupname": "Backup, Restore, Data Integrity, & Replication", + "groupsort": 14 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 17, + "fields": { + "groupname": "Partitioning & Inheritance", + "groupsort": 12 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 18, + "fields": { + "groupname": "Views & Materialized Views", + "groupsort": 13 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 19, + "fields": { + "groupname": "Data Import & Export", + "groupsort": 18 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 20, + "fields": { + "groupname": "Configuration Management", + "groupsort": 19 + } +}, +{ + "model": "featurematrix.featuregroup", + "pk": 21, + "fields": { + "groupname": "Extensions", + "groupsort": 37 + } +}, +{ + "model": "featurematrix.feature", + "pk": 4, + "fields": { + "group": 1, + "featurename": "Heap Only Tuples (HOT)", + "featuredescription": "optimization for heavily updated tables", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 8, + "fields": { + "group": 1, + "featurename": "Asynchronous Commit", + "featuredescription": "Delays writes to WAL for committed transactions", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 11, + "fields": { + "group": 1, + "featurename": "Distributed checkpointing", + "featuredescription": "automatic smoothening of checkpoints to reduce sudden I/O spikes", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 12, + "fields": { + "group": 4, + "featurename": "Multiple autovacuum workers ", + "featuredescription": "allows the autovacuum daemon to operate on multiple tables concurrently", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 13, + "fields": { + "group": 2, + "featurename": "Scrollable and updatable cursor support for pl/pgsql", + "featuredescription": "support for scroll- and updatable cursors in pl/pgsql functions", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 14, + "fields": { + "group": 2, + "featurename": "ROWS and COST specification for functions", + "featuredescription": "CPU costs and the number of expected rows can now be specified for procedural functions to give better hints to the planner", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 15, + "fields": { + "group": 2, + "featurename": "SQLERRM/SQLSTATE for pl/pgsql", + "featuredescription": "allows simple access to the SQL error state and the associated error text if an exception happened", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 17, + "fields": { + "group": 3, + "featurename": "contrib/tsearch2 UTF8 support", + "featuredescription": "UTF8 support for the contributed tsearch2 full text search engine", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 18, + "fields": { + "group": 3, + "featurename": "contrib/dbsize", + "featuredescription": "addon to get the on-disk size of various database objects, built in since 8.1", + "v74": 1, + "v80": 1, + "v81": 2, + "v82": 2, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 19, + "fields": { + "group": 5, + "featurename": "EUC_JIS_2004/ SHIFT_JIS_2004 support", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 20, + "fields": { + "group": 10, + "featurename": "Per function GUC settings", + "featuredescription": "Server configuration parameters can now be set on a per-function basis", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 21, + "fields": { + "group": 1, + "featurename": "Full Text Search", + "featuredescription": "https://www.postgresql.org/docs/current/static/textsearch.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 22, + "fields": { + "group": 6, + "featurename": "GSSAPI support", + "featuredescription": "https://www.postgresql.org/docs/current/gssapi-auth.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 23, + "fields": { + "group": 4, + "featurename": "Updateable cursors", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-declare.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 24, + "fields": { + "group": 1, + "featurename": "Partial sort capability (top-n sorting)", + "featuredescription": "optimizes sort operations for ORDER BY x LIMIT ionsy like operat", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 25, + "fields": { + "group": 15, + "featurename": "ORDER BY NULLS FIRST/LAST", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-select.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 26, + "fields": { + "group": 1, + "featurename": "Synchronized sequential scanning", + "featuredescription": "enabled sequential scans to piggyback on concurrently running scans", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 27, + "fields": { + "group": 4, + "featurename": "Loadable plugin infrastructure for monitoring the planner", + "featuredescription": "allows plugins to augment or even replace the planner (like for providing an index advisor)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 28, + "fields": { + "group": 1, + "featurename": "Multiple temporary tablespaces", + "featuredescription": "allows multiple tablespaces to be defined for temporary operations", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 29, + "fields": { + "group": 9, + "featurename": "Arrays of compound types", + "featuredescription": "allows the creation of arrays of arbitrary complex compound types", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 31, + "fields": { + "group": 9, + "featurename": "GUID/UUID data type", + "featuredescription": "https://www.postgresql.org/docs/current/static/datatype-uuid.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 32, + "fields": { + "group": 9, + "featurename": "ENUM data type", + "featuredescription": "https://www.postgresql.org/docs/current/static/datatype-enum.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 33, + "fields": { + "group": 9, + "featurename": "XML data type", + "featuredescription": "https://www.postgresql.org/docs/current/static/datatype-xml.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 34, + "fields": { + "group": 1, + "featurename": "Automatic plan invalidation", + "featuredescription": "automatic invalidation of cached exceutions plans", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 35, + "fields": { + "group": 8, + "featurename": "Microsoft Visual C++ Support", + "featuredescription": "allows the backend to be compiled with Microsoft Visual Studio", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 36, + "fields": { + "group": 19, + "featurename": "COPY with arbitrary SELECT", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-copy.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 37, + "fields": { + "group": 15, + "featurename": "INSERT/UPDATE/DELETE RETURNING", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-insert.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 38, + "fields": { + "group": 9, + "featurename": "NULLs in Array", + "featuredescription": "array elements can contain NULL", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 39, + "fields": { + "group": 13, + "featurename": "Non-blocking CREATE INDEX", + "featuredescription": "online index creation without locking the table", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 40, + "fields": { + "group": 13, + "featurename": "GIN (Generalized Inverted Index) Indexes", + "featuredescription": "https://www.postgresql.org/docs/current/static/gin.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 41, + "fields": { + "group": 15, + "featurename": "Multirow VALUES", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-values.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 42, + "fields": { + "group": 1, + "featurename": "Outer Join reordering", + "featuredescription": "enables the query planner to reorder out joins", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 44, + "fields": { + "group": 14, + "featurename": "DROP object IF EXISTS", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-commands.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 45, + "fields": { + "group": 15, + "featurename": "Row-wise comparison", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 46, + "fields": { + "group": 6, + "featurename": "Native LDAP authentication", + "featuredescription": "https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-LDAP", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 47, + "fields": { + "group": 4, + "featurename": "Advisory locks", + "featuredescription": "https://www.postgresql.org/docs/current/static/explicit-locking.html#ADVISORY-LOCKS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 48, + "fields": { + "group": 4, + "featurename": "Two Phase commit", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-prepare-transaction.html", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 49, + "fields": { + "group": 6, + "featurename": "ROLES", + "featuredescription": "replaces user and group concept by a more generalizes role based concept", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 50, + "fields": { + "group": 13, + "featurename": "In-memory Bitmap Indexes", + "featuredescription": "enabled the planner to combine multiple indexes using an in-memory bitmap", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 52, + "fields": { + "group": 4, + "featurename": "Integrated autovacuum daemon", + "featuredescription": "https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 53, + "fields": { + "group": 1, + "featurename": "Shared row level locking", + "featuredescription": "reduces deadlock scenarios with foreign keys", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 54, + "fields": { + "group": 17, + "featurename": "Table Partitioning", + "featuredescription": "https://www.postgresql.org/docs/current/static/ddl-partitioning.html", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 55, + "fields": { + "group": 6, + "featurename": "Per user/database connection limits", + "featuredescription": "allows restrictions on the number of connections a given user or database will be allowed to make or accept", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 56, + "fields": { + "group": 18, + "featurename": "Temporary VIEWs", + "featuredescription": "allows the creation of temporary VIEWs", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 57, + "fields": { + "group": 1, + "featurename": "SELECT ... FOR UPDATE/SHARE NOWAIT", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 58, + "fields": { + "group": 10, + "featurename": "ALTER TABLE ENABLE/DISABLE TRIGGER", + "featuredescription": "allows for disabling and enabling a specific or all triggers on a given table", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 59, + "fields": { + "group": 8, + "featurename": "Native Windows Port", + "featuredescription": "Native Port to the Microsoft Windows Platform", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 60, + "fields": { + "group": 4, + "featurename": "Savepoints", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-savepoint.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 61, + "fields": { + "group": 16, + "featurename": "Point-in-Time Recovery", + "featuredescription": "https://www.postgresql.org/docs/current/static/continuous-archiving.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 62, + "fields": { + "group": 1, + "featurename": "Tablespaces", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-createtablespace.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 63, + "fields": { + "group": 14, + "featurename": "Changing column types (ALTER TABLE .. ALTER COLUMN TYPE)", + "featuredescription": "allows online changes of a column datatype to a different one", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 64, + "fields": { + "group": 19, + "featurename": "CSV support for COPY", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-copy.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 65, + "fields": { + "group": 1, + "featurename": "Background Writer", + "featuredescription": "https://www.postgresql.org/docs/current/static/runtime-config-resource.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 67, + "fields": { + "group": 7, + "featurename": "IPv6 Support", + "featuredescription": "Full Support for IPv6", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 68, + "fields": { + "group": 1, + "featurename": "Inlining of SQL-functions", + "featuredescription": "allows the planner to inline most SQL functions into the whole query", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 69, + "fields": { + "group": 4, + "featurename": "SQL-standard information schema", + "featuredescription": "https://www.postgresql.org/docs/current/static/information-schema.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 70, + "fields": { + "group": 4, + "featurename": "Holdable cursors", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-declare.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 71, + "fields": { + "group": 7, + "featurename": "V3 client protocol", + "featuredescription": "https://www.postgresql.org/docs/current/static/protocol.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 72, + "fields": { + "group": 9, + "featurename": "Array support", + "featuredescription": "https://www.postgresql.org/docs/current/static/arrays.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 73, + "fields": { + "group": 10, + "featurename": "Statement level triggers", + "featuredescription": "Triggers that fire on a per statement level instead of a per row level", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 74, + "fields": { + "group": 14, + "featurename": "ON COMMIT clause for CREATE TEMPORARY TABLE", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-createtable.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 75, + "fields": { + "group": 13, + "featurename": "GiST (Generalized Search Tree) Indexes", + "featuredescription": "https://www.postgresql.org/docs/current/static/gist.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 77, + "fields": { + "group": 13, + "featurename": "Indexes on expressions", + "featuredescription": "https://www.postgresql.org/docs/current/static/indexes-expressional.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 78, + "fields": { + "group": 2, + "featurename": "RETURN QUERY in pl/pgsql", + "featuredescription": "simply way to return the result of an arbitrary query in pl/pgsql", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 79, + "fields": { + "group": 2, + "featurename": "Qualified function parameters ", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 80, + "fields": { + "group": 2, + "featurename": "IN/OUT/INOUT parameters for pl/pgsql and PL/SQL", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 81, + "fields": { + "group": 2, + "featurename": "CONTINUE statement for PL/pgSQL", + "featuredescription": "https://www.postgresql.org/docs/current/plpgsql-control-structures.html#id-1.8.8.8.7.6", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 82, + "fields": { + "group": 2, + "featurename": "Validator function for pl/perl", + "featuredescription": "compile time validation of pl/pgsql code", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 83, + "fields": { + "group": 2, + "featurename": "Named parameters", + "featuredescription": "allows the use of named parameters in pl/pgsql", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 84, + "fields": { + "group": 2, + "featurename": "EXCEPTION support in PL/pgSQL", + "featuredescription": "full exception handling support in pl/pgsql", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 85, + "fields": { + "group": 2, + "featurename": "Polymorphic functions", + "featuredescription": "", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 87, + "fields": { + "group": 3, + "featurename": "contrib/pageinspect", + "featuredescription": "https://www.postgresql.org/docs/current/static/pageinspect.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 88, + "fields": { + "group": 3, + "featurename": "contrib/uuid-ossp", + "featuredescription": "set of functions to generate UUIDs", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 89, + "fields": { + "group": 3, + "featurename": "contrib/pg_standby", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgstandby.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 90, + "fields": { + "group": 3, + "featurename": "contrib/pg_freespacemap", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgfreespacemap.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 91, + "fields": { + "group": 3, + "featurename": "contrib/isn (ISBN)", + "featuredescription": "https://www.postgresql.org/docs/current/static/isn.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 92, + "fields": { + "group": 3, + "featurename": "contrib/hstore", + "featuredescription": "https://www.postgresql.org/docs/current/static/hstore.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 93, + "fields": { + "group": 3, + "featurename": "contrib/sslinfo", + "featuredescription": "https://www.postgresql.org/docs/current/static/sslinfo.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 94, + "fields": { + "group": 3, + "featurename": "contrib/xml2", + "featuredescription": "https://www.postgresql.org/docs/current/static/xml2.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 95, + "fields": { + "group": 3, + "featurename": "contrib/pg_trgm", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgtrgm.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 96, + "fields": { + "group": 3, + "featurename": "contrib/btree_gist", + "featuredescription": "https://www.postgresql.org/docs/8.3/static/btree-gist.html", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 97, + "fields": { + "group": 3, + "featurename": "contrib/tsearch2", + "featuredescription": "https://www.postgresql.org/docs/current/static/tsearch2.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 98, + "fields": { + "group": 3, + "featurename": "contrib/userlocks", + "featuredescription": "advisory lock support - moved into the backend", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 2, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 99, + "fields": { + "group": 3, + "featurename": "contrib/pg_autovacuum", + "featuredescription": "automatic vacuum daemon - moved into the backend", + "v74": 1, + "v80": 1, + "v81": 2, + "v82": 2, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 100, + "fields": { + "group": 5, + "featurename": "UTF8 support on Windows", + "featuredescription": "full support for using UTF8 on microsoft windows", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 101, + "fields": { + "group": 3, + "featurename": "contrib/pgbench", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgbench.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 102, + "fields": { + "group": 3, + "featurename": "contrib/seg", + "featuredescription": "https://www.postgresql.org/docs/current/static/seg.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 103, + "fields": { + "group": 3, + "featurename": "contrib/tablefunc", + "featuredescription": "https://www.postgresql.org/docs/current/static/tablefunc.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 104, + "fields": { + "group": 3, + "featurename": "contrib/pgstattuple", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgstattuple.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 105, + "fields": { + "group": 3, + "featurename": "contrib/dblink", + "featuredescription": "https://www.postgresql.org/docs/current/static/dblink.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 106, + "fields": { + "group": 3, + "featurename": "contrib/adminpack", + "featuredescription": "https://www.postgresql.org/docs/current/static/adminpack.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 107, + "fields": { + "group": 3, + "featurename": "contrib/fuzzystrmatch", + "featuredescription": "provides support for levenshtein/soundex/metaphone", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 108, + "fields": { + "group": 6, + "featurename": "Security Service Provider Interface (SSPI)", + "featuredescription": "full integration with the native authentication framework in Microsoft Windows", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 109, + "fields": { + "group": 16, + "featurename": "Warm Standby", + "featuredescription": "https://www.postgresql.org/docs/current/static/warm-standby.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 110, + "fields": { + "group": 13, + "featurename": "Index support for IS NULL", + "featuredescription": "allows index usage with IS NULL expressions", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 111, + "fields": { + "group": 1, + "featurename": "Cross datatype hashing support", + "featuredescription": "allows hashing to be used across compatible but not identical datatypes", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 112, + "fields": { + "group": 9, + "featurename": "Type modifier support", + "featuredescription": "allows user defined datatypes to specify a type modifier", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 113, + "fields": { + "group": 2, + "featurename": "Non-superuser language creation", + "featuredescription": "database owners can now create trusted languages", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 116, + "fields": { + "group": 4, + "featurename": "Autovacuum enabled by default", + "featuredescription": "https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 117, + "fields": { + "group": 7, + "featurename": "V2 client protocol", + "featuredescription": "obsoleted client protocol interface", + "v74": 2, + "v80": 2, + "v81": 2, + "v82": 2, + "v83": 2, + "v84": 2, + "v90": 2, + "v91": 2, + "v92": 2, + "v93": 2, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 118, + "fields": { + "group": 13, + "featurename": "Concurrent GiST indexes", + "featuredescription": "Advanced locking for concurrent modification of GiST indexes", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 119, + "fields": { + "group": 5, + "featurename": "Multibyte encoding support, incl. UTF8", + "featuredescription": "full support for using UTF8 and other multibyte encodings", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 120, + "fields": { + "group": 5, + "featurename": "Multiple language support", + "featuredescription": "https://babel.postgresql.org/", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 121, + "fields": { + "group": 10, + "featurename": "ALTER TABLE / ENABLE REPLICA TRIGGER/RULE", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-altertable.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 122, + "fields": { + "group": 7, + "featurename": "Full SSL support", + "featuredescription": "https://www.postgresql.org/docs/current/static/ssl-tcp.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 123, + "fields": { + "group": 3, + "featurename": "contrib/pg_buffercache", + "featuredescription": "https://www.postgresql.org/docs/current/static/pgbuffercache.html", + "v74": 0, + "v80": 0, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 124, + "fields": { + "group": 4, + "featurename": "Dollar Quoting", + "featuredescription": "", + "v74": 0, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 125, + "fields": { + "group": 3, + "featurename": "contrib/ltree", + "featuredescription": "https://www.postgresql.org/docs/current/static/ltree.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 126, + "fields": { + "group": 3, + "featurename": "contrib/intarray", + "featuredescription": "https://www.postgresql.org/docs/current/static/intarray.html", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 127, + "fields": { + "group": 3, + "featurename": "contrib/tsearch2 compat wrapper", + "featuredescription": "compatibility wrapper for migrating from contrib/tsearch2 to the integrated full text search in 8.3", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 128, + "fields": { + "group": 10, + "featurename": "Statement level TRUNCATE triggers", + "featuredescription": "Trigger support for TRUNCATE", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 129, + "fields": { + "group": 2, + "featurename": "EXECUTE USING in PL/pgSQL", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 130, + "fields": { + "group": 2, + "featurename": "CASE in pl/pgsql", + "featuredescription": "allows the use of CASE as a conditional expression in addition to IF-THEN", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 131, + "fields": { + "group": 13, + "featurename": "GIN indexes partial match", + "featuredescription": "https://www.postgresql.org/docs/current/gin-implementation.html#GIN-PARTIAL-MATCH", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 132, + "fields": { + "group": 15, + "featurename": "WITH Queries (Common Table Expressions)", + "featuredescription": "https://www.postgresql.org/docs/current/queries-with.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 133, + "fields": { + "group": 5, + "featurename": "Database level Collation", + "featuredescription": "Support for different collation order and character categories on a per database level", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 134, + "fields": { + "group": 3, + "featurename": "contrib/citext", + "featuredescription": "case insensitive text datatype", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 135, + "fields": { + "group": 1, + "featurename": "Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT", + "featuredescription": "allows hashing to be used in query plans involving DISTINCT/UNION/EXCEPT/INTERSECT", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 136, + "fields": { + "group": 10, + "featurename": "RETURNS TABLE", + "featuredescription": "SQL standard RETURNS TABLE clause for CREATE FUNCTION", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 137, + "fields": { + "group": 10, + "featurename": "Variadic functions", + "featuredescription": "Allows a variable number of function parameters", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 138, + "fields": { + "group": 2, + "featurename": "User defined exceptions", + "featuredescription": "allows to generate user defined exceptions through RAISE", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 139, + "fields": { + "group": 4, + "featurename": "unnest/array_agg", + "featuredescription": "`unnest` allows for arrays to be \"unnested\" and expanded into a set of rows.\r\n\r\nConversely, `array_agg` can take the output of a set of rows and aggregate them into an array.\r\n\r\nFor more information:\r\n\r\n- [Array Functions](https://www.postgresql.org/docs/current/functions-array.html)\r\n- [Aggregation Functions](https://www.postgresql.org/docs/current/functions-aggregate.html)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 140, + "fields": { + "group": 4, + "featurename": "Disk based FSM", + "featuredescription": "replaces the shared memory fixed size free space map with an on-disk implemenation", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 141, + "fields": { + "group": 10, + "featurename": "Per function statistics", + "featuredescription": "runtime statistics for user-defined functions", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 142, + "fields": { + "group": 10, + "featurename": "RETURN QUERY EXECUTE", + "featuredescription": "allows for returning the result of a dynamically generated query", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 143, + "fields": { + "group": 15, + "featurename": "SQL standard interval handling", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 144, + "fields": { + "group": 6, + "featurename": "SSL certificate validation in libpq", + "featuredescription": "certificate validation in libpq", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 145, + "fields": { + "group": 3, + "featurename": "contrib/autoexplain", + "featuredescription": "Automatic logging of the plans of slow-running queries", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 146, + "fields": { + "group": 15, + "featurename": "TABLE statement", + "featuredescription": "SQL standard shorthand version for `SELECT * FROM`\r\n\r\nFor more information, please see the documentation on [`SELECT`](https://www.postgresql.org/docs/current/sql-select.html)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 147, + "fields": { + "group": 6, + "featurename": "SSL client certificate authentication", + "featuredescription": "allows authentication of clients by the use of an SSL certificate", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 148, + "fields": { + "group": 15, + "featurename": "Window functions", + "featuredescription": "https://www.postgresql.org/docs/current/tutorial-window.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 149, + "fields": { + "group": 3, + "featurename": "contrib/pg_stat_statements", + "featuredescription": "https://www.postgresql.org/docs/8.4/static/pgstatstatements.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 151, + "fields": { + "group": 6, + "featurename": "Column level permissions", + "featuredescription": "allows specification of granular column-level permissions in addition to table level grants", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 152, + "fields": { + "group": 1, + "featurename": "Parallel restore", + "featuredescription": "allows pg_restore to restore data from custom format dumps in parallel", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 153, + "fields": { + "group": 3, + "featurename": "contrib/btree_gin", + "featuredescription": "https://www.postgresql.org/docs/8.4/static/btree-gin.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 154, + "fields": { + "group": 4, + "featurename": "Version aware psql", + "featuredescription": "Allows [psql](https://www.postgresql.org/docs/current/app-psql.html) to work with older versions of PostgreSQL.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 157, + "fields": { + "group": 5, + "featurename": "Unicode string literals and identifiers", + "featuredescription": "allows specification of unicode string literals and identifiers using code points", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 158, + "fields": { + "group": 4, + "featurename": "Visibility Map for Vacuuming", + "featuredescription": "This reduces the overhead of vacuuming as the visibility map tracks only the pages that need to be vacuumed.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 161, + "fields": { + "group": 8, + "featurename": "Sun Studio compiler on Linux", + "featuredescription": "support for compiling PostgreSQL using the Sun Studio compiler on Linux", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 162, + "fields": { + "group": 10, + "featurename": "Column level triggers", + "featuredescription": "adds support for SQL standard column level trigger support, by allowing triggers to only fire if specific columns are mentioned in the UPDATEs SET list", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 163, + "fields": { + "group": 13, + "featurename": "Deferrable unique constraints", + "featuredescription": "allows unique constraint checking to be deferred until the end of the transaction", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 165, + "fields": { + "group": 4, + "featurename": "XML, JSON and YAML output for EXPLAIN", + "featuredescription": "Adds XML, JSON and YAML output to EXPLAIN to help with automatic processing of plans", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 166, + "fields": { + "group": 6, + "featurename": "Default permissions", + "featuredescription": "allows the specification of default permissions for objects", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 167, + "fields": { + "group": 2, + "featurename": "DO statement for pl/pgsql", + "featuredescription": "allows the execution of anonymous code blocks in pl/pgsql", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 168, + "fields": { + "group": 6, + "featurename": "GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS", + "featuredescription": "simplifies permission management by allowing mass changes of GRANTS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 169, + "fields": { + "group": 4, + "featurename": "Prefix support for text search synonym dictionary", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 170, + "fields": { + "group": 20, + "featurename": "Per user/database server configuration settings", + "featuredescription": "provides for per user/database server configuration settings", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 171, + "fields": { + "group": 2, + "featurename": "Unicode object support in PL/python", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 174, + "fields": { + "group": 3, + "featurename": "contrib/unaccent", + "featuredescription": "https://www.postgresql.org/docs/current/static/unaccent.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 175, + "fields": { + "group": 3, + "featurename": "contrib/dblink asyncronous notification support", + "featuredescription": "Add the ability to retrieve asynchronous notifications using dblink", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 176, + "fields": { + "group": 8, + "featurename": "Spinlock support for the SuperH hardware platform", + "featuredescription": "s_lock support for the SuperH CPU", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 178, + "fields": { + "group": 10, + "featurename": "WHEN clause for CREATE TRIGGER", + "featuredescription": "adds support for a boolean expression to be checked if a trigger should be fired or not", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 179, + "fields": { + "group": 13, + "featurename": "Exclusion constraints", + "featuredescription": "generalizes the concept of uniqueness to support any indexable commutative operator, not just equality", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 180, + "fields": { + "group": 10, + "featurename": "ORDER BY support within aggregates", + "featuredescription": "allows controlling the order of values fed into an aggregate function", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 181, + "fields": { + "group": 4, + "featurename": "EXPLAIN (BUFFERS) support", + "featuredescription": "adds the ability to show buffer-usage statistics for a query", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 182, + "fields": { + "group": 3, + "featurename": "contrib/passwordcheck", + "featuredescription": "https://www.postgresql.org/docs/current/static/passwordcheck.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 183, + "fields": { + "group": 6, + "featurename": "Large object access controls", + "featuredescription": "Access controls on large objects", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 184, + "fields": { + "group": 6, + "featurename": "Search+bind mode operation for LDAP authentication", + "featuredescription": "Allows searching for the user in the directory first, and then binds with the DN found for this user", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 185, + "fields": { + "group": 2, + "featurename": "pl/pgsql installed by default", + "featuredescription": "pl/pgsql is now installed by default in all newly created database", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 186, + "fields": { + "group": 2, + "featurename": "DO statement for pl/perl", + "featuredescription": "allows the execution of anonymous code blocks in pl/perl", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 187, + "fields": { + "group": 2, + "featurename": "Python 3 support for pl/python", + "featuredescription": "support for Python 3 in pl/python", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 188, + "fields": { + "group": 16, + "featurename": "Hot Standby", + "featuredescription": "allow read only connections during recovery", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 189, + "fields": { + "group": 14, + "featurename": "Typed tables", + "featuredescription": "Adds support for syntax: CREATE TABLE name OF type", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 190, + "fields": { + "group": 4, + "featurename": "Payload support for LISTEN/NOTIFY", + "featuredescription": "[`NOTIFY`](https://www.postgresql.org/docs/current/sql-notify.html) can send payload data, which can be received by [`LISTEN`](https://www.postgresql.org/docs/current/sql-listen.html)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 191, + "fields": { + "group": 1, + "featurename": "Set costs specific to TABLESPACEs", + "featuredescription": "Allows for setting seq_page_cost and random_page_cost on a per tablespace level", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 192, + "fields": { + "group": 16, + "featurename": "Streaming Replication", + "featuredescription": "Integrated replication support based on streaming WAL data", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 193, + "fields": { + "group": 6, + "featurename": "Native RADIUS authentication", + "featuredescription": "adds support for authentictaing against a RADIUS server", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 194, + "fields": { + "group": 4, + "featurename": "SQLDA support for ECPG", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 195, + "fields": { + "group": 8, + "featurename": "Windows x64 support", + "featuredescription": "support for compiling PostgreSQL as a 64bit binary on Microsoft Windows", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 196, + "fields": { + "group": 3, + "featurename": "contrib/pg_upgrade", + "featuredescription": "pg_upgrade (formerly called pg_migrator) allows data stored in PostgreSQL data files to be migrated to a later PostgreSQL major version without the data dump/reload typically required for major version upgrades", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 197, + "fields": { + "group": 3, + "featurename": "contrib/sepgsql", + "featuredescription": "sepgsql is a loadable module which supports label-based mandatory access control (MAC) based on SELinux security policy.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 198, + "fields": { + "group": 3, + "featurename": "contrib/auth_delay", + "featuredescription": "auth_delay causes the server to pause briefly before reporting authentication failure, to make brute-force attacks on database passwords more difficult.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 199, + "fields": { + "group": 3, + "featurename": "contrib/file_fdw", + "featuredescription": "The file_fdw module provides the foreign-data wrapper file_fdw, which can be used to access data files in the server file system.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 200, + "fields": { + "group": 1, + "featurename": "K-nearest neighbor GiST support", + "featuredescription": "allows nearest-neighbor support to contrib/pg_trgm and contrib/btree_gist", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 201, + "fields": { + "group": 1, + "featurename": "Unlogged tables", + "featuredescription": "Such tables provide better update performance than regular tables, but are not crash-safe: their contents are automatically cleared in case of a server crash. Their contents do not propagate to replication slaves, either.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 202, + "fields": { + "group": 1, + "featurename": "Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN", + "featuredescription": "allows FULL OUTER JOIN to be implemented as a hash join, and allow either side of a LEFT OUTER JOIN or RIGHT OUTER JOIN to be hashed", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 203, + "fields": { + "group": 6, + "featurename": "SSPI authentication via GSSAPI", + "featuredescription": "allows Unix-based GSSAPI clients to do SSPI authentication with Windows servers.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 204, + "fields": { + "group": 1, + "featurename": "WAL Buffer auto-tuning", + "featuredescription": "wal_buffers is now auto-tuned by default based on the size of shared_buffers", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 205, + "fields": { + "group": 16, + "featurename": "Synchronous replication", + "featuredescription": "This allows the primary to wait for a standby to write the transaction information to disk before acknowledging the commit. One standby at a time can take the role of the synchronous standby, as controlled by the synchronous_standby_names setting. Synchronous replication can be enabled or disabled on a per-transaction basis using the synchronous_commit setting.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 206, + "fields": { + "group": 16, + "featurename": "pg_basebackup tool", + "featuredescription": "pg_basebackup is a tool to take a base backup of a PostgreSQL cluster", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 207, + "fields": { + "group": 4, + "featurename": "Named restore points", + "featuredescription": "Create a named point for performing restore using pg_create_restore_point", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 208, + "fields": { + "group": 15, + "featurename": "Writable WITH Queries (Common Table Expressions)", + "featuredescription": "Allows INSERT/UPDATE/DELETE in WITH clauses which can be used in conjunction with a RETURNING clause to to pass data up to the containing query.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 209, + "fields": { + "group": 4, + "featurename": "Serializable Snapshot Isolation", + "featuredescription": "This implements true serializable snapshot isolation. Previously, asking for serializable isolation guaranteed only that a single MVCC snapshot would be used for the entire transaction, which allowed certain documented anomalies.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 210, + "fields": { + "group": 5, + "featurename": "Column-level collation support", + "featuredescription": "Previously collation could only be set at database creation. Collation can now be set per column, domain, index, or expression, via the SQL-standard COLLATE clause.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 211, + "fields": { + "group": 21, + "featurename": "Extension Installation", + "featuredescription": "https://www.postgresql.org/docs/current/static/external-extensions.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 212, + "fields": { + "group": 11, + "featurename": "Foreign Tables", + "featuredescription": "This allows data stored outside the database to be used like native PostgreSQL-stored data.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 213, + "fields": { + "group": 14, + "featurename": "ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX", + "featuredescription": "This allows a primary key or unique constraint to be defined using an existing unique index, including a concurrently created unique index.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 214, + "fields": { + "group": 1, + "featurename": "Foreign keys marked as NOT VALID", + "featuredescription": "This introduces a new option to the creation of foreign keys called NOT VALID, which can later be modified to VALIDATED and validation checks performed. Together these allow you to add a foreign key with minimal impact on read and write operations.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 215, + "fields": { + "group": 10, + "featurename": "Triggers on views", + "featuredescription": "This adds support for INSTEAD OF triggers on views which can be used to implement fully updatable views.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 216, + "fields": { + "group": 2, + "featurename": "FOREACH IN ARRAY in pl/pgsql", + "featuredescription": "This is more efficient and readable than previous methods of iterating through the elements of an array value.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 217, + "fields": { + "group": 13, + "featurename": "Index-only scans", + "featuredescription": "Also known as \"covering indexes\", allows data in indexes to satisfy queries where all columns in a given query are covered by the index. This removes the requirement of having to visit the table pages, which was required previously to get visibility information, but now the visibility map is used instead.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 218, + "fields": { + "group": 1, + "featurename": "Multi-core scalability for read-only workloads", + "featuredescription": "Improve concurrent read-only workloads on multi-core servers. Previously this had limited scalability offering performance benefits only up to a few cores, but now performance gains are seen utilising all cores in 32 and 64 core servers.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 219, + "fields": { + "group": 16, + "featurename": "Cascading streaming replication", + "featuredescription": "Standbys can now stream to other standbys, reducing replication load on the primary server.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 220, + "fields": { + "group": 9, + "featurename": "JSON data type", + "featuredescription": "https://www.postgresql.org/docs/9.2/static/datatype-json.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 221, + "fields": { + "group": 9, + "featurename": "Range types", + "featuredescription": "https://www.postgresql.org/docs/9.2/static/rangetypes.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 222, + "fields": { + "group": 13, + "featurename": "Space-Partitioned GiST (SP-GiST) Indexes", + "featuredescription": "https://www.postgresql.org/docs/current/static/spgist.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 223, + "fields": { + "group": 9, + "featurename": "smallserial type", + "featuredescription": "A serial data type that uses smallint (2 byte integer) as its base type, giving it a reduced numeric range, but a smaller data footprint.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 224, + "fields": { + "group": 3, + "featurename": "contrib/tcn", + "featuredescription": "https://www.postgresql.org/docs/9.2/static/tcn.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 225, + "fields": { + "group": 16, + "featurename": "pg_receivewal (formerly pg_receivexlog)", + "featuredescription": "https://www.postgresql.org/docs/current/static/app-pgreceivewal.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 226, + "fields": { + "group": 3, + "featurename": "contrib/pg_stat_statements improvements", + "featuredescription": "pg_stat_statements now aggregates similar queries so that such data is no longer confined to just prepared queries.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 227, + "fields": { + "group": 1, + "featurename": "Background Checkpointer", + "featuredescription": "Originally the background writer held responsibility for writing checkpoints, but it has now been moved into its own separate process and the background writer is now only responsible for writing dirty pages to disk. This provides advantages related to performance and power-reduction.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 228, + "fields": { + "group": 14, + "featurename": "ALTER object IF EXISTS", + "featuredescription": "Many objects now support IF EXISTS clauses on ALTER statements, such as tables, foreign tables, indexes, sequences etc.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 229, + "fields": { + "group": 14, + "featurename": "CREATE TABLE ... (LIKE) with foreign tables, views and composite types", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 230, + "fields": { + "group": 6, + "featurename": "security_barrier option on views", + "featuredescription": "This prevents security_barrier views from being moved into other scopes, preventing possible leakage of view-prohibited data.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 231, + "fields": { + "group": 15, + "featurename": "LATERAL clause", + "featuredescription": "SQL-standard LATERAL option for FROM-clause subqueries and function calls.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 232, + "fields": { + "group": 4, + "featurename": "64-bit large objects", + "featuredescription": "Large objects are now 64-bit and can now be up to 4TB where before it was up to 2GB.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 233, + "fields": { + "group": 10, + "featurename": "Event triggers", + "featuredescription": "Support for creating triggers for DDL events.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 234, + "fields": { + "group": 18, + "featurename": "Updatable views", + "featuredescription": "Simple views can now have UPDATE/INSERT/DELETE performed against them.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 235, + "fields": { + "group": 16, + "featurename": "Parallel pg_dump", + "featuredescription": "pg_dump now has a --jobs option to dump tables in parallel.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 236, + "fields": { + "group": 18, + "featurename": "Materialized Views", + "featuredescription": "https://www.postgresql.org/docs/current/static/rules-materializedviews.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 237, + "fields": { + "group": 11, + "featurename": "Writable Foreign Data Wrappers", + "featuredescription": "The foreign data wrapper infrastructure now supports INSERT/DELETE/UPDATE operations which individual FDWs can now add support for.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 238, + "fields": { + "group": 11, + "featurename": "Foreign data wrappers", + "featuredescription": "Foreign data wrappers allow access to external data for querying.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 239, + "fields": { + "group": 11, + "featurename": "PostgreSQL Foreign Data Wrapper", + "featuredescription": "https://www.postgresql.org/docs/current/static/postgres-fdw.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 240, + "fields": { + "group": 4, + "featurename": "Support for anonymous shared memory", + "featuredescription": "Previously sizing shared memory often required adjusting kernel parameters to accommodate the change. This is no longer necessary.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 241, + "fields": { + "group": 4, + "featurename": "Custom background workers", + "featuredescription": "Background worker processes can now be added that can attach to PostgreSQL's shared memory.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 242, + "fields": { + "group": 15, + "featurename": "SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes", + "featuredescription": "These prevent non-key-field row updates from locking foreign key rows.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 243, + "fields": { + "group": 16, + "featurename": "Checksum on data pages", + "featuredescription": "Clusters can now be created with checksums on pages to detect and report page corruption.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 244, + "fields": { + "group": 16, + "featurename": "Streaming-only cascading replication", + "featuredescription": "Cascading replication previously required that an xlog archive be available in order for a standbys of the new primary to correctly switch to the new timeline. This change removes this dependency.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 245, + "fields": { + "group": 3, + "featurename": "contrib/pg_xlogdump", + "featuredescription": "Displays a human-readable rendering of the write-ahead log of a PostgreSQL database cluster.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 246, + "fields": { + "group": 3, + "featurename": "contrib/pg_trgm regular expressions indexing", + "featuredescription": "Regular expressions can now be indexed using GIN in contrib/pg_trgm.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 247, + "fields": { + "group": 13, + "featurename": "SP-GiST indexes for range types", + "featuredescription": "GiST and SP-GiST indexes can be created for table columns of range types.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 248, + "fields": { + "group": 19, + "featurename": "COPY from/to STDIN/STDOUT", + "featuredescription": "COPY and psql's \\copy now support piping from and to STDIN and STDOUT respectively.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 249, + "fields": { + "group": 9, + "featurename": "Improved set of JSON functions and operators", + "featuredescription": "New operators and functions to extract values from JSON data strings, JSON data strings can now to be converted into records and new functions to convert values, records, and hstore data to JSON.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 250, + "fields": { + "group": 9, + "featurename": "JSONB data type", + "featuredescription": "https://www.postgresql.org/docs/9.4/static/datatype-json.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 251, + "fields": { + "group": 18, + "featurename": "Materialized views with concurrent refresh", + "featuredescription": "Materialized views which can be refreshed with REFRESH MATERIALIZED VIEW CONCURRENTLY name;", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 252, + "fields": { + "group": 20, + "featurename": "ALTER SYSTEM", + "featuredescription": "https://www.postgresql.org/docs/9.4/static/sql-altersystem.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 253, + "fields": { + "group": 6, + "featurename": "krb5 authentication (without gssapi)", + "featuredescription": "native Kerberos 5 wire authentication (replaced with GSSAPI)", + "v74": 1, + "v80": 1, + "v81": 1, + "v82": 1, + "v83": 1, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 2, + "v95": 2, + "v96": 2, + "v10": 2, + "v11": 2, + "v12": 2, + "v13": 2 + } +}, +{ + "model": "featurematrix.feature", + "pk": 254, + "fields": { + "group": 4, + "featurename": "Dynamic Background Workers", + "featuredescription": "Allows background workers to be started and stopped dynamically by any user process.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 255, + "fields": { + "group": 16, + "featurename": "Replication Slots", + "featuredescription": "https://www.postgresql.org/docs/9.4/static/warm-standby.html#STREAMING-REPLICATION-SLOTS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 256, + "fields": { + "group": 13, + "featurename": "GIN Index performance and size improvements", + "featuredescription": "GIN Indexes now take up significantly less space and perform a lot faster than pre-9.4 releases.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 257, + "fields": { + "group": 16, + "featurename": "Time-delayed Standbys", + "featuredescription": "A new setting called recovery_min_apply_delay will allow a standby to lag behind the primary by a specified amount of time.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 258, + "fields": { + "group": 1, + "featurename": "Reduced lock levels for ALTER TABLE commands", + "featuredescription": "The following commands now have reduced lock levels for reduced lock contention:\r\n\r\nVALIDATE CONSTRAINT\r\n\r\nCLUSTER ON\r\nSET WITHOUT CLUSTER\r\n\r\nALTER COLUMN SET STATISTICS\r\nALTER COLUMN SET ()\r\nALTER COLUMN RESET ()", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 259, + "fields": { + "group": 15, + "featurename": "WITHIN GROUP clause", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-AGGREGATES", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 260, + "fields": { + "group": 1, + "featurename": "Base backup throttling", + "featuredescription": "pg_basebackup now supports throttling of backups with -r or --max-rate , allowing control of the data transfer rate of the base backup.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 261, + "fields": { + "group": 1, + "featurename": "pg_prewarm", + "featuredescription": "https://www.postgresql.org/docs/9.4/static/pgprewarm.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 262, + "fields": { + "group": 15, + "featurename": "WITH ORDINALITY clause", + "featuredescription": "https://www.postgresql.org/docs/current/queries-table-expressions.html#QUERIES-TABLEFUNCTIONS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 263, + "fields": { + "group": 10, + "featurename": "FILTER clause for aggregate functions", + "featuredescription": "Aggregate functions can now be filtered with the FILTER clause. For example: count(col_a) FILTER (WHERE col_b > 5)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 264, + "fields": { + "group": 18, + "featurename": "WITH CHECK clause", + "featuredescription": "Auto-updatable views can now specify whether an INSERT or UPDATE would change the state of the row so that it would no longer be visible in the view. Using WITH CHECK OPTION will prevent any such changes from occuring.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 265, + "fields": { + "group": 11, + "featurename": "IMPORT FOREIGN SCHEMA", + "featuredescription": "https://www.postgresql.org/docs/9.5/static/sql-importforeignschema.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 266, + "fields": { + "group": 14, + "featurename": "ALTER TABLE ... SET LOGGED / UNLOGGED", + "featuredescription": "Allows tables to switch between logged and unlogged states.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 267, + "fields": { + "group": 6, + "featurename": "Row-Level Security", + "featuredescription": "https://www.postgresql.org/docs/current/static/sql-createpolicy.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 268, + "fields": { + "group": 1, + "featurename": "SKIP LOCKED clause", + "featuredescription": "Skips over rows that are currently locked without waiting.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 269, + "fields": { + "group": 13, + "featurename": "Block-range (BRIN) indexes", + "featuredescription": "https://www.postgresql.org/docs/current/static/brin-intro.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 270, + "fields": { + "group": 4, + "featurename": "Parallel vacuumdb jobs", + "featuredescription": "The vacuumdb tool now supports an option to define the number of jobs in which to run VACUUM.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 271, + "fields": { + "group": 17, + "featurename": "Foreign table inheritance", + "featuredescription": "Foreign tables can now inherit from other foreign tables or other regular tables. The reverse also applies.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 272, + "fields": { + "group": 3, + "featurename": "contrib/pg_rewind", + "featuredescription": "https://www.postgresql.org/docs/9.5/static/app-pgrewind.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 273, + "fields": { + "group": 13, + "featurename": "Index-only scans on GiST", + "featuredescription": "GiST indexes now support index-only scans.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 274, + "fields": { + "group": 2, + "featurename": "CREATE TRANSFORM", + "featuredescription": "https://www.postgresql.org/docs/9.5/static/sql-createtransform.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 275, + "fields": { + "group": 15, + "featurename": "Upsert (INSERT ... ON CONFLICT DO ...)", + "featuredescription": "Support for upsert functionality which allows either no action to be taken when a conflict is encountered, or convert the INSERT to an UPDATE.\r\n\r\nFor more information, please see the [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) documentation.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 276, + "fields": { + "group": 9, + "featurename": "JSONB-modifying operators and functions", + "featuredescription": "New operators and functions which allow deleting, modifying or inserting values into JSONB values, including at specific path locations.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 277, + "fields": { + "group": 1, + "featurename": "TABLESAMPLE clause", + "featuredescription": "Specifies that a sample of the table is to be used, which is useful for use-cases such as approximate averages.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 278, + "fields": { + "group": 15, + "featurename": "GROUPING SETS, CUBE and ROLLUP support", + "featuredescription": "https://www.postgresql.org/docs/current/static/queries-table-expressions.html#QUERIES-GROUPING-SETS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 279, + "fields": { + "group": 1, + "featurename": "Abbreviated Keys", + "featuredescription": "The abbreviated keys optimization can be expected to greatly enhance the performance of sorts in PostgreSQL, including those used for CREATE INDEX. Reportedly, in some cases, CREATE INDEX on text columns can be as much as an entire order of magnitude faster (3x is a more typical improvement). Numeric sorts also support the optimization.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 280, + "fields": { + "group": 16, + "featurename": "min_wal_size / max_wal_size", + "featuredescription": "Replaces `checkpoint_segments` parameter.\r\n\r\nFor more information, please see the [WAL configuration](https://www.postgresql.org/docs/current/wal-configuration.html) documentation.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 281, + "fields": { + "group": 1, + "featurename": "Parallel query", + "featuredescription": "Ability to execute multiple query nodes in parallel processes.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 282, + "fields": { + "group": 1, + "featurename": "Parallel full table scans (sequential scans)", + "featuredescription": "https://www.postgresql.org/docs/current/parallel-plans.html#PARALLEL-SCANS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 283, + "fields": { + "group": 1, + "featurename": "Parallel JOIN, aggregate", + "featuredescription": "Ability to execute some kinds of JOINs, as well as aggregates, using multiple parallel processes.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 284, + "fields": { + "group": 11, + "featurename": "postgres_fdw pushdown", + "featuredescription": "Ability to push down JOIN, Sorts, UPDATEs and DELETEs to the remote database in postgres_fdw driver, and theoretically in other drivers. Also some generic operator/function pushdown.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 285, + "fields": { + "group": 16, + "featurename": "Multiple synchronous standbys", + "featuredescription": "Ability to require synch messages from multiple prioritized standbys when committing a synchronous transaction.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 286, + "fields": { + "group": 16, + "featurename": "remote_apply mode", + "featuredescription": "Ability to require that synchronous replicas be caught up with the master in applying changes before commit. Supports \"consistent clustering\".", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 287, + "fields": { + "group": 1, + "featurename": "Frozen page map", + "featuredescription": "Frozen page data in visibility map to prevent re-vacuuming already-frozen pages during wraparound.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 288, + "fields": { + "group": 3, + "featurename": "KNN support for CUBE", + "featuredescription": "KNN indexing support for the CUBE module. Supports n-dimensional nearest neighbor searches.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 289, + "fields": { + "group": 9, + "featurename": "Phrase search", + "featuredescription": "Fulltext search for phrases and word proximity.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 290, + "fields": { + "group": 20, + "featurename": "pg_config system view", + "featuredescription": "New system view to display information about the PostgreSQL build, storage, and build configuration options.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 291, + "fields": { + "group": 16, + "featurename": "Generic WAL facility", + "featuredescription": "Consistent, simple API for WAL-logging of database objects, supporting new index access methods and other storage objects.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 292, + "fields": { + "group": 21, + "featurename": "CREATE EXTENSION .. CASCADE", + "featuredescription": "Ability to automatically pull in required additional extensions for an extension dependency tree.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 293, + "fields": { + "group": 16, + "featurename": "Logical Replication", + "featuredescription": "https://www.postgresql.org/docs/10/static/logical-replication.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 294, + "fields": { + "group": 17, + "featurename": "Declarative table partitioning", + "featuredescription": "https://www.postgresql.org/docs/10/static/ddl-partitioning.html#ddl-partitioning-declarative", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 295, + "fields": { + "group": 6, + "featurename": "SCRAM-SHA-256 Authentication", + "featuredescription": "As described in RFC 7677, SCRAM-SHA-256 authentication provides challenge-response scheme, that prevents password sniffing on untrusted connections. It is more secure than the md5 method, but might not be supported by older clients.\r\n\r\nSCRAM-SHA-256 authentication can be enabled in the host-based authentication configuration file.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 296, + "fields": { + "group": 16, + "featurename": "Quorum commit for synchronous replication", + "featuredescription": "Using the synchronous_standby_names configuration parameter, synchronous replication can be setup to allow for any number of standbys to confirm writes have been committed, irrespective of their ordering. This is also known as \"quorum commit.\"", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 297, + "fields": { + "group": 13, + "featurename": "Parallel B-tree index scans", + "featuredescription": "B-tree index pages can be searched by separate parallel workers.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 298, + "fields": { + "group": 1, + "featurename": "Parallel bitmap heap scans", + "featuredescription": "A single index scan can dispatch parallel workers to process different areas of the heap.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 299, + "fields": { + "group": 1, + "featurename": "Parallel merge joins", + "featuredescription": "Merge joins can be performed in parallel.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 300, + "fields": { + "group": 13, + "featurename": "WAL support for hash indexes", + "featuredescription": "Hash indexes have write-ahead log support, which makes them both crash safe and replicable.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 301, + "fields": { + "group": 9, + "featurename": "macaddr8 data type", + "featuredescription": "https://www.postgresql.org/docs/10/static/datatype-net-types.html#datatype-macaddr8", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 302, + "fields": { + "group": 17, + "featurename": "Partitioning by a hash key", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 303, + "fields": { + "group": 13, + "featurename": "Parallelized CREATE INDEX for B-tree indexes", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 304, + "fields": { + "group": 17, + "featurename": "Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables", + "featuredescription": "", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 305, + "fields": { + "group": 10, + "featurename": "CREATE PROCEDURE syntax for SQL stored procedures", + "featuredescription": "https://www.postgresql.org/docs/11/static/sql-createprocedure.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 306, + "fields": { + "group": 1, + "featurename": "Parallel hash joins", + "featuredescription": "https://www.postgresql.org/docs/current/parallel-plans.html#PARALLEL-JOINS", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 307, + "fields": { + "group": 1, + "featurename": "Just-in-Time (JIT) compilation for expression evaluation and tuple deforming", + "featuredescription": "https://www.postgresql.org/docs/current/static/jit.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 308, + "fields": { + "group": 6, + "featurename": "Channel binding for SCRAM authentication", + "featuredescription": "https://www.postgresql.org/docs/current/sasl-authentication.html#SASL-SCRAM-SHA-256", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 309, + "fields": { + "group": 10, + "featurename": "CALL syntax for executing procedures", + "featuredescription": "https://www.postgresql.org/docs/11/static/sql-call.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 310, + "fields": { + "group": 5, + "featurename": "ICU collations", + "featuredescription": "https://www.postgresql.org/docs/current/static/collation.html#id-1.6.10.4.5.7.5", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 311, + "fields": { + "group": 17, + "featurename": "Default Partition", + "featuredescription": "A default partition stores data that does not match the partition key for any other partition, i.e. it is a \"catch all\" partition.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 312, + "fields": { + "group": 17, + "featurename": "UPDATE on a partition key", + "featuredescription": "When a partition key is updated on a row, the row is moved to the appropriate partition.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 313, + "fields": { + "group": 13, + "featurename": "Covering Indexes for B-trees (INCLUDE)", + "featuredescription": "Allows additional columns to be included in as \"non-key\" columns in an index, and if requirements are met, can return data from these columns in an index-only scan.\r\n\r\nFore more information, please see the documentation on [Index-Only Scans & Covering Indexes](https://www.postgresql.org/docs/current/indexes-index-only-scans.html).", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 314, + "fields": { + "group": 13, + "featurename": "Covering indexes for GiST (INCLUDE)", + "featuredescription": "Allows additional columns to be included in as \"non-key\" columns in a GiST index, and if requirements are met, can return data from these columns in an index-only scan.\r\n\r\nFore more information, please see the documentation on [Index-Only Scans & Covering Indexes](https://www.postgresql.org/docs/current/indexes-index-only-scans.html).", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 315, + "fields": { + "group": 15, + "featurename": "SQL/JSON path expressions", + "featuredescription": "https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJSON-PATH", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 316, + "fields": { + "group": 13, + "featurename": "K-nearest neighbor SP-GiST Support", + "featuredescription": "Add support for K-nearest neighbor (K-NN) searches on SP-GiST indexes when the distance operator `<->` is defined.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 317, + "fields": { + "group": 1, + "featurename": "CREATE STATISTICS - multicolumn", + "featuredescription": "CREATE STATISTICS provides the ability to collect statistics over multiple columns, which can be used by the optimizer to generate better query plans.\r\n\r\nhttps://www.postgresql.org/docs/current/sql-createstatistics.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 318, + "fields": { + "group": 1, + "featurename": "CREATE STATISTICS - most-common values (MCV) statistics", + "featuredescription": "CREATE STATISTICS can collection statistics on the most common value, which can improve optimizations for columns that contain nonuniform distributions.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 319, + "fields": { + "group": 17, + "featurename": "Foreign Key references for partitioned tables", + "featuredescription": "A foreign key can reference a partitioned table.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 320, + "fields": { + "group": 1, + "featurename": "Accelerated partition pruning", + "featuredescription": "Performance improvements for queries on tables with thousands of partitions when only a limited subset of partitions need to be accessed.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 321, + "fields": { + "group": 1, + "featurename": "Inlined WITH Queries (Common Table Expressions)", + "featuredescription": "A WITH query that is neither recursive nor has any side-effects (e.g. an INSERT/UPDATE/DELETE) can be executed inline, which can lead to performance improvements. This behavior can be forced on a query by using the \"NOT MATERIALIZED\" clause, e.g.\r\n\r\n```\r\nWITH cte AS NOT MATERIALIZED (\r\n SELECT * FROM a\r\n)\r\nSELECT * FROM cte\r\nJOIN b ON b.id = cte.id;\r\n```\r\n\r\nFor more information, please visit [https://www.postgresql.org/docs/12/queries-with.html](https://www.postgresql.org/docs/12/queries-with.html)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 322, + "fields": { + "group": 14, + "featurename": "Stored Generated Columns", + "featuredescription": "https://www.postgresql.org/docs/current/ddl-generated-columns.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 323, + "fields": { + "group": 5, + "featurename": "Nondeterministic collations", + "featuredescription": "https://www.postgresql.org/docs/12/collation.html#COLLATION-NONDETERMINISTIC", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 324, + "fields": { + "group": 6, + "featurename": "GSSAPI client and server-side encryption", + "featuredescription": "Support for client and server-side connection encryption when using GSSAPI for authentication.\r\n\r\nhttps://www.postgresql.org/docs/12/gssapi-auth.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 325, + "fields": { + "group": 6, + "featurename": "LDAP server discovery", + "featuredescription": "LDAP servers with DNS SRV can be discovered if PostgreSQL is built with OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/12/auth-ldap.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 326, + "fields": { + "group": 6, + "featurename": "Multifactor authentication via valid client SSL/TLS certificate", + "featuredescription": "If an authentication entry in the pg_hba.conf specifies the `clientcert=verify-full`, then the client must present a valid SSL certificate that matches the login name, or the client name based on a map.\r\n\r\n[https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CERTIFICATES](https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CERTIFICATES)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 327, + "fields": { + "group": 14, + "featurename": "REINDEX CONCURRENTLY", + "featuredescription": "https://www.postgresql.org/docs/current/sql-reindex.html#SQL-REINDEX-CONCURRENTLY", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 328, + "fields": { + "group": 16, + "featurename": "Enable/Disable page checksums in an offline cluster", + "featuredescription": "Page checksums can be enabled or disabled in an offline PostgreSQL cluster via the pg_checksums command:\r\n\r\nhttps://www.postgresql.org/docs/12/app-pgchecksums.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 329, + "fields": { + "group": 20, + "featurename": "Fractional input for \"integer\" values", + "featuredescription": "Fractional input for \"integer\" server variables is now accepted e.g.\r\n\r\nSET work_mem = '24.2MB'", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 330, + "fields": { + "group": 19, + "featurename": "COPY FROM ... WHERE", + "featuredescription": "Specify which rows are loaded from a data source via a WHERE clause when using COPY FROM", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 331, + "fields": { + "group": 14, + "featurename": "CREATE ACCESS METHOD", + "featuredescription": "https://www.postgresql.org/docs/12/sql-create-access-method.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 332, + "fields": { + "group": 1, + "featurename": "Partition pruning during query execution", + "featuredescription": "Queries on partitioned tables can eliminate partitions during query execution time, instead of only at query planning time. This allows PostgreSQL to use information that becomes available during query execution to further prune the number of partitions it needs to use, leading to improved query performance.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 333, + "fields": { + "group": 13, + "featurename": "B-tree deduplication", + "featuredescription": "https://www.postgresql.org/docs/13/btree-implementation.html#BTREE-DEDUPLICATION", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 334, + "fields": { + "group": 1, + "featurename": "Incremental sort", + "featuredescription": "https://www.postgresql.org/docs/13/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 335, + "fields": { + "group": 1, + "featurename": "CREATE STATISTICS - \"OR\" and \"IN/ANY\" statistics", + "featuredescription": "Extend statistics can help the query planner provided better plans for queries that have \"OR\".clauses as well as \"IN/ANY\" lookups over lists. For more information, please see https://www.postgresql.org/docs/13/planner-stats.html#PLANNER-STATS-EXTENDED", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 336, + "fields": { + "group": 1, + "featurename": "Hash aggregation can use disk", + "featuredescription": "The query planner can now consider using hash aggregation if it expects the aggregate to exceed working memory.\r\n\r\nThis can be controlled by two configuration parameters:\r\n\r\n- [enable_hashagg](https://www.postgresql.org/docs/13/runtime-config-query.html#GUC-ENABLE-HASHAGG)\r\n- [hash_mem_multiplier](https://www.postgresql.org/docs/13/runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 337, + "fields": { + "group": 15, + "featurename": "Recursive Queries", + "featuredescription": "https://www.postgresql.org/docs/current/queries-with.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 1, + "v90": 1, + "v91": 1, + "v92": 1, + "v93": 1, + "v94": 1, + "v95": 1, + "v96": 1, + "v10": 1, + "v11": 1, + "v12": 1, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 338, + "fields": { + "group": 6, + "featurename": "Client can require SCRAM channel binding", + "featuredescription": "https://www.postgresql.org/docs/13/libpq-connect.html#LIBPQ-CONNECT-CHANNEL-BINDING", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 339, + "fields": { + "group": 11, + "featurename": "Certificate authentication with postgres_fdw", + "featuredescription": "The [postgres_fdw](https://www.postgresql.org/docs/13/postgres-fdw.html) can now use the built-in [certificate authentication](https://www.postgresql.org/docs/current/auth-cert.html) mechanism.\r\n\r\nFor more information, please visit the [postgres_fdw documentation](https://www.postgresql.org/docs/13/postgres-fdw.html#id-1.11.7.42.10)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 340, + "fields": { + "group": 4, + "featurename": "Parallelized VACUUM for Indexes", + "featuredescription": "The VACUUM process can be parallelized for indexes. The number of VACUUM jobs for an index can be specified.\r\n\r\nFor more information, please see the [VACUUM documentation](https://www.postgresql.org/docs/current/sql-vacuum.html)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 341, + "fields": { + "group": 4, + "featurename": "Inserted data can trigger autovacuum", + "featuredescription": "This new behavior reduces the work necessary when the table needs to be frozen and allows pages to be set as all-visible. All-visible pages allow index-only scans to access fewer heap rows.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 342, + "fields": { + "group": 16, + "featurename": "Configure max WAL retention for replication slots", + "featuredescription": "https://www.postgresql.org/docs/13/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 343, + "fields": { + "group": 16, + "featurename": "Verify backup integrity (pg_verifybackup)", + "featuredescription": "https://www.postgresql.org/docs/13/app-pgverifybackup.html", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 344, + "fields": { + "group": 15, + "featurename": "FETCH FIRST .. WITH TIES", + "featuredescription": "https://www.postgresql.org/docs/13/sql-select.html#SQL-LIMIT", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 345, + "fields": { + "group": 17, + "featurename": "Logical Replication for Partitioned Tables", + "featuredescription": "Fully supports logical replication of partitioned tables.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 346, + "fields": { + "group": 9, + "featurename": "SQL/JSON: datetime()", + "featuredescription": "The SQL/JSON path `datetime()` function in JSON path expressions converts valid date and time formats (e.g. ISO 8601) to their corresponding PostgreSQL type.\r\n\r\nFor more information, see the [JSON path documentation](https://www.postgresql.org/docs/13/functions-json.html#FUNCTIONS-SQLJSON-OP-TABLE)", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 347, + "fields": { + "group": 21, + "featurename": "Trusted Extensions", + "featuredescription": "Extensions that are marked as \"trusted\" by a superuser can subsequently be installed via `CREATE EXTENSION` by unprivileged users. Some functions are marked as \"trusted\" by default.\r\n\r\nFor more information, please see the [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html) documentation.", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +}, +{ + "model": "featurematrix.feature", + "pk": 348, + "fields": { + "group": 4, + "featurename": "EXPLAIN (WAL) support", + "featuredescription": "[EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html) can now track WAL usage information along with [auto_explain](https://www.postgresql.org/docs/13/auto-explain.html), [autovacuum](https://www.postgresql.org/docs/13/routine-vacuuming.html#AUTOVACUUM), and [pg_stat_statements](https://www.postgresql.org/docs/13/pgstatstatements.html).\r\n\r\nFor more information, please see the documentation on [EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html).", + "v74": 0, + "v80": 0, + "v81": 0, + "v82": 0, + "v83": 0, + "v84": 0, + "v90": 0, + "v91": 0, + "v92": 0, + "v93": 0, + "v94": 0, + "v95": 0, + "v96": 0, + "v10": 0, + "v11": 0, + "v12": 0, + "v13": 1 + } +} +] diff --git a/pgweb/lists/fixtures/data.json b/pgweb/lists/fixtures/data.json new file mode 100644 index 00000000..badf6935 --- /dev/null +++ b/pgweb/lists/fixtures/data.json @@ -0,0 +1,58 @@ +[ +{ + "model": "lists.mailinglistgroup", + "pk": 1, + "fields": { + "groupname": "Developer lists", + "sortkey": 20 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 2, + "fields": { + "groupname": "User lists", + "sortkey": 10 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 4, + "fields": { + "groupname": "Regional lists", + "sortkey": 30 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 5, + "fields": { + "groupname": "Project lists", + "sortkey": 50 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 6, + "fields": { + "groupname": "User groups", + "sortkey": 40 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 7, + "fields": { + "groupname": "Inactive lists", + "sortkey": 1000 + } +}, +{ + "model": "lists.mailinglistgroup", + "pk": 8, + "fields": { + "groupname": "Associations", + "sortkey": 35 + } +} +] diff --git a/pgweb/load_initial_data.sh b/pgweb/load_initial_data.sh index fe683303..fb16e70c 100755 --- a/pgweb/load_initial_data.sh +++ b/pgweb/load_initial_data.sh @@ -3,11 +3,6 @@ # We keep this in a separate script because using initial_data.xxx in django will overwrite # critical data in the database when running a 'syncdb'. We'd like to keep the ability to # run syncdb on updates... -# -# To create the dump files, use: -# ./python manage.py dumpdata --indent 1 --format json core.version core.importedrssfeed core.country > pgweb/core/fixtures/data.json -# ./python manage.py dumpdata --indent 1 --format json contributors.contributortype > pgweb/contributors/fixtures/data.json - echo WARNING: this may overwrite some data in the database with an initial set of data. echo 'Are you sure you want this (answer "yes" to overwrite)' diff --git a/pgweb/sponsors/fixtures/data.json b/pgweb/sponsors/fixtures/data.json new file mode 100644 index 00000000..dac0ae46 --- /dev/null +++ b/pgweb/sponsors/fixtures/data.json @@ -0,0 +1,29 @@ +[ +{ + "model": "sponsors.sponsortype", + "pk": 7, + "fields": { + "typename": "Other (not listed)", + "description": "This type is for server sponsors that aren't listed in the regular sponsor list. This is accomplished by setting sortkey=0", + "sortkey": 0 + } +}, +{ + "model": "sponsors.sponsortype", + "pk": 8, + "fields": { + "typename": "Major Sponsor", + "description": "To be considered a Major Sponsor, must have been a Sponsor for more than one year, and have contributed visibly and substantially in at least two different categories above in the past 12 months, or has contributed very substantially in one category for four years or more. To be awarded a Major Sponsor label based on a financial contribution alone, the aggregate value of the donations in the past year should be at least $25,000USD.\r\n\r\nExamples:\r\n* a company which employs two contributors who spend a majority of their work time on PostgreSQL\r\n* a company which employs one heavy contributor, and organizes an annual community conference.\r\n* a company which has supplied substantial sysadmin staffing and hosting resources for the PostgreSQL project (several servers), and has done so for several years.", + "sortkey": 10 + } +}, +{ + "model": "sponsors.sponsortype", + "pk": 9, + "fields": { + "typename": "Sponsor", + "description": "To be considered a Sponsor, an organization must have contributed significantly and visibly to PostgreSQL in at least one of the above categories for at least a year. To be awarded a Sponsor label based on a financial contribution alone, the aggregate value of the donations in the past two years should be equivalent to at least $2,000USD.\r\n\r\nExamples:\r\n* a company which hosts a PostgreSQL webserver and a buildfarm member.\r\n* a company which employs one contributor, who spends a minority of their work time on PostgreSQL.\r\n* a company which donates $1000 every year to PostgreSQL Brasil's general fund.", + "sortkey": 20 + } +} +] -- 2.39.5