{"id":42063495,"url":"https://github.com/euiko/duckdb-pgwire","last_synced_at":"2026-01-26T08:05:30.200Z","repository":{"id":64167302,"uuid":"568566906","full_name":"euiko/duckdb-pgwire","owner":"euiko","description":"DuckDB extension to allow quacking with PostgreSQL protocol","archived":false,"fork":false,"pushed_at":"2024-11-20T17:18:02.000Z","size":275,"stargazers_count":15,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-12-30T02:46:45.834Z","etag":null,"topics":["columnar-storage","database","duckdb","duckdb-extension","postgresql","psql-wire","sql"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/euiko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-20T23:04:10.000Z","updated_at":"2024-12-15T18:13:44.000Z","dependencies_parsed_at":"2023-12-14T12:17:21.828Z","dependency_job_id":"8c0c1ce8-1e42-4cab-a1af-84c3f92ca6fa","html_url":"https://github.com/euiko/duckdb-pgwire","commit_stats":null,"previous_names":["euiko/duckdb-pgwire","euiko/duckpg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/euiko/duckdb-pgwire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euiko%2Fduckdb-pgwire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euiko%2Fduckdb-pgwire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euiko%2Fduckdb-pgwire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euiko%2Fduckdb-pgwire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/euiko","download_url":"https://codeload.github.com/euiko/duckdb-pgwire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euiko%2Fduckdb-pgwire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28770081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T07:45:00.504Z","status":"ssl_error","status_checked_at":"2026-01-26T07:45:00.070Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["columnar-storage","database","duckdb","duckdb-extension","postgresql","psql-wire","sql"],"created_at":"2026-01-26T08:05:10.129Z","updated_at":"2026-01-26T08:05:30.187Z","avatar_url":"https://github.com/euiko.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DuckPG - DuckDB extension with postgresql wire protocol enabled\n\nThis extension is used for experimentation of adding PostgreSQL wire protocol to the DuckDB ecosystem through an extension named `duckdb_pgwire`.\n\n## Background\nDuckDB has a very unique value that bring the power of feature rich analytical database to the local environment without any external dependency. It is originally designed to be used as an embedded in-process database just like SQLite, but faster thanks to its **columnar-vectorized query execution engine** with complex query capabilities. Read more on the [DuckDB's site](https://duckdb.org/why_duckdb).\n\nBeing embedded in-process database has its own drawbacks like SQlite that once embedded it is difficult to know what happen inside the database, especially when you are start persisting data. So, in order to overcome this `DuckPG` is created. It is used to adds a PostgreSQL compatible server capabilities to the DuckDB using an extension, so you can connect to the DuckDB's database from outside the host process using PostgreSQL compatible client such as `psql`.\n\nThere are some potential use case that you can try with this extension :\n- Managing in-process DuckDB from outside the process.\n- Use DuckDB from the environment that are currently not supported by running on another supported host and connect via PostgreSQL protocol.\n\n**Please note that this project is very experimental and by adding PostgreSQL compatible server means that it may contradict with the original design, try with your own risk**\n\nThe PostgreSQL wire protocol is implemented in standalone component/library named `pgwire` that heavily inspired by https://github.com/returnString/convergence and https://github.com/jeroenrinzema/psql-wire.\n\n## Milestone\n\n- [x] Simple query support\n- [x] DuckDB extension\n- [x] Simple golang client\n- [ ] PGWire unit tests\n- [ ] Support more data type\n- [ ] Logging\n- [ ] Configuration\n- [ ] Session Manager\n- [ ] Extended Query\n- [ ] So on...\n\n## Building and Running\n\nClone the repository along with the submodule with :\n```bash\ngit clone --recurse-submodules https://github.com/euiko/duckpg.git\n```\n\nBuild the extension\n```bash\nmake -j$(nproc)\n```\n\nOpen the duckdb shell or through any duckdb embedded client and load the extension\n```bash\n# example usage with cli\ncd build/release\n# somehow still require manual loading of the extension even already built onto the duckdb shell/cli\n./duckdb -cmd 'load duckdb_pgwire'\n\n```\n\nAnd on the other terminal you can use psql and connect to port 15432 with ssl disabled\n```bash\npsql 'postgresql://localhost:15432/main' -c 'select * from generate_series(0, 100)'\n```\n\nOr you can use the postgresql driver in your language choice.\nYou can also run sample client in golang provided in this repo\n```bash\n# from the root directory\ncd client/go/cmd/simple\ngo build \u0026\u0026 ./simple\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuiko%2Fduckdb-pgwire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feuiko%2Fduckdb-pgwire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuiko%2Fduckdb-pgwire/lists"}