PostgreSQL 日报| ILIKE 索引扫描漏返数据行(10 月 27 日)

本文重点报道 PostgreSQL 19 中 macOS 平台下使用 libc UTF-8 排序规则时 ILIKE 索引扫描遗漏数据行的问题。Jeff Davis 提交补丁,统一在所有平台应用 towlower() 相关检查,经 glibc 2.39 和 musl 1.2.5 验证行为一致。该问题属于查询执行层的索引扫描逻辑缺陷,影响大小写不敏感模糊匹配的正确性,属核心查询优化与本地化支持关键议题。

PostgreSQL 技术文章

Neon 文档搜索功能现已采用 Neon 构建

Neon 已将其文档搜索基础设施迁移至自建方案,整个技术栈均基于其自身平台。文档、API 参考、指南、更新日志和博客的搜索结果现在由 Lakebase Search 提供,底层运行在 Lakebase Postgres 上,并通过 Neon Function 对外暴露。此举是 Neon 平台实际落地的一次示范——用自家的 serverless Postgr…

原文链接:

https://pgnexus.ai/tech-blogs?url=https%3A%2F%2Fneon.com%2Fblog%2Fneon-docs-search-lakebase-search

pg_ivm 1.17 版本发布

IVM Development Group 发布了 pg*ivm 1.17。此版本主要改动如下:restore_immv() 新增 replace 选项,pg_ivm_dump_metadata 新增 --pg-upgrade 标志,解决了 pg_upgrade 后因旧元数据残留导致 IMMV 恢复失败的问题。修复了 restore*…

原文链接:

https://pgnexus.ai/tech-blogs?url=https%3A%2F%2Fwww.postgresql.org%2Fabout%2Fnews%2Fpg_ivm-117-released-3420%2F

HypoPG 1.4.4 发布了!

