From 272c692470f3eecdddb2afaac5c0058e53e67865 Mon Sep 17 00:00:00 2001 From: "yongjiang.qi" Date: Fri, 10 Jan 2025 09:47:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update(mogdb):=E4=BF=AE=E6=94=B95.0.10=20DD?= =?UTF-8?q?L=E6=96=87=E6=A1=A3=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logical-decoding-support-for-DDL.md | 342 +++++++++++------- 1 file changed, 206 insertions(+), 136 deletions(-) diff --git a/product/zh/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md b/product/zh/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md index 5d5795c8..46eb63e5 100644 --- a/product/zh/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md +++ b/product/zh/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md @@ -1,17 +1,17 @@ --- title: 逻辑解码支持DDL操作 summary: 逻辑解码支持DDL操作 -author: 郭欢 何文健 -date: 2024-01-29 +author: 郭欢 何文健 qiyongjiang +date: 2025-01-10 --- -# 逻辑解码支持DDL操作 +# 逻辑解码支持 DDL 操作 -自MogDB 5.0.8版本开始,逻辑复制功能新增对于DDL操作的支持,减少用户在逻辑复制过程中对表的手动维护,避免由于表结构发生变动导致逻辑复制同步过程出现异常。内核逻辑解码添加序列支持,wal2json、logical_decoding、mppdb_decoding三个解码插件完成序列解码对接。 +自 MogDB 5.0.8 版本开始,逻辑复制功能新增对于 DDL 操作的支持,减少用户在逻辑复制过程中对表的手动维护,避免由于表结构发生变动导致逻辑复制同步过程出现异常。内核逻辑解码添加序列支持,wal2json、logical_decoding、mppdb_decoding 三个解码插件完成序列解码对接。 ## 功能描述 -MogDB在逻辑解码过程中支持如下DDL(Data Definition Language,数据库模式定义语言)操作: +MogDB 在逻辑解码过程中支持如下 DDL(Data Definition Language,数据库模式定义语言)操作: - CREATE/DROP TABLE|TABLE PARTITION - CREATE/DROP INDEX @@ -19,168 +19,238 @@ MogDB在逻辑解码过程中支持如下DDL(Data Definition Language,数据 - ALTER TABLE ADD COLUMN [CONSTRAINT] - ALTER TABLE DROP COLUMN - ALTER TABLE ALTER COLUMN [TYPE|SET NOT NULL|DROP NOT NULL|SET DEFAULT|DROP DEFAULT] -- ALTER TABLE [DROP|ADD|TRUNCATE] PARTITION +- ALTER TABLE [DROP|ADD|TRUNCATE] PARTITION - ALTER TABLE MODIFY COLUMN data_type [ON UPDATE] - ALTER TABLE MODIFY COLUMN [NOT] NULL - ALTER TABLE ADD COLUMN [AFTER|FIRST] -逻辑解码支持DDL操作所需配套插件支持: + **5.0.10 版本后额外支持如下 DDL 操作:** + +- ALTER TABLE RENAME [CONSTRAINT|INDEX] +- ALTER TABLE DROP FOREIGN KEY +- ALTER TABLE ADD INDEX +- ALTER TABLE ADD CONSTRAINT [USING INDEX] +- ALTER TABLE AUTO_INCREMENT +- ALTER TABLE DROP [PRIMARY KEY|CONSTRAINT|INDEX] +- ALTER TABLE COMMENT +- ALTER TABLE SET SCHEMA +- ALTER TABLE [MODIFY|MOVE|MERGE|RENAME|RESET|EXCHANGE|SPLIT] PARTITION + + 逻辑解码支持 DDL 操作所需配套插件支持: - wal2json - mppdb_decoding - test_decoding -下面的插件中新增对逻辑解码DDL类型日志xl_logical_ddl_message的解析: +下面的插件中新增对逻辑解码 DDL 类型日志 xl_logical_ddl_message 的解析: - pg_xlogdump - mog_xlogdump ## 注意事项 -- 只支持行存表的DDL操作。 -- 不支持列存、ustore存储引擎。 +- 只支持行存表的 DDL 操作。 +- 不支持列存、ustore 存储引擎。 - 不支持临时表。 - 不支持非日志表。 - 不支持逻辑订阅。 -- 当一条语句中存在多个对象,且多个对象属于不同schema,默认按对象出现的顺序,输出其所属的schema。 -- 部分DDL操作语句由于内核实现原因,会产生一些无需关注的DML语句解析结果。 -- GUC参数[wal_level](../../../reference-guide/guc-parameters/write-ahead-log/settings.md#wal_level)需要>=logical,且开启[enable_ddl_logical_record](../../../reference-guide/guc-parameters/ha-replication/sending-server.md#enable_ddl_logical_record)。 +- 当一条语句中存在多个对象,且多个对象属于不同 schema,默认按对象出现的顺序,输出其所属的 schema。 +- 部分 DDL 操作语句由于内核实现原因,会产生一些无需关注的 DML 语句解析结果。(5.0.10 版本后不再产生) +- GUC 参数[wal_level](../../../reference-guide/guc-parameters/write-ahead-log/settings.md#wal_level)需要>=logical,且开启[enable_ddl_logical_record](../../../reference-guide/guc-parameters/ha-replication/sending-server.md#enable_ddl_logical_record)。 - wal2json 只支持`format-version==1`,不支持`format-version==2`。 ## 示例 -1. 逻辑解码功能(以wal2json为plugin) - - - 设置enable_ddl_logical_record=true,设置wal_level=logical。 - - 输入sql语句如下: - - ```sql - DROP TABLE IF EXISTS range_sales ; - SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'wal2json'); - - CREATE TABLE logical_tb2(col1 boolean[],col2 boolean); - drop table logical_tb2; - CREATE TABLE range_sales - ( - product_id INT4 NOT NULL, - customer_id INT4 PRIMARY KEY, - time_id DATE, - channel_id CHAR(1), - type_id INT4, - quantity_sold NUMERIC(3), - amount_sold NUMERIC(10,2) - ) - PARTITION BY RANGE (time_id) - ( - PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), - PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), - PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), - PARTITION time_2011 VALUES LESS THAN ('2012-01-01') - ); - CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL; - CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL; - - drop INDEX range_sales_idx1 ; - drop INDEX range_sales_idx2 ; - - drop TABLE range_sales; - SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'format-version', '1'); - SELECT 'stop' FROM pg_drop_replication_slot('regression_slot'); - ``` - - - wal2json解码结果: - - ```json - data - ------------------------------------------------------------------------------------------------- - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 54; schemaname: public; + - original DDL query:CREATE TABLE logical_tb2(col1 boolean[],col2 boolean); + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 23; schemaname: public; + - original DDL query:drop table logical_tb2; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 502; schemaname: public;+ - original DDL query:CREATE TABLE range_sales + - ( + - product_id INT4 NOT NULL, + - customer_id INT4 PRIMARY KEY, + - time_id DATE, + - channel_id CHAR(1), + - type_id INT4, + - quantity_sold NUMERIC(3), + - amount_sold NUMERIC(10,2) + - ) + - PARTITION BY RANGE (time_id) + - ( + - PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), + - PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), + - PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), + - PARTITION time_2011 VALUES LESS THAN ('2012-01-01') + - ); + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 63; schemaname: public; + - original DDL query:CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 61; schemaname: public; + - original DDL query:CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 30; schemaname: public; + - original DDL query:drop INDEX range_sales_idx1 ; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 30; schemaname: public; + - original DDL query:drop INDEX range_sales_idx2 ; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 23; schemaname: public; + - original DDL query:drop TABLE range_sales; + - ]} - (8 rows) - ``` +1. 逻辑解码功能(以 wal2json 为 plugin) + + - 设置enable_ddl_logical_record=true,设置wal_level=logical。 + + 输入 sql 语句如下: + + ```sql + DROP TABLE IF EXISTS range_sales ; + SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'wal2json'); + + CREATE TABLE logical_tb2(col1 boolean[],col2 boolean); + drop table logical_tb2; + CREATE TABLE range_sales + ( + product_id INT4 NOT NULL, + customer_id INT4 PRIMARY KEY, + time_id DATE, + channel_id CHAR(1), + type_id INT4, + quantity_sold NUMERIC(3), + amount_sold NUMERIC(10,2) + ) + PARTITION BY RANGE (time_id) + ( + PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), + PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), + PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), + PARTITION time_2011 VALUES LESS THAN ('2012-01-01') + ); + CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL; + CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL; + + drop INDEX range_sales_idx1 ; + drop INDEX range_sales_idx2 ; + + drop TABLE range_sales; + SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'format-version', '1'); + SELECT 'stop' FROM pg_drop_replication_slot('regression_slot'); + ``` + + - wal2json 解码结果: + + ```json + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 54, + "original_DDL_query": "CREATE TABLE logical_tb2(col1 boolean[],col2 boolean);" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 23, + "original_DDL_query": "DROP TABLE logical_tb2;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 630, + "original_DDL_query": "CREATE TABLE range_sales (" + + "product_id INT4 NOT NULL, " + + "customer_id INT4 PRIMARY KEY, " + + "time_id DATE, " + + "channel_id CHAR(1), " + + "type_id INT4, " + + "quantity_sold NUMERIC(3), " + + "amount_sold NUMERIC(10, 2)" + + ") PARTITION BY RANGE (time_id) (" + + "PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), " + + "PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), " + + "PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), " + + "PARTITION time_2011 VALUES LESS THAN ('2012-01-01')" + + ");" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 63, + "original_DDL_query": "CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 61, + "original_DDL_query": "CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 30, + "original_DDL_query": "DROP INDEX range_sales_idx1;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 30, + "original_DDL_query": "DROP INDEX range_sales_idx2;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 23, + "original_DDL_query": "DROP TABLE range_sales;" + } + ] + } + ``` 2. pg_xlogdump - 产生的wal对应的wal2json输出: + 产生的 wal 对应的 wal2json 输出: - ```json - data - -------------------------------------------------------------------------------------------------------------------------------------------- - {"change":[ + - DDL message: role: hewenjian; search_path: public, new_schema1, new_schema2; sz: 53; schemaname: public, new_schema1, new_schema2;+ - original DDL query:TRUNCATE TABLE range_sales,range_sales1,range_sales2; + - ]} - (1 row) - ``` + ```json + data + -------------------------------------------------------------------------------------------------------------------------------------------- + {"change":[ + + DDL message: role: hewenjian; search_path: public, new_schema1, new_schema2; sz: 53; schemaname: public, new_schema1, new_schema2;+ + original DDL query:TRUNCATE TABLE range_sales,range_sales1,range_sales2; + + ]} + (1 row) + ``` - 对应pg_xlogdump输出: + 对应 pg_xlogdump 输出: - ```json - REDO @ 0/55599A0; LSN 0/5559A80: prev 0/5559918; xid 15966; term 1; len 189; total 223; crc 4229648830; desc: LogicalDDLMessage - prefix "DDL"; role "hewenjian"; search_path "public, new_schema1, new_schema2"; schemaname "public, new_schema1, new_schema2"; payload (53 bytes): 54 52 55 4E 43 41 54 45 20 54 41 42 4C 45 20 72 61 6E 67 65 5F 73 61 6C 65 73 2C 72 61 6E 67 65 5F 73 61 6C 65 73 31 2C 72 61 6E 67 65 5F 73 61 6C 65 73 32 3B - ``` + ```json + REDO @ 0/55599A0; LSN 0/5559A80: prev 0/5559918; xid 15966; term 1; len 189; total 223; crc 4229648830; desc: LogicalDDLMessage - prefix "DDL"; role "hewenjian"; search_path "public, new_schema1, new_schema2"; schemaname "public, new_schema1, new_schema2"; payload (53 bytes): 54 52 55 4E 43 41 54 45 20 54 41 42 4C 45 20 72 61 6E 67 65 5F 73 61 6C 65 73 2C 72 61 6E 67 65 5F 73 61 6C 65 73 31 2C 72 61 6E 67 65 5F 73 61 6C 65 73 32 3B + ``` 3. mog_xlogdump - 产生的wal对应的wal2json输出: + 产生的 wal 对应的 wal2json 输出: - ```json - data - -------------------------------------------------------------------------------------------------------------------------------------------- - {"change":[ + - DDL message: role: hewenjian; search_path: public, new_schema1, new_schema2; sz: 53; schemaname: public, new_schema1, new_schema2;+ - original DDL query:TRUNCATE TABLE range_sales,range_sales1,range_sales2; + - ]} - (1 row) - ``` + ```json + data + -------------------------------------------------------------------------------------------------------------------------------------------- + {"change":[ + + DDL message: role: hewenjian; search_path: public, new_schema1, new_schema2; sz: 53; schemaname: public, new_schema1, new_schema2;+ + original DDL query:TRUNCATE TABLE range_sales,range_sales1,range_sales2; + + ]} + (1 row) + ``` - 对应mog_xlogdump输出: + 对应 mog_xlogdump 输出: - ```json - REDO @ 0/55599A0; LSN 0/5559A80: prev 0/5559918; xid 15966; term 1; len 189; total 223; crc 4229648830; desc: LogicalDDLMessage - prefix "DDL"; role "hewenjian"; search_path "public, new_schema1, new_schema2"; schemaname "public, new_schema1, new_schema2"; payload (53 bytes): 54 52 55 4E 43 41 54 45 20 54 41 42 4C 45 20 72 61 6E 67 65 5F 73 61 6C 65 73 2C 72 61 6E 67 65 5F 73 61 6C 65 73 31 2C 72 61 6E 67 65 5F 73 61 6C 65 73 32 3B - ``` \ No newline at end of file + ```json + REDO @ 0/55599A0; LSN 0/5559A80: prev 0/5559918; xid 15966; term 1; len 189; total 223; crc 4229648830; desc: LogicalDDLMessage - prefix "DDL"; role "hewenjian"; search_path "public, new_schema1, new_schema2"; schemaname "public, new_schema1, new_schema2"; payload (53 bytes): 54 52 55 4E 43 41 54 45 20 54 41 42 4C 45 20 72 61 6E 67 65 5F 73 61 6C 65 73 2C 72 61 6E 67 65 5F 73 61 6C 65 73 31 2C 72 61 6E 67 65 5F 73 61 6C 65 73 32 3B + ``` -- Gitee From 0101c69037e54ab955b88f33c9b5e4a0607b918f Mon Sep 17 00:00:00 2001 From: "yongjiang.qi" Date: Thu, 16 Jan 2025 15:05:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(mogdb):=E6=96=B0=E5=A2=9E5.0.10?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=96=87=E6=A1=A3=E8=8B=B1=E6=96=87=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1.1/about-mogdb/terms-of-use.md | 2 +- .../v2.0/about-mogdb/terms-of-use.md | 2 +- .../v2.1/about-mogdb/terms-of-use.md | 2 +- .../v3.0/about-mogdb/terms-of-use.md | 2 +- .../v3.1/about-mogdb/terms-of-use.md | 2 +- .../about-mogdb/mogdb-new-feature/5.0.10.md | 76 ++++++++ .../mogdb-new-feature/release-note.md | 5 +- .../v5.0/about-mogdb/terms-of-use.md | 2 +- .../high-performance/anonymous-sql-cache.md | 67 +++++++ .../logical-decoding-support-for-DDL.md | 177 +++++++++++++----- product/en/docs-mogdb/v5.0/toc.md | 1 + product/en/docs-mogdb/v5.0/toc_about.md | 1 + .../v6.0/about-mogdb/terms-of-use.md | 2 +- .../v1.1/about-mogdb/terms-of-use.md | 6 +- .../v2.0/about-mogdb/terms-of-use.md | 6 +- .../v2.1/about-mogdb/terms-of-use.md | 6 +- .../v3.0/about-mogdb/terms-of-use.md | 6 +- .../v3.1/about-mogdb/terms-of-use.md | 2 +- .../mogdb-new-feature/release-note.md | 4 +- .../v6.0/about-mogdb/terms-of-use.md | 2 +- 20 files changed, 296 insertions(+), 77 deletions(-) create mode 100644 product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md create mode 100644 product/en/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md diff --git a/product/en/docs-mogdb/v1.1/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v1.1/about-mogdb/terms-of-use.md index f203f0cb..02388fcc 100644 --- a/product/en/docs-mogdb/v1.1/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v1.1/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2021 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v2.0/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v2.0/about-mogdb/terms-of-use.md index 763fb9b0..d6838617 100644 --- a/product/en/docs-mogdb/v2.0/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v2.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2021 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v2.1/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v2.1/about-mogdb/terms-of-use.md index 0c803e1a..c2c215ce 100644 --- a/product/en/docs-mogdb/v2.1/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v2.1/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2022 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v3.0/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v3.0/about-mogdb/terms-of-use.md index 15a8a9c4..7e6dd135 100644 --- a/product/en/docs-mogdb/v3.0/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v3.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2022 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v3.1/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v3.1/about-mogdb/terms-of-use.md index a6c75a38..b9dbcc4b 100644 --- a/product/en/docs-mogdb/v3.1/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v3.1/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2022 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md b/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md new file mode 100644 index 00000000..3f683248 --- /dev/null +++ b/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md @@ -0,0 +1,76 @@ +--- +title: MogDB 5.0.10 +summary: MogDB 5.0.10 +author: qi yongjiang +date: 2025-01-21 +--- + +# MogDB 5.0.10 + +## 1. Version Description + +MogDB 5.0.10 is a patch version of MogDB 5.0.0, released on 2024-12-31. It adds a new feature and fixes some defects based on MogDB 5.0.9, with the following details: + +
+ +## 2. New Features + +### 2.1 Anonymous Sql Cache Support + +When users execute anonymous plan caching through libpq, calling PQprepare and PQexec anonymously multiple times to execute the same SQL will trigger multiple parsing, resulting in performance degradation. + +This feature improves the efficiency of this scenario by supporting caching of these anonymous plans to a certain extent, avoiding duplicate parsing caused by multiple user calls. + +**Related Page**: [Anonymous Sql Cache Support](../../characteristic-description/high-performance/anonymous-sql-cache.md) + +### 2.2 Compatibility Enhancement + +In the 'create table as' statement, the numerical constants in the table are set to' int 'by default in MogDB, while in Oracle, they are set to' number 'by default. MogDB has added support for converting them to' number 'through the GUC parameter' enable_int_to_numeric '. Behavior is consistent with Oracle. + +### 2.3 Copy To Logic Enhancement + +In the old version of MogDB, when copying, only the arbitrary precision value itself is output, and 0 is not automatically filled on the left side. This feature is targeted for decimal types in CSV scenarios in the copy to logic, adding relevant logic for filling 0 and+, and automatically filling 0 on the left side of arbitrary precision values. + +### 2.4 Logical Replication Supports DDL Operation Extension + +On the basis of supporting DDL operations in MogDB 5.0.8 logical replication, some DDL parsing has been added to further enhance the dual track parallel capability of MogDB and heterogeneous databases. + +**Related Page**: [Logical Decoding Support For DDL](../../developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md) + +### 2.5 Optimization Of Ustore Hotspot Update Page + +Frequent updates to hot pages can lead to a large number of historical versions and the possibility of TD chains being repeatedly reused. This version solves the problem of query latency degradation at multiple levels on frequently updated hotspot pages. + +**Related Page**: [In Place Update Storage Engine Ustore](../../performance-tuning/system-tuning/configuring-ustore.md) + +
+ +## 3. Defect Fixes + +1. [9782] Fixed an error when multiple tables have the same column in B mode and the alias and the name after 'order by' have inconsistent capitalization. + +2. [9265] Fixed the issue of gs_debackup remote backup failure. + +3. [5505] Fixed the issue where MogDB did not replay the xlog index related logs before upgrading from MogDB 3.0.x to MogDB 5.0.x and later versions, and replaying the index logs after upgrading would result in upgrade errors. + +4. [9800] Fixed the issue where modifying the return type of a custom function in A-style would result in incorrect query results for views referencing this function. + +5. [9348] Fixed the issue of VIP automatically pulled up by CM and the probability of packet loss during remote access. + +6. [6780] Fixed the issue where the behavior of the record constructor function (record_in) in handling empty string attributes was inconsistent with that of A + +7. [4884] Fixed the issue of incorrect data change records captured by wal2json after partition table exchange. + +8. [9722] Fixed an issue where there were a large number of database objects (tables) with default values in each column, and the additional memory used by the adbin_on_update field was not actively released during the database syscache cleanup process, resulting in a memory leak. + +9. [9688] Fixed the database crash issue caused by the min/max optimization triggered by the database optimizer in B mode when the SQL mode full group was closed. + +10. [9675] Fixed the issue where frequent calls to the decoding function may result in database crashes when using logic decoding and sequences. + +11. [9451] Fixed the issue where the force index did not take effect when there were too many in() conditions in the where clause of the select clause in B mode. + +12. [9673] Fixed the issue of memory expansion caused by frequent use of union all. + +13. [9823] Fixed the issue of memory accumulation when using copy from. + +14. [9794] Fixed the issue of database downtime caused by the probability of using index scan in stored procedures. diff --git a/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md b/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md index 07093663..0e6e3fbf 100644 --- a/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md +++ b/product/en/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md @@ -1,14 +1,15 @@ --- title: Release Notes summary: Release Notes -author: Guo Huan -date: 2022-09-27 +author: Qi Yongjiang +date: 2025-01-21 --- # Release Notes | Version | Release Date | Overview | | ------------------- | ------------ | ------------------------------------------------------------ | +| [5.0.10](./5.0.10.md) | 2024/12/31 | Building upon the MogDB 5.0.9, MogDB 5.0.10 fixed some bugs and added support for Anonymous Plan Cache and other features, while improving compatibility. | | [5.0.9](./5.0.9.md) | 2024/10/31 | Building upon the MogDB 5.0.8, MogDB 5.0.9 fixed some bugs and added support for statement-level PLSQL Function Cache. | | [5.0.8](./5.0.8.md) | 2024/07/31 | MogDB 5.0.8 builds upon the previous version 5.0.7 by addressing key defects and introducing new features such as sequential scan pre-fetching and SMP parallel execution for UStore. Additionally, this release has made significant enhancements in compatibility, performance, and usability. | | [5.0.7](./5.0.7.md) | 2024/05/30 | MogDB 5.0.7 fixed some defects based on MogDB 5.0.6. | diff --git a/product/en/docs-mogdb/v5.0/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v5.0/about-mogdb/terms-of-use.md index a6c75a38..b9dbcc4b 100644 --- a/product/en/docs-mogdb/v5.0/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v5.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2022 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/en/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md b/product/en/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md new file mode 100644 index 00000000..c1092fe1 --- /dev/null +++ b/product/en/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md @@ -0,0 +1,67 @@ +--- +title: Anonymous Sql Cache Support +summary: Anonymous Sql Cache Support +author: Qi Yongjiang +date: 2024-12-31 +--- + +# Anonymous Sql Cache Support + +## Availability + +This feature is available since MogDB 5.0.10. + +## Introduction + +Support caching anonymous SQL parsing information to reduce the cost of repeated parsing during database runtime. + +## Description + +When creating and executing anonymous SQL statements, the database will cache the parsed information. When creating anonymous SQL statements next time, the parsed SQL information can be directly retrieved from the database cache without the need to re parse the SQL, reducing the cost of executing SQL. The example is as follows: + +## Example + +```c +const char* stmtname=(char*)""; /* Anonymous SQL */ + +for(;;) +{ + /* Create Anonymous SQL */ + res = PQprepare(conn, + stmtname, + "SELECT * FROM t1 WHERE a1 = $1", + 1, NULL); + + ... + /* Execute Anonymous SQL */ + res = PQexecPrepared(conn, + stmtname, + 1, + NULL, + NULL, + NULL, + 0); + ... +} +``` + +In the above scenario, the program repeatedly creating anonymous SQL through the 'PQprepare' interface will cause the database to repeatedly parse the SQL, wasting performance. After introducing this feature, the database will cache the SQL parsing information after the first 'PQprepare' and reuse the parsing information from the first execution when calling 'PQprepare', reducing the cost of duplicate parsing. + +## Parameter Description + +- Added USERSET type GUC parameter 'max_detention_queries' to control the number of anonymous SQL caches within a single session, with a default value of 1. + + When 'max_detention_queries' is set to 1, the database will not cache anonymous SQL; + + When 'max_detention_queries' is greater than 1, the database will cache a specific number of anonymous SQL based on its parsing complexity and execution frequency. + + **Attention: This parameter should not be set too large. It is recommended to turn it off when there is insufficient memory. Suggest setting the number of session independent SQL statements to avoid resource waste.** + + Value range: 1 ~ INT_MAX + + Default value: 1 + +## Constraints + +1. Only applicable to anonymous SQL, has no caching effect on named SQL. (Hint: JDBC does not trigger this feature) +2. After enabling the Global Plan Cache feature, anonymous SQL caching will not be enabled. \ No newline at end of file diff --git a/product/en/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md b/product/en/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md index fc14af47..532c1be9 100644 --- a/product/en/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md +++ b/product/en/docs-mogdb/v5.0/developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md @@ -1,8 +1,8 @@ --- title: Logical Decoding Support for DDL summary: Logical Decoding Support for DDL -author: 郭欢 何文健 -date: 2024-01-29 +author: Guo Huan He Wenjian Qi Yongjiang +date: 2025-01-21 --- # Logical Decoding Support for DDL @@ -23,6 +23,18 @@ MogDB supports the following DDL (Data Definition Language, database schema defi - ALTER TABLE MODIFY COLUMN data_type [ON UPDATE] - ALTER TABLE MODIFY COLUMN [NOT] NULL - ALTER TABLE ADD COLUMN [AFTER|FIRST] + + **After version 5.0.10, the following DDL operations are additionally supported:** + +- ALTER TABLE RENAME [CONSTRAINT|INDEX] +- ALTER TABLE DROP FOREIGN KEY +- ALTER TABLE ADD INDEX +- ALTER TABLE ADD CONSTRAINT [USING INDEX] +- ALTER TABLE AUTO_INCREMENT +- ALTER TABLE DROP [PRIMARY KEY|CONSTRAINT|INDEX] +- ALTER TABLE COMMENT +- ALTER TABLE SET SCHEMA +- ALTER TABLE [MODIFY|MOVE|MERGE|RENAME|RESET|EXCHANGE|SPLIT] PARTITION The necessary plugins for logical decoding support of DDL operations are: @@ -42,7 +54,7 @@ The following plugins have added new parsing for the logical decoding DDL type l - DDL operations on temporary tables are not supported. - DDL operations on non-logged tables are not supported. - Logical subscriptions are not supported. -- When a statement contains multiple objects and the objects belong to different schemas, the output is in the order they appear, with their respective schemas. +- When a statement contains multiple objects and the objects belong to different schemas, the output is in the order they appear, with their respective schemas.(No longer produced after version 5.0.10) - Some DDL operation statements may produce some DML statement parsing results that do not need attention due to kernel implementation reasons. - The GUC parameter [wal_level](../../../reference-guide/guc-parameters/write-ahead-log/settings.md#wal_level) needs to be set to `logical` or higher, and [enable_ddl_logical_record](../../../reference-guide/guc-parameters/ha-replication/sending-server.md#enable_ddl_logical_record) must be enabled. - wal2json only supports `format-version==1` and does not support `format-version==2`. @@ -94,55 +106,116 @@ The following plugins have added new parsing for the logical decoding DDL type l ```json data ------------------------------------------------------------------------------------------------- - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 54; schemaname: public; + - original DDL query:CREATE TABLE logical_tb2(col1 boolean[],col2 boolean); + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 23; schemaname: public; + - original DDL query:drop table logical_tb2; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 502; schemaname: public;+ - original DDL query:CREATE TABLE range_sales + - ( + - product_id INT4 NOT NULL, + - customer_id INT4 PRIMARY KEY, + - time_id DATE, + - channel_id CHAR(1), + - type_id INT4, + - quantity_sold NUMERIC(3), + - amount_sold NUMERIC(10,2) + - ) + - PARTITION BY RANGE (time_id) + - ( + - PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), + - PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), + - PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), + - PARTITION time_2011 VALUES LESS THAN ('2012-01-01') + - ); + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 63; schemaname: public; + - original DDL query:CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 61; schemaname: public; + - original DDL query:CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 30; schemaname: public; + - original DDL query:drop INDEX range_sales_idx1 ; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 30; schemaname: public; + - original DDL query:drop INDEX range_sales_idx2 ; + - ]} - {"change":[ + - DDL message: role: hewenjian; search_path: "$user",public; sz: 23; schemaname: public; + - original DDL query:drop TABLE range_sales; + - ]} - (8 rows) + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 54, + "original_DDL_query": "CREATE TABLE logical_tb2(col1 boolean[],col2 boolean);" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 23, + "original_DDL_query": "DROP TABLE logical_tb2;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 630, + "original_DDL_query": "CREATE TABLE range_sales (" + + "product_id INT4 NOT NULL, " + + "customer_id INT4 PRIMARY KEY, " + + "time_id DATE, " + + "channel_id CHAR(1), " + + "type_id INT4, " + + "quantity_sold NUMERIC(3), " + + "amount_sold NUMERIC(10, 2)" + + ") PARTITION BY RANGE (time_id) (" + + "PARTITION time_2008 VALUES LESS THAN ('2009-01-01'), " + + "PARTITION time_2009 VALUES LESS THAN ('2010-01-01'), " + + "PARTITION time_2010 VALUES LESS THAN ('2011-01-01'), " + + "PARTITION time_2011 VALUES LESS THAN ('2012-01-01')" + + ");" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 63, + "original_DDL_query": "CREATE INDEX range_sales_idx1 ON range_sales(product_id) LOCAL;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 61, + "original_DDL_query": "CREATE INDEX range_sales_idx2 ON range_sales(time_id) GLOBAL;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 30, + "original_DDL_query": "DROP INDEX range_sales_idx1;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 30, + "original_DDL_query": "DROP INDEX range_sales_idx2;" + } + ] + } + { + "change": [ + { + "kind": "DDL", + "role": "hewenjian", + "search_path": ["\"$user\"", "public"], + "schema": "public", + "sz": 23, + "original_DDL_query": "DROP TABLE range_sales;" + } + ] + } + ``` 2. pg_xlogdump diff --git a/product/en/docs-mogdb/v5.0/toc.md b/product/en/docs-mogdb/v5.0/toc.md index bf74cc50..091cf03f 100644 --- a/product/en/docs-mogdb/v5.0/toc.md +++ b/product/en/docs-mogdb/v5.0/toc.md @@ -8,6 +8,7 @@ + [MogDB Introduction](/overview.md) + [Comparison Between MogDB and openGauss](/about-mogdb/MogDB-compared-to-openGauss.md) + [MogDB Release Notes](/about-mogdb/mogdb-new-feature/release-note.md) + + [MogDB 5.0.10](/about-mogdb/mogdb-new-feature/5.0.10.md) + [MogDB 5.0.9](/about-mogdb/mogdb-new-feature/5.0.9.md) + [MogDB 5.0.8](/about-mogdb/mogdb-new-feature/5.0.8.md) + [MogDB 5.0.7](/about-mogdb/mogdb-new-feature/5.0.7.md) diff --git a/product/en/docs-mogdb/v5.0/toc_about.md b/product/en/docs-mogdb/v5.0/toc_about.md index b474fd1f..7eeb7a38 100644 --- a/product/en/docs-mogdb/v5.0/toc_about.md +++ b/product/en/docs-mogdb/v5.0/toc_about.md @@ -7,6 +7,7 @@ + [MogDB Introduction](/overview.md) + [Comparison Between MogDB and openGauss](/about-mogdb/MogDB-compared-to-openGauss.md) + [MogDB Release Notes](/about-mogdb/mogdb-new-feature/release-note.md) + + [MogDB 5.0.10](/about-mogdb/mogdb-new-feature/5.0.10.md) + [MogDB 5.0.9](/about-mogdb/mogdb-new-feature/5.0.9.md) + [MogDB 5.0.8](/about-mogdb/mogdb-new-feature/5.0.8.md) + [MogDB 5.0.7](/about-mogdb/mogdb-new-feature/5.0.7.md) diff --git a/product/en/docs-mogdb/v6.0/about-mogdb/terms-of-use.md b/product/en/docs-mogdb/v6.0/about-mogdb/terms-of-use.md index a6c75a38..b9dbcc4b 100644 --- a/product/en/docs-mogdb/v6.0/about-mogdb/terms-of-use.md +++ b/product/en/docs-mogdb/v6.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # Terms of Use -**Copyright © 2009-2022 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** +**Copyright © 2009-2025 Yunhe Enmo (Beijing) Information Technology Co., Ltd. All rights reserved.** Your replication, use, modification, and distribution of this document are governed by the Creative Commons License Attribution-ShareAlike 4.0 International Public License (CC BY-SA 4.0). You can visit to view a human-readable summary of (and not a substitute for) CC BY-SA 4.0. For the complete CC BY-SA 4.0, visit . diff --git a/product/zh/docs-mogdb/v1.1/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v1.1/about-mogdb/terms-of-use.md index c44ff97b..a9550662 100644 --- a/product/zh/docs-mogdb/v1.1/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v1.1/about-mogdb/terms-of-use.md @@ -1,13 +1,13 @@ --- title: 法律声明 summary: 法律声明 -author: Guo Huan -date: 2021-06-01 +author: Qi Yongjiang +date: 2025-01-21 --- # 法律声明 -**版权所有 © 2009-2021 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 diff --git a/product/zh/docs-mogdb/v2.0/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v2.0/about-mogdb/terms-of-use.md index c44ff97b..a9550662 100644 --- a/product/zh/docs-mogdb/v2.0/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v2.0/about-mogdb/terms-of-use.md @@ -1,13 +1,13 @@ --- title: 法律声明 summary: 法律声明 -author: Guo Huan -date: 2021-06-01 +author: Qi Yongjiang +date: 2025-01-21 --- # 法律声明 -**版权所有 © 2009-2021 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 diff --git a/product/zh/docs-mogdb/v2.1/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v2.1/about-mogdb/terms-of-use.md index fc430675..a9550662 100644 --- a/product/zh/docs-mogdb/v2.1/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v2.1/about-mogdb/terms-of-use.md @@ -1,13 +1,13 @@ --- title: 法律声明 summary: 法律声明 -author: Guo Huan -date: 2021-06-01 +author: Qi Yongjiang +date: 2025-01-21 --- # 法律声明 -**版权所有 © 2009-2023 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 diff --git a/product/zh/docs-mogdb/v3.0/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v3.0/about-mogdb/terms-of-use.md index fc430675..a9550662 100644 --- a/product/zh/docs-mogdb/v3.0/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v3.0/about-mogdb/terms-of-use.md @@ -1,13 +1,13 @@ --- title: 法律声明 summary: 法律声明 -author: Guo Huan -date: 2021-06-01 +author: Qi Yongjiang +date: 2025-01-21 --- # 法律声明 -**版权所有 © 2009-2023 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 diff --git a/product/zh/docs-mogdb/v3.1/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v3.1/about-mogdb/terms-of-use.md index fc430675..e21fe349 100644 --- a/product/zh/docs-mogdb/v3.1/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v3.1/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # 法律声明 -**版权所有 © 2009-2023 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md index e09cae68..1f62eab1 100644 --- a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md @@ -1,8 +1,8 @@ --- title: 发布说明 summary: 发布说明 -author: Guo Huan -date: 2022-09-27 +author: qi yongjiang +date: 2024-12-31 --- # 发布说明 diff --git a/product/zh/docs-mogdb/v6.0/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v6.0/about-mogdb/terms-of-use.md index fc430675..e21fe349 100644 --- a/product/zh/docs-mogdb/v6.0/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v6.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # 法律声明 -**版权所有 © 2009-2023 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 -- Gitee