kolaente
1b8167d4cd
perf(db): use the pgx driver for postgres
...
lib/pq sends every query as an unnamed prepared statement, so PostgreSQL
plans each statement from scratch. pgx via database/sql keeps a per-connection
statement cache and reuses named prepared statements instead, removing that
planning cost from the hot path.
xorm already ships a "pgx" driver mapping, so the switch is just the driver
name plus the blank import. The connection string format is unchanged: pgconn
parses the same URL and forwards unknown parameters (search_path) as runtime
parameters.
Named prepared statements do not work through a connection pooler in
transaction pooling mode unless it supports them (PgBouncer 1.21 and later,
with max_prepared_statements above 0). Those setups can raise that setting or
connect to PostgreSQL directly, which is no loss since Vikunja already pools
via database.maxopenconnections.
lib/pq was only used for QuoteIdentifier, which is now inlined.
2026-09-05 23:16:31 +02:00
..
2026-08-31 09:33:47 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-18 09:44:49 +02:00
2026-08-18 09:44:49 +02:00
2026-08-29 23:29:46 +02:00
2026-08-19 13:01:59 +02:00
2026-08-29 23:29:46 +02:00
2026-08-29 23:29:46 +02:00
2026-08-04 13:40:11 +02:00
2026-08-02 16:21:50 +02:00
2026-08-02 16:21:50 +02:00
2026-08-31 18:37:03 +02:00
2026-08-02 16:21:50 +02:00
2026-08-16 17:57:52 +02:00
2026-09-04 23:36:53 +02:00
2026-08-31 18:37:03 +02:00
2026-08-20 11:58:06 +02:00
2026-08-02 16:21:50 +02:00
2026-08-20 11:58:06 +02:00
2026-08-04 01:09:10 +02:00
2026-08-30 17:27:01 +02:00
2026-08-29 23:29:46 +02:00
2026-08-30 17:27:01 +02:00
2026-08-30 17:27:01 +02:00
2026-08-30 17:04:35 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-04 13:40:11 +02:00
2026-09-04 23:27:29 +02:00
2026-09-05 12:30:42 +02:00
2026-09-05 23:16:31 +02:00
2026-08-29 21:22:43 +00:00
2026-08-27 15:41:58 +02:00
2026-08-29 22:51:44 +02:00
2026-08-27 15:41:58 +02:00
2026-08-18 16:38:00 +00:00
2026-08-27 15:41:58 +02:00
2026-08-28 23:49:27 +02:00
2026-08-28 23:49:27 +02:00
2026-08-29 22:51:44 +02:00
2026-09-04 09:28:29 +02:00
2026-08-16 17:57:52 +02:00
2026-08-28 23:49:27 +02:00
2026-08-28 23:49:27 +02:00
2026-08-29 22:51:44 +02:00
2026-09-04 09:28:29 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-09-04 09:28:29 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-04 01:09:10 +02:00
2026-08-29 18:36:59 +02:00
2026-09-05 12:30:42 +02:00
2026-08-04 13:40:11 +02:00
2026-09-05 12:30:42 +02:00
2026-08-29 23:42:41 +02:00
2026-08-29 23:42:41 +02:00
2026-08-29 23:42:41 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-16 17:57:52 +02:00
2026-08-31 18:37:03 +02:00
2026-09-05 20:24:08 +02:00
2026-09-05 20:24:08 +02:00
2026-08-31 10:48:39 +00:00
2026-08-31 10:48:39 +00:00
2026-08-31 10:48:39 +00:00
2026-08-04 13:40:11 +02:00
2026-08-27 15:41:58 +02:00
2026-08-20 11:58:06 +02:00
2026-08-20 11:58:06 +02:00
2026-09-05 12:30:42 +02:00
2026-08-31 18:37:03 +02:00
2026-09-05 12:30:42 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-18 16:38:00 +00:00
2026-08-18 16:38:00 +00:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-31 18:37:03 +02:00
2026-08-27 22:00:32 +02:00
2026-09-05 12:30:42 +02:00
2026-08-04 13:40:11 +02:00
2026-08-04 13:40:11 +02:00
2026-08-20 15:32:23 +00:00
2026-08-20 15:32:23 +00:00
2026-09-05 20:24:08 +02:00
2026-08-29 22:51:44 +02:00
2026-08-29 23:29:46 +02:00
2026-08-31 18:37:03 +02:00
2026-08-20 11:58:06 +02:00
2026-08-04 13:40:11 +02:00