HypoPG 1.4.4 已发布。HypoPG 是一个为 PostgreSQL 提供假设索引支持的扩展,兼容 PostgreSQL 9.2 及以上版本。本次发布以缺陷修复为主:修正了 OID 大于等于 2^31 时假设索引名称错误的问题,修复了 WITH 子句选项的内存泄漏,在计算最大列数时正确纳入 included columns,支持在依赖对象(关系、…

原文链接:

https://pgnexus.ai/tech-blogs?url=https%3A%2F%2Fwww.postgresql.org%2Fabout%2Fnews%2Fhypopg-144-is-out-3421%2F

pg_hdr_histogram 1.0.0 - PostgreSQL 中的精确百分位数计算

pg_hdr_histogram 1.0.0 是 Vladimir Pavliv 开发的一款 PostgreSQL 扩展,基于 HdrHistogram_c 库实现精确的延迟百分位数计算。与常见监控工具使用固定桶近似估算不同,该扩展将完整的 HDR 直方图作为原生 PostgreSQL 类型存储,在六个数量级范围内提供约 0.1% 的相对精度,p50、p9…

原文链接:

https://pgnexus.ai/tech-blogs?url=https%3A%2F%2Fwww.postgresql.org%2Fabout%2Fnews%2Fpg_hdr_histogram-100-exact-percentiles-in-postgresql-3418%2F

PostgreSQL Hacker 电子邮件讨论精选

移除对命名 POSIX 信号量的支持

Tom Lane 提议移除对 named POSIX semaphores 的支持,理由是该代码最初是为 macOS 而添加的,但自 2002 年起 SysV semaphores 已成为该平台的首选方案,其他平台上 named POSIX semaphores 的性能表现也不佳,且当前的 Meson 构建系统已无法选择该路径。Shihao Zhong 和…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=Let’s%20drop%20support%20for%20named%20POSIX%20semaphores

[PG19] macOS 上 libc UTF-8 排序规则下 ILIKE 索引扫描遗漏数据行的问题

Jeff Davis 提交了一个修复,解决了在 macOS 上使用 libc UTF-8 排序规则时 ILIKE 索引扫描遗漏行的问题。由于 ILIKE 在所有平台上均通过 towlower() 进行比较,该修复将相关检查应用于所有平台,而非仅限于 macOS。经过对 glibc 2.39 和 musl 1.2.5 的全面验证,确认在行为一致的平台上新增检…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=%5BPG19%5D%20ILIKE%20index%20scan%20misses%20rows%20with%20a%20libc%20UTF-8%20collation%20on%20macOS

ZSTD TOAST 压缩以及可扩展的压缩方法编码机制

Manu 审查了 Greg Burd 提交的 v11 补丁,该补丁涉及 ZSTD TOAST 压缩功能。补丁在 zstd 1.5.7 和 lz4 1.10.0 环境下可干净应用并通过测试。Manu 发现了以下问题:(1)仅启用 lz4 时因 dict_fetch() 缺少编译守卫导致编译失败;(2)启用 zstd 但不启用 lz4 时 compres…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=ZSTD%20TOAST%20compression%2C%20and%20an%20extensible%20compression%20method%20encoding

pg_constraint.confrelid 字段是否需要建立索引?

该讨论围绕为 pg_constraint.confrelid 添加非唯一 btree 索引展开,旨在解决随着 not-null 约束大量写入 pg_constraint 后顺序扫描开销急剧增大的问题。Manu 提交了补丁 v6(CF 7365),测试数据显示性能大幅提升:100 次 TRUNCATE 的指令数从 2.9G 降至 0.20G,大规模…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=Do%20we%20need%20an%20index%20on%20pg_constraint.confrelid%3F

PL/pgSQL:在事件触发器函数中,FOUND 是 NULL 而非 false

Jeevan Chalke 报告称,plpgsql_exec_event_trigger() 在执行函数体之前未将魔法变量 FOUND 初始化为 false,而 plpgsql_exec_function() 和 plpgsql_exec_trigger() 均有此初始化操作。这导致 PL/pgSQL 事件触发器函数入口处的 FOUND…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=PL%2FpgSQL%3A%20FOUND%20is%20NULL%2C%20not%20false%2C%20in%20event%20trigger%20functions

[补丁] 回归测试:视图和规则定义必须保证往返完整性

Greg Burd 提交了一个补丁,新增回归测试文件 deparse_roundtrip.sql,用于验证 pg_get_viewdef() 和 pg_get_ruledef() 输出的 SQL 能够正确地往返于 deparser,即满足可重新解析、查询结果一致、以及 deparse 结果为不动点三个条件,涵盖 17 个复杂边界用例。Ashutosh Ba…

原文链接:

https://pgnexus.ai/hacker-discussions?subject=%5BPATCH%5D%20regression%20test%3A%20view%20and%20rule%20definitions%20must%20round%20trip

行业新闻

Microsoft 向约 6 万名员工提供自愿离职补偿方案

Microsoft 近日向约 6 万名员工提出买断离职方案,此举是其最新一轮降本增效和人员结构调整计划的组成部分。作为全球最大科技公司之一,此次买断规模庞大,折射出 Microsoft 在持续加大 AI 基础设施和云服务投入背景下,加快精简运营、优化组织架构的战略意图。报道未披露具体买断条款细节。

原文链接:

https://pgnexus.ai/tech-news?url=https%3A%2F%2Ftechcrunch.com%2F2026%2F10%2F26%2Fmicrosoft-offers-buyouts-to-around-60000-employees-reports-say

Anthropic 正式提交 IPO 申请,披露营收和治理细节

AI 公司 Anthropic 已正式提交 IPO 申请,招股文件显示其营收快速增长,但亏损同步扩大。此次 S-1 文件披露了公司大规模企业客户的采用情况,以及一套旨在保留创始人控制权、维护 AI 安全使命的特殊治理架构。文件还显示,在年消费超 10 万美元的大客户中,逾半数已同时使用 Claude Platform 与自有应用,这一类似 Amazon 的交叉销售策略正在有效提升客户黏…

原文链接:

https://pgnexus.ai/tech-news?url=https%3A%2F%2Ftechcrunch.com%2F2026%2F10%2F26%2Fanthropic-officially-files-for-its-public-debut

SpaceX 与 Apollo 达成 400 亿美元 GPU 融资协议

SpaceX 与 Apollo 达成一项高达 400 亿美元的 GPU 融资协议,为公司快速扩张的 AI 业务提供重要资金支持。此次交易使 SpaceX 得以在不完全依赖传统债务市场的情况下,大规模扩充 AI 计算基础设施。如此规模的融资彰显了前沿 AI 发展对资本的巨大需求,也标志着 SpaceX 正以更积极的姿态布局 AI 基础设施领域,在航天与卫星主业之外开辟新的增长极。

原文链接:

https://pgnexus.ai/tech-news?url=https%3A%2F%2Ftechcrunch.com%2F2026%2F10%2F26%2Fspacex-locks-in-40b-gpu-financing-deal-with-apollo

社交媒体动态

CYBERTEC 迎来新合作伙伴:StonesThro

CYBERTEC 宣布与 StonesThro 建立合作关系。StonesThro 是一家总部位于英国的主权微型边缘计算与 AI 服务商,在英国多处安全地点运营碳中和的云、AI 及存储节点,并已通过 ISO 9001、27001、14001 和 20000 认证,同时获得英国政府 G-Cloud 15 框架的认可。此次合作将 CYBERTEC 在 Post…

原文链接:

https://pgnexus.ai/social-media?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Fcybertec-postgresql_partnership-sovereigncloud-edgecomputing-activity-7520374332783484928-CAh_

财务团队不应该花费数小时拼凑数据只为解释数字变动的原因

Genie One 旨在减少财务团队在数据分析上耗费的人工投入。该工具将经过审批的指标、财务逻辑与业务背景整合在一起,帮助团队高效排查数据差异、监控现金流、处理账期异常并追踪支出规律。重复性分析可转化为可复用的工作流,同时完整保留现有的权限与管控机制。其核心目标是简化财务分析与报告流程,让团队无需再从多个数据源手动汇总信息。

原文链接:

https://pgnexus.ai/social-media?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Fdatabricks_finance-teams-shouldnt-have-to-spend-hours-activity-7520560673546895360-noDA

如果智能体内存不再需要额外的同步管道,会怎样?

Databricks 联合创始人兼首席架构师辛雷诺德介绍了面向智能体应用的 LTAP 架构。该架构允许事务性与分析性工作负载读取同一份数据,无需额外的同步管道。智能体内存、应用状态与历史数据共享统一的权限体系,整个系统基于标准 Postgres 构建,兼容现有驱动、扩展和 ORM。这一方案旨在将内存与状态管理整合为单一一致的系统,从而简化 AI 智能体的数…

原文链接:

https://pgnexus.ai/social-media?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Fdatabricks_webinar-the-emerging-blueprint-for-agentic-activity-7520496510837522432-TNu_

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值