From 512028265dad7556e33fc50fc5b09dc67223626c Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sat, 21 Nov 2020 18:11:14 +0800 Subject: [PATCH 01/34] =?UTF-8?q?fix=20#322=20=E5=8F=8C=E6=96=9C=E7=BA=BF?= =?UTF-8?q?=3D=E3=80=8B=E5=8F=8C=E6=A8=AA=E6=9D=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/syntax.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/syntax.sgml b/postgresql/doc/src/sgml/syntax.sgml index 3c150e42..4f663637 100644 --- a/postgresql/doc/src/sgml/syntax.sgml +++ b/postgresql/doc/src/sgml/syntax.sgml @@ -1619,7 +1619,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 一段注释是以双斜线开始并且延伸到行结尾的一个字符序列,例如: + 一段注释是以双横杠开始并且延伸到行结尾的一个字符序列,例如: -- This is a standard SQL comment From 18b2e8c58443f85fdbedd55f2ce2593a015213f9 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Thu, 10 Dec 2020 23:18:26 +0800 Subject: [PATCH 02/34] fix #325 --- postgresql/doc/src/sgml/high-availability.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/high-availability.sgml b/postgresql/doc/src/sgml/high-availability.sgml index 280853a0..08bed275 100644 --- a/postgresql/doc/src/sgml/high-availability.sgml +++ b/postgresql/doc/src/sgml/high-availability.sgml @@ -1987,7 +1987,7 @@ ____________________________________________________________________________--> 基于优先的多同步后备的synchronous_standby_names示例为: -synchronous_standby_names = '2 (s1, s2, s3)' +synchronous_standby_names = 'FIRST 2 (s1, s2, s3)' 在这个例子中,如果有四个后备服务器s1s2s3s4在运行,两个后备服务器s1s2将被选中为同步后备,因为它们出现在后备服务器名称列表的前部。s3是一个潜在的同步后备,当s1s2中的任何一个失效, 它就会取而代之。s4则是一个异步后备因为它的名字不在列表中。 From bf25086824cd1e3ccb2aa05d454c1b4a51a02917 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sat, 30 Jan 2021 23:54:47 +0800 Subject: [PATCH 03/34] =?UTF-8?q?fix=20#328=20typo=20=E6=8E=A7=E5=88=B6->?= =?UTF-8?q?=E7=A9=BA=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/func.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/func.sgml b/postgresql/doc/src/sgml/func.sgml index c751150b..e978c705 100644 --- a/postgresql/doc/src/sgml/func.sgml +++ b/postgresql/doc/src/sgml/func.sgml @@ -29284,7 +29284,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 请注意,除了count以外,这些函数在没有行被选中时返回控制。尤其是sum函数在没有输入行时返回空值,而不是零,并且array_agg在这种情况返回空值而不是一个空数组。必要时可以用coalesce把空值替换成零或一个空数组。 + 请注意,除了count以外,这些函数在没有行被选中时返回空值。尤其是sum函数在没有输入行时返回空值,而不是零,并且array_agg在这种情况返回空值而不是一个空数组。必要时可以用coalesce把空值替换成零或一个空数组。 ____________________________________________________________________________--> - 在一个Parse消息里包含的查询字符串不能包含超过一个SQL语句;否则就会报告一个语法错误。这个限制在简单查询协议中并不存在, 是它存在于扩展协议中,因为允许预备语句或者入口包含多个命令将导致协议过度地复杂。 + 在一个Parse消息里包含的查询字符串不能包含超过一个SQL语句;否则就会报告一个语法错误。这个限制在简单查询协议中并不存在,它只存在于扩展协议中,因为允许预备语句或者入口包含多个命令将导致协议过度地复杂。 From 6fe22811264d55954d8ff1fdef21094d60d087ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E4=BC=9F=E6=9D=B0?= Date: Tue, 22 Jun 2021 14:31:41 +0800 Subject: [PATCH 05/34] Update protocol.sgml --- postgresql/doc/src/sgml/protocol.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/protocol.sgml b/postgresql/doc/src/sgml/protocol.sgml index 007755dd..91c7202a 100644 --- a/postgresql/doc/src/sgml/protocol.sgml +++ b/postgresql/doc/src/sgml/protocol.sgml @@ -1463,7 +1463,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 一旦一个预备语句存在,就可以很使用Bind消息使之进入执行状态。Bind消息给出源预备语句的名字(空字符串表示未命名预备语句)、目标入口的名字(空字符串表示未命名的入口)及用于那些在预备语句中出现的所有参数占位符的值。提供的参数集必须匹配那些预备语句所需要的参数(如果你在Parse消息里声明任何void参数,那么在Bind消息里给它们传递NULL值)。Bind还指定被查询返回的数据的格式;格式可以在总体上声明,也可以对每个列进行声明。响应是BindComplete或ErrorResponse。 + 一旦一个预备语句存在,就可以使用Bind消息使之进入执行状态。Bind消息给出源预备语句的名字(空字符串表示未命名预备语句)、目标入口的名字(空字符串表示未命名的入口)及用于那些在预备语句中出现的所有参数占位符的值。提供的参数集必须匹配那些预备语句所需要的参数(如果你在Parse消息里声明任何void参数,那么在Bind消息里给它们传递NULL值)。Bind还指定被查询返回的数据的格式;格式可以在总体上声明,也可以对每个列进行声明。响应是BindComplete或ErrorResponse。 From c9513995098f2ba90b5996ba5d5348d21519baf1 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Fri, 25 Jun 2021 00:47:26 +0800 Subject: [PATCH 06/34] =?UTF-8?q?fix=20#332=20=E8=BF=99=E4=B9=9F=E6=98=AF?= =?UTF-8?q?=E4=B8=BA=E4=BB=80=E4=B9=88=E9=BB=98=E8=AE=A4=E5=80=BC=E8=A2=AB?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA=E8=BE=83=E4=BD=8E=E7=9A=84400?= =?UTF-8?q?=E4=B8=87=E5=A4=9A=E4=BA=8B=E5=8A=A1=20=3D>=20=E8=BF=99?= =?UTF-8?q?=E4=B9=9F=E6=98=AF=E4=B8=BA=E4=BB=80=E4=B9=88=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC=E8=A2=AB=E8=AE=BE=E7=BD=AE=E4=B8=BA=E8=BE=83=E4=BD=8E?= =?UTF-8?q?=E7=9A=844=E4=BA=BF=E5=A4=9A=E4=BA=8B=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/config.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/config.sgml b/postgresql/doc/src/sgml/config.sgml index 485da2f0..4b48608d 100644 --- a/postgresql/doc/src/sgml/config.sgml +++ b/postgresql/doc/src/sgml/config.sgml @@ -12075,7 +12075,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 清理多事务也允许从pg_multixact/memberspg_multixact/offsets子目录中移除旧文件,这也是为什么默认值被设置为较低的400万多事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见。 + 清理多事务也允许从pg_multixact/memberspg_multixact/offsets子目录中移除旧文件,这也是为什么默认值被设置为较低的4亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见 From 900a174abab3b03587be661cd45e85489a36426b Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 11 Jul 2021 11:31:41 +0800 Subject: [PATCH 07/34] backport https://github.com/postgres-cn/pgdoc-cn/pull/347 --- postgresql/doc/src/sgml/json.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/doc/src/sgml/json.sgml b/postgresql/doc/src/sgml/json.sgml index f7a0ca3e..f6b20b1f 100644 --- a/postgresql/doc/src/sgml/json.sgml +++ b/postgresql/doc/src/sgml/json.sgml @@ -941,7 +941,7 @@ CREATE INDEX idxgintags ON api USING gin ((jdoc -> 'tags')); SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @@ '$.tags[*] == "qui"'; -SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @@ '$.tags[*] ? (@ == "qui")'; +SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @? '$.tags[*] ? (@ == "qui")'; GIN index extracts statements of following form out of jsonpath: accessors_chain = const. @@ -957,7 +957,7 @@ ____________________________________________________________________________--> SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @@ '$.tags[*] == "qui"'; -SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @@ '$.tags[*] ? (@ == "qui")'; +SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @? '$.tags[*] ? (@ == "qui")'; GIN 索引从jsonpath中提取如下格式的语句: accessors_chain = const。 存取器链可能由.key[*], 和 [index] 存取器组成。 From e0c0f06b30c7f8507dffc17675492d3ef04f829c Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 11 Jul 2021 11:41:43 +0800 Subject: [PATCH 08/34] fix #349 --- postgresql/doc/src/sgml/func.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/func.sgml b/postgresql/doc/src/sgml/func.sgml index e978c705..064da5ce 100644 --- a/postgresql/doc/src/sgml/func.sgml +++ b/postgresql/doc/src/sgml/func.sgml @@ -14844,7 +14844,7 @@ ____________________________________________________________________________--> statement_timestamp() timestamp with time zone - 当前日期和时间(当前事务的开始);见 + 当前日期和时间(当前语句的开始);见 From 64e3f604a84ba8ed04d542ff6575284739fe20cf Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 8 Aug 2021 00:07:38 +0800 Subject: [PATCH 09/34] =?UTF-8?q?Fix=20#353=20=20autovacuum=5Fvacuum=5Fthr?= =?UTF-8?q?eshold=20=E7=AD=89=E5=87=A0=E4=B8=AA=E5=8F=82=E6=95=B0=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=B8=8D=E5=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/config.sgml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/postgresql/doc/src/sgml/config.sgml b/postgresql/doc/src/sgml/config.sgml index 4b48608d..9a5c4e3d 100644 --- a/postgresql/doc/src/sgml/config.sgml +++ b/postgresql/doc/src/sgml/config.sgml @@ -3967,7 +3967,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 设置可以使用查询快照的最小时间量,以规避使用快照时出现snapshot too old 错误的风险。超过此阈值时间的数据将可以被清除。 + 设置查询快照可以使用的最短时间,而不会在使用快照时发生snapshot too old 错误的风险。超过此阈值时间的死数据将允许被清除。 这可以有助于阻止长时间使用的快照造成的快照膨胀。为了阻止由于本来对该快照可见的数据被清理导致的不正确结果,当快照比这个阈值更旧并且该快照被用来读取一个该快照建立以来被修改过的页面时,将会产生一个错误。 @@ -11880,7 +11880,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 指定能在一个表上触发VACUUM的被插入、被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 + 指定能在一个表上触发VACUUM的被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 @@ -12110,7 +12110,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 指定用于自动VACUUM操作中的代价延迟值。如果指定-1(默认值),则使用值。 + 指定用于自动VACUUM操作中的代价延迟值。如果指定-1,则使用值。 如果指定值时没有单位,则以毫秒为单位。默认值为2毫秒。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 From b37114d4eb48603200b616fc4029b710f9ca8fff Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 8 Aug 2021 00:14:54 +0800 Subject: [PATCH 10/34] fix typo 970->993 # Conflicts: # postgresql/doc/src/sgml/planstats.sgml --- postgresql/doc/src/sgml/planstats.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/planstats.sgml b/postgresql/doc/src/sgml/planstats.sgml index 42ad0dc0..c6a8d54f 100644 --- a/postgresql/doc/src/sgml/planstats.sgml +++ b/postgresql/doc/src/sgml/planstats.sgml @@ -216,7 +216,7 @@ WHERE tablename='tenk1' AND attname='unique1'; {0,993,1997,3050,4040,5036,5957,7057,8029,9016,9995} - 然后,把直方图里面被< 1000占据的部分找出来。这就是选择度。直方图把范围分隔成等频的桶, 所以我们要做的只是把我们的值所在的桶找出来,然后计数其中的部分以及所有该值之前的部分。值 1000 很明显在第二个桶(970-1943)中。假设每个桶中的值是线性分布,那么就可以计算出选择度: + 然后,把直方图里面被< 1000占据的部分找出来。这就是选择度。直方图把范围分隔成等频的桶, 所以我们要做的只是把我们的值所在的桶找出来,然后计数其中的部分以及所有该值之前的部分。值 1000 很明显在第二个桶(993–1943)中。假设每个桶中的值是线性分布,那么就可以计算出选择度: selectivity = (1 + (1000 - bucket[2].min)/(bucket[2].max - bucket[2].min))/num_buckets From c6f8114e881614202fcc200177dbfcc76b8870ac Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 8 Aug 2021 00:32:28 +0800 Subject: [PATCH 11/34] fix typo --- postgresql/doc/src/sgml/config.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/config.sgml b/postgresql/doc/src/sgml/config.sgml index 9a5c4e3d..a2c5b8ef 100644 --- a/postgresql/doc/src/sgml/config.sgml +++ b/postgresql/doc/src/sgml/config.sgml @@ -3967,7 +3967,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 设置查询快照可以使用的最短时间,而不会在使用快照时发生snapshot too old 错误的风险。超过此阈值时间的死数据将允许被清除。 + 设置在使用快照时,一个快照可以被使用而没有发生snapshot too old 错误的风险的最小时间。超过此阈值时间的死数据将允许被清除。 这可以有助于阻止长时间使用的快照造成的快照膨胀。为了阻止由于本来对该快照可见的数据被清理导致的不正确结果,当快照比这个阈值更旧并且该快照被用来读取一个该快照建立以来被修改过的页面时,将会产生一个错误。 From 5d6dabb9623f354ce732a31c3308ac838ee97060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E4=BC=9F=E6=9D=B0?= Date: Wed, 15 Sep 2021 15:09:04 +0800 Subject: [PATCH 12/34] Fix typo in protocol.sgml --- postgresql/doc/src/sgml/protocol.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/protocol.sgml b/postgresql/doc/src/sgml/protocol.sgml index 91c7202a..e0ec0cf4 100644 --- a/postgresql/doc/src/sgml/protocol.sgml +++ b/postgresql/doc/src/sgml/protocol.sgml @@ -1664,7 +1664,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - Flush消息并产生任何特定的输出,但是强制后端发送任何还在它的输出缓冲区中待处理的数据。Flush必须在除Sync外的任何扩展查询命令后面发出——如果前端希望在发出更多的命令之前检查该命令的结果的话。如果没有Flush,后端返回的消息将组合成尽可能少的数据包,以减少网络负荷。 + Flush消息不产生任何特定的输出,但会强制后端发送任何还在它的输出缓冲区中待处理的数据。Flush必须在除Sync外的任何扩展查询命令后面发出——如果前端希望在发出更多的命令之前检查该命令的结果的话。如果没有Flush,后端返回的消息将组合成尽可能少的数据包,以减少网络负荷。 From 274f252af597f844cfcc6858b8d068e4491f2028 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Mon, 18 Oct 2021 00:24:50 +0800 Subject: [PATCH 13/34] fix typo of #358 --- postgresql/doc/src/sgml/ref/alter_table.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/ref/alter_table.sgml b/postgresql/doc/src/sgml/ref/alter_table.sgml index 5926d9cf..273c8dad 100644 --- a/postgresql/doc/src/sgml/ref/alter_table.sgml +++ b/postgresql/doc/src/sgml/ref/alter_table.sgml @@ -2159,7 +2159,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 增加一个带有非易失性DEFAULT子句的列或者更改一个现有列的类型将 + 增加一个带有易失性DEFAULT子句的列或者更改一个现有列的类型将 要求重写整个表及其索引。在更改一个现有列的类型时有一种例外:如果 USING子句不更改列的内容并且旧类型在二进制上与新类型可 强制转换或者是新类型上的一个未约束域,则不需要重写表。但是受影响列上 From f148a97e871ecfae0f9a5c59b0ea52c45764501c Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 31 Oct 2021 19:15:54 +0800 Subject: [PATCH 14/34] Merge pull request #363 from sd44/master MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一些小数据错误或代码错误 --- postgresql/doc/src/sgml/ecpg.sgml | 2 +- postgresql/doc/src/sgml/mvcc.sgml | 4 ++-- postgresql/doc/src/sgml/perform.sgml | 2 +- postgresql/doc/src/sgml/rules.sgml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/postgresql/doc/src/sgml/ecpg.sgml b/postgresql/doc/src/sgml/ecpg.sgml index 74afe925..57ba969c 100644 --- a/postgresql/doc/src/sgml/ecpg.sgml +++ b/postgresql/doc/src/sgml/ecpg.sgml @@ -11412,7 +11412,7 @@ test_cpp.pgc:28: ERROR: variable "dbname" is not declared ____________________________________________________________________________--> - 例如,在下面的情况中,ecpg预处理器无法为test方法中的变量dbname找到任何生命,因此将发生一个错误。 + 例如,在下面的情况中,ecpg预处理器无法为test方法中的变量dbname找到任何声明,因此将发生一个错误。 class TestCpp diff --git a/postgresql/doc/src/sgml/mvcc.sgml b/postgresql/doc/src/sgml/mvcc.sgml index 4d604111..3a9d35de 100644 --- a/postgresql/doc/src/sgml/mvcc.sgml +++ b/postgresql/doc/src/sgml/mvcc.sgml @@ -1053,11 +1053,11 @@ ____________________________________________________________________________--> SELECT SUM(value) FROM mytab WHERE class = 1; - 并且接着把结果(3)作为一个新行的value插入,新行的class = 2。同时,可序列化事务 B 计算: + 并且接着把结果(30)作为一个新行的value插入,新行的class = 2。同时,可序列化事务 B 计算: SELECT SUM(value) FROM mytab WHERE class = 2; - 并得到结果 300,它会将其与class = 1插入到一个新行中。然后两个事务都尝试提交。如果其中一个事务运行在可重复读隔离级别,两者都被允许提交;但是由于没有执行的序列化顺序能在结果上一致,使用可序列化事务将允许一个事务提交并且将回滚另一个并伴有这个消息: + 并得到结果 300,它会将其与class = 1插入到一个新行中。然后两个事务都尝试提交。如果其中一个事务运行在可重复读隔离级别,两者都被允许提交;但是由于不同的执行顺序可能导致不同结果,使用可序列化事务将允许一个事务提交并且将回滚另一个并伴有这个消息: ERROR: could not serialize access due to read/write dependencies among transactions diff --git a/postgresql/doc/src/sgml/perform.sgml b/postgresql/doc/src/sgml/perform.sgml index 0a53c8b6..8808eab6 100644 --- a/postgresql/doc/src/sgml/perform.sgml +++ b/postgresql/doc/src/sgml/perform.sgml @@ -1437,7 +1437,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 在两种有效的方法中EXPLAIN ANALYZE所度量的运行时间可能偏离同一个查询的正常执行。首先,由于不会有输出行被递交给客户端,网络传输开销和 I/O 转换开销没有被包括在内。其次,由EXPLAIN ANALYZE所增加的度量符合可能会很可观,特别是在那些gettimeofday()操作系统调用很慢的机器上。你可以使用工具来度量在你的系统上的计时开销。 + 在两种有效的方法中EXPLAIN ANALYZE所度量的运行时间可能偏离同一个查询的正常执行。首先,由于不会有输出行被递交给客户端,网络传输开销和 I/O 转换开销没有被包括在内。其次,由EXPLAIN ANALYZE所增加的度量开销可能会很可观,特别是在操作系统调用gettimeofday()很慢的机器上。你可以使用工具来度量在你的系统上的计时开销。 ____________________________________________________________________________--> - 在很多情况下,由INSERT/UPDATE/DELETE上的规则执行的任务用触发器能做得更好。触发器在记法上要更复杂些,但是它们的语义理解起来更简单些。当原始查询包含不稳定函数时,规则容易产生令人惊讶的结果:在执行规则的过程中不稳定函数的执行次数可能比语气中的更多。 + 在很多情况下,由INSERT/UPDATE/DELETE上的规则执行的任务用触发器能做得更好。触发器在记法上要更复杂些,但是它们的语义理解起来更简单些。当原始查询包含不稳定函数时,规则容易产生令人惊讶的结果:在执行规则的过程中不稳定函数的执行次数可能比预期中的更多。 -2019 +2020 - 1996-2019 + 1996-2020 @@ -17,7 +17,7 @@ 版权声明 - PostgreSQL is Copyright © 1996-2019 + PostgreSQL is Copyright © 1996-2020 by the PostgreSQL Global Development Group. @@ -56,7 +56,7 @@ - PostgreSQL版权 © 1996-2019为PostgreSQL全球开发组所有。 + PostgreSQL版权 © 1996-2020为PostgreSQL全球开发组所有。 diff --git a/postgresql/doc/src/sgml/lobj.sgml b/postgresql/doc/src/sgml/lobj.sgml index 6f93060d..7507a55e 100644 --- a/postgresql/doc/src/sgml/lobj.sgml +++ b/postgresql/doc/src/sgml/lobj.sgml @@ -1476,7 +1476,7 @@ ____________________________________________________________________________--> * testlo.c * 测试通过 libpq 使用大对象 * - * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * diff --git a/postgresql/doc/src/sgml/ref/discard.sgml b/postgresql/doc/src/sgml/ref/discard.sgml index 60942064..78cd51dc 100644 --- a/postgresql/doc/src/sgml/ref/discard.sgml +++ b/postgresql/doc/src/sgml/ref/discard.sgml @@ -169,15 +169,15 @@ ____________________________________________________________________________--> 释放与当前会话相关的所有临时资源并且把会话重置为初始状态。 当前这和执行以下语句序列的效果相同: +CLOSE ALL; SET SESSION AUTHORIZATION DEFAULT; RESET ALL; DEALLOCATE ALL; -CLOSE ALL; UNLISTEN *; SELECT pg_advisory_unlock_all(); DISCARD PLANS; -DISCARD SEQUENCES; DISCARD TEMP; +DISCARD SEQUENCES; From dc57a09f094aea094f8a6fd5ee98084fc1e1d525 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Mon, 13 Dec 2021 02:20:06 +0800 Subject: [PATCH 16/34] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BF=BB=E8=AF=91PG10-?= =?UTF-8?q?>PG11=E9=81=97=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/ref/checkpoint.sgml | 4 ++-- postgresql/doc/src/sgml/ref/clusterdb.sgml | 2 +- postgresql/doc/src/sgml/ref/vacuumdb.sgml | 2 +- postgresql/doc/src/sgml/test-decoding.sgml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/postgresql/doc/src/sgml/ref/checkpoint.sgml b/postgresql/doc/src/sgml/ref/checkpoint.sgml index 9196b9c5..e415b807 100644 --- a/postgresql/doc/src/sgml/ref/checkpoint.sgml +++ b/postgresql/doc/src/sgml/ref/checkpoint.sgml @@ -31,7 +31,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> CHECKPOINT - 强制一个事务日志检查点 + 强制一个WAL日志检查点 @@ -61,7 +61,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 一个检查点是事务日志序列中的一个点,在该点上所有数据文件 + 一个检查点是WAL日志序列中的一个点,在该点上所有数据文件 都已经被更新为反映日志中的信息。所有数据文件将被刷写到磁盘。 检查点期间发生的细节可见 diff --git a/postgresql/doc/src/sgml/ref/clusterdb.sgml b/postgresql/doc/src/sgml/ref/clusterdb.sgml index 91bb6e52..d41fe926 100644 --- a/postgresql/doc/src/sgml/ref/clusterdb.sgml +++ b/postgresql/doc/src/sgml/ref/clusterdb.sgml @@ -605,7 +605,7 @@ ____________________________________________________________________________--> 要聚簇在数据库xyzzy中的一个表foo -$ clusterdb --table foo xyzzy +$ clusterdb --table=foo xyzzy diff --git a/postgresql/doc/src/sgml/ref/vacuumdb.sgml b/postgresql/doc/src/sgml/ref/vacuumdb.sgml index b3dee7e4..708a918b 100644 --- a/postgresql/doc/src/sgml/ref/vacuumdb.sgml +++ b/postgresql/doc/src/sgml/ref/vacuumdb.sgml @@ -971,7 +971,7 @@ ____________________________________________________________________________--> 要清理在名为xyzzy的数据库中的一个表foo,并且为优化器分析该表的bar列: -$ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy +$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy diff --git a/postgresql/doc/src/sgml/test-decoding.sgml b/postgresql/doc/src/sgml/test-decoding.sgml index c1cbbc7d..e75433fb 100644 --- a/postgresql/doc/src/sgml/test-decoding.sgml +++ b/postgresql/doc/src/sgml/test-decoding.sgml @@ -65,7 +65,7 @@ ____________________________________________________________________________--> postgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'include-xids', '0'); - location | xid | data + lsn | xid | data -----------+-----+-------------------------------------------------- 0/16D30F8 | 691 | BEGIN 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:2 data[text]:'arg' From f853fb5f091c47d9a6f6abfd7072d2b442c20077 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Mon, 7 Mar 2022 23:37:12 +0800 Subject: [PATCH 17/34] =?UTF-8?q?typo=20fix=20=E6=9D=80=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/monitoring.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/doc/src/sgml/monitoring.sgml b/postgresql/doc/src/sgml/monitoring.sgml index e1a64920..1b439b35 100644 --- a/postgresql/doc/src/sgml/monitoring.sgml +++ b/postgresql/doc/src/sgml/monitoring.sgml @@ -4316,7 +4316,7 @@ ____________________________________________________________________________--> received_lsn pg_lsn - 已经接收到并且已经被杀入磁盘的最后一个预写式日志的位置,这个域的初始值是 WAL 接收器启动时使用的第一个日志位置 + 已经接收到并且已经被刷入磁盘的最后一个预写式日志的位置,这个域的初始值是 WAL 接收器启动时使用的第一个日志位置 received_tli integer - 已经接收到并且已经被杀入磁盘的最后一个预写式日志的时间线编号,这个域的初始值是 WAL 接收器启动时使用的第一个日志所在的时间线编号 + 已经接收到并且已经被刷入磁盘的最后一个预写式日志的时间线编号,这个域的初始值是 WAL 接收器启动时使用的第一个日志所在的时间线编号 ____________________________________________________________________________--> - PostgreSQL是可扩展的,因为它的操作是目录驱动的。如果你熟悉标准的关系型数据库系统,你会知道它们把有关数据库、表、列等的信息存储在总所周知的系统目录中(某些系统称之为数据目录)。目录对于用户来说好像其他的表一样,但是DBMS把自己的内部信息记录在其中。PostgreSQL和标准关系型数据库系统的一个关键不同是PostgreSQL在其目录中存储更多信息:不只是有关表和列的信息,还有关于数据类型、函数、访问方法等等的信息。这些表可以被用户修改,并且因为PostgreSQL的操作是基于这些表的,所以PostgreSQL可以被用户扩展。通过比较,传统数据库系统只能通过在源代码中改变硬编码的过程或者载入由DBMS提供者特殊编写的模块进行扩展。 + PostgreSQL是可扩展的,因为它的操作是目录驱动的。如果你熟悉标准的关系型数据库系统,你会知道它们把有关数据库、表、列等的信息存储在众所周知的系统目录中(某些系统称之为数据目录)。目录对于用户来说好像其他的表一样,但是DBMS把自己的内部信息记录在其中。PostgreSQL和标准关系型数据库系统的一个关键不同是PostgreSQL在其目录中存储更多信息:不只是有关表和列的信息,还有关于数据类型、函数、访问方法等等的信息。这些表可以被用户修改,并且因为PostgreSQL的操作是基于这些表的,所以PostgreSQL可以被用户扩展。通过比较,传统数据库系统只能通过在源代码中改变硬编码的过程或者载入由DBMS提供者特殊编写的模块进行扩展。 数字(整数和浮点): 数字参数可以规定为惯用的整数和浮点格式;如果参数为整数类型,则小数值四舍五入到最接近的整数。 证书参数还接受十六进制输入(以0x开头)和十进制输入(以0开头),但是这些格式不能有小数。 - 不能使用千位分隔符。引号是不是必需的,除了十六进制输入。 + 不能使用千位分隔符。引号不是必需的,除了十六进制输入。 From 78203968fd252ab73deffaf4320783dd574ea0ab Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Wed, 7 Sep 2022 23:30:18 +0800 Subject: [PATCH 20/34] fix typo of queries --- postgresql/doc/src/sgml/queries.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/doc/src/sgml/queries.sgml b/postgresql/doc/src/sgml/queries.sgml index bb8c57bc..a7188eb8 100644 --- a/postgresql/doc/src/sgml/queries.sgml +++ b/postgresql/doc/src/sgml/queries.sgml @@ -3570,7 +3570,7 @@ ____________________________________________________________________________--> RECURSIVE in common table expressions - 可选的RECURSIVE修饰符将WITH从单纯的句法便利变成了一种在标准SQL中不能完成的特性。通过使用RECURSIVE,一个WITH查询可以引用它自己的输出。一个非常简单的例子是计算从1到100的整数合的查询: + 可选的RECURSIVE修饰符将WITH从单纯的句法便利变成了一种在标准SQL中不能完成的特性。通过使用RECURSIVE,一个WITH查询可以引用它自己的输出。一个非常简单的例子是计算从1到100的整数和的查询: WITH RECURSIVE t(n) AS ( @@ -3776,7 +3776,7 @@ WITH RECURSIVE search_graph(id, link, data, depth) AS ( SELECT * FROM search_graph; - 如果link关系包含环,这个查询将会循环。因为我们要求一个depth输出,仅仅将UNION ALL 改为UNION不会消除循环。反过来在我们顺着一个特定链接路径搜索时,我们需要识别我们是否再次到达了一个相同的行。我们可以项这个有循环倾向的查询增加两个列pathcycle: + 如果link关系包含环,这个查询将会循环。因为我们要求一个depth输出,仅仅将UNION ALL 改为UNION不会消除循环。反过来在我们顺着一个特定链接路径搜索时,我们需要识别我们是否再次到达了一个相同的行。我们可以向这个有循环倾向的查询增加两个列pathcycle WITH RECURSIVE search_graph(id, link, data, depth, path, cycle) AS ( From 695ca0bd03d8584924908789a606b2d7293ee239 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Wed, 7 Sep 2022 23:29:50 +0800 Subject: [PATCH 21/34] fix typo ddl.sgml --- postgresql/doc/src/sgml/ddl.sgml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/postgresql/doc/src/sgml/ddl.sgml b/postgresql/doc/src/sgml/ddl.sgml index e0876d02..54b4f2f7 100644 --- a/postgresql/doc/src/sgml/ddl.sgml +++ b/postgresql/doc/src/sgml/ddl.sgml @@ -21,7 +21,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 本章包含了如何创建用来保存数据的数据库结构。在一个关系型数据库中,原始数据被存储在表中,因此本章的主要工作就是解释如何创建和修改表,以及哪些特性可以控制何种数据会被存储在表中。接着,我们讨论表如何被组织成模式,以及如何将权限分配给表。最后,我们将将简短地介绍其他一些影响数据存储的特性,例如继承、表分区、视图、函数和触发器。 + 本章包含了如何创建用来保存数据的数据库结构。在一个关系型数据库中,原始数据被存储在表中,因此本章的主要工作就是解释如何创建和修改表,以及哪些特性可以控制何种数据会被存储在表中。接着,我们讨论表如何被阻止成模式,以及如何将权限分配给表。最后,我们将将简短地介绍其他一些影响数据存储的特性,例如继承、表分区、视图、函数和触发器。 @@ -1801,7 +1801,7 @@ CREATE TABLE order_items ( ____________________________________________________________________________--> - 限制删除或者级联删除是两种最常见的选项。RESTRICT阻止删除一个被引用的行。NO ACTION表示在约束被检察时如果有任何引用行存在,则会抛出一个错误,这是我们没有指定任何东西时的默认行为(这两种选择的本质不同在于NO ACTION允许检查被推迟到事务的最后,而RESTRICT则不会)。CASCADE指定当一个被引用行被删除后,引用它的行也应该被自动删除。还有其他两种选项:SET NULLSET DEFAULT。这些将导致在被引用行被删除后,引用行中的引用列被置为空值或它们的默认值。注意这些并不会是我们免于遵守任何约束。例如,如果一个动作指定了SET DEFAULT,但是默认值不满足外键约束,操作将会失败。 + 限制删除或者级联删除是两种最常见的选项。RESTRICT阻止删除一个被引用的行。NO ACTION表示在约束被检查时如果有任何引用行存在,则会抛出一个错误,这是我们没有指定任何东西时的默认行为(这两种选择的本质不同在于NO ACTION允许检查被推迟到事务的最后,而RESTRICT则不会)。CASCADE指定当一个被引用行被删除后,引用它的行也应该被自动删除。还有其他两种选项:SET NULLSET DEFAULT。这些将导致在被引用行被删除后,引用行中的引用列被置为空值或它们的默认值。注意这些并不会是我们免于遵守任何约束。例如,如果一个动作指定了SET DEFAULT,但是默认值不满足外键约束,操作将会失败。 - 没有自动的方法啊验证所有的CHECK约束之间是否互斥。编写代码来产生子表以及创建和修改相关对象比手写命令要更加安全。 + 没有自动的方法验证所有的CHECK约束之间是否互斥。编写代码来产生子表以及创建和修改相关对象比手写命令要更加安全。 @@ -8433,7 +8433,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 最重要的设计决策之一是列或者如和对数据进行分区的。 + 最重要的设计决策之一是列或者如何对数据进行分区的。 通常最佳选择是按列或列集合进行分区,这些列最常出现在分区表上执行的查询的 WHERE子句中。 WHERE子句项与分区键匹配并兼容,可用于裁剪不需要的分区。 但是,你可能会被迫根据PRIMARY KEYUNIQUE约束的要求做出其他决策。 From 6747938dfdb43727e0cda983db875a211d1ebe21 Mon Sep 17 00:00:00 2001 From: songjinzhou <49380232+TsinghuaLucky912@users.noreply.github.com> Date: Fri, 23 Dec 2022 11:10:40 +0800 Subject: [PATCH 22/34] Update do.sgml --- postgresql/doc/src/sgml/ref/do.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/ref/do.sgml b/postgresql/doc/src/sgml/ref/do.sgml index addb3807..4b2fa33d 100644 --- a/postgresql/doc/src/sgml/ref/do.sgml +++ b/postgresql/doc/src/sgml/ref/do.sgml @@ -93,7 +93,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 可选的LANGUAGE子句可以卸载代码块之前或者之后。 + 可选的LANGUAGE子句可以写在代码块之前或者之后。 From 357995b1ac95d8c7fbe36dadb05edfb1268bbbf7 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 1 Jan 2023 12:08:49 +0800 Subject: [PATCH 23/34] fix typo #376 --- postgresql/doc/src/sgml/ddl.sgml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/postgresql/doc/src/sgml/ddl.sgml b/postgresql/doc/src/sgml/ddl.sgml index 54b4f2f7..ac0454cc 100644 --- a/postgresql/doc/src/sgml/ddl.sgml +++ b/postgresql/doc/src/sgml/ddl.sgml @@ -8433,9 +8433,9 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 最重要的设计决策之一是列或者如何对数据进行分区的。 - 通常最佳选择是按列或列集合进行分区,这些列最常出现在分区表上执行的查询的 WHERE子句中。 - WHERE子句项与分区键匹配并兼容,可用于裁剪不需要的分区。 + 最重要的设计决策之一是选择对数据进行分区的列或者列的组合。 + 通常最佳选择是按最常出现在分区表上执行的查询的 WHERE子句中的列或列集合进行分区。 + 与分区键匹配并兼容的WHERE子句项可用于裁剪不需要的分区。 但是,你可能会被迫根据PRIMARY KEYUNIQUE约束的要求做出其他决策。 在规划分区策略时,删除不需要的数据也是需要考虑的一个因素。 可以相当快地分离整个分区,因此采用这样方式设计分区策略可能是有益的,既把一次删除的所有数据都放在单个分区中。 From 2b2bb83d55d31bfe6477f40456bf32effba295f2 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 1 Jan 2023 12:44:17 +0800 Subject: [PATCH 24/34] fix typo #379 --- postgresql/doc/src/sgml/extend.sgml | 2 +- postgresql/doc/src/sgml/libpq.sgml | 2 +- postgresql/doc/src/sgml/syntax.sgml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/postgresql/doc/src/sgml/extend.sgml b/postgresql/doc/src/sgml/extend.sgml index bdb0a43d..579883af 100644 --- a/postgresql/doc/src/sgml/extend.sgml +++ b/postgresql/doc/src/sgml/extend.sgml @@ -141,7 +141,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 此外,PostgreSQL服务器能够通过动态载入把用户编写的代码结合到它自身中。也就是,用户能够指定一个实现了一个新类型或函数的对象代码文件(例如一个共享库),并且PostgreSQL将按照要求载入它。把用SQL编写的代码加入到服务器会更繁琐。这种即时修改其操作的能力让PostgreSQL独特地适合新应用和存储结构的快速原型设计。 + 此外,PostgreSQL服务器能够通过动态载入把用户编写的代码结合到它自身中。也就是,用户能够指定一个实现了一个新类型或函数的对象代码文件(例如一个共享库),并且PostgreSQL将按照要求载入它。把用SQL编写的代码加入到服务器会更加轻而易举。这种即时修改其操作的能力让PostgreSQL独特地适合新应用和存储结构的快速原型设计。 diff --git a/postgresql/doc/src/sgml/libpq.sgml b/postgresql/doc/src/sgml/libpq.sgml index 07d353e4..a470ca7c 100644 --- a/postgresql/doc/src/sgml/libpq.sgml +++ b/postgresql/doc/src/sgml/libpq.sgml @@ -1108,7 +1108,7 @@ switch(PQstatus(conn)) - 在使用PQconnectPoll时,连接参数connect_timeout会被忽略:判断是否超时是应用的责任。否则,PQconnectStart后面跟着后面跟着PQconnectPoll循环等效于PQconnectdb。 + 在使用PQconnectPoll时,连接参数connect_timeout会被忽略:判断是否超时是应用的责任。否则,PQconnectStart后面跟着PQconnectPoll循环等效于PQconnectdb diff --git a/postgresql/doc/src/sgml/syntax.sgml b/postgresql/doc/src/sgml/syntax.sgml index 4f663637..d318dafe 100644 --- a/postgresql/doc/src/sgml/syntax.sgml +++ b/postgresql/doc/src/sgml/syntax.sgml @@ -472,7 +472,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 在PostgreSQL中有三种隐式类型常量:字符串、位串和数字。常量也可以被指定显示类型,这可以使得它被更精确地展示以及更有效地处理。这些选择将会在后续小节中讨论。 + 在PostgreSQL中有三种隐式类型常量:字符串、位串和数字。常量也可以被指定显式类型,这可以使得它被更精确地展示以及更有效地处理。这些选择将会在后续小节中讨论。 From 4e6f93b93238ed63ac7fa19ca7b0f4a797717ba5 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 1 Jan 2023 12:50:58 +0800 Subject: [PATCH 25/34] fix typo #382 --- postgresql/doc/src/sgml/ref/pgupgrade.sgml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/postgresql/doc/src/sgml/ref/pgupgrade.sgml b/postgresql/doc/src/sgml/ref/pgupgrade.sgml index 5f4e924a..8bfecdd0 100644 --- a/postgresql/doc/src/sgml/ref/pgupgrade.sgml +++ b/postgresql/doc/src/sgml/ref/pgupgrade.sgml @@ -100,11 +100,11 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 主 PostgreSQL 发行通常会加入新的特性,这些新特性常常会更改系统表的 + PostgreSQL主发行版本通常会加入新的特性,这些新特性常常会更改系统表的 布局,但是内部数据存储格式很少会改变。pg_upgrade 使用这一事实来通过创建新系统表并且重用旧的用户数据文件来执行快速升级。 - 如果一个未来的主发行没有把数据存储格式改得让旧数据格式不可读取,这类 - 升级就用不上pg_upgrade(社区将尝试避免这类情况)。 + 如果未来的主发行版本更改了数据存储格式,导致旧数据格式不可读,那么 + pg_upgrade将无法用于此类升级。(社区将努力避免这种情况)。 - PostgreSQL同样也提供了返回当前语句开始时间的函数, 它们会返回函数被调用时的真实当前时间。这些非 SQL 标准的函数列表如下: + PostgreSQL还提供了返回当前语句的开始时间以及 + 调用该函数时的实际当前时间的函数。这些非 SQL 标准的函数列表如下: transaction_timestamp() statement_timestamp() From 50bee8881f20018b8b41c3b82f4fe3c6af1e6033 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sun, 1 Jan 2023 13:06:32 +0800 Subject: [PATCH 27/34] fix typo #398 --- postgresql/doc/src/sgml/extend.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/extend.sgml b/postgresql/doc/src/sgml/extend.sgml index 579883af..0a0cc504 100644 --- a/postgresql/doc/src/sgml/extend.sgml +++ b/postgresql/doc/src/sgml/extend.sgml @@ -452,7 +452,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 多态参数和结果是相互关联的,并且它们在解析调用多态函数的查询时被决定到一种特定的数据类型。每一个被声明为anyelement的位置(参数或返回值)被允许具有任意特定的实际数据类型,但是在任何给定的查询中它们必须全部是相同的实际类型。每一个被声明为anyarray的位置可以有任意数组数据类型,但是相似地,它们必须全部具有相同类型。并且类似地,被声明为anyrange的位置必须是全部是相同的范围类型。此外,如果有位置被声明为anyarray并且其他位置被声明为anyelementanyarray位置中的实际数组类型必须是一个数组,该数组的元素都是出现在anyelement位置的同一种类型。相似地,如果有位置被声明为anyrange并且其他位置被声明为anyelementanyrange位置的实际范围类型必须是一个范围,该范围的子类型是出现在anyelement位置的同一种类型。anynonarray被当做和anyelement相同,但是增加了额外的约束要求实际类型不能是一种数组类型。anyenum被当做和anyelement相同,但是增加了额外的约束要求实际类型不能是一种枚举类型。 + 多态参数和结果是相互关联的,并且它们在解析调用多态函数的查询时被决定到一种特定的数据类型。每一个被声明为anyelement的位置(参数或返回值)被允许具有任意特定的实际数据类型,但是在任何给定的查询中它们必须全部是相同的实际类型。每一个被声明为anyarray的位置可以有任意数组数据类型,但是相似地,它们必须全部具有相同类型。并且类似地,被声明为anyrange的位置必须是全部是相同的范围类型。此外,如果有位置被声明为anyarray并且其他位置被声明为anyelementanyarray位置中的实际数组类型必须是一个数组,该数组的元素都是出现在anyelement位置的同一种类型。相似地,如果有位置被声明为anyrange并且其他位置被声明为anyelementanyrange位置的实际范围类型必须是一个范围,该范围的子类型是出现在anyelement位置的同一种类型。anynonarray被当做和anyelement相同,但是增加了额外的约束要求实际类型不能是一种数组类型。anyenum被当做和anyelement相同,但是增加了额外的约束要求实际类型必须是一种枚举类型。 - + From d450392e054db8faed89779c096d825b7cb8c25f Mon Sep 17 00:00:00 2001 From: Cousin-Zan <63175786+Cousin-Zan@users.noreply.github.com> Date: Sat, 28 Jan 2023 15:08:57 +0800 Subject: [PATCH 29/34] Update plpgsql.sgml --- postgresql/doc/src/sgml/plpgsql.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/plpgsql.sgml b/postgresql/doc/src/sgml/plpgsql.sgml index 6fd761ce..4d0cb832 100644 --- a/postgresql/doc/src/sgml/plpgsql.sgml +++ b/postgresql/doc/src/sgml/plpgsql.sgml @@ -2886,7 +2886,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 如果一个函数返回一个标量类型,表达式的结果将被自动转换成函数的返回类型。但是要返回一个复合(行)值,你必须写一个正好产生所需列集合的表达式。这可能需要使用显式造型。 + 如果一个函数返回一个标量类型,表达式的结果将被自动转换成函数的返回类型。但是要返回一个复合(行)值,你必须写一个正好产生所需列集合的表达式。这可能需要使用显式转换。 =E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/config.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/doc/src/sgml/config.sgml b/postgresql/doc/src/sgml/config.sgml index f0a16134..da9c8640 100644 --- a/postgresql/doc/src/sgml/config.sgml +++ b/postgresql/doc/src/sgml/config.sgml @@ -7289,7 +7289,7 @@ ____________________________________________________________________________--> - 规划器方法配制 + 规划器方法配置 ____________________________________________________________________________--> - 这个特性被设计用来由附加模块向PostgreSQL添加通常不为系统知道的参数(例如过程语言)。这允许使用标准方法配制扩展模块。 + 这个特性被设计用来由附加模块向PostgreSQL添加通常不为系统知道的参数(例如过程语言)。这允许使用标准方法配置扩展模块。 ____________________________________________________________________________--> - 用于还未写入磁盘的 WAL 数据的共享内存量。默认值 -1 选择等于的 1/32 的尺寸(大约3%),但是不小于64kB也不大于 WAL 段的尺寸(通常为)。如果自动的选择太大或太小可以手工设置该值,但是任何小于32kB的正值都将被当作32kB。 + 用于还未写入磁盘的 WAL 数据的共享内存量。默认值 -1 选择等于的 1/32 的尺寸(大约3%),但是不小于64kB也不大于 WAL 段的尺寸(通常为16MB)。如果自动的选择太大或太小可以手工设置该值,但是任何小于32kB的正值都将被当作32kB。 如果指定值时没有单位,则以WAL块作为单位,即为 XLOG_BLCKSZ 字节,通常为8kB。这个参数只能在服务器启动时设置。 From 0a23e595228ed55c75bec120b8cfad6abd527c97 Mon Sep 17 00:00:00 2001 From: chenhuajun Date: Sun, 26 Jan 2025 02:45:23 +0800 Subject: [PATCH 33/34] =?UTF-8?q?fix=20typo=20=E9=99=84=E8=A1=A8-=E3=80=8B?= =?UTF-8?q?=E7=88=B6=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgresql/doc/src/sgml/ddl.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/ddl.sgml b/postgresql/doc/src/sgml/ddl.sgml index ac0454cc..f36bec78 100644 --- a/postgresql/doc/src/sgml/ddl.sgml +++ b/postgresql/doc/src/sgml/ddl.sgml @@ -6140,7 +6140,7 @@ ____________________________________________________________________________--> ____________________________________________________________________________--> - 继承的查询仅在附表上执行访问权限检查。例如,在cities表上授予UPDATE权限也隐含着通过cities访问时在capitals表中更新行的权限。 + 继承的查询仅在父表上执行访问权限检查。例如,在cities表上授予UPDATE权限也隐含着通过cities访问时在capitals表中更新行的权限。 这保留了数据(也)在父表中的样子。但是如果没有额外的授权,则不能直接更新capitals表。 此规则的两个例外是TRUNCATELOCK TABLE,总是检查子表的权限,不管它们是直接处理还是通过在父表上执行的那些命令递归处理。 From bb3794a88e945aaa1f9c77b25f975eb6be5370b5 Mon Sep 17 00:00:00 2001 From: Chen Huajun Date: Sat, 1 Mar 2025 12:13:42 +0800 Subject: [PATCH 34/34] Update rules.sgml --- postgresql/doc/src/sgml/rules.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/doc/src/sgml/rules.sgml b/postgresql/doc/src/sgml/rules.sgml index eeaa3def..8829b15c 100644 --- a/postgresql/doc/src/sgml/rules.sgml +++ b/postgresql/doc/src/sgml/rules.sgml @@ -3775,7 +3775,7 @@ ____________________________________________________________________________--> CREATE VIEW phone_number WITH (security_barrier) AS SELECT person, phone FROM phone_data WHERE phone NOT LIKE '412%'; - Views created with the 使用security_barrier创建的视图的性能会远差于没有使用该选项的视图。通常,没有办法来避免这种现状:如果最快的候选计划可能在安全性上折衷,它就必须被拒绝。出于该原因,这个选在在默认情况下是没有启用的。 + 使用security_barrier创建的视图的性能会远差于没有使用该选项的视图。通常,没有办法来避免这种现状:如果最快的候选计划可能在安全性上折衷,它就必须被拒绝。出于该原因,这个选在在默认情况下是没有启用的。