Japin

登高必自卑,行远必自迩

UUID 代表通用唯一标识符,在 RFC 4122 中定义。它是一个 128 位数字,通常以十六进制书写,并用破折号分成五组。典型的 UUID 值如下所示:

0193cfc2-5f8c-7f75-87ce-d26c47161eb5

RFC 9562 中给出了 UUID v7 的定义,目前它还只是一个建议标准。在 78c5e141 之前,PostgreSQL 只提供了 v4 版本,提交 78c5e141 引入了 v7 版本的支持。不出意外的话,该功能将在 PostgreSQL 18 中发布。

阅读全文 »

最近在使用 pg_duckdb 遇到了一个比较有趣的问题,当 PostgreSQL 启用 LLVM 时,pg_duckdb 编译失败,错误信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
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
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -Wmissing-prototypes -Wincompatible-pointer-types -fsanitize=bounds -fPIC -fvisibility=hidden -shared -o pg_duckdb.so src/pgduckdb_background_worker.o src/pgduckdb.o src/pgduckdb_ddl.o src/pgduckdb_detoast.o src/pgduckdb_duckdb.o src/pgduckdb_filter.o src/pgduckdb_hooks.o src/pgduckdb_memory_allocator.o src/pgduckdb_metadata_cache.o src/pgduckdb_node.o src/pgduckdb_options.o src/pgduckdb_planner.o src/pgduckdb_ruleutils.o src/pgduckdb_table_am.o src/pgduckdb_types.o src/pgduckdb_utils.o src/catalog/pgduckdb_catalog.o src/catalog/pgduckdb_schema.o src/catalog/pgduckdb_storage.o src/catalog/pgduckdb_table.o src/catalog/pgduckdb_transaction.o src/catalog/pgduckdb_transaction_manager.o src/scan/heap_reader.o src/scan/postgres_scan.o src/scan/postgres_seq_scan.o src/utility/copy.o src/vendor/pg_explain.o src/vendor/pg_ruleutils_15.o src/vendor/pg_ruleutils_16.o src/vendor/pg_ruleutils_17.o -L/data/Codes/pg/REL_16_STABLE/build/pg/lib -L/usr/lib/llvm-18/lib -Wl,--as-needed -Wl,-rpath,'/data/Codes/pg/REL_16_STABLE/build/pg/lib',--enable-new-dtags -fvisibility=hidden -Wl,-rpath,/data/Codes/pg/REL_16_STABLE/build/pg/lib/postgresql/ -lpq -Lthird_party/duckdb/build/release/src -L/data/Codes/pg/REL_16_STABLE/build/pg/lib/postgresql -lduckdb -lstdc++ -llz4
/usr/bin/clang -xc++ -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -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 -flto=thin -emit-llvm -c -std=c++17 -Wno-sign-compare -Wno-register -o src/pgduckdb_background_worker.bc src/pgduckdb_background_worker.cpp
In file included from src/pgduckdb_background_worker.cpp:1:
In file included from third_party/duckdb/src/include/duckdb.hpp:11:
In file included from third_party/duckdb/src/include/duckdb/main/connection.hpp:11:
In file included from third_party/duckdb/src/include/duckdb/common/enums/profiler_format.hpp:11:
third_party/duckdb/src/include/duckdb/common/constants.hpp:11:10: fatal error: 'memory' file not found
11 | #include <memory>
| ^~~~~~~~
1 error generated.
make: *** [/data/Codes/pg/REL_16_STABLE/build/pg/lib/postgresql/pgxs/src/makefiles/../../src/Makefile.global:1096: src/pgduckdb_background_worker.bc] Error 1

memory 可是 C++ 标准库中的头文件,居然都找不到,有点离谱了吧。

阅读全文 »

自 2024 年 09 月 26 日起,微软的 Hotmail 邮箱将不再支持第三方电子邮件客户端使用用户名和密码的登录方式,从而导致我的邮件客户端不能正常使用,必须使用 OAuth2 的认证方式才能访问。

阅读全文 »

在使用 Ubuntu 系统时,您可能会遇到应用程序崩溃或系统故障。为了帮助开发者快速发现和解决这些问题,Ubuntu 提供了一个名为 Apport 的错误报告工具。本文主要介绍一下如何使用 Apport 捕获用户程序的崩溃信息。

阅读全文 »

在 PostgreSQL 主从架构下,从节点可以提供一个只读副本用于缓解主节点的压力,但是这也可能带来其他问题,例如,您可能会在应用或者数据库日志中看到如下错误信息。

ERROR:  canceling statement due to conflict with recovery
DETAIL: User query might have needed to see row versions that must be removed.
阅读全文 »

最近,我在实现 SQLite 的透明加解密时遇到一个有意思 H2 的问题。当我使用 Qt 读写数据库文件时,可以正常操作,但是使用对应的 sqlite3 命令时则提示 database disk image is malformed;同样的,当我 sqlite3 命令创建数据库文件,并尝试在 Qt 中访问时,也无法正常读取。

阅读全文 »

最近,同事在测试 Hydra 的列存时遇到了崩溃的问题。当 chunk_group_row_limit 的值超过 100000 时,就会导致进程崩溃,其本质是由于 stripeReadState->chunkGroupReadState 被释放后,出现了空指针和悬空指针 (Dangling Pointer),从而引发了进程崩溃。

阅读全文 »

PostgresQL 数据库目前不支持全局临时表,当在迁移 Oracle 数据库时,经常会遇到全局临时表的问题,因此,基本上都会借助 pgtt 来解决这个问题。最近在折腾这个插件时发现了一些问题,本文对这些问题进行了整理。

阅读全文 »
0%