diff --git a/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md b/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
index 889935687f06d4d5c79e279800ad9b929da1c93b..bdd84c086728c79bfef00c01367ac8a8c05ac282 100644
--- a/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
+++ b/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
@@ -34,7 +34,7 @@ date: 2021-04-19
| relhasindex | Boolean | Its value is **true** if this column is a table and has (or recently had) at least one index.
It is set by **CREATE INDEX** but is not immediately cleared by **DROP INDEX**. If the **VACUUM** process detects that a table has no index, it clears the **relhasindex** column and sets the value to **false**. |
| relisshared | Boolean | Its value is **true** if the table is shared across all database nodes in MogDB. Only certain system catalogs (such as **PG_DATABASE**) are shared. |
| relpersistence | "char" | - **p**: permanent table
- **u**: non-log table
- **g**: temporary table |
-| relkind | "char" | - **r**: ordinary table
- **i**: index
- **I**: GLOBAL index of a partitioned table
- **s**: sequence
- **v**: view
- **c**: composite type
- **t**: TOAST table
- **f**: foreign table |
+| relkind | "char" | - **r**: ordinary table
- **i**: index
- **I**: GLOBAL index of a partitioned table
- **s**: sequence
- **L**: large sequence
- **v**: view
- **c**: composite type
- **t**: TOAST table
- **f**: foreign table |
| relnatts | smallint | Number of user columns in the relationship (excluding system columns). **PG_ATTRIBUTE** has the same number of rows as the user columns. |
| relchecks | smallint | Number of check constraints in the table. For details, see the system catalog **PG_CONSTRAINT**. |
| relhasoids | Boolean | Its value is **true** if an OID is generated for each row of the relationship. |
diff --git a/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md b/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
index 0fbb09144fa16bf9e69fb5b2425c5456d0cd665c..ee782e4676f1ede5ba09ddd9987a24e285043519 100644
--- a/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
+++ b/product/en/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
@@ -14,7 +14,7 @@ date: 2021-04-19
| Name | Type | Description |
| :---------- | :----------------------- | :----------------------------------------------------------- |
| object_oid | oid | Object identifier |
-| object_type | "char" | Object type
- **r**: ordinary table
- **i**: index
- **s**: sequence
- **v**: view
- **p**: stored procedure and function |
+| object_type | "char" | Object type
- **r**: ordinary table
- **i**: index
- **s**: sequence
- **l**: large sequence
- **v**: view
- **p**: stored procedure and function |
| creator | oid | ID of the creator |
| ctime | timestamp with time zone | Creation time of the object |
| mtime | timestamp with time zone | Last modification time of the object. The modification operations include **ALTER**, **GRANT**, and **REVOKE**. |
diff --git a/product/en/docs-mogha/v2.0/installation-and-depolyment.md b/product/en/docs-mogha/v2.0/installation-and-deployment.md
similarity index 99%
rename from product/en/docs-mogha/v2.0/installation-and-depolyment.md
rename to product/en/docs-mogha/v2.0/installation-and-deployment.md
index f904a9e4f1907991c6c4be994376cff4f5dbbbae..a99206b44ab9a28376724697bf6591346c356e53 100644
--- a/product/en/docs-mogha/v2.0/installation-and-depolyment.md
+++ b/product/en/docs-mogha/v2.0/installation-and-deployment.md
@@ -1,6 +1,6 @@
---
-title: Installation and Depolyment
-summary: Installation and Depolyment
+title: Installation and Deployment
+summary: Installation and Deployment
author: Yao Qian
date: 2021-09-14
---
diff --git a/product/en/docs-mogha/v2.0/toc.md b/product/en/docs-mogha/v2.0/toc.md
index d3350c2c089569e5ae0df3fe062ae00ccb8713cf..56d68f46edc9b31b5e69e1f00231bca98deac7a2 100644
--- a/product/en/docs-mogha/v2.0/toc.md
+++ b/product/en/docs-mogha/v2.0/toc.md
@@ -5,7 +5,7 @@
## MogHA Documentation
+ [Overview](/overview.md)
-+ [Installation and Deployment](/installation-and-depolyment.md)
++ [Installation and Deployment](/installation-and-deployment.md)
+ [Configuration File](/configuration-file.md)
+ [FAQs](/faqs.md)
+ [Glossary](/glossary.md)
diff --git a/product/en/docs-mogha/v2.3/installation-and-depolyment.md b/product/en/docs-mogha/v2.3/installation-and-deployment.md
similarity index 99%
rename from product/en/docs-mogha/v2.3/installation-and-depolyment.md
rename to product/en/docs-mogha/v2.3/installation-and-deployment.md
index f7f8cb6b0e20fdd48725b4b38f6d5c63466c01b2..6bc544e4cef51751336c0d8f535c11fa890cb1fc 100644
--- a/product/en/docs-mogha/v2.3/installation-and-depolyment.md
+++ b/product/en/docs-mogha/v2.3/installation-and-deployment.md
@@ -1,6 +1,6 @@
---
-title: Installation and Depolyment
-summary: Installation and Depolyment
+title: Installation and Deployment
+summary: Installation and Deployment
author: Yao Qian
date: 2021-09-14
---
@@ -62,7 +62,7 @@ Copy the installation package to a server where MogHA is to be deployed. It is r
### Decompress the Installation Package
```bash
-cd /opt/omm
+cd /home/omm
tar -zxf mogha-2.x.x.tar.gz
```
diff --git a/product/en/docs-mogha/v2.3/toc.md b/product/en/docs-mogha/v2.3/toc.md
index d3350c2c089569e5ae0df3fe062ae00ccb8713cf..56d68f46edc9b31b5e69e1f00231bca98deac7a2 100644
--- a/product/en/docs-mogha/v2.3/toc.md
+++ b/product/en/docs-mogha/v2.3/toc.md
@@ -5,7 +5,7 @@
## MogHA Documentation
+ [Overview](/overview.md)
-+ [Installation and Deployment](/installation-and-depolyment.md)
++ [Installation and Deployment](/installation-and-deployment.md)
+ [Configuration File](/configuration-file.md)
+ [FAQs](/faqs.md)
+ [Glossary](/glossary.md)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/14-example-logic-replication-code.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/14-example-logic-replication-code.md
index 96c6772524e5ffae0956a3d627766fff4c7cf982..4f91937c39722ced3b852bd4ee061847cd9af1ae 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/14-example-logic-replication-code.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/14-example-logic-replication-code.md
@@ -9,9 +9,59 @@ date: 2021-04-26
下面示例演示如何通过JDBC接口使用逻辑复制功能的过程。
+针对逻辑复制的配置选项,除了在[逻辑解码](1-logical-decoding.md)中的配置选项外,还有专门给JDBC流式解码增加的配置项,如下所示:
+
+1. 解码线程并发度
+
+ 通过配置选项parallel-decode-num,指定并行解码的Decoder线程数量。其取值范围为1~20的int型,取1表示按照原有的串行逻辑进行解码,取其余值即为开启并行解码。默认值为1。当该选项配置为1时,禁止配置解码格式decode-style。
+
+2. 解码格式
+
+ 通过配置选项decode-style,指定解码格式。其取值为char型的字符'j'、't'或'b',分别代表json格式、text格式及二进制格式。默认值为'b'即二进制格式解码。该选项仅允许并行解码时设置,且二进制格式解码仅在并行解码场景下支持。
+
+> **说明:**
+> 二进制格式编码规则如下所示:
+>
+> 1. 前4字节代表接下来到语句级别分隔符字母P(不含)或者该批次结束符F(不含)的解码结果的总字节数,该值如果为0代表本批次解码结束。
+> 2. 接下来8字节uint64代表lsn。
+> 3. 接下来1字节的字母有5种B/C/I/U/D,分别代表begin/commit/insert/update/delete。
+> 4. 第3步字母为B时:
+> a. 接下来的8字节uint64代表CSN。
+> b. 接下来的8字节uint64代表commit_lsn。
+> c. 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示该事务commit时间戳长度,再后面等同于该长度的字符为时间戳字符串。
+> d. 因为之后仍可能有解码语句,接下来会有1字节字母P或F作为语句间的分隔符,P代表本批次仍有解码的语句,F代表本批次完成。
+> 5. 第3步字母为C时:
+> a. 【该部分为可选项】接下来1字节字母如果为X,则代表后面的8字节uint64表示xid。
+> b. 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示时间戳长度,再后面等同于该长度的字符为时间戳字符串。
+> c. 因为批量发送日志时,一个COMMIT日志解码之后可能仍有其他事务的解码结果,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。
+> 6. 第3步字母为I/U/D时:
+> a. 接下来的2字节uint16代表schema名的长度。
+> b. 按照上述长度读取schema名。
+> c. 接下来的2字节uint16代表table名的长度。
+> d. 按照上述长度读取table名。
+> e. 【该部分为可选项】接下来1字符字母如果为N代表为新元组,如果为O代表为旧元组,这里先发送新元组。
+> i. 接下来的2字节uint16代表该元组需要解码的列数,记为attrnum。
+> ii. 以下流程重复attrnum次。
+> 1). 接下来2字节uint16代表列名的长度。
+> 2). 按照上述长度读取列名。
+> 3). 接下来4字节uint32代表当前列类型的Oid。
+> 4). 接下来4字节uint32代表当前列的值(以字符串格式存储)的长度,如果为0xFFFFFFFF则表示NULL,如果为0则表示长度为0的字符串。
+> 5). 按照上述长度读取列值。
+> f. 因为之后仍可能有解码语句,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。
+
+1. 限制仅备机解码
+
+ 通过配置选项standby-connection,指定是否限制仅备机解码。其取值为bool型(可用0或1表示),取true(或1)代表限制仅允许连接备机解码,连接主机解码时会报错退出;取false(或0)时不做限制。默认值为false(0)。
+
+2. 批量发送
+
+ 通过配置选项batch-sending,指定是否批量发送。其取值范围为0或1的int型,取0表示逐条发送解码结果,取1表示解码结果累积到达1MB则批量发送解码结果。默认值为0。该选项仅允许并行解码时设置。开启批量发送的场景中,当解码格式为'j'或't'时,在原来的每条解码语句之前会附加一个uint32类型,表示本条解码结果长度(长度不包含当前的uint32类型),以及一个uint64类型,表示当前解码结果对应的lsn。
+
+在并行解码的标准场景下(16核CPU、内存128G、网络带宽 > 200MBps、表的列数为10-100、单行数据量0.1KB~1KB、DML操作以insert为主、不涉及落盘事务即单个事务中语句数量小于4096、parallel_decode_num为8、解码格式为'b'且开启批量发送功能),解码性能(这里以xlog消耗量为标准)不低于100MBps。为保证解码性能达标以及尽量降低对业务影响,一台备机上应尽量仅建立一个并行解码连接,保证CPU、内存、带宽资源充足。
+
```java
-//逻辑复制功能示例: 文件名,LogicalReplicationDemo.java
-//前提条件: 添加JDBC用户机器IP到数据库白名单里,在pg_hba.conf添加以下内容即可:
+//逻辑复制功能示例:文件名,LogicalReplicationDemo.java
+//前提条件:添加JDBC用户机器IP到数据库白名单里,在pg_hba.conf添加以下内容即可:
//假设JDBC用户IP为10.10.10.10
//host all all 10.10.10.10/32 sha256
//host replication all 10.10.10.10/32 sha256
@@ -29,15 +79,15 @@ import java.util.concurrent.TimeUnit;
public class LogicalReplicationDemo {
public static void main(String[] args) {
String driver = "org.postgresql.Driver";
- //此处配置数据库IP以及端口,
+ //此处配置数据库IP以及端口,这里的端口为haPort,通常默认是所连接DN的port+1端口
String sourceURL = "jdbc:postgresql://$ip:$port/postgres";
PgConnection conn = null;
- //默认逻辑复制槽的名称是: replication_slot
- //测试模式: 创建逻辑复制槽
+ //默认逻辑复制槽的名称是:replication_slot
+ //测试模式:创建逻辑复制槽
int TEST_MODE_CREATE_SLOT = 1;
- //测试模式: 开启逻辑复制(前提条件是逻辑复制槽已经存在)
+ //测试模式:开启逻辑复制(前提条件是逻辑复制槽已经存在)
int TEST_MODE_START_REPL = 2;
- //测试模式: 删除逻辑复制槽
+ //测试模式:删除逻辑复制槽
int TEST_MODE_DROP_SLOT = 3;
//开启不同的测试模式
int testMode = TEST_MODE_START_REPL;
@@ -53,7 +103,7 @@ public class LogicalReplicationDemo {
Properties properties = new Properties();
PGProperty.USER.set(properties, "user");
PGProperty.PASSWORD.set(properties, "passwd");
- //对于逻辑复制,以下三个属性是必须配置项
+ //对于逻辑复制,以下三个属性是必须配置项
PGProperty.ASSUME_MIN_SERVER_VERSION.set(properties, "9.4");
PGProperty.REPLICATION.set(properties, "database");
PGProperty.PREFER_QUERY_MODE.set(properties, "simple");
@@ -65,7 +115,7 @@ public class LogicalReplicationDemo {
.createReplicationSlot()
.logical()
.withSlotName("replication_slot")
- .withOutputPlugin("test_decoding")
+ .withOutputPlugin("mppdb_decoding")
.make();
}else if(testMode == TEST_MODE_START_REPL) {
//开启此模式前需要创建复制槽
@@ -78,6 +128,11 @@ public class LogicalReplicationDemo {
.withSlotOption("include-xids", false)
.withSlotOption("skip-empty-xacts", true)
.withStartPosition(waitLSN)
+ .withSlotOption("parallel-decode-num", 10) //解码线程并发度
+ .withSlotOption("white-table-list", "public.t1,public.t2") //白名单列表
+ .withSlotOption("standby-connection", true) //强制备机解码
+ .withSlotOption("decode-style", "t") //解码格式
+ .withSlotOption("sending-bacth", 1) //批量发送解码结果
.start();
while (true) {
ByteBuffer byteBuffer = stream.readPending();
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/8-processing-data-in-a-result-set.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/8-processing-data-in-a-result-set.md
index 7d081f1d7ddc33fcbcb16d1b313e810391891470..b578d2f0852c1322adbb8e95932903512685fa43 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/8-processing-data-in-a-result-set.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/2-development-based-on-jdbc/8-processing-data-in-a-result-set.md
@@ -37,7 +37,7 @@ prepareCall(String sql, int resultSetType, int resultSetConcurrency);
ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next方法将光标移动到下一行;因为该方法在ResultSet对象没有下一行时返回false,所以可以在while循环中使用它来迭代结果集。但对于可滚动的结果集,JDBC驱动程序提供更多的定位方法,使ResultSet指向特定的行。定位方法如[表2](#结果集中定位方法)所示。
-**表 2 **在结果集中定位的方法
+**表 2** 在结果集中定位的方法
| 方法 | 描述 |
| :------------ | :----------------------------------------------------------------------------------------------- |
@@ -72,7 +72,7 @@ ResultSet对象具有指向其当前数据行的光标。最初,光标被置
ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用的方法如[表4](#对象的常用方法)所示,其他方法请参考JDK官方文档。
-**表 4 **ResultSet对象的常用方法
+**表 4** ResultSet对象的常用方法
| 方法 | 描述 |
| :----------------------------------- | :----------------------- |
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/5-example-common-functions-and-batch-binding.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/5-example-common-functions-and-batch-binding.md
index 43acf678a6142481fb20fdfea90f204d899a4c46..baf0080408c19824f28123d4abdd51bfce9d3584 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/5-example-common-functions-and-batch-binding.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/5-example-common-functions-and-batch-binding.md
@@ -10,7 +10,7 @@ date: 2021-04-26
## 常用功能示例代码
```
-// 此示例演示如何通过ODBC方式获取openGauss中的数据。
+// 此示例演示如何通过ODBC方式获取MogDB中的数据。
// DBtest.c (compile with: libodbc.so)
#include
#include
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-1-SQLAllocEnv.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-1-SQLAllocEnv.md
index 9cae84431a73edc8688f5715636c20c8bf77e5a9..18d4d8bc529bca5cb79d7634cb5a8a27c4794490 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-1-SQLAllocEnv.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-1-SQLAllocEnv.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLAllocEnv
-在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](2-3-SQLAllocHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-10-SQLExecDirect.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-10-SQLExecDirect.md
index f0524978168fc485585da2d7771759985f55af97..ff999304f051bc1545617619d4ce7ad3f8b738ab 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-10-SQLExecDirect.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-10-SQLExecDirect.md
@@ -45,4 +45,4 @@ SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-11-SQLExecute.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-11-SQLExecute.md
index 577517d23ac423fad9643b87c959a610d744a095..e7911d8ab9b15842a224d5e4e67cca3cd8d1a885 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-11-SQLExecute.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-11-SQLExecute.md
@@ -41,4 +41,4 @@ SQLRETURN SQLExecute(SQLHSTMT StatementHandle);
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-12-SQLFetch.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-12-SQLFetch.md
index 7660632bf512c5e22d56887a32b1099575b14d4b..d1f76532b0726630a4f836af09e04826d69f05fe 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-12-SQLFetch.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-12-SQLFetch.md
@@ -40,4 +40,4 @@ SQLRETURN SQLFetch(SQLHSTMT StatementHandle);
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-13-SQLFreeStmt.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-13-SQLFreeStmt.md
index a20fe21a06a9e0de5ef1a520d6e95cea0c13d26e..423cad2b77300ed0717f9dded59262d2fcf2481a 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-13-SQLFreeStmt.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-13-SQLFreeStmt.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLFreeStmt
-在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](2-15-SQLFreeHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-14-SQLFreeConnect.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-14-SQLFreeConnect.md
index ffd51fa4cb5553ef8c9ae4cd846e5e29360955aa..9552ee226299cac1e1cdb10b0fc2aff46f2ec0e3 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-14-SQLFreeConnect.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-14-SQLFreeConnect.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLFreeConnect
-在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](2-15-SQLFreeHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-15-SQLFreeHandle.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-15-SQLFreeHandle.md
index fca4c449a665f1d9a44d92b6b31d0f9f1118158b..6a0311dfb0bed50584434241596794617219b8c9 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-15-SQLFreeHandle.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-15-SQLFreeHandle.md
@@ -40,4 +40,4 @@ SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-16-SQLFreeEnv.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-16-SQLFreeEnv.md
index 6a245776fa1ca9305c3726bea219730bbadc2166..5fef729316ff6c184ce7b314a17e7ffd55c90479 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-16-SQLFreeEnv.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-16-SQLFreeEnv.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLFreeEnv
-在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参阅SQLFreeHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](2-15-SQLFreeHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-17-SQLPrepare.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-17-SQLPrepare.md
index 03ee6a6171744e2abf674048325fc395b295491e..1295773b6a223c46ee7d29ff1b703ae9a9ce1087 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-17-SQLPrepare.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-17-SQLPrepare.md
@@ -43,4 +43,4 @@ SQLRETURN SQLPrepare(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-18-SQLGetData.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-18-SQLGetData.md
index b167531ec8d2c15e9b6f2cefaf8d2271ad839383..a325b1775a07de80ccc38edda84b30e9eee292a2 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-18-SQLGetData.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-18-SQLGetData.md
@@ -50,4 +50,4 @@ SQLRETURN SQLGetData(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-19-SQLGetDiagRec.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-19-SQLGetDiagRec.md
index f086ec4d7f05b20e5e51e8c62b778f665e9f43ad..ac8b22e1303d4a202543e06378d79d2341943ace 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-19-SQLGetDiagRec.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-19-SQLGetDiagRec.md
@@ -71,4 +71,4 @@ SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-2-SQLAllocConnect.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-2-SQLAllocConnect.md
index c95fef8c096c1872185da494010de9b86af1680a..a36264b5e56f1a13d9f4c0fd9d8068acd20d67fe 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-2-SQLAllocConnect.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-2-SQLAllocConnect.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLAllocConnect
-在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](2-3-SQLAllocHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-20-SQLSetConnectAttr.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-20-SQLSetConnectAttr.md
index 184ca27355dfdc8e53d27fbef5c78a56e2d8c2da..4b5b6fa244ba3e7abc6af87e2ece16305c5a9054 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-20-SQLSetConnectAttr.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-20-SQLSetConnectAttr.md
@@ -44,4 +44,4 @@ SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-21-SQLSetEnvAttr.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-21-SQLSetEnvAttr.md
index 669f3ea40b0c99b49af1067ce965b492f20db864..6df7c1cf8128850020c38f1ce302a614713575d2 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-21-SQLSetEnvAttr.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-21-SQLSetEnvAttr.md
@@ -44,4 +44,4 @@ SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md
index 0a9bfeb2dbf841470105ea16fdf84027b57d30b6..523fc13f463dbffb1a5e02e373ce29014f68928c 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md
@@ -44,4 +44,4 @@ SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-3-SQLAllocHandle.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-3-SQLAllocHandle.md
index c7383dac35cc5063b7e116f644ff01f76a8e179f..78a793a876dc2ba02d0e7b7926f0b307669eabfe 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-3-SQLAllocHandle.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-3-SQLAllocHandle.md
@@ -42,4 +42,4 @@ SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-4-SQLAllocStmt.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-4-SQLAllocStmt.md
index d1569ed0b5d14b830f3adc270cc71e60a68d58f6..d7d64fb68e2657632200c1aad59df34cadfcc454 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-4-SQLAllocStmt.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-4-SQLAllocStmt.md
@@ -7,4 +7,4 @@ date: 2021-05-17
# SQLAllocStmt
-在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。
+在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](2-3-SQLAllocHandle)。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-5-SQLBindCol.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-5-SQLBindCol.md
index aea568d9ca80945ce3549ff0db3bbaf0069312b1..02e567e3baa1a779d81fc07637dfebc70e61425d 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-5-SQLBindCol.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-5-SQLBindCol.md
@@ -48,4 +48,4 @@ SQLRETURN SQLBindCol(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-6-SQLBindParameter.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-6-SQLBindParameter.md
index 4ef9b9668740cbc5fb278c7109e6ef10ed66f458..e1705d4f8e0d6884ad7f796495da8f20686f9bf3 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-6-SQLBindParameter.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-6-SQLBindParameter.md
@@ -56,4 +56,4 @@ SQLRETURN SQLBindParameter(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-7-SQLColAttribute.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-7-SQLColAttribute.md
index a63134806f54e4873517dfbc76a14fad4e8780bb..18ce7c27111f58bd24c84250d603fe94d9315a41 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-7-SQLColAttribute.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-7-SQLColAttribute.md
@@ -50,4 +50,4 @@ SQLRETURN SQLColAttibute(SQLHSTMT StatementHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-8-SQLConnect.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-8-SQLConnect.md
index d30141146f9e1b17c52200667cafe9106fa1342a..b1f34240b30e25239544b87544d285c311287858 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-8-SQLConnect.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-8-SQLConnect.md
@@ -51,4 +51,4 @@ SQLRETURN SQLConnect(SQLHDBC ConnectionHandle,
## 示例
-参见:ODBC - 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-9-SQLDisconnect.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-9-SQLDisconnect.md
index 56df88142e1791887cade8ab7b30bf9321d476d8..950ede0bc26f866787f67266d64c4cad42f7f440 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-9-SQLDisconnect.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-9-SQLDisconnect.md
@@ -38,4 +38,4 @@ SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle);
## 示例
-参见:ODBC -> 示例
+参见:[示例](2-23-Examples)
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/10-PQstatus.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/10-PQstatus.md
index 25d748f8edfe89a17312a047fdbe0e5ebe54dc6c..f0f68033e13cf37790c9b46224051283f07e0773 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/10-PQstatus.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/10-PQstatus.md
@@ -61,4 +61,4 @@ CONNECTION_BAD
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/2-PQconnectdbParams.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/2-PQconnectdbParams.md
index 9dd60513d63c1c2a211db04b9d033e0abb2257c9..2e827fad1256042042796a0af4330d6332542098 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/2-PQconnectdbParams.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/2-PQconnectdbParams.md
@@ -39,4 +39,4 @@ PGconn *:指向包含链接的对象指针,内存在函数内部申请。
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/3-PQconnectdb.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/3-PQconnectdb.md
index 794a62209c8fc3be595238b5c71da5a388366f42..e81fdb6a0b5d7e23496bfcf2458b7309b9eda642 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/3-PQconnectdb.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/3-PQconnectdb.md
@@ -36,4 +36,4 @@ PGconn *:指向包含链接的对象指针,内存在函数内部申请。
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/6-PQerrorMessage.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/6-PQerrorMessage.md
index 9e83cf7d3f44f079179a5f9d4097f2e0c730248a..1ecf8831e5d612251cf6b61e47e02e4a7d3b2bb8 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/6-PQerrorMessage.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/6-PQerrorMessage.md
@@ -31,4 +31,4 @@ char类型指针。
## 示例
-参见:示例
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/7-PQsetdbLogin.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/7-PQsetdbLogin.md
index aa749776ca67f8991248cd2ee82e5ded01f137f8..196fac17f8d3c33647d6891ec8eadd9eac5ee715 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/7-PQsetdbLogin.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/7-PQsetdbLogin.md
@@ -48,4 +48,4 @@ PGconn *:指向包含链接的对象指针,内存在函数内部申请。
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/8-PQfinish.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/8-PQfinish.md
index 19afa66d8b59fea7c7a5690412c3edf31d5bc59d..3691474c1776c8de6d1dbfc56a253b03861e449e 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/8-PQfinish.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/8-PQfinish.md
@@ -31,4 +31,4 @@ void PQfinish(PGconn *conn);
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/9-PQreset.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/9-PQreset.md
index 899ede04113bb452c6dd44970b16f90628c53c91..abe83be6ffe16005b1d760270d4400481ea19c17 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/9-PQreset.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/9-PQreset.md
@@ -31,4 +31,4 @@ void PQreset(PGconn *conn);
## 示例
-请参见示例章节。
+请参见[示例](5-libpq-example)章节。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/6-connection-characters.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/6-connection-characters.md
deleted file mode 100644
index 3bb6d0fcfc6e4bfe849fea4e75f50d3ebb1e8d7f..0000000000000000000000000000000000000000
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/6-connection-characters.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: 链接字符
-summary: 链接字符
-author: Guo Huan
-date: 2021-05-17
----
-
-# 链接字符
-
-**表 1** 链接字符串
-
-| 字符串 | 描述 |
-| :------------------ | :----------------------------------------------------------- |
-| host | 要链接的主机名。如果主机名以斜杠开头,则它声明使用Unix域套接字通讯而不是TCP/IP通讯;该值就是套接字文件所存储的目录。如果没有声明host,那么默认是与位于/tmp目录(或者安装MogDB的时候声明的套接字目录)里面的Unix-域套接字链接。在没有Unix域套接字的机器上,默认与localhost链接。 |
-| hostaddr | 与之链接的主机的IP地址,是标准的IPv4地址格式,比如,172.28.40.9。如果机器支持IPv6,那么也可以使用IPv6的地址。如果声明了一个非空的字符串,那么使用TCP/IP通讯机制。
使用hostaddr取代host可以让应用避免一次主机名查找,这一点对于那些有时间约束的应用来说可能是非常重要的。不过,GSSAPI或SSPI认证方法要求主机名(host)。因此,应用下面的规则:
1. 如果声明了不带hostaddr的host那么就强制进行主机名查找。
2. 如果声明中没有host,hostaddr的值给出服务器网络地址;如果认证方法要求主机名,那么链接尝试将失败。
3. 如果同时声明了host和hostaddr,那么hostaddr的值作为服务器网络地址。host的值将被忽略,除非认证方法需要它,在这种情况下它将被用作主机名。
须知:
- 要注意如果host不是网络地址hostaddr处的服务器名,那么认证很有可能失败。
- 如果主机名(host)和主机地址都没有,那么libpq将使用一个本地的Unix域套接字进行链接;或者是在没有Unix域套接字的机器上,它将尝试与localhost链接。 |
-| port | 主机服务器的端口号,或者在Unix域套接字链接时的套接字扩展文件名。 |
-| user | 要链接的用户名,缺省是与运行该应用的用户操作系统名同名的用户。 |
-| dbname | 数据库名,缺省和用户名相同。 |
-| password | 如果服务器要求口令认证,所用的口令。 |
-| connect_timeout | 链接的最大等待时间,以秒计(用十进制整数字符串书写),0或者不声明表示无穷。不建议把链接超时的值设置得小于2秒。 |
-| client_encoding | 为这个链接设置client_encoding配置参数。除了对应的服务器选项接受的值,你可以使用auto从客户端中的当前环境中确定正确的编码(Unix系统上是LC_CTYPE环境变量)。 |
-| options | 添加命令行选项以在运行时发送到服务器。 |
-| application_name | 为application_name配置参数指定一个值,表明当前用户身份。 |
-| keepalives | 控制客户端侧的TCP保持激活是否使用。缺省值是1,意思为打开,但是如果不想要保持激活,你可以更改为0,意思为关闭。通过Unix域套接字做的链接忽略这个参数。 |
-| keepalives_idle | 在TCP应该发送一个保持激活的信息给服务器之后,控制不活动的秒数。0值表示使用系统缺省。通过Unix域套接字做的链接或者如果禁用了保持激活则忽略这个参数。 |
-| keepalives_interval | 在TCP保持激活信息没有被应该传播的服务器承认之后,控制秒数。0值表示使用系统缺省。通过Unix域套接字做的链接或者如果禁用了保持激活则忽略这个参数。 |
-| keepalives_count | 添加命令行选项以在运行时发送到服务器。例如,设置为-c comm_debug_mode=off,设置guc参数comm_debug_mode参数的会话值为off。 |
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/dependent-header-files-of-libpq.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/dependent-header-files-of-libpq.md
new file mode 100644
index 0000000000000000000000000000000000000000..5e1c560996f7ccdc05f739458ebe3dd0af2b757e
--- /dev/null
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/dependent-header-files-of-libpq.md
@@ -0,0 +1,10 @@
+---
+title: libpq使用依赖的头文件
+summary: libpq使用依赖的头文件
+author: Guo Huan
+date: 2022-04-26
+---
+
+# libpq使用依赖的头文件
+
+使用libpq的前端程序必须包括头文件libpq-fe.h并且必须与libpq库链接。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/development-process.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/development-process.md
new file mode 100644
index 0000000000000000000000000000000000000000..9250d233b7c01b78293ca100ab155fc5ac86f2ff
--- /dev/null
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/development-process.md
@@ -0,0 +1,34 @@
+---
+title: 开发流程
+summary: 开发流程
+author: Guo Huan
+date: 2022-04-26
+---
+
+# 开发流程
+
+编译并且链接一个libpq的源程序,需要做下面的一些事情:
+
+1. 解压相应的发布包(如`MogDB-3.0.0-CentOS-64bit-Libpq.tar.gz`)文件,其中include文件夹下的头文件为所需的头文件,lib文件夹中为所需的libpq库文件。
+
+ > **说明:** 除libpq-fe.h外,include文件夹下默认还存在头文件postgres_ext.h,gs_thread.h,gs_threadlocal.h,这三个头文件是libpq-fe.h的依赖文件。
+
+2. 包含libpq-fe.h头文件:
+
+ ```
+ #include
+ ```
+
+3. 通过-I directory选项,提供头文件的安装位置(有些时候编译器会查找缺省的目录,因此可以忽略这些选项)。如:
+
+ ```
+ gcc -I (头文件所在目录) -L (libpq库所在目录) testprog.c -lpq
+ ```
+
+4. 如果要使用制作文件(makefile),向CPPFLAGS、LDFLAGS、LIBS变量中增加如下选项:
+
+ ```
+ CPPFLAGS += -I (头文件所在目录)
+ LDFLAGS += -L (libpq库所在目录)
+ LIBS += -lpq
+ ```
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/5-libpq-example.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/libpq-example.md
similarity index 95%
rename from product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/5-libpq-example.md
rename to product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/libpq-example.md
index 6c877de27c88f32c8cb9e8215af7be0010627968..292e19437c5170e8c79bfd4ad06b98f8c4e90ba9 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/2-libpq/5-libpq-example.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/libpq-example.md
@@ -1,282 +1,280 @@
----
-title: 示例
-summary: 示例
-author: Guo Huan
-date: 2021-05-17
----
-
-# 示例
-
-## 常用功能示例代码
-
-示例1:
-
-```c
-/*
- * testlibpq.c
- */
-#include
-#include
-#include
-
-static void
-exit_nicely(PGconn *conn)
-{
- PQfinish(conn);
- exit(1);
-}
-
-int
-main(int argc, char **argv)
-{
- const char *conninfo;
- PGconn *conn;
- PGresult *res;
- int nFields;
- int i,j;
-
- /*
- * 用户在命令行上提供了conninfo字符串的值时使用该值
- * 否则环境变量或者所有其它连接参数
- * 都使用缺省值。
- */
- if (argc > 1)
- conninfo = argv[1];
- else
- conninfo = "dbname=postgres port=42121 host='10.44.133.171' application_name=test connect_timeout=5 sslmode=allow user='test' password='test_1234'";
-
- /* 连接数据库 */
- conn = PQconnectdb(conninfo);
-
- /* 检查后端连接成功建立 */
- if (PQstatus(conn) != CONNECTION_OK)
- {
- fprintf(stderr, "Connection to database failed: %s",
- PQerrorMessage(conn));
- exit_nicely(conn);
- }
-
- /*
- * 测试实例涉及游标的使用时候必须使用事务块
- *把全部放在一个 "select * from pg_database"
- * PQexec() 里,过于简单,不推荐使用
- */
-
- /* 开始一个事务块 */
- res = PQexec(conn, "BEGIN");
- if (PQresultStatus(res) != PGRES_COMMAND_OK)
- {
- fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
- PQclear(res);
- exit_nicely(conn);
- }
-
- /*
- * 在结果不需要的时候PQclear PGresult,以避免内存泄漏
- */
- PQclear(res);
-
- /*
- * 从系统表 pg_database(数据库的系统目录)里抓取数据
- */
- res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");
- if (PQresultStatus(res) != PGRES_COMMAND_OK)
- {
- fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
- PQclear(res);
- exit_nicely(conn);
- }
- PQclear(res);
-
- res = PQexec(conn, "FETCH ALL in myportal");
- if (PQresultStatus(res) != PGRES_TUPLES_OK)
- {
- fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
- PQclear(res);
- exit_nicely(conn);
- }
-
- /* 打印属性名称 */
- nFields = PQnfields(res);
- for (i = 0; i < nFields; i++)
- printf("%-15s", PQfname(res, i));
- printf("\n\n");
-
- /* 打印行 */
- for (i = 0; i < PQntuples(res); i++)
- {
- for (j = 0; j < nFields; j++)
- printf("%-15s", PQgetvalue(res, i, j));
- printf("\n");
- }
-
- PQclear(res);
-
- /* 关闭入口 ... 不用检查错误 ... */
- res = PQexec(conn, "CLOSE myportal");
- PQclear(res);
-
- /* 结束事务 */
- res = PQexec(conn, "END");
- PQclear(res);
-
- /* 关闭数据库连接并清理 */
- PQfinish(conn);
-
- return 0;
-}
-```
-
-
-
-示例2:
-
-```c
-/*
- * testlibpq2.c
- * 测试外联参数和二进制I/O。
- *
- * 在运行这个例子之前,用下面的命令填充一个数据库
- *
- *
- * CREATE TABLE test1 (i int4, t text);
- *
- * INSERT INTO test1 values (2, 'ho there');
- *
- * 期望的输出如下
- *
- *
- * tuple 0: got
- * i = (4 bytes) 2
- * t = (8 bytes) 'ho there'
- *
- */
-#include
-#include
-#include
-#include
-#include
-
-/* for ntohl/htonl */
-#include
-#include
-
-static void
-exit_nicely(PGconn *conn)
-{
- PQfinish(conn);
- exit(1);
-}
-
-/*
- * 这个函数打印查询结果,这些结果是二进制格式,从上面的
- * 注释里面创建的表中抓取出来的
- */
-static void
-show_binary_results(PGresult *res)
-{
- int i;
- int i_fnum,
- t_fnum;
-
- /* 使用 PQfnumber 来避免对结果中的字段顺序进行假设 */
- i_fnum = PQfnumber(res, "i");
- t_fnum = PQfnumber(res, "t");
-
- for (i = 0; i < PQntuples(res); i++)
- {
- char *iptr;
- char *tptr;
- int ival;
-
- /* 获取字段值(忽略可能为空的可能) */
- iptr = PQgetvalue(res, i, i_fnum);
- tptr = PQgetvalue(res, i, t_fnum);
-
- /*
- * INT4 的二进制表现形式是网络字节序
- * 建议转换成本地字节序
- */
- ival = ntohl(*((uint32_t *) iptr));
-
- /*
- * TEXT 的二进制表现形式是文本,因此libpq能够给它附加一个字节零
- * 把它看做 C 字符串
- *
- */
-
- printf("tuple %d: got\n", i);
- printf(" i = (%d bytes) %d\n",
- PQgetlength(res, i, i_fnum), ival);
- printf(" t = (%d bytes) '%s'\n",
- PQgetlength(res, i, t_fnum), tptr);
- printf("\n\n");
- }
-}
-
-int
-main(int argc, char **argv)
-{
- const char *conninfo;
- PGconn *conn;
- PGresult *res;
- const char *paramValues[1];
- int paramLengths[1];
- int paramFormats[1];
- uint32_t binaryIntVal;
-
- /*
- * 如果用户在命令行上提供了参数,
- * 那么使用该值为conninfo 字符串;否则
- * 使用环境变量或者缺省值。
- */
- if (argc > 1)
- conninfo = argv[1];
- else
- conninfo = "dbname=postgres port=42121 host='10.44.133.171' application_name=test connect_timeout=5 sslmode=allow user='test' password='test_1234'";
-
- /* 和数据库建立连接 */
- conn = PQconnectdb(conninfo);
-
- /* 检查与服务器的连接是否成功建立 */
- if (PQstatus(conn) != CONNECTION_OK)
- {
- fprintf(stderr, "Connection to database failed: %s",
- PQerrorMessage(conn));
- exit_nicely(conn);
- }
-
- /* 把整数值 "2" 转换成网络字节序 */
- binaryIntVal = htonl((uint32_t) 2);
-
- /* 为 PQexecParams 设置参数数组 */
- paramValues[0] = (char *) &binaryIntVal;
- paramLengths[0] = sizeof(binaryIntVal);
- paramFormats[0] = 1; /* 二进制 */
-
- res = PQexecParams(conn,
- "SELECT * FROM test1 WHERE i = $1::int4",
- 1, /* 一个参数 */
- NULL, /* 让后端推导参数类型 */
- paramValues,
- paramLengths,
- paramFormats,
- 1); /* 要求二进制结果 */
-
- if (PQresultStatus(res) != PGRES_TUPLES_OK)
- {
- fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
- PQclear(res);
- exit_nicely(conn);
- }
-
- show_binary_results(res);
-
- PQclear(res);
-
- /* 关闭与数据库的连接并清理 */
- PQfinish(conn);
-
- return 0;
-}
-```
+---
+title: 示例
+summary: 示例
+author: Guo Huan
+date: 2022-04-26
+---
+
+# 示例
+
+## 常用功能示例代码
+
+示例1:
+
+```c
+/*
+ * testlibpq.c
+ */
+#include
+#include
+#include
+
+static void
+exit_nicely(PGconn *conn)
+{
+ PQfinish(conn);
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ const char *conninfo;
+ PGconn *conn;
+ PGresult *res;
+ int nFields;
+ int i,j;
+
+ /*
+ * 用户在命令行上提供了conninfo字符串的值时使用该值
+ * 否则环境变量或者所有其它连接参数
+ * 都使用缺省值。
+ */
+ if (argc > 1)
+ conninfo = argv[1];
+ else
+ conninfo = "dbname=postgres port=42121 host='10.44.133.171' application_name=test connect_timeout=5 sslmode=allow user='test' password='test_1234'";
+
+ /* 连接数据库 */
+ conn = PQconnectdb(conninfo);
+
+ /* 检查后端连接成功建立 */
+ if (PQstatus(conn) != CONNECTION_OK)
+ {
+ fprintf(stderr, "Connection to database failed: %s",
+ PQerrorMessage(conn));
+ exit_nicely(conn);
+ }
+
+ /*
+ * 测试实例涉及游标的使用时候必须使用事务块
+ *把全部放在一个 "select * from pg_database"
+ * PQexec() 里,过于简单,不推荐使用
+ */
+
+ /* 开始一个事务块 */
+ res = PQexec(conn, "BEGIN");
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
+ PQclear(res);
+ exit_nicely(conn);
+ }
+
+ /*
+ * 在结果不需要的时候PQclear PGresult,以避免内存泄漏
+ */
+ PQclear(res);
+
+ /*
+ * 从系统表 pg_database(数据库的系统目录)里抓取数据
+ */
+ res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
+ PQclear(res);
+ exit_nicely(conn);
+ }
+ PQclear(res);
+
+ res = PQexec(conn, "FETCH ALL in myportal");
+ if (PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
+ fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
+ PQclear(res);
+ exit_nicely(conn);
+ }
+
+ /* 打印属性名称 */
+ nFields = PQnfields(res);
+ for (i = 0; i < nFields; i++)
+ printf("%-15s", PQfname(res, i));
+ printf("\n\n");
+
+ /* 打印行 */
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ for (j = 0; j < nFields; j++)
+ printf("%-15s", PQgetvalue(res, i, j));
+ printf("\n");
+ }
+
+ PQclear(res);
+
+ /* 关闭入口 ... 不用检查错误 ... */
+ res = PQexec(conn, "CLOSE myportal");
+ PQclear(res);
+
+ /* 结束事务 */
+ res = PQexec(conn, "END");
+ PQclear(res);
+
+ /* 关闭数据库连接并清理 */
+ PQfinish(conn);
+
+ return 0;
+}
+```
+
+示例2:
+
+```c
+/*
+ * testlibpq2.c
+ * 测试外联参数和二进制I/O。
+ *
+ * 在运行这个例子之前,用下面的命令填充一个数据库
+ *
+ *
+ * CREATE TABLE test1 (i int4, t text);
+ *
+ * INSERT INTO test1 values (2, 'ho there');
+ *
+ * 期望的输出如下
+ *
+ *
+ * tuple 0: got
+ * i = (4 bytes) 2
+ * t = (8 bytes) 'ho there'
+ *
+ */
+#include
+#include
+#include
+#include
+#include
+
+/* for ntohl/htonl */
+#include
+#include
+
+static void
+exit_nicely(PGconn *conn)
+{
+ PQfinish(conn);
+ exit(1);
+}
+
+/*
+ * 这个函数打印查询结果,这些结果是二进制格式,从上面的
+ * 注释里面创建的表中抓取出来的
+ */
+static void
+show_binary_results(PGresult *res)
+{
+ int i;
+ int i_fnum,
+ t_fnum;
+
+ /* 使用 PQfnumber 来避免对结果中的字段顺序进行假设 */
+ i_fnum = PQfnumber(res, "i");
+ t_fnum = PQfnumber(res, "t");
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ char *iptr;
+ char *tptr;
+ int ival;
+
+ /* 获取字段值(忽略可能为空的可能) */
+ iptr = PQgetvalue(res, i, i_fnum);
+ tptr = PQgetvalue(res, i, t_fnum);
+
+ /*
+ * INT4 的二进制表现形式是网络字节序
+ * 建议转换成本地字节序
+ */
+ ival = ntohl(*((uint32_t *) iptr));
+
+ /*
+ * TEXT 的二进制表现形式是文本,因此libpq能够给它附加一个字节零
+ * 把它看做 C 字符串
+ *
+ */
+
+ printf("tuple %d: got\n", i);
+ printf(" i = (%d bytes) %d\n",
+ PQgetlength(res, i, i_fnum), ival);
+ printf(" t = (%d bytes) '%s'\n",
+ PQgetlength(res, i, t_fnum), tptr);
+ printf("\n\n");
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ const char *conninfo;
+ PGconn *conn;
+ PGresult *res;
+ const char *paramValues[1];
+ int paramLengths[1];
+ int paramFormats[1];
+ uint32_t binaryIntVal;
+
+ /*
+ * 如果用户在命令行上提供了参数,
+ * 那么使用该值为conninfo 字符串;否则
+ * 使用环境变量或者缺省值。
+ */
+ if (argc > 1)
+ conninfo = argv[1];
+ else
+ conninfo = "dbname=postgres port=42121 host='10.44.133.171' application_name=test connect_timeout=5 sslmode=allow user='test' password='test_1234'";
+
+ /* 和数据库建立连接 */
+ conn = PQconnectdb(conninfo);
+
+ /* 检查与服务器的连接是否成功建立 */
+ if (PQstatus(conn) != CONNECTION_OK)
+ {
+ fprintf(stderr, "Connection to database failed: %s",
+ PQerrorMessage(conn));
+ exit_nicely(conn);
+ }
+
+ /* 把整数值 "2" 转换成网络字节序 */
+ binaryIntVal = htonl((uint32_t) 2);
+
+ /* 为 PQexecParams 设置参数数组 */
+ paramValues[0] = (char *) &binaryIntVal;
+ paramLengths[0] = sizeof(binaryIntVal);
+ paramFormats[0] = 1; /* 二进制 */
+
+ res = PQexecParams(conn,
+ "SELECT * FROM test1 WHERE i = $1::int4",
+ 1, /* 一个参数 */
+ NULL, /* 让后端推导参数类型 */
+ paramValues,
+ paramLengths,
+ paramFormats,
+ 1); /* 要求二进制结果 */
+
+ if (PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
+ fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
+ PQclear(res);
+ exit_nicely(conn);
+ }
+
+ show_binary_results(res);
+
+ PQclear(res);
+
+ /* 关闭与数据库的连接并清理 */
+ PQfinish(conn);
+
+ return 0;
+}
+```
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/link-parameters.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/link-parameters.md
new file mode 100644
index 0000000000000000000000000000000000000000..f545dc778004eab56bdcd20ed2c21986872e7440
--- /dev/null
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4-development-based-on-libpq/link-parameters.md
@@ -0,0 +1,52 @@
+---
+title: 链接参数
+summary: 链接参数
+author: Guo Huan
+date: 2022-04-26
+---
+
+# 链接参数
+
+**表 1** 链接参数
+
+| 参数 | 描述 |
+| :------------------------ | :----------------------------------------------------------- |
+| host | 要链接的主机名。如果主机名以斜杠开头,则它声明使用Unix域套接字通讯而不是TCP/IP通讯;该值就是套接字文件所存储的目录。如果没有声明host,那么默认是与位于/tmp目录(或者安装数据库的时候声明的套接字目录)里面的Unix-域套接字链接。在没有Unix域套接字的机器上,默认与localhost链接。
接受以‘,’分割的字符串来指定多个主机名,支持指定多个主机名。 |
+| hostaddr | 与之链接的主机的IP地址,是标准的IPv4地址格式,比如,172.28.40.9。如果机器支持IPv6,那么也可以使用IPv6的地址。如果声明了一个非空的字符串,那么使用TCP/IP通讯机制。
接受以‘,’分割的字符串来指定多个IP地址,支持指定多个IP地址。
使用hostaddr取代host可以让应用避免一次主机名查找,这一点对于那些有时间约束的应用来说可能是非常重要的。不过,GSSAPI或SSPI认证方法要求主机名(host)。因此,应用下面的规则:
1. 如果声明了不带hostaddr的host那么就强制进行主机名查找。
2. 如果声明中没有host,hostaddr的值给出服务器网络地址;如果认证方法要求主机名,那么链接尝试将失败。
3. 如果同时声明了host和hostaddr,那么hostaddr的值作为服务器网络地址。host的值将被忽略,除非认证方法需要它,在这种情况下它将被用作主机名。
须知:
- 要注意如果host不是网络地址hostaddr处的服务器名,那么认证很有可能失败。
- 如果主机名(host)和主机地址都没有,那么libpq将使用一个本地的Unix域套接字进行链接;或者是在没有Unix域套接字的机器上,它将尝试与localhost链接。 |
+| port | 主机服务器的端口号,或者在Unix域套接字链接时的套接字扩展文件名。
接受以‘,’分割的字符串来指定多个端口号,支持指定多个端口号。 |
+| user | 要链接的用户名,缺省是与运行该应用的用户操作系统名同名的用户。 |
+| dbname | 数据库名,缺省和用户名相同。 |
+| password | 如果服务器要求口令认证,所用的口令。 |
+| connect_timeout | 链接的最大等待时间,以秒计(用十进制整数字符串书写),0或者不声明表示无穷。不建议把链接超时的值设置得小于2秒。 |
+| client_encoding | 为这个链接设置client_encoding配置参数。除了对应的服务器选项接受的值,你可以使用auto从客户端中的当前环境中确定正确的编码(Unix系统上是LC_CTYPE环境变量)。 |
+| tty | 忽略(以前,该参数指定了发送服务器调试输出的位置)。 |
+| options | 添加命令行选项以在运行时发送到服务器。 |
+| application_name | 为application_name配置参数指定一个值,表明当前用户身份。 |
+| fallback_application_name | 为[application_name](http://www.postgres.cn/docs/12/runtime-config-logging.html#GUC-APPLICATION-NAME)配置参数指定一个后补值。如果通过一个连接参数或PGAPPNAME环境变量没有为application_name给定一个值,将使用这个值。在希望设置一个默认应用名但不希望它被用户覆盖的一般工具程序中指定一个后补值很有用。 |
+| keepalives | 控制客户端侧的TCP保持激活是否使用。缺省值是1,意思为打开,但是如果不想要保持激活,你可以更改为0,意思为关闭。通过Unix域套接字做的链接忽略这个参数。 |
+| keepalives_idle | 在TCP应该发送一个保持激活的信息给服务器之后,控制不活动的秒数。0值表示使用系统缺省。通过Unix域套接字做的链接或者如果禁用了保持激活则忽略这个参数。 |
+| keepalives_interval | 在TCP保持激活信息没有被应该传播的服务器承认之后,控制秒数。0值表示使用系统缺省。通过Unix域套接字做的链接或者如果禁用了保持激活则忽略这个参数。 |
+| keepalives_count | 添加命令行选项以在运行时发送到服务器。例如,设置为-c comm_debug_mode=off设置guc参数comm_debug_mode参数的会话的值为off。 |
+| rw_timeout | 设置客户端连接读写超时时间。 |
+| sslmode | 启用SSL加密的方式:
- disable:不使用SSL安全连接。
- allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
- prefer:如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。
- require:必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。
- verify-ca:必须使用SSL安全连接,当前windows odbc不支持cert方式认证。
- verify-full:必须使用SSL安全连接,当前windows odbc不支持cert方式认证。 |
+| sslcompression | 如果设置为1(默认),SSL连接之上传送的数据将被压缩(这要求OpenSSL版本为0.9.8或更高)。如果设置为0,压缩将被禁用(这要求OpenSSL版本为1.0.0或更高)。如果建立的是一个没有SSL的连接,这个参数会被忽略。如果使用的OpenSSL版本不支持该参数,它也会被忽略。压缩会占用CUP时间,但是当瓶颈为网络时可以提高吞吐量。如果CPU性能是限制因素,禁用压缩能够改进响应时间和吞吐量。 |
+| sslcert | 这个参数指定客户端SSL证书的文件名,它替换默认的~/.postgresql/postgresql.crt。如果没有建立SSL连接,这个参数会被忽略。 |
+| sslkey | 这个参数指定用于客户端证书的密钥位置。它能指定一个会被用来替代默认的~/.postgresql/postgresql.key的文件名,或者它能够指定一个从外部“引擎”(引擎是OpenSSL的可载入模块)得到的密钥。一个外部引擎说明应该由一个冒号分隔的引擎名称以及一个引擎相关的关键标识符组成。如果没有建立SSL连接,这个参数会被忽略。 |
+| sslrootcert | 这个参数指定一个包含SSL证书机构(CA)证书的文件名称。如果该文件存在,服务器的证书将被验证是由这些机构之一签发。默认值是~/.postgresql/root.crt。 |
+| sslcrl | 这个参数指定SSL证书撤销列表(CRL)的文件名。列在这个文件中的证书如果存在,在尝试认证该服务器证书时会被拒绝。默认值是~/.postgresql/root.crl。 |
+| requirepeer | 这个参数指定服务器的操作系统用户,例如requirepeer=postgres。当建立一个Unix域套接字连接时,如果设置了这个参数,客户端在连接开始时检查服务器进程是否运行在指定的用户名之下。如果发现不是,该连接会被一个错误中断。这个参数能被用来提供与TCP/IP连接上SSL证书相似的服务器认证(注意,如果Unix域套接字在/tmp或另一个公共可写的位置,任何用户能启动一个在那里侦听的服务器。使用这个参数来保证你连接的是一个由可信用户运行的服务器)。这个选项只在实现了peer认证方法的平台上受支持。 |
+| krbsrvname | 当用GSSAPI认证时,要使用的Kerberos服务名。为了让Kerberos认证成功,这必须匹配在服务器配置中指定的服务名。 |
+| gsslib | 用于GSSAPI认证的GSS库。只用在Windows上。设置为gssapi可强制libpq用GSSAPI库来代替默认的SSPI进行认证。 |
+| service | 用于附加参数的服务名。它指定保持附加连接参数的pg_service.conf中的一个服务名。这允许应用只指定一个服务名,这样连接参数能被集中维护。 |
+| authtype | 不再使用“authtype”,因此将其标记为“不显示”。我们将其保留在数组中,以免拒绝旧应用程序中的conninfo字符串,这些应用程序可能仍在尝试设置它。 |
+| remote_nodename | 指定连接本地节点的远端节点名称。 |
+| localhost | 指定在一个连接通道中的本地地址。 |
+| localport | 指定在一个连接通道中的本地端口。 |
+| fencedUdfRPCMode | 控制fenced UDF RPC协议是使用unix域套接字或特殊套接字文件名。缺省值是0,意思为关闭,使用unix domain socket模式,文件类型为“.s.PGSQL.%d”,但是要使用fenced udf ,文件类型为.s.fencedMaster_unixdomain,可以更改为1,意思为开启。 |
+| replication | 这个选项决定是否该连接应该使用复制协议而不是普通协议。这是PostgreSQL的复制连接以及pg_basebackup之类的工具在内部使用的协议,但也可以被第三方应用使用。支持下列值,大小写无关:
- true、on、yes、1:连接进入到物理复制模式。
- database:连接进入到逻辑复制模式,连接到dbname参数中指定的数据库。
- false、off、no、0:该连接是一个常规连接,这是默认行为。在物理或者逻辑复制模式中,仅能使用简单查询协议。 |
+| backend_version | 传递到远端的后端版本号。 |
+| prototype | 设置当前协议级别,默认:PROTO_TCP。 |
+| enable_ce | 控制是否允许客户端连接全密态数据库。默认0,如果需要开启,则修改为1。 |
+| connection_info | Connection_info是一个包含driver_name、driver_version、driver_path和os_user的json字符串。
如果不为NULL,使用connection_info忽略connectionExtraInf
如果为NULL,生成与libpq相关的连接信息字符串,当connectionExtraInf为false时connection_info只有driver_name和driver_version。 |
+| connectionExtraInf | 设置connection_info是否存在扩展信息,默认值为0,如果包含其他信息,则需要设置为1。 |
+| target_session_attrs | 设定连接的主机的类型。主机的类型和设定的值一致时才能连接成功。target_session_attrs的设置规则如下:
- any(默认值):可以对所有类型的主机进行连接。
- read-write:当连接的主机允许可读可写时,才进行连接。
- read-only:仅对可读的主机进行连接。
- primary:仅对主备系统中的主机能进行连接。
- standby: 仅对主备系统中的备机进行连接。
- prefer-standby:首先尝试找到一个备机进行连接。如果对hosts列表的所有机器都连接失败,那么尝试“any”模式进行连接。 |
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md
index a5ca06e12a64a78e0da4cbf46449b08e45735180..560bb616a4722b5aa734a4018649edd31dc3a03a 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md
@@ -7,7 +7,7 @@ date: 2021-10-11
# 基于Psycopg开发
-Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、GaussDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。
+Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、MogDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。
MogDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式链接。
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md
index bb52ebf568553df5baef1fe2846f6c9361057b8c..af6a2539fb5b245869187288ab91225aa2f174c5 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md
@@ -7,7 +7,9 @@ date: 2021-10-11
# Psycopg包
-从发布包中获取,包名为GaussDB-Kernel-VxxxRxxxCxx-操作系统版本号-64bit-Python.tar.gz。
+访问[openGauss下载页面](https://opengauss.org/zh/download.html)获取。
+
+
解压后有两个文件夹:
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/5-commissioning.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/5-commissioning.md
index 6c6c3555f1c3036b820ff2b814f5f51ceced21d1..93d569c02c9a0e5eb5903659395edcc450ff9ed0 100644
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/5-commissioning.md
+++ b/product/zh/docs-mogdb/v3.0/developer-guide/dev/5-commissioning.md
@@ -11,7 +11,7 @@ date: 2021-04-27
可调整的配置参数请参见[表1](#配置参数)。
-**表 1 **配置参数
+**表 1** 配置参数
| 参数名称 | 描述 | 取值范围 | 备注 |
| :--------------------------------- | :------------------------- | :---------------------------- | :---------------------------|
diff --git a/product/zh/docs-mogdb/v3.0/developer-guide/dev/6-appendix.md b/product/zh/docs-mogdb/v3.0/developer-guide/dev/6-appendix.md
deleted file mode 100644
index e3ed879a500f22ca7d126955ecc9244754466917..0000000000000000000000000000000000000000
--- a/product/zh/docs-mogdb/v3.0/developer-guide/dev/6-appendix.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: 附录
-summary: 附录
-author: Guo Huan
-date: 2021-04-27
----
-
-# 附录
-
-## **表 1** PG_STAT_ACTIVITY字段
-
-| 名称 | 类型 | 描述 |
-| :--------------- | :----------------------- | :---------------------------------------------|
-| datid | oid | 用户会话在后台连接到的数据库OID。 |
-| datname | name | 用户会话在后台连接到的数据库名称。 |
-| pid | bigint | 后台线程ID。 |
-| sessionid | bigint | 会话ID。 |
-| usesysid | oid | 登录该后台的用户OID。 |
-| usename | name | 登录该后台的用户名。 |
-| application_name | text | 连接到该后台的应用名。 |
-| client_addr | inet | 连接到该后台的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。|
-| client_hostname | text | 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 |
-| client_port | integer | 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 |
-| backend_start | timestamp with time zone | 该过程开始的时间,即当客户端连接服务器时。 |
-| xact_start | timestamp with time zone | 启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 |
-| query_start | timestamp with time zone | 开始当前活跃查询的时间, 如果state的值不是active,则这个值是上一个查询的开始时间。 |
-| state_change | timestamp with time zone | 上次状态改变的时间。 |
-| waiting | Boolean | 如果后台当前正等待锁则为true。 |
-| enqueue | text | 该字段不支持。 |
-| state | text | 该后台当前总体状态。可能值是:
- active: 后台正在执行一个查询。
- idle: 后台正在等待一个新的客户端命令。
- idle in transaction: 后台在事务中,但事务中没有语句在执行。
- idle in transaction (aborted): 后台在事务中,但事务中有语句执行失败。
- fastpath function call: 后台正在执行一个fast-path函数。
- disabled: 如果后台禁用track_activities,则报告这个状态。
说明:
普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:
*SELECT datname, usename, usesysid, state,pid FROM pg_stat_activity;*
datname | usename | usesysid | state | pid ----+---+----+---+------ postgres | omm | 10 | | 139968752121616 postgres | omm | 10 | | 139968903116560 db_tpcc | judy | 16398 | active | 139968391403280 postgres | omm | 10 | | 139968643069712 postgres | omm | 10 | | 139968680818448 postgres | joe | 16390 | | 139968563377936 (6 rows)` |
-| resource_pool | name | 用户使用的资源池。 |
-| query_id | bigint | 查询语句的ID。 |
-| query | text | 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 |
-| connection_info | text | json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见connection_info)。 |
-
-## **表 2** GS_WLM_SESSION_HISTORY的字段
-
-| 名称 | 类型 | 描述|
-| ------------------- | ------------------- | ---------------- |
-| datid | oid | 连接后端的数据库OID。 |
-| dbname | text | 连接后端的数据库名称。 |
-| schemaname | text | 模式的名称。 |
-| nodename | text | 语句执行的数据库节点名称。 |
-| username | text | 连接到后端的用户名。 |
-| application_name | text | 连接到后端的应用名。 |
-| client_addr | inet | 连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 |
-| client_hostname | text | 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 |
-| client_port | integer | 客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。 |
-| query_band | text | 用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。 |
-| block_time | bigint | 语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。|
-| start_time | timestamp with time zone | 语句执行的开始时间。 |
-| finish_time | timestamp with time zone | 语句执行的结束时间。 |
-| duration | bigint | 语句实际执行的时间,单位ms。 |
-| estimate_total_time | bigint | 语句预估执行时间,单位ms。 |
-| status | text | 语句执行结束状态: 正常为finished,异常为aborted。 |
-| abort_info | text | 语句执行结束状态为aborted时显示异常信息。 |
-| resource_pool | text | 用户使用的资源池。 |
-| control_group | text | 该字段不支持 |
-| estimate_memory | integer | 语句估算内存大小。 |
-| min_peak_memory | integer | 语句在数据库节点上的最小内存峰值,单位MB。 |
-| max_peak_memory | integer | 语句在数据库节点上的最大内存峰值,单位MB。 |
-| average_peak_memory | integer | 语句执行过程中的内存使用平均值,单位MB。 |
-| memory_skew_percent | integer | 语句数据库节点间的内存使用倾斜率。 |
-| spill_info | text | 语句在数据库节点上的下盘信息:
- None: 数据库节点均未下盘。
- All: 数据库节点均下盘。
- [a:b]: 数量为b个数据库节点中有a个数据库节点下盘。|
-| min_spill_size | integer | 若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。 |
-| max_spill_size | integer | 若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。 |
-| average_spill_size | integer | 若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。 |
-| spill_skew_percent | integer | 若发生下盘,数据库节点间下盘倾斜率。 |
-| min_dn_time | bigint | 语句在数据库节点上的最小执行时间,单位ms。 |
-| max_dn_time | bigint | 语句在数据库节点上的最大执行时间,单位ms。 |
-| average_dn_time | bigint | 语句在数据库节点上的平均执行时间,单位ms。 |
-| dntime_skew_percent | integer | 语句在数据库节点间的执行时间倾斜率。 |
-| min_cpu_time | bigint | 语句在数据库节点上的最小CPU时间,单位ms。 |
-| max_cpu_time | bigint | 语句在数据库节点上的最大CPU时间,单位ms。 |
-| total_cpu_time | bigint | 语句在数据库节点上的CPU总时间,单位ms。 |
-| cpu_skew_percent | integer | 语句在数据库节点间的CPU时间倾斜率。 |
-| min_peak_iops | integer | 语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。 |
-| max_peak_iops | integer | 语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。 |
-| average_peak_iops | integer | 语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。 |
-| iops_skew_percent | integer | 语句在数据库节点间的IO倾斜率。 |
-| warning | text | 主要显示如下几类告警信息:
- Spill file size large than 256MB
- Broadcast size large than 100MB
- Early spill
- Spill times is greater than 3
- Spill on memory adaptive
- Hash table conflict |
-| queryid | bigint | 语句执行使用的内部query id。 |
-| query | text | 执行的语句。 |
-| query_plan | text | 语句的执行计划。 |
-| node_group | text | 该字段不支持。 |
-| cpu_top1_node_name | text | 当前数据库节点名称。 |
-| cpu_top2_node_name | text | 该字段不支持。 |
-| cpu_top3_node_name | text | 该字段不支持。 |
-| cpu_top4_node_name | text | 该字段不支持。 |
-| cpu_top5_node_name | text | 该字段不支持。 |
-| mem_top1_node_name | text | 当前数据库节点名称。 |
-| mem_top2_node_name | text | 该字段不支持。 |
-| mem_top3_node_name | text | 该字段不支持。 |
-| mem_top4_node_name | text | 该字段不支持。 |
-| mem_top5_node_name | text | 该字段不支持。 |
-| cpu_top1_value | bigint | 当前数据库节点cpu使用率。 |
-| cpu_top2_value | bigint | 该字段不支持。 |
-| cpu_top3_value | bigint | 该字段不支持。 |
-| cpu_top4_value | bigint | 该字段不支持。 |
-| cpu_top5_value | bigint | 该字段不支持。 |
-| mem_top1_value | bigint | 当前数据库节点内存使用量。 |
-| mem_top2_value | bigint | 该字段不支持。 |
-| mem_top3_value | bigint | 该字段不支持。 |
-| mem_top4_value | bigint | 该字段不支持。 |
-| mem_top5_value | bigint | 该字段不支持。 |
-| top_mem_dn | text | 当前数据库节点内存使用量信息。 |
-| top_cpu_dn | text | 当前数据库节点cpu使用量信息。 |
diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md b/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
index e4336c641fd57e349a943140c8b2c774ec31206f..e71917fdd2f681ec5b040ca1c59eddd3eff68ab8 100644
--- a/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
+++ b/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_CLASS.md
@@ -34,7 +34,7 @@ PG_CLASS系统表存储数据库对象信息及其之间的关系。
| relhasindex | Boolean | 如果它是一个表而且至少有(或者最近有过)一个索引,则为真。
它是由CREATE INDEX设置的,但DROP INDEX不会立即将它清除。如果VACUUM进程检测一个表没有索引,将会把它将清理relhasindex字段,将值设置为假。 |
| relisshared | Boolean | 如果该表在MogDB中由所有数据库共享则为真。只有某些系统表(比如pg_database)是共享的。 |
| relpersistence | "char" | - p: 表示永久表。
- u: 表示非日志表。
- g: 表示临时表。 |
-| relkind | "char" | - r: 表示普通表。
- i: 表示索引。
- I: 表示分区表GLOBAL索引。
- S: 表示序列。
- v: 表示视图。
- c: 表示复合类型。
- t: 表示TOAST表。
- f: 表示外表。 |
+| relkind | "char" | - r: 表示普通表。
- i: 表示索引。
- I: 表示分区表GLOBAL索引。
- S: 表示序列。
- L: 表示Large序列。
- v: 表示视图。
- c: 表示复合类型。
- t: 表示TOAST表。
- f: 表示外表。 |
| relnatts | smallint | 关系中用户字段数目(除了系统字段以外)。在pg_attribute里肯定有相同数目对应行。 |
| relchecks | smallint | 表里的检查约束的数目;参阅pg_constraint表。 |
| relhasoids | Boolean | 如果为关系中每行都生成一个OID则为真。 |
diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md b/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
index 38a6a3901ea4f67a96ddbe749156624b03a724a3..e112a53afb56a9a902b619b10f887b37b330be91 100644
--- a/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
+++ b/product/zh/docs-mogdb/v3.0/reference-guide/system-catalogs-and-system-views/system-catalogs/PG_OBJECT.md
@@ -14,7 +14,7 @@ PG_OBJECT系统表存储限定类型对象(普通表,索引,序列,视
| 名称 | 类型 | 描述 |
| :---------- | :----------------------- | :----------------------------------------------------------- |
| object_oid | oid | 对象标识符 |
-| object_type | "char" | 对象类型:
- r 表示普通表
- i 表示索引
- s 表示序列
- v 表示视图
- p 表示存储过程和函数 |
+| object_type | "char" | 对象类型:
- r 表示普通表
- i 表示索引
- s 表示序列
- l 表示Large序列
- v 表示视图
- p 表示存储过程和函数 |
| creator | oid | 创建用户的标识符 |
| ctime | timestamp with time zone | 对象的创建时间 |
| mtime | timestamp with time zone | 对象的最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作 |
diff --git a/product/zh/docs-mogdb/v3.0/toc.md b/product/zh/docs-mogdb/v3.0/toc.md
index 3fee13a60a3b38a02f5c25389fbcb1e1419175b8..03ca9dadd7e713acdc6d7e873b823585eacd8a25 100644
--- a/product/zh/docs-mogdb/v3.0/toc.md
+++ b/product/zh/docs-mogdb/v3.0/toc.md
@@ -263,7 +263,11 @@
+ [SQLSetStmtAttr](/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md)
+ [示例](/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-23-Examples.md)
+ 基于libpq开发
- + [基于libpq开发](/developer-guide/dev/4-development-based-on-libpq/1-development-based-on-libpq.md)
+ + [概述](/developer-guide/dev/4-development-based-on-libpq/1-development-based-on-libpq.md)
+ + [libpq使用依赖的头文件](/developer-guide/dev/4-development-based-on-libpq/dependent-header-files-of-libpq.md)
+ + [开发流程](/developer-guide/dev/4-development-based-on-libpq/development-process.md)
+ + [示例](/developer-guide/dev/4-development-based-on-libpq/libpq-example.md)
+ + [链接参数](/developer-guide/dev/4-development-based-on-libpq/link-parameters.md)
+ libpq接口参考
+ 数据库连接控制函数
+ [说明](/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/1-database-connection-control-functions-overview.md)
@@ -300,8 +304,6 @@
+ [PQgetCancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/1-PQgetCancel.md)
+ [PQfreeCancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/2-PQfreeCancel.md)
+ [PQcancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/3-PQcancel.md)
- + [示例](/developer-guide/dev/4-development-based-on-libpq/2-libpq/5-libpq-example.md)
- + [链接字符](/developer-guide/dev/4-development-based-on-libpq/2-libpq/6-connection-characters.md)
+ 基于Psycopg开发
+ [基于Psycopg开发](/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md)
+ [Psycopg包](/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md)
@@ -325,7 +327,6 @@
+ [cursor.close()](/developer-guide/dev/4.1-psycopg-based-development/11-psycopg-api-reference/9-cursor-close.md)
+ [connection.close()](/developer-guide/dev/4.1-psycopg-based-development/11-psycopg-api-reference/10-connection-close.md)
+ [调试](/developer-guide/dev/5-commissioning.md)
- + [附录](/developer-guide/dev/6-appendix.md)
+ [存储过程](/developer-guide/1-1-stored-procedure.md)
+ [用户自定义函数](/developer-guide/user-defined-functions.md)
+ PL/pgSQL-SQL过程语言
diff --git a/product/zh/docs-mogdb/v3.0/toc_dev.md b/product/zh/docs-mogdb/v3.0/toc_dev.md
index 705bf07610a21c29e15ce86a9be5797cabbe5934..14b787fda4afbbed8501179bff013c09432a919d 100644
--- a/product/zh/docs-mogdb/v3.0/toc_dev.md
+++ b/product/zh/docs-mogdb/v3.0/toc_dev.md
@@ -71,7 +71,11 @@
+ [SQLSetStmtAttr](/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-22-SQLSetStmtAttr.md)
+ [示例](/developer-guide/dev/3-development-based-on-odbc/6-ODBC/2-23-Examples.md)
+ 基于libpq开发
- + [基于libpq开发](/developer-guide/dev/4-development-based-on-libpq/1-development-based-on-libpq.md)
+ + [概述](/developer-guide/dev/4-development-based-on-libpq/1-development-based-on-libpq.md)
+ + [libpq使用依赖的头文件](/developer-guide/dev/4-development-based-on-libpq/dependent-header-files-of-libpq.md)
+ + [开发流程](/developer-guide/dev/4-development-based-on-libpq/development-process.md)
+ + [示例](/developer-guide/dev/4-development-based-on-libpq/libpq-example.md)
+ + [链接参数](/developer-guide/dev/4-development-based-on-libpq/link-parameters.md)
+ libpq接口参考
+ 数据库连接控制函数
+ [说明](/developer-guide/dev/4-development-based-on-libpq/2-libpq/1-database-connection-control-functions/1-database-connection-control-functions-overview.md)
@@ -108,8 +112,6 @@
+ [PQgetCancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/1-PQgetCancel.md)
+ [PQfreeCancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/2-PQfreeCancel.md)
+ [PQcancel](/developer-guide/dev/4-development-based-on-libpq/2-libpq/4-functions-for-canceling-queries-in-progress/3-PQcancel.md)
- + [示例](/developer-guide/dev/4-development-based-on-libpq/2-libpq/5-libpq-example.md)
- + [链接字符](/developer-guide/dev/4-development-based-on-libpq/2-libpq/6-connection-characters.md)
+ 基于Psycopg开发
+ [基于Psycopg开发](/developer-guide/dev/4.1-psycopg-based-development/1-psycopg-based-development.md)
+ [Psycopg包](/developer-guide/dev/4.1-psycopg-based-development/2-psycopg-package.md)
@@ -133,7 +135,6 @@
+ [cursor.close()](/developer-guide/dev/4.1-psycopg-based-development/11-psycopg-api-reference/9-cursor-close.md)
+ [connection.close()](/developer-guide/dev/4.1-psycopg-based-development/11-psycopg-api-reference/10-connection-close.md)
+ [调试](/developer-guide/dev/5-commissioning.md)
- + [附录](/developer-guide/dev/6-appendix.md)
+ [存储过程](/developer-guide/1-1-stored-procedure.md)
+ [用户自定义函数](/developer-guide/user-defined-functions.md)
+ PL/pgSQL-SQL过程语言
diff --git a/product/zh/docs-mogha/v2.0/installation-and-depolyment.md b/product/zh/docs-mogha/v2.0/installation-and-deployment.md
similarity index 99%
rename from product/zh/docs-mogha/v2.0/installation-and-depolyment.md
rename to product/zh/docs-mogha/v2.0/installation-and-deployment.md
index 54c3ca8fde8ab099a11b84f7b6ecf30fad83a783..9f45d87a09caf5f72c7aad06511afa6a0076f3a7 100644
--- a/product/zh/docs-mogha/v2.0/installation-and-depolyment.md
+++ b/product/zh/docs-mogha/v2.0/installation-and-deployment.md
@@ -1,6 +1,6 @@
---
-title: Installation and depolyment
-summary: Installation and depolyment
+title: Installation and deployment
+summary: Installation and deployment
author: Yao Qian
date: 2021-09-14
---
diff --git a/product/zh/docs-mogha/v2.0/toc.md b/product/zh/docs-mogha/v2.0/toc.md
index f60cf20b1b723b6b29b260973dd6c4008f19ae58..1f2084289f2e965c603dcb0477975d17e89bff71 100644
--- a/product/zh/docs-mogha/v2.0/toc.md
+++ b/product/zh/docs-mogha/v2.0/toc.md
@@ -5,7 +5,7 @@
## MogHA 文档目录
+ [MogHA简介](/overview.md)
-+ [安装部署](/installation-and-depolyment.md)
++ [安装部署](/installation-and-deployment.md)
+ [配置文件](/configuration-file.md)
+ [常见问题](/faqs.md)
+ [名词表](/glossary.md)
diff --git a/product/zh/docs-mogha/v2.3/installation-and-depolyment.md b/product/zh/docs-mogha/v2.3/installation-and-deployment.md
similarity index 98%
rename from product/zh/docs-mogha/v2.3/installation-and-depolyment.md
rename to product/zh/docs-mogha/v2.3/installation-and-deployment.md
index 30cfd8dbabb36a3e399a497fac9d39545510ebd8..9b86201f06f4ea7bbac71b7b4a9d7a775c202415 100644
--- a/product/zh/docs-mogha/v2.3/installation-and-depolyment.md
+++ b/product/zh/docs-mogha/v2.3/installation-and-deployment.md
@@ -1,6 +1,6 @@
---
-title: Installation and depolyment
-summary: Installation and depolyment
+title: Installation and deployment
+summary: Installation and deployment
author: Yao Qian
date: 2021-09-14
---
@@ -55,7 +55,7 @@ MogHA 需要一个固定的端口(默认为 8081,可配置,修改配置文
### 解压缩安装包
```bash
-cd /opt/omm
+cd /home/omm
tar -zxf mogha-2.x.x.tar.gz
```
diff --git a/product/zh/docs-mogha/v2.3/toc.md b/product/zh/docs-mogha/v2.3/toc.md
index f60cf20b1b723b6b29b260973dd6c4008f19ae58..1f2084289f2e965c603dcb0477975d17e89bff71 100644
--- a/product/zh/docs-mogha/v2.3/toc.md
+++ b/product/zh/docs-mogha/v2.3/toc.md
@@ -5,7 +5,7 @@
## MogHA 文档目录
+ [MogHA简介](/overview.md)
-+ [安装部署](/installation-and-depolyment.md)
++ [安装部署](/installation-and-deployment.md)
+ [配置文件](/configuration-file.md)
+ [常见问题](/faqs.md)
+ [名词表](/glossary.md)