Repository navigation
graphpg 1.1.0
Container image
docker pull ghcr.io/mihailtd/graphpg:1.1.0Digest: sha256:773e1cdb2e16296aada1eeb7aa0a8077bf76c0b9d2731a41b38fe2bbdf76990f. The image is signed with Sigstore:
cosign verify ghcr.io/mihailtd/graphpg@sha256:773e1cdb2e16296aada1eeb7aa0a8077bf76c0b9d2731a41b38fe2bbdf76990f \
--certificate-identity-regexp '^https://github.com/mihailtd/graphpg/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.comWhat's changed
What's Changed
Features
- feat(subscriptions): live queries over WebSocket, SSE and multipart by @mihailtd in #200
- fix: bugs found exploring a large schema (FHIR R5) and fuzzing its inputs by @mihailtd in #201
Other changes
- Build(deps): Bump tower-http from 0.6.11 to 0.7.1 by @dependabot[bot] in #1
- Build(deps): Bump base64 from 0.22.1 to 0.23.1 by @dependabot[bot] in #2
- feat(config): sectioned config model with dev/prod modes (#69) by @mihailtd in #90
- feat(ui): serve GraphiQL and Scalar from packages embedded in the binary by @mihailtd in #89
- ci: stop PRs from filling the cache, build the image only when it can break by @mihailtd in #91
- ci: clean the warnings out of the CI logs by @mihailtd in #92
- ci: let a Publish run finish so the image cache gets written by @mihailtd in #93
- ci: build only the UI's JavaScript before the cache is restored by @mihailtd in #94
- ci: do not build the image for workflow-only changes by @mihailtd in #96
- feat(config): migrate to secrets model, runtime modes, and watch options by @mihailtd in #97
- feat(openapi): generate and serve OpenAPI 3.1 document (#88, #80) by @mihailtd in #98
- feat(planner): protocol-neutral request model, adapter, and response shaping (#64, #65, #66) by @mihailtd in #103
- feat(rest): implement minimal REST list endpoint through planner (#87) by @mihailtd in #104
- feat(rest): implement REST reads: filtering, ordering, pagination and embedding (#58) by @mihailtd in #105
- feat(rest): implement REST writes, RFC 9457 errors, and OpenAPI 3.1 spec (#40, #60) by @mihailtd in #106
- fix(rest): strict input, raw keys, opt-in counts, safe errors and a spec that matches (#58, #60, #40, #62) by @mihailtd in #109
- feat(rest): functions, aggregates, search methods and views over REST (#58) by @mihailtd in #110
- feat: shared safety limits, REST write coverage, nested-write OpenAPI, pinned schemas, Scalar fix (#62, #11, #13, #60, #40, #75, #81, #82) by @mihailtd in #111
- feat(security): configurable CORS, open in dev and off in prod (#84) by @mihailtd in #113
- feat(security): security headers middleware with presets (#83) by @mihailtd in #114
- docs: compare REST with PostgREST; refresh docs for REST, limits and pinning; fix composite/range columns and OpenAPI type drift by @mihailtd in #112
- feat: error detail by mode, introspection switch, SDL over HTTP by @mihailtd in #115
- feat(rest): CSV, multipart and binary columns, OPTIONS (#101) by @mihailtd in #126
- feat(openapi): links from foreign keys, constraint keywords, STI discriminators by @mihailtd in #127
- feat(rest): Range and Content-Range on lists (#117) by @mihailtd in #130
- feat(rest): richer filters: regex, isDistinctFrom, any/all, or/not groups (#119) by @mihailtd in #132
- feat(rest,server): HTTP semantics, operational probes, range filters, and RPC raw JSON by @mihailtd in #133
- feat(rest): planned/estimated counts (#129), custom RFC 9457 errors (#123), and CTI support (#128) by @mihailtd in #134
- feat(rest): schema in the path, /rest/{schema}/{resource} and /rest/{schema}/rpc/{function} (#122) by @mihailtd in #135
- feat(rest): embedding controls, collection writes, webhooks and the PostgREST benchmark (#118, #116, #100, #63) by @mihailtd in #136
- feat: GraphQL and OpenAPI know the same things about the database (parity report and ports) by @mihailtd in #137
- Build(deps): Bump node from
b341ca6to0b36e8cby @dependabot[bot] in #107 - Build(deps): Bump monaco-editor from 0.52.2 to 0.57.0 in the npm group by @dependabot[bot] in #108
- feat(telemetry): Prometheus metrics, OpenTelemetry traces/metrics/logs and JSON logs by @mihailtd in #142
- fix(ci): green CI and Publish again (monaco pin, pnpm install race, startup test timing) by @mihailtd in #143
- ci: run CI on the self-hosted k8s runners (CI_RUNS_ON) by @mihailtd in #145
- feat(security): rate limits and persisted queries with an allow-list by @mihailtd in #146
- feat(graphql): partial results when a root field fails on its own by @mihailtd in #147
- fix(security): node(id:) and _entities respect omitted reads by @mihailtd in #148
- docs(fdw): foreign data wrappers guide, with postgres_fdw and file_fdw tests by @mihailtd in #149
- feat(fdw): typed remote key violations, SOURCE_UNAVAILABLE, one lookup per key by @mihailtd in #158
- docs(comparison): drop gaps that shipped, fix PTxxx and multi-source rows by @mihailtd in #160
- fix(catalog): honour PostgreSQL 18 NOT ENFORCED constraints and NOT VALID checks by @mihailtd in #159
- chore: changelog fragments in changelog.d/ instead of editing CHANGELOG.md by @mihailtd in #166
- feat(server): schema reload without a restart (NOTIFY graphpg_reload, SIGHUP) by @mihailtd in #161
- feat: NULLS FIRST / NULLS LAST ordering, with exact keyset pagination by @mihailtd in #162
- feat(catalog): startup advice for foreign tables by @mihailtd in #164
- perf(fdw): opt-in batched relations into foreign tables by @mihailtd in #165
- feat(events): event triggers — webhooks on row changes and schedules by @mihailtd in #167
- ci: a PostgreSQL 18 test image with the extensions graphpg integrates with by @mihailtd in #178
- ci: build the test image on the CI runners (CI_RUNS_ON) by @mihailtd in #179
- feat(catalog): extension integrations framework, CI on the extension image by @mihailtd in #180
- feat(timescaledb): fast hypertable totals, descriptions and advice by @mihailtd in #181
- feat(pg_jsonschema): a JSON Schema check types its column in OpenAPI by @mihailtd in #182
- feat(pgmq): queues as API over GraphQL and REST by @mihailtd in #183
- feat(vector): pgvectorscale and VectorChord indexes as semantic search by @mihailtd in #184
- feat(search): PGroonga indexes as full-text search, in any language by @mihailtd in #185
- feat(advise): graphpg's most expensive operations, with the indexes they lack by @mihailtd in #186
- test: fixtures keep their search_path to themselves by @mihailtd in #188
- docs(foreign-data): pg_duckdb files through materialized views by @mihailtd in #187
- fix(pool): extensions in a schema of their own resolve by @mihailtd in #189
- feat(fdw): import the keys of postgres_fdw foreign tables from the remote catalog by @mihailtd in #190
- test(parquet): pg_duckdb Parquet sources in CI by @mihailtd in #191
- ci(publish): run on the configured runners (CI_RUNS_ON), like CI by @mihailtd in #192
- ci(publish): install Trivy on self-hosted runners by @mihailtd in #193
- perf(aggregates): parallel distinct counts for root connections by @mihailtd in #194
- ci(publish): provide envsubst for cosign-installer on self-hosted runners by @mihailtd in #195
- Build(deps): Bump the cargo group across 1 directory with 9 updates by @dependabot[bot] in #177
- Build(deps): Bump drizzle-orm from 0.45.3 to 0.45.4 in the npm group across 1 directory by @dependabot[bot] in #141
- Build(deps): Bump rust from 1.98.1-alpine to 1.99.0-alpine by @dependabot[bot] in #138
- Build(deps): Bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #139
- Build(deps): Bump node from
0b36e8cto143494bby @dependabot[bot] in #144 - feat(dev): statements report at /debug/statements; fix the default schema by @mihailtd in #196
- feat(dev): warn once per operation that gets slow by @mihailtd in #197
- refactor(pgmq): remove the queue integration, document wrapper functions by @mihailtd in #198
- docs: Extending graphpg (no custom resolvers or plugins) by @mihailtd in #199
- feat: k6 exploratory suite, rename warnings, cheaper plans for wide rows by @mihailtd in #202
- feat!: English type names; typed keys and ByNodeId for updates and deletes by @mihailtd in #203
- fix: auth claims, concurrent DDL and failover found by exploration by @mihailtd in #204
- release: 1.1.0, the first published release and the stable API by @mihailtd in #205
New Contributors
- @dependabot[bot] made their first contribution in #1
- @mihailtd made their first contribution in #90
Full Changelog: https://github.com/mihailtd/graphpg/commits/v1.1.0