Releases: pgdogdev/pgdog
Releases · pgdogdev/pgdog
v0.1.30
What's Changed
BREAKING: user settings take priority
User settings in users.toml now take priority over database settings in pgdog.toml. This was the opposite previously. For example:
users.toml
[[users]]
name = "pgdog"
database = "prod"
pool_size = 20pgdog.toml
[general]
default_pool_size = 10
[[databases]]
name = "prod"
host = "127.0.0.1"
pool_size = 25The connection pool for user pgdog will be 20.
Changelog
- feat: support
OFFSETin cross-shardSELECTqueries - feat: support for plugin API versioning @meskill
- fix: incorrect error handling when queries are pipelined (psycopg, Sequelize, etc.)
- feat:
client_connection_recoverydefaults todrop - refactor: make schema serializable for Enterprise Edition integration
- feat: schema fetches foreign keys to support tables without sharding keys
New Contributors
Full Changelog: v0.1.29...v0.1.30
v0.1.29
What's Changed
- feat: expose
default_pool_size/pool_size,prepared_statements_limitandquery_cache_limitas Prometheus metrics @Adi-Goll - feat: support cross-shard
LIMIT(but notOFFSET, yet) - feat: support multiple
SETstatements in one query - feat: add
client_connection_recoverysetting which allows to close client connections that have received acheckout timeout/all replicas downerror from PgDog - fix: race condition in Sequelize (
Bind,Exexute,Flush,Sync) that caused record creation to be acknowledged before transaction committed in Postgres - fix: don't attempt to recover server connections that have received partial client requests (hard to determine state of connection)
- fix: handle
PortalSuspendedmessage correctly - chore: Prisma, Sequelize tests
- fix: place
Syncinto its ownClientRequestin spliced requests (Java driver)
New Contributors
Full Changelog: v0.1.28...v0.1.29
v0.1.28
What's Changed
- fix: correctly handle
INTEGERtoBIGINTconversion duringschema-syncby mutating table definitions instead of appendingALTER TABLEstatements, and handle partitioned tables correctly - fix: average calculation in
SHOW STATSforreadsandwritesstats - feat: make resharding
COPYformat configurable (textorbinary) - feat: add
TIMESTAMP/TIMESTAMPTZsupport for aggregates (max(),min()) - fix: parsing (de)serialization for composite types that cross a
CopyDataboundary duringdata-sync - fix: confusing TLS connection icon in logs (was open, now it's locked) @bzp2010
- feat: automatically reload config (incl. schema) after DDL in a sharded cluster (single pgdog node, local dev/staging only)
- fix: omnishard write fan-out is opaque now, returns rows changed from one shard only, while mutating rows everywhere; necessary for compatibility with Postgres behavior
- feat:
[[omnisharded_tables]]takes priority over[[sharded_tables]]inpgdog.toml - feat: add
kind = "default"for for list-based sharding to mimic Postgres partitions behavior - fix:
apply query_timeoutto entire client/server exchange instead of just server responses (prevents TCP black holes)
New Contributors
Full Changelog: v0.1.27...v0.1.28
v0.1.27
What's Changed
- feat: allow
[[users]]to specify multiple databases (or all databases for admin users) - feat: handle
INSERT ... SELECTfor one row in sharded databases - feat: support
INSERTwithout column names, using schema inference - feat: automatically inject
pgdog.unique_id()if aBIGINT PRIMARY KEYisn't specified inINSERTstatement. ORMs like ActiveRecord do this, making them work out of the box. - feat: add read/write query per-pool statistics (Prometheus and
SHOW STATS) - chore: add Enterprise Edition hooks for the query parser
- feat: rewrite
INTEGERtoBIGINTduringschema-syncif its a primary key (supports foreign key references too) - feat: make how we treat system catalogs like
pg_databaseconfigurable
Full Changelog: v0.1.26...v0.1.27
v0.1.26
What's Changed
- feat: add
query_cache_parse_time(Prometheus only) metric for measuring how much time PgDog spends parsing queries - chore: logging improvements for connections terminated by Postgres @zacharyftw
- fix: detect and handle
pg_dump's end of input COPY marker - fix: handle
NULLsharding key inCOPYparser - fix: shard key update didn't disconnect servers in case of error, causing routing confusion
- feat: omnishard system catalogs (e.g.
pg_database) by default sopsqlworks out of the box - feat: all tables are omnisharded now unless specified in
[[sharded_tables]](or[[sharded_schemas]]).[[omnisharded_tables]]is now optional and can be used to configure sticky routing for specific tables if needed. PgDog connects to Postgres on startup (only for sharded clusters) and fetches the schema, so it can detect sharded columns with column names in[[sharded_tables]]only. RunRELOADafter schema migrations to re-load schema. - feat: added
omnisharded_stickysetting to default to sticky routing for omnishardedSELECTqueries - feat: track server last sent/received messages
- fix: improve lock contention around server stats - faster QPS / server connection check-in
New Contributors
- @zacharyftw made their first contribution in #718
Full Changelog: v0.1.25...v0.1.26
v0.1.25
What's Changed
- fix: ensure config is TOML-serializable
- fix: prepared statements eviction CPU churn
Full Changelog: v0.1.24...v0.1.25
v0.1.24
What's Changed
- fix: incorrect
NotificationResponseparsing caused pool connections to not be created, taking the connection pool down.
Full Changelog: v0.1.23...v0.1.24
v0.1.23
What's Changed
- fix: SET pgdog.sharding_key was ignoring schema sharding
- fix: least active connections load balancing algorithm was doing the opposite
Full Changelog: v0.1.22...v0.1.23
v0.1.22
What's Changed
- feat:
client_idle_in_transaction_timeout - fix: escape parameter values in
SETqueries used for server/client parameter synchronization - feat (experimental): direct C/Rust bindings for
pg_query, removing protobuf, resulting in 25% performance improvement for simple protocol queries
Full Changelog: v0.1.21...v0.1.22
v0.1.21
What's Changed
- fix:
SET TRANSACTIONwas captured as a session parameter - fix: handle
SETparameters after a regular query inside transaction, correctly persisting client session state between transactions - chore: add required tools via mise by @mijoharas
- refactor: move sharding key updates handling into the new rewrite engine
- feat: sharding key updates now support expressions (e.g.,
SET created_at = now()) andRETURNINGclause - feat: make query parser optional for load balancing, rely on
pgdog.roleconnection parameter for read/write splitting
Happy holidays!
Full Changelog: v0.1.20...v0.1.21