Worker failover support for PostgreSQL Citus extension using pg_auto_failover.

Overview

citus-failover

Worker failover support for citus community version using pg_auto_failover.

What is this?

This is a simple service to monitor changes in a pg_auto_failover monitor and update workers' addresses in citus coordinator. The community version of citus does not support failover so you have to update the workers manually in case of a failover.

How it works?

It will check both the citus coordinator and pg_auto_failover monitor and if it finds a worker node that is not primary, it will replace it with the primary one.

Usage

You need to provide the connection details for both your coordinator and your monitor. Note that the coordinator should also be monitored by pg_auto_failover and you should provide the formation that is responsible for your coordinator, the primary node then will be found and used to update the workers.

You need to provide a config file. Check config.example.yml for a sample config.

Monitor: PSQL connection details for your monitor.

Coordinator: You need to provide the formation for your coordinator nodes as Formation instead of any host. It will be used to find the primary coordinator.

Run using binaries

./citus-failover -f path/to/config.yml

Run using docker

Create a config file somewhere in your host. Then mount the path as /config to the container.

Map the port for API if enabled.

docker run -d -v /path/to/folder/for/config/file:/config -p 3002:3002 docker.pkg.github.com/navid2zp/citus-failover/citus-failover:latest

REST API

A simple REST API is available. You can use it to check the state of your nodes. Set API.Enabled to true in your config file to enable the API. You also need to provide a secret string for the API. Then you'll need to provide this secret string in the header of your requests as SECRET to be authenticated and authorized.

Available endpoints:

/v1/nodes: List of all the nodes in your monitor.

/v1/coordinator: Primary coordinator address.

/v1/coordinators: List of all available coordinator nodes.

v/1/workers: List of primary worker nodes.

