Lev Kokotov
4cf54a6122
Release 1.1 ( #526 )
v1.1.0
2023-07-25 10:27:04 -07:00
Mostafa Abdelraouf
2a8f3653a6
Fix COPY FROM and add tests ( #522 )
...
* Fix COPY FROM and add tests
* E
* fmt
2023-07-20 23:06:01 -07:00
Sebastian Webber
19cb8a3022
add --no-color option to disable colors in the terminal ( #518 )
...
add --no-color option to disable colors
this commit adds a new option to disable colors in the terminal and also
moves the logger configuration to a different crate.
Signed-off-by: Sebastian Webber <sebastian@swebber.me >
2023-07-19 21:15:55 -07:00
Sebastian Webber
f85e5bd9e8
add support for multiple log formats ( #517 )
...
this commit adds the tracing-subscriber crate and use its formatters to
support multiple log formats.
More details in
https://github.com/postgresml/pgcat/issues/464#issuecomment-1641430299
Signed-off-by: Sebastian Webber <sebastian@swebber.me >
2023-07-18 23:07:13 -07:00
Sebastian Webber
7bdb4e5cd9
Add cmd line parser ( #512 )
...
This commit adds the clap library and configures the necessary args to
parse from the command line, expanding the current option of a single
file and adding support for environment variables.
Signed-off-by: Sebastian Webber <sebastian@swebber.me >
2023-07-18 13:52:40 -07:00
Sebastian Webber
5d87e3781e
push and build only in main and tags ( #508 )
...
this commit changes the CI behavior to only build and push when something is committed to main or is a new tag.
2023-07-14 10:30:49 -07:00
dependabot[bot]
3e08c6bd8d
chore(deps): bump num_cpus from 1.15.0 to 1.16.0 ( #507 )
...
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus ) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases )
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md )
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.15.0...v1.16.0 )
---
updated-dependencies:
- dependency-name: num_cpus
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-14 07:58:11 -07:00
Sebastian Webber
15b6db8e4e
add "show help" command ( #505 )
...
This commit adds a new function to handle notify and use it
in the SHOW HELP command, which displays the available options
in the admin console.
Also, adding Fabrízio as a co-author for all the help with the
protocol and the help to structure this PR.
Signed-off-by: Sebastian Webber <sebastian@swebber.me >
Co-authored-by: Fabrízio de Royes Mello <fabriziomello@gmail.com >
2023-07-13 22:40:04 -07:00
dependabot[bot]
b2e6dfd9bb
chore(deps): bump rustls-pemfile from 1.0.2 to 1.0.3 ( #504 )
...
Bumps [rustls-pemfile](https://github.com/rustls/pemfile ) from 1.0.2 to 1.0.3.
- [Commits](https://github.com/rustls/pemfile/commits )
---
updated-dependencies:
- dependency-name: rustls-pemfile
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-12 21:41:48 -07:00
Mostafa Abdelraouf
3c9565d351
Add support for tcp_user_timeout ( #503 )
...
* Add support for tcp_user_timeout
* option
* duration
* Some()
* docs
* fmt, compile
2023-07-12 11:24:30 -07:00
dependabot[bot]
67579c9af4
chore(deps): bump rustls from 0.21.1 to 0.21.5 ( #501 )
...
Bumps [rustls](https://github.com/rustls/rustls ) from 0.21.1 to 0.21.5.
- [Release notes](https://github.com/rustls/rustls/releases )
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.1...v/0.21.5 )
---
updated-dependencies:
- dependency-name: rustls
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-12 05:46:31 -07:00
Cluas
cf7f6f35ab
docs: fix general.autoreload description ( #491 )
...
* docs: fix autoreload description
Signed-off-by: Cluas <Cluas@live.cn >
* docs: add blank line
Signed-off-by: Cluas <Cluas@live.cn >
---------
Signed-off-by: Cluas <Cluas@live.cn >
2023-07-12 05:42:44 -07:00
Voldemarich
7205537b49
[BUG] Fix binding of NULL value parameters in prepared statements ( #496 )
...
Fix binding of NULL value parameters in prepared statements
Co-authored-by: anon <anon@non.existent >
2023-07-10 10:35:43 +02:00
Zain Kabani
1ed6e925ed
Fixes the default for round robing in General ( #488 )
2023-06-23 09:15:44 -07:00
Lev Kokotov
4b78af9676
Implement Close for prepared statements ( #482 )
...
* Partial support for Close
* Close
* respect config value
* prepared spec
* Hmm
* Print cache size
2023-06-18 23:02:34 -07:00
Lev Kokotov
73500c0c96
Fix build ( #481 )
2023-06-17 09:09:54 -07:00
Lev Kokotov
b167de5aa3
fmt ( #480 )
2023-06-17 08:57:33 -07:00
Juraj Bubniak
473bb3d17d
Log not implemented messages as debug in prometheus metrics. ( #477 )
2023-06-16 18:48:38 -07:00
Lev Kokotov
c7d6273037
Support for prepared statements ( #474 )
...
* Start prepared statements
* parse
* Ok
* optional
* dont rewrite anonymous prepared stmts
* Dont rewrite anonymous prep statements
* hm?
* prep statements
* I see!
* comment
* Print config value
* Rewrite bind and add sqlx test
* fmt
* ok
* Fix
* Fix stats
* its late
* clean up PREPARE
2023-06-16 12:57:44 -07:00
Jeff Chen
94c781881f
Report min_pool_size correctly ( #471 )
2023-06-12 09:23:56 -07:00
dependabot[bot]
a8c81e5df6
chore(deps): bump pin-project from 1.0.12 to 1.1.0 ( #440 )
...
Bumps [pin-project](https://github.com/taiki-e/pin-project ) from 1.0.12 to 1.1.0.
- [Release notes](https://github.com/taiki-e/pin-project/releases )
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.12...v1.1.0 )
---
updated-dependencies:
- dependency-name: pin-project
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:51:24 -07:00
dependabot[bot]
1d3746ec9e
chore(deps): bump sqlparser from 0.33.0 to 0.34.0 ( #448 )
...
Bumps [sqlparser](https://github.com/sqlparser-rs/sqlparser-rs ) from 0.33.0 to 0.34.0.
- [Changelog](https://github.com/sqlparser-rs/sqlparser-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/sqlparser-rs/sqlparser-rs/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: sqlparser
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:51:05 -07:00
dependabot[bot]
b5489dc1e6
chore(deps): bump regex from 1.8.1 to 1.8.4 ( #466 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.8.1 to 1.8.4.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.8.1...1.8.4 )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:50:46 -07:00
dependabot[bot]
557b425fb1
chore(deps): bump log from 0.4.17 to 0.4.19 ( #470 )
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.17 to 0.4.19.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.17...0.4.19 )
---
updated-dependencies:
- dependency-name: log
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:50:26 -07:00
Zain Kabani
aca9738821
Make queue strategy configurable and default to Fifo ( #463 )
...
* Change idle timeout default to 10 minutes
* Revert lifo for now while we investigate connection thrashing issues
* Make queue strategy configurable
* test revert idle time out
* Add pgcat start to python test
2023-06-09 11:35:20 -07:00
Zain Kabani
0bc453a771
Change default server lifetime and bump bb8 version to use LIFO correctly ( #462 )
...
Change default server lifetime and idle timeouts and bump bb8 version to use LIFO correctly
2023-05-31 08:25:42 -07:00
Zain Kabani
b67c33b6d0
Use latest bb8 and use Lifo as the queue strategy in the pool ( #455 )
...
* Use git bb8
* Use latest bb8 and change pool is use stack
2023-05-28 19:46:13 -07:00
Mostafa Abdelraouf
a8a30ad43b
Refactor Pool Stats to be based off of Server/Client stats ( #445 )
...
What is wrong
Stats reported by SHOW POOLS seem to be leaking. We see lingering cl_idle , cl_waiting, and similarly for sv_idle , sv_active. We confirmed that these are reporting issues not actual lingering clients.
This behavior is readily reproducible by running
while true; do
psql "postgres://sharding_user:sharding_user@localhost:6432/sharded_db" -c "SELECT 1" > /dev/null 2>&1 &
done
Why it happens
I wasn't able to get to figure our the reason for the bug but my best guess is that we have race conditions when updating pool-level stats. So even though individual update operations are atomic, we perform a check then update sequence which is not protected by a guard.
https://github.com/postgresml/pgcat/blob/main/src/stats/pool.rs#L174-L179
I am also suspecting that using Relaxed ordering might allow this behavior (I changed all operations to use Ordering::SeqCst but still got lingering clients)
How to fix
Since SHOW POOLS/SHOW SERVER/SHOW CLIENTS all show the current state of the proxy (as opposed to SHOW STATS which show aggregate values), this PR refactors SHOW POOLS to have it construct the results directly from SHOW SERVER and SHOW CLIENT datasets. This reduces the complexity of stat updates and eliminates the need for having locks when updating pool stats as we only care about updating individual client/server states.
This will change the semantics of maxwait, so instead of it holding the maxwait time ever encountered by a client (connected or disconnected), it will only consider connected clients which should be okay given PgCat tends to hold on to client connections more than Pgbouncer.
2023-05-23 08:44:49 -05:00
dependabot[bot]
d63be9b93a
chore(deps): bump toml from 0.7.3 to 0.7.4 ( #447 )
...
Bumps [toml](https://github.com/toml-rs/toml ) from 0.7.3 to 0.7.4.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.7.3...toml-v0.7.4 )
---
updated-dependencies:
- dependency-name: toml
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-19 08:58:13 -07:00
Lev Kokotov
100778670c
Ensure data makes it to the client ( #446 )
...
* Ensure data makes it to the client
* flush all buffers
2023-05-18 16:41:22 -07:00
Lev Kokotov
37e3349c24
Optionally clean up server connections ( #444 )
...
* Optionally clean up server connections
* move setting to pool
* fix test
* Print setting to screen
* fmt
* Fix pool_settings override in tests
2023-05-18 10:46:55 -07:00
Zain Kabani
7f57a89d75
Fix time based average stats ( #442 )
...
* keep track of current stats and zero them after updating averages
* Try tests
* typo
* remove commented test stuff
* Avoid dividing by zero
* Fix test
* refactor, get rid of iterator. do it manually
* trigger build
* Fix
2023-05-17 21:38:10 -07:00
Lev Kokotov
0898461c01
Allow to deploy pools without checking ( #438 )
2023-05-12 12:48:37 -07:00
Lev Kokotov
52b1b43850
Prewarmer ( #435 )
...
* Prewarmer
* hmm
* Tests
* default
* fix test
* Correct configuration
* Added minimal config example
* remove connect_timeout
2023-05-12 09:50:52 -07:00
Zain Kabani
0907f1b77f
Improve logging for connection cleanup ( #428 )
...
* initial commit
* fix
* fmt
2023-05-11 17:40:10 -07:00
Zain Kabani
73260690b0
Fixes average stats bug ( #436 )
...
* Add test
* Fix test
* Add fix
2023-05-11 17:37:58 -07:00
Mostafa Abdelraouf
5056cbe8ed
Fix docker-compose dev stack for Apple silicon ( #432 )
...
The docker-compose dev setup is broken under Apple silicon, starting the stack fails with the following error. Switching to a different docker image fixes the issue.
2023-05-10 10:24:35 -05:00
Lev Kokotov
571b02e178
Calculate averages correctly and preserve totals like before ( #429 )
...
* Reset totals after avg calculation
* like it used to be
2023-05-08 10:06:16 -07:00
Andrew Tanner
159eb89bf0
First try with role reset ( #427 )
...
* First try with role rest
* update
* extra line
* Update src/server.rs
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
* Update tests/ruby/misc_spec.rb
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
---------
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
2023-05-05 15:31:27 -07:00
Lev Kokotov
389993bf3e
Accurate log messages ( #425 )
2023-05-05 08:27:19 -07:00
Lev Kokotov
ba5243b6dd
Optionally validate config on boot ( #423 )
2023-05-03 17:07:23 -07:00
Lev Kokotov
128ef72911
lowercase config query ( #422 )
...
* lowercase config query
* remove debug
2023-05-03 16:47:20 -07:00
Lev Kokotov
811885f464
Actually plugins ( #421 )
...
* more plugins
* clean up
* fix tests
* fix flakey test
2023-05-03 16:13:45 -07:00
dependabot[bot]
d5e329fec5
chore(deps): bump regex from 1.8.0 to 1.8.1 ( #413 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/commits/1.8.1 )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-03 10:00:05 -07:00
Lev Kokotov
09e54e1175
Plugins! ( #420 )
...
* Some queries
* Plugins!!
* cleanup
* actual names
* the actual plugins
* comment
* fix tests
* Tests
* unused errors
* Increase reaper rate to actually enforce settings
* ok
2023-05-03 09:13:05 -07:00
dependabot[bot]
23819c8549
chore(deps): bump rustls from 0.21.0 to 0.21.1 ( #419 )
...
Bumps [rustls](https://github.com/rustls/rustls ) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/rustls/rustls/releases )
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md )
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.0...v/0.21.1 )
---
updated-dependencies:
- dependency-name: rustls
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-02 07:32:44 -07:00
Jose Fernández
7dfbd993f2
Add dns_cache for server addresses as in pgbouncer ( #249 )
...
* Add dns_cache so server addresses are cached and invalidated when DNS changes.
Adds a module to deal with dns_cache feature. It's
main struct is CachedResolver, which is a simple thread safe
hostname <-> Ips cache with the ability to refresh resolutions
every `dns_max_ttl` seconds. This way, a client can check whether its
ip address has changed.
* Allow reloading dns cached
* Add documentation for dns_cached
2023-05-02 10:26:40 +02:00
Lev Kokotov
3601130ba1
Readme update ( #418 )
...
* Readme update
* m
* wording
2023-04-30 09:44:25 -07:00
Lev Kokotov
0d504032b2
Server TLS ( #417 )
...
* Server TLS
* Finish up TLS
* thats it
* diff
* remove dead code
* maybe?
* dirty shutdown
* skip flakey test
* remove unused error
* fetch config once
2023-04-30 09:41:46 -07:00
Lev Kokotov
4a87b4807d
Add more pool settings ( #416 )
...
* Add some pool settings
* fmt
2023-04-26 16:33:26 -07:00