在 PostgreSQL 的这一天,25 年前
偶尔回顾一下四分之一世纪前的 PostgreSQL 提交。
2025年1月29日
25年前的今天(PostgreSQL 7.0 开发周期),提交了一个补丁,确保带有正引用计数的无效 relcache 条目会被重建而不是删除
commit 04103e00f1f0ce12c29954d069e1d4437467f700 Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat Jan 29 19:51:59 2000 +0000 Modify uses of RelationFlushRelation and RelationCacheInvalidate so that we *always* rebuild, rather than deleting, an invalidated relcache entry that has positive refcount. Otherwise an SI cache overrun leads to dangling Relation pointers all over the place!
发布于下午8:53
2025年1月28日
25年前的今天(PostgreSQL 7.0 开发周期),进行了一项更改,使得可以使用 DNF(“析取范式”)而不是 CNF(“合取范式”),视情况而定
commit 003dd965d2380823624f58d0d0cf72c4edc3bcb4 Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Fri Jan 28 03:22:36 2000 +0000 Apply the heuristic proposed by Taral (see pgsql-general archives for 2-Oct-98 or TODO.detail/cnfify) to decide whether we want to reduce WHERE clause to CNF form, DNF form, or neither. This is a HUGE win. The heuristic conditions could probably still use a little tweaking to make sure we don't pick CNF when DNF would be better, or vice versa, but the risk of exponential explosion in cnfify() is gone. I was able to run ten-thousand-AND-subclause queries through the planner in a reasonable amount of time.
发布于下午7:42
2025年1月27日
25年前的今天(PostgreSQL 7.0 开发周期),重构了 DISTINCT ON
子句,使其能够接受多个表达式
commit dd979f66be20fc54aad06da743f788fbc505bbe1 Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Thu Jan 27 18:11:50 2000 +0000 Redesign DISTINCT ON as discussed in pgsql-sql 1/25/00: syntax is now SELECT DISTINCT ON (expr [, expr ...]) targetlist ... and there is a check to make sure that the user didn't specify an ORDER BY that's incompatible with the DISTINCT operation. Reimplement nodeUnique and nodeGroup to use the proper datatype-specific equality function for each column being compared --- they used to do bitwise comparisons or convert the data to text strings and strcmp(). (To add insult to injury, they'd look up the conversion functions once for each tuple...) Parse/plan representation of DISTINCT is now a list of SortClause nodes. initdb forced by querytree change...
发布于上午11:25
2025年1月25日
25年前的今天(PostgreSQL 7.0 开发周期),添加了 to_char()
及其相关函数
commit b866d2e2d79416f8497e4dffa7e800298d018f6c Author: Bruce Momjian <bruce@momjian.us> Date: Tue Jan 25 23:53:56 2000 +0000 as attache of this mail is patch (to the main tree) with to_char's family functions. Contain: conversion from a datetype to formatted text: to_char( datetime, text) to_char( timestamp, text) to_char( int4, text) to_char( int8, text) to_char( float4, text) to_char( float8, text) to_char( numeric, text) vice versa: to_date ( text, text) to_datetime ( text, text) to_timestamp ( text, text) to_number ( text, text) (convert to numeric) PostgreSQL to_char is very compatible with Oracle's to_char(), but not total exactly (now). Small differentions are in number formating. It will fix in next to_char() (...) Karel Zak <zakkr@zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/
(为简洁起见,省略了一些提交消息文本)
发布于下午5:12
2025年1月24日
25年前的今天(PostgreSQL 7.0 开发周期),对范围查询的选择性估计进行了改进
commit 0dbffa704ab3235431b4caef675d9179109d4a0c Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Mon Jan 24 07:16:52 2000 +0000 First cut at making useful selectivity estimates for range queries (ie, WHERE x > lowbound AND x < highbound). It's not very bright yet but it does something useful.
发布于下午7:37
2025年1月22日
25年前的今天(PostgreSQL 7.0 开发周期),首次尝试添加对 ALTER TABLE DROP COLUMN
的支持
commit fa5400c0a40eab95499da5a54d8a526593a1f243 Author: Peter Eisentraut <peter_e@gmx.net> Date: Sat Jan 22 14:20:56 2000 +0000 added ALTER TABLE DROP COLUMN, early version
发布于下午9:41
2025年1月20日
25年前的今天(PostgreSQL 7.0 开发周期),决定即将发布的版本将命名为 PostgreSQL 7.0
,而不是 PostgreSQL 7.0.0
commit e3415aa83447f1bad020572e69020b11d16f9a64 Author: Bruce Momjian <bruce@momjian.us> Date: Thu Jan 20 22:21:30 2000 +0000 Rename 7.0.0 to 7.0 to be consistent with prior release numbering.
发布于晚上9:00
2025年1月19日
25年前的今天(PostgreSQL 7.0 开发周期),修复了 NULL 约束条件的处理
commit 6d1efd76fb9852b8bc242dcaf35916090d7c5899 Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Wed Jan 19 23:55:03 2000 +0000 Fix handling of NULL constraint conditions: per SQL92 spec, a NULL result from a constraint condition does not violate the constraint (cf. discussion on pghackers 12/9/99). Implemented by adding a parameter to ExecQual, specifying whether to return TRUE or FALSE when the qual result is really NULL in three-valued boolean logic. Currently, ExecRelCheck is the only caller that asks for TRUE, but if we find any other places that have the wrong response to NULL, it'll be easy to fix them.
发布于下午2:41