From 1ca84128cf9d878066e1c396e06137a505e7a19f Mon Sep 17 00:00:00 2001 From: lestertt Date: Tue, 10 Sep 2024 10:00:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8A=A0=E5=AF=86=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E3=80=81=E9=80=BB=E8=BE=91=E5=A4=8D=E5=88=B6=E6=94=AF=E6=8C=81?= =?UTF-8?q?DDL=E3=80=81=E6=B8=B8=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\350\276\221\345\244\215\345\210\266.md" | 16 ++- ...346\214\201DDL\346\223\215\344\275\234.md" | 20 +++- ...46\240\207\345\210\233\345\273\272type.md" | 108 ++++++++++++++++++ .../SQLReference/\346\270\270\346\240\207.md" | 1 + .../docs/ToolandCommandReference/gs_dump.md | 17 ++- .../ToolandCommandReference/gs_dumpall.md | 19 ++- .../ToolandCommandReference/gs_restore.md | 20 ++++ content/zh/menu/index.md | 1 + 8 files changed, 185 insertions(+), 17 deletions(-) create mode 100644 "content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" diff --git "a/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" "b/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" index 0f433d65c..f18ca1d8b 100644 --- "a/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" +++ "b/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" @@ -21,9 +21,19 @@ DN通过物理日志反解析为逻辑日志,DRS等逻辑复制工具从DN抽 - openGauss 1.0.0逻辑解码新增全量+增量抽取日志的方案。 - openGauss 1.1.0逻辑解码新增备机支持逻辑解码。 - openGauss 6.0.0-RC1逻辑复制支持如下DDL操作: - - CREATE/DROP TABLE|TABLE PARTITION - - CREATE/DROP INDEX - + - CREATE/DROP/ALTER/TRUNCATE/RENAME TABLE | TABLE PARTITION | TABLE SUBPARTITION + - CREATE/ALTER/DROP INDEX + - CREATE/ALTER/DROP VIEW + - CREATE/ALTER/DROP/REFRESH [INCREMENTAL] MATERIALIZED VIEW + - CREATE/ALTER/DROP TYPE + - CREATE/ALTER/DROP FUNCTION + - CREATE/ALTER/DROP PROCEDURE + - CREATE/ALTER/DROP TRIGGER + - CREATE/DROP PACKAGE + - CREATE/DROP SCHEMA + - CREATE/DROP SEQUENCE + - COMMENT/GRANT/REVOKE + ## 特性约束 不支持列存复制。 diff --git "a/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" "b/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" index 7d2081b74..70b75ee9d 100644 --- "a/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" +++ "b/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" @@ -4,19 +4,33 @@ openGauss在逻辑复制过程中支持如下DDL操作: -- CREATE/DROP TABLE|TABLE PARTITION -- CREATE/DROP INDEX +- CREATE/DROP/ALTER/TRUNCATE/RENAME TABLE | TABLE PARTITION | TABLE SUBPARTITION +- CREATE/ALTER/DROP INDEX +- CREATE/ALTER/DROP VIEW +- CREATE/ALTER/DROP/REFRESH [INCREMENTAL] MATERIALIZED VIEW +- CREATE/ALTER/DROP TYPE +- CREATE/ALTER/DROP FUNCTION +- CREATE/ALTER/DROP PROCEDURE +- CREATE/ALTER/DROP TRIGGER +- CREATE/DROP PACKAGE +- CREATE/DROP SCHEMA +- CREATE/DROP SEQUENCE +- COMMENT/GRANT/REVOKE ## 注意事项 - 只支持行存表的DDL操作。 +- TYPE仅支持复合类型和枚举类型。 - 不支持列存,ustore存储引擎。 - 在订阅端手动删除表会导致DDL同步失败,发布订阅阻塞。 - 不支持在对表进行相关的表结构操作中调用VOLATILE函数。 >在为表增加一个字段并指定默认值中执行了VOLATILE函数,而这个函数中进行了创建表的DDL操作,这样在新增字段并为其计算默认值的过程中会因为调用VOLATILE函数写入其他DDL日志,导致后续在解码时读取到这个DDL日志时进行了重复的操作。 - +- 在逻辑复制中使用ALTER TABLE时会有如下限制: + - 当ALTER TABLE修改表字段类型,使用USING子句设置字段值时,要求表上必须有replication identity字段,并且USING子句修改的表字段不为该标识符字段。 + - 当ALTER TABLE修改或新增表字段为AUTO_INCREMENT自增列时,要求表上必须有replication identity字段,并且USING子句修改的表字段不为该标识符字段。 + - 当ALTER TABLE新增表字段,并且表字段类型不为内置类型,即需要每个元组都重新计算其默认值,要求表上必须设置replication identity。 ## 语法格式 diff --git "a/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" "b/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" new file mode 100644 index 000000000..de511dca1 --- /dev/null +++ "b/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" @@ -0,0 +1,108 @@ +# 使用游标创建type + +## 功能描述 + +该功能用于在包package或者匿名块、存储过程、函数中使用record类型创建一个游标的type类型。 + +## 注意事项 + +- 创建的type为弱游标类型。 +- 该type类型如果作为out参数返回是游标类型。 + + +## 语法格式 + +```sql +TYPE type_name IS REF CURSOR RETURN record_name ; +``` + +## 参数说明 + +- **type_name** + + 定义的类型的名称。 +- **record_name** + + 使用数据类型说明符 RECORD 定义的用户定义类型的名称。 + + + +## 兼容性 + +暂不支持如下语法: + +```sql +TYPE type_name IS REF CURSOR + [ RETURN + { {db_table_or_view | cursor | cursor_variable}%ROWTYPE + | record%TYPE + | ref_cursor_type + } + ] ; +``` + +## 示例 + +**示例1:** 使用record类型创建一个游标的type类型。 + +1、创建测试表t。 + +```sql +create table t(id int, name varchar2(30)); +``` + +2、声明游标类型。 + +```sql +declare +type RECORD_ACCOUNT_LIST is record(id int,name varchar2(30)); +type CUR_ACCOUNT_LIST is ref cursor return RECORD_ACCOUNT_LIST; +cur_accountlist CUR_ACCOUNT_LIST; +begin +open cur_accountlist for select * from t; +end; +/ +``` + +返回结果如下,则表示创建成功: + +```sql +ANONYMOUS BLOCK EXECUTE +``` + + + +**示例2:** 弱游标类型。 + +1、创建测试表t1并插入数据。 + +```sql +create table t1(id int, name varchar2(30)); +insert into t1 values(1,'a1'); +``` + +2、定义一个弱类型游标。 + +```sql +declare +type RECORD_ACCOUNT_LIST1 IS RECORD (id int, name1 varchar2(30)); +type CUR_ACCOUNT_LIST1 is ref cursor return RECORD_ACCOUNT_LIST1; +cur_accountlist1 CUR_ACCOUNT_LIST1; +rc_list RECORD_ACCOUNT_LIST1; +begin +open cur_accountlist1 for select * from t1; +loop +fetch cur_accountlist1 into rc_list; +exit when cur_accountlist1%notfound; +dbms_output.put_line(rc_list.id||' '||rc_list.name1); +end loop; +end; +/ +``` + +返回结果如下,则表示创建成功: + +```sql +ANONYMOUS BLOCK EXECUTE +``` + diff --git "a/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" "b/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" index 88af172cb..b6c20cf15 100644 --- "a/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" +++ "b/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" @@ -1,6 +1,7 @@ # 游标 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 +支持使用游标作为插入值。 ## 语法格式 diff --git a/content/zh/docs/ToolandCommandReference/gs_dump.md b/content/zh/docs/ToolandCommandReference/gs_dump.md index d8e9fe5b7..fe97e2189 100644 --- a/content/zh/docs/ToolandCommandReference/gs_dump.md +++ b/content/zh/docs/ToolandCommandReference/gs_dump.md @@ -426,10 +426,17 @@ export PGDATABASE=postgres 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 -- --with-encryption=AES128 +- --with-encryption=AES128/SM4 指定转储数据需用AES128进行加密。 + ![](public_sys-resources/icon-note.png) **说明:** + + - 支持在使用江南天安加密机进行加密导出时指定纯文本以外的格式。即导出格式可以是目录格式(d),二进制归档格式(c),tar格式(t)或者纯文本格式(p)。 + - 该选项必须与--with-key和--with-salt同时使用。 + - AES128加密算法使用的是CBC模式,SM4加密算法使用的是CTR模式。 + - 当使用三未信安的加密算法时,必须使用--with-userpin指定创建密钥时的KMS用户信息。 + - --with-key=KEY AES128密钥长度规则如下: @@ -437,11 +444,9 @@ export PGDATABASE=postgres - 密钥长度为8~16字符。 - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 - ![](public_sys-resources/icon-note.png) **说明:** - - - 使用gs_dump工具进行加密导出时,仅支持plain格式导出。通过-F plain导出的数据,需要通过gsql工具进行导入,且如果以加密方式导入,在通过gsql导入时,需要指定--with-key参数。 - - - 不支持加密导出存储过程和函数。 + >![](public_sys-resources/icon-note.png) **说明:** + >- 使用gs_dump工具进行加密导出时,仅支持plain格式导出。通过-F plain导出的数据,需要通过gsql工具进行导入,且如果以加密方式导入,在通过gsql导入时,需要指定--with-key参数。 + >- 不支持加密导出存储过程和函数。 - --with-salt=RANDVALUES diff --git a/content/zh/docs/ToolandCommandReference/gs_dumpall.md b/content/zh/docs/ToolandCommandReference/gs_dumpall.md index f27086205..a179be49f 100644 --- a/content/zh/docs/ToolandCommandReference/gs_dumpall.md +++ b/content/zh/docs/ToolandCommandReference/gs_dumpall.md @@ -165,16 +165,25 @@ gs_dumpall [OPTION]... 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 -- --with-encryption=AES128 +- --with-encryption=AES128/SWS-KMS-SM4/TAS-KMS-SM4 - 指定转储数据需用AES128进行加密。 + 指定转储数据使用的加密方式(算法)。支持AES128/SWS-KMS-SM4/TAS-KMS-SM4。 + + >![](public_sys-resources/icon-note.png) **说明:** + > + >- 该选项必须与--with-key同时使用。 + >- 当加密方式为SWS-KMS-SM4时,必须与--with-userpin同时使用。 - --with-key=KEY - AES128密钥长度规则如下: + - AES128密钥长度规则如下: + + - 密钥长度为8~16字符。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 + + - 加密算法为TAS-KMS-SM4时,--with-key指定的是江南天安KMS上创建的密钥索引,openGauss限制其索引范围必须是1 ~ 2048。 + - 加密算法为SWS-KMS-SM4时,--with-key指定的是三未信安KMS上创建的密钥名称。 - - 密钥长度为8~16字符。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 - --include-Extension diff --git a/content/zh/docs/ToolandCommandReference/gs_restore.md b/content/zh/docs/ToolandCommandReference/gs_restore.md index ee46f5c12..dfcc4ae16 100644 --- a/content/zh/docs/ToolandCommandReference/gs_restore.md +++ b/content/zh/docs/ToolandCommandReference/gs_restore.md @@ -257,6 +257,26 @@ gs_restore [OPTION]... FILE 使用管道传输密码,禁止在终端使用。 +- --with-decryption=AES128/SM4 + + 还原数据时采用AES128或SM4硬件加密方式解密。 + 若导出时使用--with-encryption指定了加密方式,则恢复时需要指定此参数并采用同样的方式进行解密。 + + >![](public_sys-resources/icon-note.png) **说明:** + > + >该选项必须与--with-key和--with-salt同时使用。 + +- --with-key=KEY + + 硬件加密设备内部的密钥索引。 + +- --with-salt=RANDVALUES + + 用于解密的随机盐值。 + + - 必须为16个字符的字符串。 + - 恢复时指定的盐值必须与加密导出时指定的盐值相同。 + > ![](public_sys-resources/icon-notice.png) **须知:** >- 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs\_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: ``` diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 775c1ca93..839771d8f 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -1432,6 +1432,7 @@ headless: true - [使用]({{< relref "./docs/SQLReference/使用_增量物化视图.md" >}}) - [支持和约束]({{< relref "./docs/SQLReference/支持和约束-1.md" >}}) - [游标]({{< relref "./docs/SQLReference/游标.md" >}}) + - [使用游标创建type]({{< relref "./docs/SQLReference/使用游标创建type.md" >}}) - [匿名块]({{< relref "./docs/SQLReference/匿名块.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程_SQLReference.md" >}}) -- Gitee From dcf0cc9c8114a5d8976d1e0f667778e5272a8bdb Mon Sep 17 00:00:00 2001 From: lestertt Date: Tue, 10 Sep 2024 08:38:05 +0000 Subject: [PATCH 2/3] update content/zh/menu/index.md. Signed-off-by: lestertt --- content/zh/menu/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 839771d8f..30fbfc2a7 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -1432,7 +1432,7 @@ headless: true - [使用]({{< relref "./docs/SQLReference/使用_增量物化视图.md" >}}) - [支持和约束]({{< relref "./docs/SQLReference/支持和约束-1.md" >}}) - [游标]({{< relref "./docs/SQLReference/游标.md" >}}) - - [使用游标创建type]({{< relref "./docs/SQLReference/使用游标创建type.md" >}}) + - [使用游标创建type]({{< relref "./docs/SQLReference/使用游标创建type.md" >}}) - [匿名块]({{< relref "./docs/SQLReference/匿名块.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程_SQLReference.md" >}}) -- Gitee From 3b2c847db473326ae7f462476388c173be168776 Mon Sep 17 00:00:00 2001 From: lestertt Date: Fri, 20 Sep 2024 08:51:17 +0000 Subject: [PATCH 3/3] =?UTF-8?q?update=20content/zh/docs/ToolandCommandRefe?= =?UTF-8?q?rence/gs=5Fdump.md.=20=E5=88=A0=E9=99=A4=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lestertt --- content/zh/docs/ToolandCommandReference/gs_dump.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/content/zh/docs/ToolandCommandReference/gs_dump.md b/content/zh/docs/ToolandCommandReference/gs_dump.md index fe97e2189..f80affc62 100644 --- a/content/zh/docs/ToolandCommandReference/gs_dump.md +++ b/content/zh/docs/ToolandCommandReference/gs_dump.md @@ -426,17 +426,6 @@ export PGDATABASE=postgres 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 -- --with-encryption=AES128/SM4 - - 指定转储数据需用AES128进行加密。 - - ![](public_sys-resources/icon-note.png) **说明:** - - - 支持在使用江南天安加密机进行加密导出时指定纯文本以外的格式。即导出格式可以是目录格式(d),二进制归档格式(c),tar格式(t)或者纯文本格式(p)。 - - 该选项必须与--with-key和--with-salt同时使用。 - - AES128加密算法使用的是CBC模式,SM4加密算法使用的是CTR模式。 - - 当使用三未信安的加密算法时,必须使用--with-userpin指定创建密钥时的KMS用户信息。 - - --with-key=KEY AES128密钥长度规则如下: -- Gitee