Skip to content

Releases: pgdogdev/pgdog

v0.1.17

04 Dec 20:20

Choose a tag to compare

New features

  • Support search_path for schema-based sharding. Now you can SET search_path TO schema_a, public and all subsequent queries will be sent to shard matching schema_a.
  • Support generating globally unique BIGINT identifiers using the Snowflake-like time-based algorithm. Usable with SHOW pgdog.unique_id currently. pgdog.unique_id() function will be added in the next release.
  • Automatic role detection by fetching pg_is_in_recovery() from each database. Enable it by setting lsn_check_delay = 0 and role = "auto".
  • Track idle in transaction clients and report the metric in OpenMetrics and SHOW POOLS (sv_idle_xact).

Bug fixes

  • Client connections weren't updating their status to active correctly inside transactions.
  • Schema detection wasn't always working for SELECT queries with multiple schemas.
  • Schema sync was ignoring IDENTITY column constraint.
  • Aggregate column count was incorrect. @mijoharas
  • PREPARE/EXECUTE not working correctly when prepared_statements = "full".
  • REAL/DOUBLE PRECISION columns were dropped in rewritten INSERT and UPDATE statements used in cross-shard writes. @phillipvanheerden
  • NULL values weren't correctly routed to all shards.

New Contributors

Full Changelog: v0.1.16...v0.1.17

v0.1.16

21 Nov 22:41
eb777eb

Choose a tag to compare

What's Changed

  • feat: --cutover flag to schema-sync for bumping sequence values during traffic cutover
  • feat: setting for controlling connection cleanup
  • feat: statement pooler mode
  • feat: replica lag monitoring, automatic database role detection & failover
  • fix: connection pool optimization
  • fix: omnisharded tables routing wasn't detecting joins
  • fix: idle in transaction state wasn't set correctly on clients @jaggederest
  • feat: sticky routing for omnisharded tables
  • fix: converge on direct shard routing when seeing multiple tables and using schema-based sharding

Full Changelog: v0.1.15...v0.1.16

v0.1.15

13 Nov 17:37
46b4869

Choose a tag to compare

What's Changed

  • Support for schema-based sharding.
  • Fix: config reload was delayed by one transaction.
  • Add connect_time and connect_count stats to SHOW STATS.
  • Fix: incorrect average calculations in SHOW STATS.
  • Dockerfile accepts Postgres version as build argument @scottjacobsen
  • Support for partitioned tables in data-sync command for resharding.
  • Force-enable query parser to get full features in non-sharded databases (parse_queries_enabled configuration option) @mijoharas
  • Support update and delete statements in data-sync for resharding with logical replication.

New Contributors

Full Changelog: v0.1.14...v0.1.15

v0.1.14

06 Nov 19:38
378c96e

Choose a tag to compare

What's Changed

  • Split multi-tuple INSERT statements to send tuples to their respective shards @jaggederest
  • Fix memory leak in network buffer and make it cancel-safe. Large queries and result rows were not properly deallocated.
  • Add tls_client_required setting to force clients to connect with TLS @zxaos
  • Bump tooling in container to Postgres 18 @mscrivo

New Contributors

Full Changelog: v0.1.13...v0.1.14

v0.1.13

29 Oct 22:12
4d8a965

Choose a tag to compare

What's Changed

  • Add server_error statistic to show how many errors we received from Postgres (e.g. syntax errors, missing columns, etc.)
  • Add include_primary_if_replica_banned read/write split strategy.

Full Changelog: v0.1.12...v0.1.13

v0.1.12

24 Oct 16:02
6734d15

Choose a tag to compare

What's Changed

  • Support sharding key updates across shards @jaggederest
  • Fix server cleanup when client disconnects mid transaction
  • Schema sync fixes: abort if primary key is missing, don't sync the publication itself

Full Changelog: v0.1.11...v0.1.12

v0.1.11

16 Oct 15:48
5c6571d

Choose a tag to compare

What's Changed

  • Prepared statements: don't cache anonymous statements, because they may contain parameters (looking at you, Rails...)
  • Prepared statements: fix eviction logic leaving zombie statements with zero usage in the cache. Eviction logic went down from O(n) to O(k) where k is the number of statements exceeding cache limits
  • Cheaper clone for Bind messages
  • Add snakeoil certs to Docker container for easier dev/staging TLS

Full Changelog: v0.1.10...v0.1.11

v0.1.10

09 Oct 17:20
101d0ce

Choose a tag to compare

What's Changed

  • EXPLAIN can now show PgDog routing decisions @jaggederest
  • Schema sync syncs all tables, extensions and schemas
  • TLS configuration is hot-reloadable now @jaggederest
  • Support for cross-shard stddev and variance aggregate functions @jaggederest
  • Integration test suite improvements @jaggederest
  • Use SCRAM auth for client connections with TLS instead of falling back to MD5
  • Fix rollback bug on unsharded, primary-only deployments
  • Queries can be cancelled when shutting down PgDog, which prevents long, stuck queries across pooler restarts @KR-bluejay
  • Support rolling back savepoints in sharded deployments
  • Allow for 65k parameters in prepared statements @jaggederest

New Contributors

Full Changelog: v0.1.9...v0.1.10

v0.1.9

02 Oct 16:05
b4f9704

Choose a tag to compare

What's Changed

  • Handle DISCARD, DEALLOCATE and DISCARD ALL commands correctly in transaction mode @ryanahall
  • Support for AVG aggregate function in cross-shard queries, with automatic query rewriting and "ghost columns" @jaggederest
  • Code coverage tracking @jaggederest
  • Postgres <-> PgDog SQL acceptance tests @jaggederest
  • Database parameters & mirroring support for environment-based configuration @grk
  • Allow to specify [admin] section in users.toml, and be encrypted-at-rest.

Bug fixes

  • Fixed leak in connection pool caused by a race condition with RELOAD command
  • Database banning now works solely off of health checks and only for read queries

New Contributors

  • @grk made their first contribution in #525

Full Changelog: v0.1.8...v0.1.9

v0.1.8

25 Sep 18:31
e8559b3

Choose a tag to compare

What's Changed

  • Manual primary/replica routing with /* pgdog_role */ comment.
  • Forward empty queries to a shard using round robin, instead of intercepting. Works better when using extended protocol.
  • Add server_lifetime setting to control how long server connections are allowed to exist before being re-created by the connection pool.
  • Make configcheck command work correctly.
  • Fix dry run mode ignoring query comments for manual routing.
  • Fix SET queries comments for manual routing.
  • Don't use host banning when only one target is configured in the load balancer. 🙏 @ryanahall
  • Added more JDBC driver examples and tests.

New Contributors

Full Changelog: v0.1.7...v0.1.8