Issues
  • Support two node formation

    Support two node formation

    Currently isPrimary() is checking gaolstate 'primary' only. This makes citus-failover not work as expected in two node formations. goalstate may be checked against 'primary' or 'wait_primary'. Other solution might be making a new configuration parameter for two node formations and checking goalstate against 'wait_primary' only when configuration key is set.

    bug 
    opened by serkancoban 10
  • fix: Add new reportedtli column in node table

    fix: Add new reportedtli column in node table

    Hi @Navid2zp ,

    pg_auto_failover added a reportedtli column in node table in version 1.6, so this commit fixes it for newer versions.

    This is the error I am getting:

    {"level":"error","ts":1634069583.9079251,"caller":"logging/core.go:54","msg":"failed to check if worker is primary!","service":"core","database":"postgres","error":"missing destination name reportedtli in *core.Node","worker-id":3,"stacktrace":"github.com/Navid2zp/citus-failover/logging.(*Logger).WorkerPrimaryCheckFailed\n\t/home/amontalban/dev/citus-failover/logging/core.go:54\ngithub.com/Navid2zp/citus-failover/core.(*database).validateWorker\n\t/home/amontalban/dev/citus-failover/core/tasks.go:13"}
    

    Reference: https://github.com/citusdata/pg_auto_failover/pull/730

    bug 
    opened by amontalban 4
  • chore: Rename Logger service name

    chore: Rename Logger service name

    Logging system is using core as service name and I think it would be better to be renamed to citus-failover so logged JSON information will show up like:

    {"level":"info","ts":1634923402.7779536,"caller":"logging/core.go:70","msg":"worker updated","service":"citus-failover","database":"postgres","old-worker":"citus-andres-dev-data-2-b-79s5.c.qa01.internal:5432","new-worker":"citus-andres-dev-data-2-a-3vcj.c.qa01.internal:5432"}
    

    Instead of currently showing up as:

    {"level":"info","ts":1634923402.7779536,"caller":"logging/core.go:70","msg":"worker updated","service":"core","database":"postgres","old-worker":"citus-andres-dev-data-2-b-79s5.c.qa01.internal:5432","new-worker":"citus-andres-dev-data-2-a-3vcj.c.qa01.internal:5432"}
    

    This helps to get log search automatically set up in services like Datadog/NewRelic/ElasticSearch.

    Thanks!

    opened by amontalban 3
  • Bump github.com/gin-gonic/gin from 1.7.7 to 1.8.0

    Bump github.com/gin-gonic/gin from 1.7.7 to 1.8.0

    Bumps github.com/gin-gonic/gin from 1.7.7 to 1.8.0.

    Release notes

    Sourced from github.com/gin-gonic/gin's releases.

    v1.8.0

    Changelog

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703
    Changelog

    Sourced from github.com/gin-gonic/gin's changelog.

    Gin v1.8.0

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703
    Commits
    • 38eb5ac add v1.8.0 changelog (#3160)
    • 60e24d5 chore(CI/CD): add go version release flow (#3159)
    • 4b68a5f chore: update go.mod and remove space from copyright (#3158)
    • ed03102 [GIN-001] - Add TOML bining for gin (#3081)
    • aa60021 Fix intercepting headers in middlewares (#1271)
    • 87811a9 fix: the trusted proxies should support ipv6 address by default (#3033)
    • f1e9428 chore(deps): bump golangci/golangci-lint-action from 3.1.0 to 3.2.0 (#3150)
    • ef687e0 feat: automatically SetMode to TestMode when run go test. (#3139)
    • 90e7073 chore(deps): bump github/codeql-action from 1 to 2 (#3132)
    • c131704 chore(deps): bump github.com/goccy/go-json from 0.9.6 to 0.9.7 (#3131)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Allow configuration of sslmode for DB connections

    Allow configuration of sslmode for DB connections

    Hi @Navid2zp,

    As of now the sslmode is hardcoded to disable which may not cover all use cases.

    In our setup our pg_hba.conf contains the following:

    hostssl all             postgres        10.0.0.0/8                  scram-sha-256
    

    And this is the error we get when using citus-failover:

    2021-10-12 20:18:06.633 UTC [392465] postgres [unknown] postgres 10.128.0.3 6165ed7e.5fd11 FATAL:  no pg_hba.conf entry for host "10.128.0.3", user "postgres", database "postgres", SSL off
    

    This PR allows the end-user to configure the sslmode setting for either the monitor service connection or the coordinators' connections independently.

    And if you configure a non-supported mode by pq it throws an error like the following:

    panic: pq: unsupported sslmode "disabled"; only "require" (default), "verify-full", "verify-ca", and "disable" supported
    

    I configured the default to be disable to be backward compatible.

    Let me know what do you think.

    Thanks for building this tool!

    opened by amontalban 1
  • Bump github.com/jmoiron/sqlx from 1.3.4 to 1.3.5

    Bump github.com/jmoiron/sqlx from 1.3.4 to 1.3.5

    Bumps github.com/jmoiron/sqlx from 1.3.4 to 1.3.5.

    Commits
    • 28212d4 Merge pull request #767 from liftoffio/gpark.sqlx.reset-slice
    • 421d1cd Make Select reset slice length
    • a62bc60 Merge pull request #728 from s7v7nislands/update_mysql_version
    • 2765bc4 update go-sql-driver/mysql to v1.6.0
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/spf13/viper from 1.10.1 to 1.11.0

    Bump github.com/spf13/viper from 1.10.1 to 1.11.0

    Bumps github.com/spf13/viper from 1.10.1 to 1.11.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.11.0

    What's Changed

    Exciting New Features 🎉

    Enhancements 🚀

    Bug Fixes 🐛

    Breaking Changes 🛠

    Dependency Updates ⬆️

    New Contributors

    Full Changelog: https://github.com/spf13/viper/compare/v1.10.1...v1.11.0

    Commits
    • 6986c0a chore: update crypt
    • 65293ec add release note configuration
    • 6804da7 chore!: drop Go 1.14 support
    • 5b21ca1 fix: deprecated config
    • 55fac10 chore: fix lint
    • e0bf4ac chore: add go 1.18 builds
    • 973c265 build(deps): bump github.com/pelletier/go-toml/v2
    • 129e4f9 build(deps): bump github.com/pelletier/go-toml/v2
    • 9a8603d build(deps): bump actions/setup-go from 2 to 3
    • dc76f3c build(deps): bump github.com/spf13/afero from 1.8.1 to 1.8.2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/lib/pq from 1.10.4 to 1.10.5

    Bump github.com/lib/pq from 1.10.4 to 1.10.5

    Bumps github.com/lib/pq from 1.10.4 to 1.10.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/gin-gonic/gin from 1.7.7 to 1.8.1

    Bump github.com/gin-gonic/gin from 1.7.7 to 1.8.1

    Bumps github.com/gin-gonic/gin from 1.7.7 to 1.8.1.

    Release notes

    Sourced from github.com/gin-gonic/gin's releases.

    v1.8.1

    Changelog

    Features

    • f197a8b feat(context): add ContextWithFallback feature flag (#3166) (#3172)

    v1.8.0

    Changelog

    Break Changes

    • TrustedProxies: Add default IPv6 support and refactor #2967. Please replace RemoteIP() (net.IP, bool) with RemoteIP() net.IP
    • gin.Context with fallback value from gin.Context.Request.Context() #2751

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703

    ... (truncated)

    Changelog

    Sourced from github.com/gin-gonic/gin's changelog.

    Gin v1.8.1

    ENHANCEMENTS

    • feat(context): add ContextWithFallback feature flag #3172

    Gin v1.8.0

    Break Changes

    • TrustedProxies: Add default IPv6 support and refactor #2967. Please replace RemoteIP() (net.IP, bool) with RemoteIP() net.IP
    • gin.Context with fallback value from gin.Context.Request.Context() #2751

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/spf13/viper from 1.11.0 to 1.12.0

    Bump github.com/spf13/viper from 1.11.0 to 1.12.0

    Bumps github.com/spf13/viper from 1.11.0 to 1.12.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.12.0

    This release makes YAML v3 and TOML v2 the default versions used for encoding.

    You can switch back to the old versions by adding viper_yaml2 and viper_toml1 to the build tags.

    Please note that YAML v2 and TOML v1 are considered deprecated from this release and may be removed in a future release.

    Please provide feedback in discussions and report bugs on the issue tracker. Thanks!

    What's Changed

    Exciting New Features 🎉

    Enhancements 🚀

    Dependency Updates ⬆️

    New Contributors

    Full Changelog: https://github.com/spf13/viper/compare/v1.11.0...v1.12.0

    Commits
    • 4322cf2 feat: make toml2 the default
    • 8d02999 feat: make yaml3 the default
    • 7c35aa9 chore(deps): update yaml3
    • 433821f feat: add etcd3 support to remote
    • 2080d43 chore: update crypt
    • da55858 chore: fix Error log calls in mergeMaps
    • f50ce90 Add in MustBindEnv.
    • 3b836e5 build(deps): bump github.com/subosito/gotenv from 1.2.0 to 1.3.0
    • 5d65186 build(deps): bump github.com/pelletier/go-toml/v2 from 2.0.0 to 2.0.1
    • 9f85518 build(deps): bump github.com/spf13/cast from 1.4.1 to 1.5.0
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/lib/pq from 1.10.5 to 1.10.6

    Bump github.com/lib/pq from 1.10.5 to 1.10.6

    Bumps github.com/lib/pq from 1.10.5 to 1.10.6.

    Commits
    • 8c6de56 Merge pull request #1081 from catj-cockroach/add-kubernetes-secret-support
    • d8917fa adds support for kubernetes mounted private keys
    • 54a3a4b Merge pull request #1082 from johanneswuerbach/connector-dialer
    • 30d9faf Merge pull request #1080 from drakkan/sqlstate
    • cf6aeee feat: change the connector dialer
    • ef3111e error: add SQLState
    • 006a3f4 Added code that accounts for the 'Z' timezone separator in the ParseTimestamp...
    • da91844 Merge pull request #1078 from otan-cockroach/copydata
    • 326e7d0 fix CopyData comment
    • b3b8332 expose raw CopyData command (#1077)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v2.0.7)
Owner
Navid Zarepak
Navid Zarepak
SQLite extension for accessing other SQL databases

dblite SQLite extension for accessing other SQL databases, in SQLite. Similar to how Postgres Foreign Data Wrappers enable access to other databases i

MergeStat 9 May 20, 2022
pg_timetable: Advanced scheduling for PostgreSQL

pg_timetable: Advanced scheduling for PostgreSQL pg_timetable is an advanced job scheduler for PostgreSQL, offering many advantages over traditional s

CYBERTEC PostgreSQL International GmbH 727 Jun 26, 2022
Cross-platform client for PostgreSQL databases

pgweb Web-based PostgreSQL database browser written in Go. Overview Pgweb is a web-based database browser for PostgreSQL, written in Go and works on O

Dan Sosedoff 7.3k Jul 3, 2022
pREST (PostgreSQL REST), simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new

pREST pREST (PostgreSQL REST), simplify and accelerate development, instant, realtime, high-performance on any Postgres application, existing or new P

pREST 3.3k Jun 29, 2022
PostgreSQL style Parser splitted from CockroachDB

What's this PostgreSQL style Parser splitted from CockroachDB See: Complex SQL format example

auxten 133 Jun 27, 2022
Enhanced PostgreSQL logical replication

pgcat - Enhanced postgresql logical replication Why pgcat? Architecture Build from source Install Run Conflict handling Table mapping Replication iden

jinhua luo 357 May 28, 2022
Interactive client for PostgreSQL and MySQL

dblab Interactive client for PostgreSQL and MySQL. Overview dblab is a fast and lightweight interactive terminal based UI application for PostgreSQL a

Daniel Omar Vergara Pérez 197 Jun 30, 2022
WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

null 2.2k Jun 28, 2022
Interactive terminal user interface and CLI for database connections. MySQL, PostgreSQL. More to come.

?? dbui dbui is the terminal user interface and CLI for database connections. It provides features like, Connect to multiple data sources and instance

Kanan Rahimov 91 Jun 30, 2022
Modify orca-zhang/borm in order to use in PostgreSQL

borm ??️ 针对 orca-zhang/borm 进行了修改,暂时只能兼容PostgreSQL 原因 在b站时候用过borm,用起来感觉非常简洁 自己学校里用PostgreSQL比较多 可变条件真的非常好用 问题 首先需要注意的是,这是写给PG的 PG 根本不存在某些 MySQL 独有的函数

null 13 Jul 27, 2021
Cross-platform client for PostgreSQL databases

pgweb Web-based PostgreSQL database browser written in Go. Overview Pgweb is a web-based database browser for PostgreSQL, written in Go and works on O

Dan Sosedoff 7.3k Jun 30, 2022
PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology management, high availability, configuration management, and plugin extensions.

What is PolarDB Cluster Manager PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology manage

null 8 Dec 15, 2021
A simple Golang-based application that queries a PostgreSQL database

Qwik-E-Mart Demo App A simple Golang-based application that queries a PostgreSQL database named qwikemart to read and return customer data stored in t

Joe Garcia 0 Nov 6, 2021
CloudQuery extracts, transforms, and loads your cloud assets into normalized PostgreSQL tables.

The open-source cloud asset inventory backed by SQL. CloudQuery extracts, transforms, and loads your cloud assets into normalized PostgreSQL tables. C

CloudQuery 2.3k Jul 1, 2022
Implemented PostgreSQL with Golang

Customer Information Web Api Implemented PostgreSQL with Golang docker run --name postgresql-container -p 5432:5432 -e POSTGRES_PASSWORD=Password! -d

bseyhan 2 Nov 15, 2021
Typescript type declaration to PostgreSQL CREATE TABLE converter

ts2psql NOTE: This is WIP. Details in this readme are ideal state. Current usage: go build && ./ts2psql (or go build && ts2psql if on Windows OS). A s

null 1 Jan 13, 2022
An experimental toolkit for injecting alternate authentication strategies into a PostgreSQL-compatible wire format.

PG Auth Proxy This is an experimental toolkit for injecting alternate authentication strategies into a PostgreSQL-compatible wire format. This is a pr

Cockroach Labs 1 Jan 20, 2022
Thin clones of PostgreSQL to build powerful development, test, QA, staging environments

Database Lab Engine (DLE) ⚡ Blazing-fast cloning of PostgreSQL databases ?? Thin clones of PostgreSQL to build powerful development, test, QA, staging

Postgres.ai 1.3k Jun 28, 2022
Dugopg - PostgreSQL tool For Golang

⚡️ DuGoPG Installation go get -u github.com/durudex/dugopg Example import (

Durudex 5 May 9, 2022