PostgreSQL 只读模式
通常我们谈到关于 PostgreSQL 的只读连接时都是在从节点的环境中。但是,在某些情况下您可能需要在主节点建立只读连接。PostgreSQL 提供了 default_transaction_read_only
参数来控制事务读写属性。
Clang++ 无法找到 memory 头文件
最近在使用 pg_duckdb 遇到了一个比较有趣的问题,当 PostgreSQL 启用 LLVM 时,pg_duckdb 编译失败,错误信息如下:
1 | g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O2 -std=c++17 -Wno-sign-compare -Wno-register -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Iinclude -Ithird_party/duckdb/src/include -Ithird_party/duckdb/third_party/re2 -I. -I./ -I/data/Codes/pg/REL_16_STABLE/build/pg/include/postgresql/server -I/data/Codes/pg/REL_16_STABLE/build/pg/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/scan/postgres_scan.o src/scan/postgres_scan.cpp -MMD -MP -MF .deps/postgres_scan.Po |
memory
可是 C++ 标准库中的头文件,居然都找不到,有点离谱了吧。
Hotmail 邮箱 OAuth2 认证
自 2024 年 09 月 26 日起,微软的 Hotmail 邮箱将不再支持第三方电子邮件客户端使用用户名和密码的登录方式,从而导致我的邮件客户端不能正常使用,必须使用 OAuth2 的认证方式才能访问。
Ubuntu 使用 Apport 记录用户程序崩溃信息
在使用 Ubuntu 系统时,您可能会遇到应用程序崩溃或系统故障。为了帮助开发者快速发现和解决这些问题,Ubuntu 提供了一个名为 Apport 的错误报告工具。本文主要介绍一下如何使用 Apport 捕获用户程序的崩溃信息。
PostgreSQL 查询冲突
在 PostgreSQL 主从架构下,从节点可以提供一个只读副本用于缓解主节点的压力,但是这也可能带来其他问题,例如,您可能会在应用或者数据库日志中看到如下错误信息。
ERROR: canceling statement due to conflict with recovery |
Qt 与 sqlite 中 OpenSSL 对称加解密算法无法互相读取
最近,我在实现 SQLite 的透明加解密时遇到一个有意思 H2 的问题。当我使用 Qt 读写数据库文件时,可以正常操作,但是使用对应的 sqlite3 命令时则提示 database disk image is malformed
;同样的,当我 sqlite3 命令创建数据库文件,并尝试在 Qt 中访问时,也无法正常读取。
Hydra 列存崩溃问题
最近,同事在测试 Hydra 的列存时遇到了崩溃的问题。当 chunk_group_row_limit
的值超过 100000
时,就会导致进程崩溃,其本质是由于 stripeReadState->chunkGroupReadState
被释放后,出现了空指针和悬空指针 (Dangling Pointer),从而引发了进程崩溃。
PostgreSQL 事务超时
继空闲会话超时之后,PostgreSQL 在 17 中又引入了事务超时 transaction_timeout
。