试用支持postgresql wire协议的duckdb服务器duckgres
存储库地址 https://github.com/PostHog/duckgres/下载二进制文件wget https://github.com/PostHog/duckgres/releases/download/build-0043e82/duckgres-linux-arm64 -c在kylin v10中执行报错chmod x duckgres-linux-arm64 ./duckgres-linux-arm64 ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libm.so.6: version GLIBC_2.38 not found (required by ./duckgres-linux-arm64) ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libstdc.so.6: version GLIBCXX_3.4.30 not found (required by ./duckgres-linux-arm64) ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libstdc.so.6: version GLIBCXX_3.4.29 not found (required by ./duckgres-linux-arm64) ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libstdc.so.6: version CXXABI_1.3.13 not found (required by ./duckgres-linux-arm64) ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ./duckgres-linux-arm64) ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libc.so.6: version GLIBC_2.34 not found (required by ./duckgres-linux-arm64)系统libc等动态库版本太低。用gcc 14.2 的docker容器来执行。sudo docker start gcc142 sudo docker exec -it gcc142 bash cd /par ./duckgres-linux-arm64 ./duckgres-linux-arm64: /lib/aarch64-linux-gnu/libm.so.6: version GLIBC_2.38 not found (required by ./duckgres-linux-arm64)libm动态库版本还是不够高。再用gcc 15.2的docker容器来执行。sudo docker run -itd -v /home/par:/par --network host --name gcc152 docker.1ms.run/gcc:15.2 afb66b3c7b8e92c47cf2d60a96a34e9fb4ac6147dd0ef054f4f18e7971b4452a sudo docker exec -it gcc152 bash cd /par ./duckgres-linux-arm64 PostHog logging disabled (POSTHOG_API_KEY not set) time2026-04-23T01:07:34.358Z levelINFO msgStarting metrics server addr:9090 time2026-04-23T01:07:34.362Z levelINFO msgUsing TLS certificates cert_file./certs/server.crt key_file./certs/server.key time2026-04-23T01:07:34.362Z levelINFO msgTLS enabled. cert_file./certs/server.crt time2026-04-23T01:07:34.362Z levelINFO msgRate limiting enabled. max_failed_attempts5 window5m0s ban_duration15m0s time2026-04-23T01:07:34.362Z levelINFO msgIdle timeout enabled. timeout24h0m0s time2026-04-23T01:07:34.363Z levelINFO msgStarting Duckgres server (TLS required) versionbuild-0043e82 host0.0.0.0 port5432可以启动服务端了。但是用DBeaver 的postgresql驱动去连接报如下错误The server requested password-based authentication, but no password was provided by plugin null没法登录。在存储库的“packages”中找到了官方的docker镜像3. 拉取镜像, 打上简单的标签docker pull ghcr.io/posthog/duckgres:f9f5f0a30fd801cae7b4198b3276636e870a6a42 docker tag ghcr.io/posthog/duckgres:f9f5f0a30fd801cae7b4198b3276636e870a6a42 duckgres:dev运行容器docker run -itd -v /mnt/c/d:/par --network host --name duckgres duckgres:dev eb3b126f6fc12942147826398cf087c1853f5b0af0d0afb5729a546ee0601b3c容器中也没有psql客户端只有duckdb的插件。docker exec -it duckgres bash duckgresDESKTOP-59T6U68:~$ psql bash: psql: command not found duckgresDESKTOP-59T6U68:~$ ls certs data duckgres extensions duckgresDESKTOP-59T6U68:~$ ls -l total 187192 drwxr-xr-x 1 duckgres duckgres 4096 Apr 23 11:17 certs drwxr-xr-x 1 duckgres duckgres 4096 Apr 23 11:17 data -rwxr-xr-x 1 duckgres duckgres 191666944 Apr 22 21:25 duckgres drwxr-xr-x 1 duckgres duckgres 4096 Apr 22 21:25 extensions duckgresDESKTOP-59T6U68:~$ cd extensions duckgresDESKTOP-59T6U68:~/extensions$ ls v1.5.2 duckgresDESKTOP-59T6U68:~/extensions$ cd v1.5.2 duckgresDESKTOP-59T6U68:~/extensions/v1.5.2$ ls linux_amd64 duckgresDESKTOP-59T6U68:~/extensions/v1.5.2$ cd linux_amd64 duckgresDESKTOP-59T6U68:~/extensions/v1.5.2/linux_amd64$ ls ducklake.duckdb_extension httpfs.duckdb_extension json.duckdb_extension postgres_scanner.duckdb_extension duckgresDESKTOP-59T6U68:~/extensions/v1.5.2/linux_amd64$启动duckgres服务器发现已经启动了。利用宿主机上的psql连接指定localhost成功了。psql -U postgres -d postgres -h localhost Password for user postgres: psql (14.22 (Ubuntu 14.22-0ubuntu0.22.04.1), server 15.0 (Duckgres)) WARNING: psql major version 14, server major version 15. Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, bits: 128, compression: off) Type help for help. postgres postgres \timing on Timing is on. postgres select * from range(1,4); range ------- 1 2 3 (3 rows) Time: 32.571 ms postgres select sum(i) from generate_series(1,100000000)t(i); sum(i) ------------------ 5000000050000000 (1 row) Time: 114.346 ms用duckdb独有的range函数试验没问题。再用1亿行generate_series测试很快。