Compare commits

...

259 Commits

Author SHA1 Message Date
opengauss-bot 5c97f84e91
!2984 issue修复:gs_basebackup命令写入stdout执行失败修复
Merge pull request !2984 from zhangzhixian/3.0.0-basebackup-issue
2023-03-03 10:01:27 +00:00
opengauss-bot 68447494a4
!3012 修复流式容灾搭建过程中可能出现的core问题
Merge pull request !3012 from 薛蒙恩/sdr303
2023-03-03 09:47:21 +00:00
xue_meng_en 2951c00316 修复流式容灾导致的core问题 2023-03-02 14:55:58 +08:00
teooooozhang f2b1038e12 issue修复:gs_basebackup命令写入stdout执行失败修复 2023-03-02 10:04:20 +08:00
opengauss-bot e9310d2976
!2961 回合PR:https://gitee.com/opengauss/openGauss-server/pulls/2680
Merge pull request !2961 from 吴岳川/bugfix
2023-02-25 08:35:51 +00:00
wuyuechuan 7029e5f016 ignore opt field when computing hash value 2023-02-24 20:10:59 +08:00
opengauss-bot 88e9160ad0
!2809 修复使用nvarchar类型创建list分区,分区数据update,delete失败的bug
Merge pull request !2809 from Cross-罗/list_partition_bugfix
2023-01-17 01:51:23 +00:00
luozihao 404009bab0 修复 list partition的bug 2023-01-13 14:50:03 +08:00
opengauss-bot 46134f7305
!2716 修复升级过程中drop extension报错
Merge pull request !2716 from 杨皓/3.0.0-1
2022-12-30 12:31:04 +00:00
yanghao 5f6c9616a6 fix problem that hdfs_fdw cannot drop while upgrade 2022-12-30 17:43:43 +08:00
opengauss-bot f5c8dfd75b
!2710 修复升级时drop extension hdfs_fdw出错问题
Merge pull request !2710 from maxiang/3.0.0
2022-12-30 08:27:24 +00:00
maxiang fd2d247b4c
update src/gausskernel/optimizer/commands/dropcmds.cpp.
修复升级时drop extension hdfs_fdw出错问题

Signed-off-by: maxiang <maxiang9527@126.com>
2022-12-30 06:32:42 +00:00
opengauss-bot 38973b0519
!2663 修复升级hdfs_fdw创建失败问题
Merge pull request !2663 from 杨皓/3.0.0
2022-12-21 06:15:32 +00:00
yanghao a393a0988a fix problem in upgrade 2022-12-20 18:00:23 +08:00
opengauss-bot eb6f124dee
!2653 【bugfix】 修复3.0.3版本 轻量版编译报错的问题
Merge pull request !2653 from 周聪/lite_cmake_fail
2022-12-20 09:03:53 +00:00
congzhou2603 1a512ca82d 【bugfix】 修复轻量版编译报错的问题 2022-12-20 11:43:59 +08:00
opengauss-bot 8106e23629
!2626 修复2.0.0升级3.0.1版本,升级报错问题
Merge pull request !2626 from 杨皓/3.0.0
2022-12-16 03:21:51 +00:00
opengauss-bot 2142246c60
!2634 修复switchover -f不生效问题
Merge pull request !2634 from 熊小军/3.0.0
2022-12-15 01:40:47 +00:00
xiong_xjun f6cd6f650e extremely fast switchover 2022-12-14 20:05:17 +08:00
yanghao bd163157ad fix problem that upgrade rollback failed 2022-12-14 16:19:50 +08:00
opengauss-bot 6584b8ff9e
!2620 update version to 3.0.3
Merge pull request !2620 from zhangxubo/3.0.0
2022-12-13 12:57:53 +00:00
zhang_xubo 47d345bc83 update version to 3.0.3 2022-12-13 20:41:55 +08:00
opengauss-bot 3791143129
!2583 【master回合3.0.0】发布订阅支持以二进制格式发送数据和主备切换不断开
Merge pull request !2583 from 薛蒙恩/pubsub300
2022-12-13 01:22:44 +00:00
opengauss-bot 1eee74fc30
!2571 [master分支回合3.0] master分支的4个PR回合至3.0分支
Merge pull request !2571 from cchen676/ms30
2022-12-12 13:23:31 +00:00
xue_meng_en 4d1c7b1a82 修复升级后subbinary为空导致发布订阅报错问题 2022-12-12 17:42:48 +08:00
xue_meng_en 6ffadffa5c 发布订阅支持主备切换不断开 2022-12-12 17:42:23 +08:00
xue_meng_en eec3c1d634 发布订阅支持以二进制格式发送数据 2022-12-12 17:40:16 +08:00
opengauss-bot c7e3c702a2
!2586 [回合]修改 upgrade后 gs_dump、gs_restore的错误和fix pg_control_system
Merge pull request !2586 from zhengxue/3.0.0_dev
2022-12-12 06:32:17 +00:00
opengauss-bot 98fc84f790
!2545 3.0.0版本代码回合,解决issue -- 关闭质量检查点,开启全页写,无负载情况下,create database花费25秒
Merge pull request !2545 from zhaobingyu/issue1891
2022-12-12 02:33:00 +00:00
opengauss-bot d1cb9a377f
!2577 【3.0.0回合】修复从2.0.1升级到最新,回滚失败问题
Merge pull request !2577 from 周聪/rollback_fail
2022-12-12 02:24:54 +00:00
opengauss-bot a7daf5ac3e
!2549 3.0.0 回合 更新轻量版构建脚本以及最新三方库二进制文件
Merge pull request !2549 from 周聪/3.0.0_lightweight_scirpt_4.0
2022-12-12 02:24:47 +00:00
opengauss-bot bad6703ab1
!2558 3.0.0 回合 gs_ctl restore后未加break导致会执行copy操作
Merge pull request !2558 from 周聪/restore_no_copy
2022-12-12 02:20:03 +00:00
opengauss-bot 692cd93a19
!2575 【3.0.0回合】 numactl库未打包到openGauss发布包里面,导致容器安装时候失败
Merge pull request !2575 from 周聪/3.0.0_numactl_package
2022-12-12 02:18:51 +00:00
opengauss-bot ccd3eceecc
!2546 3.0.0回合 添加对asianux平台支持
Merge pull request !2546 from 周聪/3.0.0-add_asianux
2022-12-12 02:18:14 +00:00
opengauss-bot e8a0efc9c0
!2587 [回合]解决maintainer-clean之后无法找到hint_gram.hpp的编译错误
Merge pull request !2587 from zhengxue/3.0.0_dev1
2022-12-10 09:31:48 +00:00
opengauss-bot cccbdebfbf
!2592 【3.0.0回合】gs_guc reload概率性导致备机core问题修复
Merge pull request !2592 from zhangzhixian/3.0.0-gs_guc_reload_fix
2022-12-10 06:39:35 +00:00
congzhou2603 54e8b987b2 【3.0.0 回合】修复从2.0.1升级到最新,回滚失败问题 2022-12-09 10:59:54 +08:00
teooooozhang 5e0f4cdc3b 【3.0.0回合】gu_guc reload概率性产生内存越界问题修复 2022-12-09 10:31:18 +08:00
ashnah 9e884c1073 fix error on gs_dump and gs_restore after upgrade 2022-12-08 22:32:22 +08:00
vastdata-xyzr 3276228499 解决maintainer-clean之后无法找到hint_gram.hpp的编译错误 2022-12-08 22:24:39 +08:00
opengauss-bot a0c190f19b
!2540 master回合3.0.0
Merge pull request !2540 from 薛蒙恩/og300
2022-12-08 12:11:29 +00:00
opengauss-bot f87c380fea
!2548 3.0.0代码回合:配置非异步备库且使用全量检查点,主库gs_ctl stop失败
Merge pull request !2548 from zhaobingyu/issue1921
2022-12-08 08:56:03 +00:00
opengauss-bot 84801fc880
!2574 【回合3.0.0】openGauss 发布订阅支持gs_probackup备份恢复后连接不断开
Merge pull request !2574 from chenxiaobin/basebackup300
2022-12-08 08:25:27 +00:00
opengauss-bot f33c2bca58
!2570 【3.0.0 bugfix回合】2.0.1灰度升级回滚后残留视图local_active_session修复
Merge pull request !2570 from zhangzhixian/3.0.0_merge_update_fix
2022-12-08 08:24:50 +00:00
opengauss-bot 1d0cca0689
!2561 【3.0.0 bugfix回合】xgboost内存泄漏修复回合
Merge pull request !2561 from zhangzhixian/3.0.0-I5T7WS
2022-12-08 08:23:57 +00:00
opengauss-bot cd329d4636
!2538 【master回合3.0.0】解决问题 审计日志写满后反转失败
Merge pull request !2538 from Cross-罗/cherry-pick-1670227232
2022-12-08 08:03:53 +00:00
opengauss-bot feb32b6c04
!2535 【master回合3.0.0】修复groupby cube中出现重复字段时聚集结果错误的问题。
Merge pull request !2535 from Cross-罗/cherry-pick-1670226634
2022-12-08 08:03:44 +00:00
opengauss-bot fb6329d9d6
!2536 【master回合3.0.0】修改升级后视图权限丢失问题
Merge pull request !2536 from Cross-罗/cherry-pick-1670226723
2022-12-08 07:47:14 +00:00
opengauss-bot a0fae7338c
!2516 【2.0.0回合3.0.0】gs_probackup对应walsender的超时时间改为至少30分钟,确保备份不因超时而失败
Merge pull request !2516 from Cross-罗/3.0.0_walsender_30min
2022-12-08 07:46:36 +00:00
opengauss-bot 41125fd93d
!2537 【master回合3.0.0】修复带有agg的查询在计划化简时目标列类型处理问题
Merge pull request !2537 from Cross-罗/cherry-pick-1670227138
2022-12-08 07:46:17 +00:00
opengauss-bot d9c1282ff4
!2565 【master回合3.0.0】双写页面排序函数存在无效代码,页面索引无法影响排序结果
Merge pull request !2565 from Cross-罗/PR_2250
2022-12-08 07:45:40 +00:00
opengauss-bot 044f55ab0b
!2534 【master回合3.0.0】修复类型转换使用时容易产生大量打印日志的问题
Merge pull request !2534 from Cross-罗/cherry-pick-1670226539
2022-12-08 07:42:50 +00:00
opengauss-bot 3aa0d7736a
!2533 【master回合3.0.0】修复merge into全局临时表报表文件不存在的bug
Merge pull request !2533 from Cross-罗/cherry-pick-1670226425
2022-12-08 07:42:25 +00:00
arcoalien@qq.com fecdeb4f99 新特性:gs_probackup备份支持zstd压缩算法
new feature: gs_probackup support zstd compress algrithom
2022-12-08 15:27:46 +08:00
opengauss-bot ff7124c0bd
!2569 set role of basebackup to SNDROLE_PRIMARY_BUILDSTANDBY
Merge pull request !2569 from 吴岳川/3.0.2
2022-12-08 03:24:39 +00:00
opengauss-bot 76491de228
!2573 【回合3.0.0】修复主机pitr恢复后清理xlog日志不完全的问题
Merge pull request !2573 from chenxiaobin/3.0.0
2022-12-08 03:17:36 +00:00
opengauss-bot f916fcd84e
!2550 回合部分问题修复到3.0.0
Merge pull request !2550 from 胡正超/300merge
2022-12-08 01:56:11 +00:00
opengauss-bot 38802d405a
!2544 【master回合3.0.0】回合PR1806,1880,1910,2020,2219五个PR
Merge pull request !2544 from 吴岳川/3.0.0
2022-12-08 01:49:59 +00:00
congzhou2603 1a6ee507cc 【3.0.0回合】 numactl库未打包到openGauss发布包里面,导致容器安装时候失败 2022-12-07 21:10:41 +08:00
chenxiaobin19 7552d5a3a7 gs_probackup支持备份发布订阅的逻辑复制槽 2022-12-07 19:17:01 +08:00
chenxiaobin19 e52a1eb067 fix xlog file does not clean enough after pitr-recovering when using RECOVERY_TARGET_XID\NAME\TIME 2022-12-07 18:25:00 +08:00
wenger ddd954bd3c 修复增量build时实际发生全量build的缺陷
增量build时,会计算源端与目标端的差异,此处没有对目标端文件大小进行赋值(即oldsize)变量,oldsize默认为0,这导致实际发生了全量build
2022-12-07 15:53:52 +08:00
dbxue 0413e7f1b0 new feature: add lz4 compress algrithom to gs_probackup 2022-12-07 15:52:24 +08:00
dbxue df6a619b4c bugfix: gs_probackup always fail when backup exceed 10min 2022-12-07 15:49:44 +08:00
teooooozhang 897ea8b9fb 【3.0.0 bugfix回合】升级回滚后视图local_active_session残留 2022-12-07 14:14:18 +08:00
opengauss-bot e39c152f65
!2562 【3.0.0 bugfix回合】fix并发改config文件导致coredump
Merge pull request !2562 from 陈栋/merge2
2022-12-07 06:06:16 +00:00
wuyuechuan 62e42c25d3 set role of basebackup to SNDROLE_PRIMARY_BUILDSTANDBY 2022-12-07 11:14:47 +08:00
luozihao cd1b328e22 双写页面排序函数存在无效代码,页面索引无法影响排序结果 2022-12-06 21:13:51 +08:00
opengauss-bot 8922430919
!2510 【master -> 3.0.0】【存储】【压缩特性代码】执行toast表并发测试,集群主DN进程core
Merge pull request !2510 from laishenghao/3-toast
2022-12-06 12:26:50 +00:00
opengauss-bot b4c82fb41c
!2508 【master -> 3.0.0】修改entrypoint.sh文件里包含口令硬编码
Merge pull request !2508 from laishenghao/cherry-pick-1669789117
2022-12-06 12:26:28 +00:00
opengauss-bot 6346315bfe
!2559 【3.0.0 bugfix回合】回合master部分bugfix至3.0.0
Merge pull request !2559 from 陈栋/merge1
2022-12-06 11:49:14 +00:00
Wenke Yang baa1414993 link #I57IE7 fixed concurrent modify config file bug 2022-12-06 19:04:32 +08:00
teooooozhang 90c8169f18 【3.0.0 bugfix回合】xgboost内存泄漏修复回合 2022-12-06 17:36:59 +08:00
林科旭 06d4c6ee4a fix retry open pcd file 2022-12-06 17:27:08 +08:00
jiaolanlan@gbase.cn 66244cdee0 fix accessing of dangling pointer in session_options 2022-12-06 17:26:08 +08:00
gw115 01bc7a3f5d syn code for workload index advisor 2022-12-06 17:24:54 +08:00
Min Sun 63080b2d37 Update regress test hw_cipher_sm4 to fix the issue of gs_decrypt having two lines results 2022-12-06 17:23:47 +08:00
flyly c5e88b3be7 Implementing Monte Carlo Tree Search Algorithm 2022-12-06 17:17:06 +08:00
林科旭 800396f61b fix retry open pcd file 2022-12-06 15:17:22 +08:00
opengauss-bot 2e691bd9cd
!2528 3.0.0 代码回合 修复SQL语句中同时出现窗口函数和子查询时因子查询被提升导致执行失败的问题
Merge pull request !2528 from 周聪/3.0.0
2022-12-06 07:07:50 +00:00
congzhou2603 4d633b8364 3.0.0 回合 gs_ctl restore后未加break导致会执行copy操作 2022-12-06 14:58:55 +08:00
gentle_hu cd9f6b490c fix core about log_destination 2022-12-06 10:42:03 +08:00
congzhou2603 7c57e5975b 3.0.0 回合 更新轻量版构建脚本以及最新三方库二进制文件 2022-12-05 22:05:10 +08:00
zhaobingyu a976745182 3.0.0代码回合:配置非异步备库且使用全量检查点,主库gs_ctl stop失败 2022-12-05 20:59:36 +08:00
congzhou2603 e0241f088b 3.0.0回合 添加asianux平台支持 2022-12-05 19:57:18 +08:00
zhaobingyu 3afb086f4d 3.0.0版本代码回合,解决issue -- 关闭质量检查点,开启全页写,无负载情况下,create database花费25秒 2022-12-05 19:51:10 +08:00
wuyuechuan a81495043c cherry-pick conflict 2022-12-05 19:38:26 +08:00
wuyuechuan 2544f59021 column table: set compress/nocompress support
Conflicts:
	src/test/regress/parallel_schedule0
2022-12-05 19:35:54 +08:00
wuyuechuan 653b534bd2 column table: set compress/nocompress support
Conflicts:
	src/test/regress/parallel_schedule0
2022-12-05 19:34:01 +08:00
wuyuechuan f042f6fe7c change_function_from_defGetBoolean_to_parse_bool 2022-12-05 19:30:53 +08:00
wuyuechuan 288cd473c3 memcheck bugfix
Conflicts:
	src/common/backend/utils/cache/knl_localsysdbcache.cpp
2022-12-05 19:30:38 +08:00
xue_meng_en a1559e3e8b 修复slot_name包含特殊字符报错信息不正确问题 2022-12-05 16:29:49 +08:00
xue_meng_en 7335c381a7 修复复制槽名称长度为64,65时提示创建复制槽成功但是复制槽不存在的偶现问题 2022-12-05 16:28:43 +08:00
zhoutianlian 40e02971c2 fixed 42623fc from https://gitee.com/luo_zihao5524/openGauss-server/pulls/2247
新增 earliest_idx 为负的场景下,pgaudit_totalspace的计算方法

Signed-off-by: zhoutianlian <zhoutianlian@huawei.com>
2022-12-05 08:00:32 +00:00
cc_db_dev a53d22a0ad fixed 36dd9b2 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/2084
修复带有恒为假条件的agg在计划化简是目标列类型处理问题
2022-12-05 07:58:59 +00:00
zhaofeng64 dc21219e6d fixed 8a44a89 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/2225
solve the problem of permission loss after upgrade
2022-12-05 07:52:04 +00:00
luozihao c1e1948931 fixed e7e7117 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/2122
修复groupby cube中出现重复字段时聚集结果错误的问题。
2022-12-05 07:50:34 +00:00
Cross-罗 6b32ac9484 fixed f0f9570 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/2045
update src/common/pl/plpgsql/src/pl_handler.cpp.

Signed-off-by: Cross-罗 <1165977584@qq.com>
2022-12-05 07:48:59 +00:00
luozihao 3f7bf26194 fixed 6809622 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/1959
修复merge全局临时表的bug
2022-12-05 07:47:06 +00:00
opengauss-bot 1894187ba7
!2531 【bugfix回合】回合master上的内存泄漏问题
Merge pull request !2531 from pengjiong/3.0.0
2022-12-05 06:39:08 +00:00
totaj 2a078bf0b8 Fix memleak.
Conflicts:
	src/gausskernel/optimizer/commands/trigger.cpp
2022-12-05 11:32:00 +08:00
TotaJ a45bfae25a Fix memleak.
Conflicts:
	src/bin/pg_dump/pg_dump.cpp
2022-12-05 11:03:38 +08:00
congzhou2603 39e0320615 3.0.0回合 修复SQL语句中同时出现窗口函数和子查询时因子查询被提升导致执行失败的问题 2022-12-03 18:06:49 +08:00
opengauss-bot 7d3b2c03c3
!2496 【3.0.0回合】修复设置try_vector_engine_strategy参数为force后,查询目标列含系统表的查询出现coredump的问题
Merge pull request !2496 from 仲夏十三/mas8
2022-12-01 09:02:36 +00:00
luozihao 0c469e5f2a set wal_sender_timeout >= 30minutes for gs_probackup 2022-12-01 10:34:58 +08:00
laishenghao e7a99b76c1 【master -> 3.0.0】【存储】【压缩特性代码】执行toast表并发测试,集群主DN进程core 2022-11-30 17:58:11 +08:00
ganyang 79de533005 fix coredump select system domain type in vec mode 2022-11-30 15:51:56 +08:00
lihongda 0039280728 fixed c34605a from https://gitee.com/dodders/openGauss-server/pulls/2189
update docker/dockerfiles/3.0.0/entrypoint.sh fix entrypoint.sh文件里包含口令硬编码 . 

Signed-off-by: lihongda <hongda.li@enmotech.com>
2022-11-30 06:18:37 +00:00
opengauss-bot 332fc7da41
!2421 修复\h ALTER PROCEDURE查询存储过程帮助语法不存在和\h alter中缺少PROCEDURE的语法的问题
Merge pull request !2421 from yuchao/3.0.0
2022-11-26 07:29:08 +00:00
opengauss-bot 92dfe1863e
!2428 同步问题修复
Merge pull request !2428 from 杨皓/3.0.0
2022-11-18 06:27:17 +00:00
opengauss-bot 74914a8da7
!2443 [bug fix] 修复postgresql.conf里面配置了多个参数后,pg_rewind里面用的第一个参数取值进行校验的问题
Merge pull request !2443 from cchen676/ms30
2022-11-17 01:45:47 +00:00
opengauss-bot b53f15e104
!2311 回合3.0.0 fix IdleInTransactionSessionTimeout don't work when session_timeout=0
Merge pull request !2311 from 薛蒙恩/idle302
2022-11-16 12:59:59 +00:00
arcoalien@qq.com 55cebcb77f 修复conf文件里面配置了多个参数时取第一个判断的问题 2022-11-16 17:21:06 +08:00
zhang_xubo 6095f81310 update zlib and jdk path 2022-11-15 16:41:33 +08:00
openGaussDev bffa58e13e sync code for bugfix 2022-11-15 11:17:50 +08:00
opengauss-bot 2e621a804f
!2384 [bug fix] 修复enable_save_confirmed_lsn打开后,动态开启最大可用模式配置发生coredump的问题
Merge pull request !2384 from cchen676/ms30
2022-11-14 03:03:51 +00:00
xue_meng_en f53c24ea8b 修复idle_in_transaction相关问题回合3.0.0 2022-11-11 20:51:19 +08:00
opengauss-bot 3a9585c0b0
!2383 bugfix回合3.0.0:删除指定summary级别时,wdr内的存在的detail信息
Merge pull request !2383 from 胡正超/3.0.0
2022-11-11 03:29:59 +00:00
Yu Chao c8f5943251 修复\h alter procedure查询存储过程帮助语法不存在的问题 2022-11-10 19:55:17 +08:00
opengauss-bot 3c344a205f
!2394 reset useless chunk when backup file
Merge pull request !2394 from 吴岳川/comp
2022-11-10 07:55:24 +00:00
opengauss-bot 9b108988a6
!2391 回合master关于db4ai.snapshot系统表的升级脚本
Merge pull request !2391 from zhengxue/3.0.0_dev
2022-11-09 08:22:08 +00:00
opengauss-bot 15060bf00f
!2397 计算RelFileNode的hash值时忽略opt字段
Merge pull request !2397 from chenxiaobin/3.0.0
2022-11-09 03:16:47 +00:00
wuyuechuan 4c8204e7f4 reset useless chunk when backup file 2022-11-08 16:19:28 +08:00
chenxiaobin19 3a848f7323 ignore opt field when computing hash value 2022-11-08 11:35:41 +08:00
arcoalien@qq.com 7efcd00a66 修复enable_save_confirmed_lsn打开后,动态开启最大可用模式coredump的buf 2022-11-08 09:30:44 +08:00
opengauss-bot 44a75e3e28
!2385 将copy指令的\h 信息修改合到3.0.0分支
Merge pull request !2385 from laishenghao/cherry-pick-1667612241
2022-11-07 08:55:25 +00:00
shirley_zhengx 6530335e38 回合master关于db4ai.snapshot系统表的升级脚本 2022-11-07 16:24:14 +08:00
Laishenghao e621c4edd7 fixed 1bcae14 from https://gitee.com/dodders/openGauss-server/pulls/2176
修改copy 指令的 help信息
2022-11-05 01:37:21 +00:00
gentle_hu 227d200aba rm detail info in wdr when summary type is specified 2022-11-04 16:19:19 +08:00
opengauss-bot 9a805c2eef
!2323 虚拟索引oid最大值设定
Merge pull request !2323 from guoguozhenhaowan/index_oid
2022-10-31 12:16:34 +00:00
opengauss-bot 0c77d0027e
!2319 修复gsql无法在openGauss2.0上执行"\d+ table"的问题
Merge pull request !2319 from 杨浩/3.0.0
2022-10-27 07:55:52 +00:00
opengauss-bot 12ba820996
!2334 修复package编译爆栈bug
Merge pull request !2334 from pengjiong/3.0.0_bugfix
2022-10-27 03:24:33 +00:00
yanghao bf074c9975 Fix "\d+ table" cannot be executed in openGauss 2.0 2022-10-27 10:08:52 +08:00
totaj e883989fb2 Fix nest package. 2022-10-26 21:35:18 +08:00
nwen 8437e63439 fix: increase the maximum value of oid to avoid the bug of not being able to create hypo-index by too large oid 2022-10-24 15:07:58 +08:00
opengauss-bot ed8c0638ff
!2234 【patch】合入gs_dump报错问题相关修改
Merge pull request !2234 from laishenghao/gs_dump
2022-10-10 01:32:24 +00:00
Laishenghao f2fa1e1ba1 修改检视意见:末尾重置版本号为0,脚本文件增加‘-post’ 2022-10-09 17:23:59 +08:00
opengauss-bot b992e1957e
!2289 change version to 3.0.2
Merge pull request !2289 from zhangxubo/3.0.0
2022-10-09 09:17:39 +00:00
zhang_xubo 2798e7d19e update version to 3.0.2 2022-10-09 15:45:25 +08:00
Laishenghao 88ed60395a 【patch】合入gs_dump报错问题相关修改 2022-10-09 11:44:03 +08:00
opengauss-bot 54d7584191
!2278 修改 并发执行函数local_double_write_stat会触发coredump的问题
Merge pull request !2278 from ashnah/for_doublewriter_coredump
2022-10-08 01:38:07 +00:00
wangxiumin be6071eebd 把全局变量g_stat_file_id改为session级别 2022-09-30 19:37:59 +08:00
opengauss-bot 46b4dac18d
!2241 【patch】并行回放中 事务日志不再同步IsnMarker,减少同步开销
Merge pull request !2241 from laishenghao/parallel
2022-09-28 07:13:43 +00:00
opengauss-bot a0260b81fb
!2254 同步master修复smp core问题
Merge pull request !2254 from chenxiaobin/3.0.0
2022-09-27 14:04:57 +00:00
chenxiaobin19 3be0488ab1 fix problem that subplan recursive result not corrent in stream plan 2022-09-27 20:15:28 +08:00
opengauss-bot 9b7170c6c1
!2246 [回合]delta表支持autovacuum自动迁移至主表
Merge pull request !2246 from 陈栋/3.0.0
2022-09-26 08:38:41 +00:00
chendong76 28270e72ed [回合master]delta表支持autovacuum自动迁移至主表 2022-09-26 15:02:40 +08:00
Laishenghao 2f29eeae78 【patch】并行回放中 事务日志不再同步IsnMarker,减少同步开销 2022-09-26 10:13:25 +08:00
opengauss-bot 20c4bf07fe
!2238 同步master修改:预处理函数:错误计算长度导致部分场景可能数据会解压异常
Merge pull request !2238 from 吴岳川/compress
2022-09-26 01:35:40 +00:00
opengauss-bot 25cbdcf6ce
!2212 fix bug 修复enable_save_confirmed_lsn不能使用GUC SET设置的问题
Merge pull request !2212 from cchen676/ms30
2022-09-24 10:43:46 +00:00
wuyuechuan 6f091037b2 bugfix: the totalsize is incorrectly calculated 2022-09-24 16:24:42 +08:00
opengauss-bot a8f77a4678
!2230 【回合3.1.0代码】修复pg_get_tabledef()无法作用于系统表的问题
Merge pull request !2230 from 仲夏十三/three
2022-09-24 07:04:30 +00:00
ganyang 552ee3298a fix pg_get_tabledef 2022-09-23 16:36:35 +08:00
arcoalien@qq.com 683d8be157 fix bug 修复enable_save_confirmed_lsn不能使用GUC SET设置的问题 2022-09-22 09:03:16 +08:00
opengauss-bot 430acfbd84
!2204 hw_audit_detailinfo执行失败,需要对脚本添加可执行权限
Merge pull request !2204 from zhangxubo/3.0.0
2022-09-21 09:01:47 +00:00
opengauss-bot e605dc5aba
!2200 【回合】修复逻辑解码 waiting_for_ping_response 设置错误的问题
Merge pull request !2200 from pengjiong/cherry-pick-1663730805
2022-09-21 06:38:53 +00:00
zhang_xubo 04a116ea22 对fastcheck脚本添加可执行权限 2022-09-21 14:38:16 +08:00
totaj ad7eb165cf fixed 8af9abc from https://gitee.com/totaj/openGauss-server/pulls/2178
Fix logical decoding timeout.
2022-09-21 03:26:55 +00:00
opengauss-bot fbf4fc2861
!2194 支持idle_in_transaction_session_timeout回合3.0.0分支
Merge pull request !2194 from 薛蒙恩/idle300
2022-09-20 13:48:12 +00:00
xue_meng_en 616cf713ff 支持idle_in_transaction_session_timeout 2022-09-20 14:29:36 +08:00
opengauss-bot 12da7491f1
!2182 修复FDW const、param等不能下推的bug (回合自master)
Merge pull request !2182 from 胡正超/3.0.0
2022-09-17 09:11:46 +00:00
gentle_hu f1d24398d4 fix postgres fdw bug 2022-09-17 15:15:44 +08:00
opengauss-bot afdf9b9858
!2088 支持增量build时校验源端是否和目的端有相同的多数派一致性位置
Merge pull request !2088 from cchen676/ms30
2022-09-15 13:12:48 +00:00
cchen676 d2bcd8ca96 支持增量build时校验主备达成多数派一致性的位置 2022-09-14 19:02:24 +08:00
opengauss-bot 8179d400ae
!1915 [master分支回合]fix issue 列存表的delta表存在toast表时,vacuum deltamerge后无法访问
Merge pull request !1915 from cchen676/new3.0
2022-09-07 09:39:07 +00:00
opengauss-bot 0a568bd991
!2106 备机statement_history、full sql回合3.0.0
Merge pull request !2106 from 胡正超/3.0.0
2022-09-06 02:35:04 +00:00
gentle_hu aaac084d7f 回合2.0.0特性: fullsql特性增强代码
commits:
    cbfbaf4d53
    78a85d3900
    53b7a69a78
pr: 1807, 1826
2022-08-30 20:22:46 +08:00
gentle_hu 1ead26832f 回合2.0.0特性:support dbe_perf.standby_statement_history()
commits:
  e5acacfcc2
  abb65f9362

pr: 1783, 1809
2022-08-30 20:22:07 +08:00
gentle_hu 96c50c0a81 fix the bug of grpc lock initialization 2022-08-30 20:10:11 +08:00
opengauss-bot 3cfa51a9c1
!1968 解决issue-列存加唯一索引插100万数据慢问题
Merge pull request !1968 from zhaobingyu/3.0.0
2022-07-26 07:26:05 +00:00
zhaobingyu 5d67447ae3 解决3.0.0版本列存加唯一索引插100万数据慢问题 2022-07-25 14:58:38 +08:00
arcoalien@qq.com 654e407446 fix issue 列存表的delta表存在toast表时,vacuum deltamerge后无法访问 2022-07-01 10:44:13 +08:00
opengauss-bot 4f106fe8a3
!1913 【master回合3.0.0】1912 Reserve 160kb where backup compressed file
Merge pull request !1913 from 吴岳川/cherry-pick-1656577421
2022-06-30 11:00:11 +00:00
wuyuechuan 28c087e456 fixed 1e44cb5 from https://gitee.com/wuyuechuan/openGauss-server/pulls/1912
Reserve 160kb where backup compressed file
2022-06-30 08:23:42 +00:00
opengauss-bot ee99e11525
!1900 【代码回合】1792 压缩表建表提示优化、修改表拦截错误修改
Merge pull request !1900 from 吴岳川/300
2022-06-28 09:30:23 +00:00
wuyuechuan f3d1def27a optimize the message for `create table` 2022-06-27 17:40:06 +08:00
wuyuechuan 4ce17d47de change log of `alter compresstype\compress_chunk_size` 2022-06-27 17:39:58 +08:00
opengauss-bot cbeba1779e
!1894 修复主备来回切换,数据库core掉
Merge pull request !1894 from zhangxubo/3.0.0
2022-06-27 01:58:27 +00:00
zhang_xubo 52d009c6ae 修复主备间来回切换,数据库core掉问题 2022-06-26 17:22:28 +08:00
opengauss-bot 70838dbbab
!1892 Undo加固增强:enable_ustore=off时候,AllocateUndoZone直接返回
Merge pull request !1892 from zhangxubo/3.0.0
2022-06-24 08:46:31 +00:00
zhang_xubo 714954a06f enable_ustore=off加固处理AllocateUndoZone直接返回 2022-06-24 15:23:20 +08:00
opengauss-bot 50db19b62c
!1879 [bufix]修复 master 分支 和 3.0.0 分支创建 postgis_raster 扩展失败问题
Merge pull request !1879 from 周斌/postgis_raster
2022-06-22 03:55:14 +00:00
wusong a7dae44b62 fix #I51OZS 修复在扩展中无法调用已创建函数问题,sort_candidate_func_list 函数实现 bug 2022-06-22 10:50:19 +08:00
opengauss-bot 6fc31000c6
!1877 change version to 3.0.1 in branch 3.0.0
Merge pull request !1877 from zhangxubo/3.0.0
2022-06-21 15:04:30 +00:00
zhang_xubo b11082c4af change version to 3.0.1 2022-06-21 21:39:57 +08:00
opengauss-bot 7ab4eebf6a
!1841 回合bugfix: 修复ustore二级分区以及生成列场景下,发布订阅数据同步失败的问题
Merge pull request !1841 from pengjiong/cherry-pick-1655430243
2022-06-21 12:22:17 +00:00
opengauss-bot e911707543
!1839 回合bugfix: 修复视图中包含自定义操作符时,获取视图定义失败的问题
Merge pull request !1839 from pengjiong/cherry-pick-1655429759
2022-06-21 12:16:44 +00:00
opengauss-bot 89b6c03df0
!1840 回合bugfix: 修复在部分场景下,非sysadmin用户执行gs_dump失败的问题
Merge pull request !1840 from pengjiong/cherry-pick-1655430205
2022-06-21 12:12:50 +00:00
opengauss-bot 96a41cfdd8
!1838 回合bugfix: 修复由于CurrentResourceOwner为NULL导致的逻辑解码core问题
Merge pull request !1838 from pengjiong/cherry-pick-1655429544
2022-06-21 12:11:47 +00:00
opengauss-bot 5df7418564
!1853 【3.0.0回合】1702 修复分区表issue
Merge pull request !1853 from 仲夏十三/cherry-pick-1655434375
2022-06-21 03:08:48 +00:00
opengauss-bot 4bfd4765e0
!1852 【3.0.0回合】1782 bugfix: 使用压缩算法1压缩索引效果较差
Merge pull request !1852 from 吴岳川/cherry-pick-1655432421
2022-06-21 03:08:28 +00:00
opengauss-bot f5b5da8c00
!1848 【3.0.0回合】1776 使用like including all/reloptoins时,即使包含compresstype,也会成功;compresstype可以与segment=off一起使用。
Merge pull request !1848 from 吴岳川/cherry-pick-1655432218
2022-06-21 03:08:28 +00:00
opengauss-bot 6736b6e2bf
!1851 【3.0.0回合】1793 stop standby repair
Merge pull request !1851 from 吴岳川/cherry-pick-1655432342
2022-06-21 03:08:23 +00:00
opengauss-bot d895a5767c
!1849 【3.0.0回合】1788 当values返回多条结果时,及时释放上一条结果的内存
Merge pull request !1849 from 吴岳川/cherry-pick-1655432284
2022-06-21 03:08:14 +00:00
opengauss-bot 4e60932817
!1847 【3.0.0回合】1750 数据备份时,页面校验增加非压缩页面校验。
Merge pull request !1847 from 吴岳川/cherry-pick-1655432153
2022-06-21 03:07:21 +00:00
opengauss-bot c63a880e8a
!1846 【3.0.0回合】1780 bugfix: 压缩表的mdtruncate无法实际应用到备机
Merge pull request !1846 from 吴岳川/cherry-pick-1655432084
2022-06-21 03:07:15 +00:00
opengauss-bot dc5fc6299d
!1845 【3.0.0回合】1740 compressByteConvert\compressDiffConvert内存判断当且仅当用户输入为true而不是判断用户是否使用该参数
Merge pull request !1845 from 吴岳川/cherry-pick-1655432002
2022-06-21 03:06:56 +00:00
opengauss-bot e1c5cb8c73
!1844 【3.0.0回合】1741 【压缩特性】在回放过程中,假设表文件已经被创建而表_pca等文件未被创建,flags会被修改,丢失O_CREATE标记,导致备机回放失败
Merge pull request !1844 from 吴岳川/cherry-pick-1655431921
2022-06-21 03:06:49 +00:00
opengauss-bot a1c81e7ce5
!1843 【3.0.0回合】1760 DFX: add exit log in PercentileMain
Merge pull request !1843 from 吴岳川/cherry-pick-1655431863
2022-06-21 03:06:41 +00:00
opengauss-bot 301ac8502e
!1855 【3.0.0回合】1791 修复pg_get_tabledef()导出自生成列定义的问题
Merge pull request !1855 from 仲夏十三/cherry-pick-1655434840
2022-06-21 03:06:21 +00:00
opengauss-bot cdd0841585
!1854 【3.0.0回合】1747 修复复合datum产生的record报错
Merge pull request !1854 from 仲夏十三/cherry-pick-1655434591
2022-06-21 03:05:56 +00:00
opengauss-bot d69e333d76
!1865 [bugfix] 回合主线修复的gsc pagewrite线程退出时的bug到3.0.0分支
Merge pull request !1865 from 周斌/merge_3.0.0
2022-06-21 03:05:11 +00:00
opengauss-bot dee07756d5
!1860 回合主线修复的bug到3.0.0分支
Merge pull request !1860 from 薛蒙恩/ps330bf
2022-06-21 03:05:06 +00:00
opengauss-bot 324994809b
!1866 [master分支同步] fix bug interval分区exchange失败
Merge pull request !1866 from cchen676/new3.0
2022-06-21 02:08:27 +00:00
opengauss-bot a5554872c0
!1858 【bugfix回合】修复hash_index回放时未判断返回值引发的core问题
Merge pull request !1858 from 陈栋/3.0.0
2022-06-21 02:07:33 +00:00
opengauss-bot 6d9302928f
!1868 【3.0.0回合】修复plpgsql在使用b_sql_plugin插件的情况下没有正确使用插件语法解析器的bug
Merge pull request !1868 from Cross-罗/cherry-pick-1655690635
2022-06-20 06:20:19 +00:00
opengauss-bot ae26a4b680
!1869 【3.0.0回合】修复并行查询limit 1性能劣化严重的问题
Merge pull request !1869 from Cross-罗/cherry-pick-1655696134
2022-06-20 06:07:29 +00:00
l00584793 f70512b3e1 fixed f9b0018 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/1833
smp bugfix
2022-06-20 03:35:34 +00:00
xue_meng_en 9fae85b375 修复wal2json插件编译时报logical.h文件中的DefElem类型未声明的错误 2022-06-20 11:02:59 +08:00
xue_meng_en 88a0533c0b 修复发布订阅死锁问题 2022-06-20 11:01:48 +08:00
l00584793 9dfce8735a fixed 7f9a1f5 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/1703
Fix the bug that the pgplsql invokes the syntax parser error.
2022-06-20 02:03:58 +00:00
opengauss-bot 6939022cdf
!1859 修复json_to_recordset函数未对输入做校验问题
Merge pull request !1859 from buter/3.0.0
2022-06-20 02:00:05 +00:00
opengauss-bot 6bc3fae656
!1857 修复SSL认证模式下中间人攻击的问题
Merge pull request !1857 from buter/3.0.0
2022-06-20 01:59:24 +00:00
opengauss-bot 17049c589d
!1863 修复array_set函数数组下界整数回绕问题
Merge pull request !1863 from buter/3.0.0
2022-06-20 01:58:38 +00:00
opengauss-bot f28c85bb15
!1864 gs_ctl添加-C参数适配流失容灾【回合3.0.0】
Merge pull request !1864 from zhangxubo/3.0.0
2022-06-20 01:55:53 +00:00
opengauss-bot e266ff1896
!1716 fix core of function pg_create_physical_replication_slot_extern
Merge pull request !1716 from 胡正超/repslot300
2022-06-20 01:50:11 +00:00
仲夏十三 9a1542b4ab Merge branch '3.0.0' of gitee.com:opengauss/openGauss-server into cherry-pick-1655434591 2022-06-20 01:34:25 +00:00
opengauss-bot c62aa81f3e
!1850 【3.0.0回合】join结果不正确bug
Merge pull request !1850 from Cross-罗/cherry-pick-1655432207
2022-06-17 09:57:37 +00:00
arcoalien@qq.com 998f4a0fa6 [回合主线]fix bug interval分区exchange失败 2022-06-17 17:25:51 +08:00
cyb 8bca669066 solve the switchover bugs caused by the wake_sub_threads 2022-06-17 15:44:12 +08:00
cyb ee791bd720 solve the switchover problem of pagewriter exiting 2022-06-17 15:37:17 +08:00
justbk 8a2b19a1cf repair gsc sub thread exit error issue 2022-06-17 15:36:37 +08:00
justbk 07d4a897dd repair wal_level=archive in switchover/failover get tuple concurrently updated issue 2022-06-17 15:36:07 +08:00
justbk b1377ef6a4 repair gs_gsc_memory_detail memory info inaccurate issue 2022-06-17 15:35:55 +08:00
justbk 5d64306497 repair GSC no cache issue 2022-06-17 15:35:13 +08:00
justbk 90433cd603 repair opengauss close failed issue 2022-06-17 15:34:43 +08:00
zhang_xubo b95ba5bc17 gs_ctl添加-C参数适配流失容灾 2022-06-17 15:13:46 +08:00
buter 8b7319f2cf 修复array_set函数数组下界整数回绕问题 2022-06-17 15:11:11 +08:00
buter 30971ad56e 修复array_set函数数组下界整数回绕问题 2022-06-17 11:36:48 +08:00
buter 56d56689dc 修复SSL认证模式下中间人攻击的问题 2022-06-17 11:32:56 +08:00
chendong76 1ce0d3bc9a 修复hash_index回放时未判断返回值引发的core问题 2022-06-17 11:32:24 +08:00
ganyang c86cd03855 fixed a53c9bb from https://gitee.com/kidhasdream/openGauss-server/pulls/1791
fix generated issue
2022-06-17 03:00:47 +00:00
ganyang 705a139012 fixed 1fd4bd2 from https://gitee.com/kidhasdream/openGauss-server/pulls/1791
fix create index info
2022-06-17 03:00:40 +00:00
ganyang a6ff7b5fff fixed f14255f from https://gitee.com/kidhasdream/openGauss-server/pulls/1747
fix record type issue caused by composite datum
2022-06-17 02:56:37 +00:00
ganyang 4b966bc1cb fixed 11a1a5c from https://gitee.com/kidhasdream/openGauss-server/pulls/1702
fix partition error
2022-06-17 02:53:21 +00:00
kidhasdream 40612feeac fixed 4898f04 from https://gitee.com/kidhasdream/openGauss-server/pulls/1702
change fastcheck
2022-06-17 02:53:06 +00:00
wuyuechuan fb013d16f6 fixed bf9d1b4 from https://gitee.com/wuyuechuan/openGauss-server/pulls/1782
bugfix: poor index compression ratio when use default pglz compression
2022-06-17 02:20:21 +00:00
wuyuechuan 5ee0248876 fixed c8d621d from https://gitee.com/wuyuechuan/openGauss-server/pulls/1793
stop standby repair
2022-06-17 02:19:02 +00:00
wuyuechuan b3e4d5a60d fixed 20ab9cd from https://gitee.com/wuyuechuan/openGauss-server/pulls/1788
bugfix: poor index compression ratio when use default pglz compression
2022-06-17 02:18:04 +00:00
wuyuechuan 43a3b0b2db fixed 8b6d9bd from https://gitee.com/wuyuechuan/openGauss-server/pulls/1776
1. (like...including reloptions) will success even if reloptions contains compresstype
2. compresstype can be used with (semgent=off) reloption
2022-06-17 02:16:59 +00:00
luozihao a493c304c4 fixed 4c0a495 from https://gitee.com/luo_zihao5524/openGauss-server/pulls/1710
fixed the bug of join
2022-06-17 02:16:49 +00:00
wuyuechuan 127a821823 fixed df87af4 from https://gitee.com/wuyuechuan/openGauss-server/pulls/1750
bugfix: backup failed when uncompressed page in compressed table
2022-06-17 02:15:53 +00:00
wuyuechuan 1e8931d6e4 fixed ef5c7af from https://gitee.com/wuyuechuan/openGauss-server/pulls/1780
bugfix: mdtruncate redo can not read compress_opt
2022-06-17 02:14:44 +00:00
wuyuechuan 6b5e8d599a fixed dbcf479 from https://gitee.com/wuyuechuan/openGauss-server/pulls/1740
set compressByteConvert/compressDiffConvert to true when defElem is set to true
2022-06-17 02:13:22 +00:00
wuyuechuan c17ac270e8 fixed 5af581f from https://gitee.com/wuyuechuan/openGauss-server/pulls/1741
use `RetryDataFileIdOpenFile` to prevent the flags from being modified
2022-06-17 02:12:02 +00:00
wuyuechuan 1e46d1b4ca fixed 82d5ac6 from https://gitee.com/wuyuechuan/openGauss-server/pulls/1760
DFX: add exit log in PercentileMain
2022-06-17 02:11:03 +00:00
TotaJ c85eab2542 fixed f719422 from https://gitee.com/totaj/openGauss-server/pulls/1700
Fix ustore bug in publication.
2022-06-17 01:44:03 +00:00
TotaJ 8fc10a08b1 fixed 62e3bed from https://gitee.com/totaj/openGauss-server/pulls/1772
Fix gs_dump
2022-06-17 01:43:25 +00:00
TotaJ 87ff1d3c76 fixed c1335be from https://gitee.com/totaj/openGauss-server/pulls/1726
Fix deserialize func and view.
2022-06-17 01:35:59 +00:00
TotaJ 6e6eb8708c fixed 38b5a0a from https://gitee.com/totaj/openGauss-server/pulls/1697
Fix logical decode core.
2022-06-17 01:32:28 +00:00
opengauss-bot f8003325cb
!1837 【bugfix】解决分区表autovacuum时已达到清理阈值但没有自动清理,2.0.0分支修复问题回合3.0.0
Merge pull request !1837 from li_jianqiu/cherry-pick-1655373819
2022-06-16 12:43:47 +00:00
li_jianqiu 707f627e9c fixed 3aea40d from https://gitee.com/li_jianqiu/openGauss-server/pulls/1836
【bugfix】解决分区表autovacuum时已达到清理阈值但没有自动清理
2022-06-16 10:03:40 +00:00
opengauss-bot 8793cac1c6
!1784 回退对3.0分支wm_concat 的支持
Merge pull request !1784 from 刘伟/rollback_wm_concat_change_for_3.0.0
2022-06-01 11:04:20 +00:00
wei.liu f1ab25ed55 rollback wm_concat change for orafce 2022-06-01 11:10:26 +08:00
opengauss-bot c6cf59f29f
!1669 add wm_concat function to use internal datatype
Merge pull request !1669 from 吕辉/wm_concat
2022-05-24 01:44:32 +00:00
gentle_hu 36e8a88c7a fix core of function pg_create_physical_replication_slot_extern 2022-05-07 14:52:03 +08:00
opengauss-bot a5410b7f86
!1667 修复enable_global_syscache关闭时连接B兼容性数据库的core问题
Merge pull request !1667 from chenxiaobin/3.0.0
2022-04-11 11:11:06 +00:00
lvhui c711c7dc5f add wm_concat in InternalAggIsSupported 2022-04-11 17:41:56 +08:00
chenxiaobin19 3bea35e8c1 修复enable_global_syscache关闭时连接B兼容性数据库的core问题 2022-04-08 11:11:57 +08:00
2336 changed files with 411026 additions and 324390 deletions

View File

@ -52,7 +52,6 @@ set(PROJECT_OPENGS_DIR ${PROJECT_TRUNK_DIR}/${openGauss} CACHE INTERNAL "")
set(PROJECT_SRC_DIR ${PROJECT_OPENGS_DIR}/src CACHE INTERNAL "")
set(3RD_PATH $ENV{THIRD_BIN_PATH})
execute_process(COMMAND sh ${PROJECT_SRC_DIR}/get_PlatForm_str.sh OUTPUT_VARIABLE PLAT_FORM_NAME OUTPUT_STRIP_TRAILING_WHITESPACE)
set(prefix_home $ENV{PREFIX_HOME})
set(CMAKE_INSTALL_PREFIX ${prefix_home} CACHE INTERNAL "")
if("$ENV{GCC_VERSION}" STREQUAL "")
@ -67,9 +66,9 @@ if("${GCC_VERSION}" STREQUAL "7.3.0")
set(GCC_VERSION_LIT 7.3)
endif()
execute_process(COMMAND uname -p OUTPUT_VARIABLE CURRENT_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
if("$ENV{BUILD_TUPLE}" STREQUAL "")
execute_process(COMMAND uname -p OUTPUT_VARIABLE CURRENT_TUPLE OUTPUT_STRIP_TRAILING_WHITESPACE)
set(BUILD_TUPLE ${CURRENT_TUPLE})
set(BUILD_TUPLE ${CURRENT_ARCH})
else()
set(BUILD_TUPLE $ENV{BUILD_TUPLE})
endif()

View File

@ -152,16 +152,6 @@ redochecksmall: all
redischeck: all
dfsredischeck: all
orccheckxian: all
orccheckusa: all
orcchecksmall: all
dfscheck: all
obscheck: all
obsorccheck: all
@ -170,7 +160,7 @@ securitycheck: all
parquetchecksmall: all
check fastcheck fastcheck_inplace fastcheck_parallel_initdb qunitcheck redischeck redocheck redochecksmall orccheckxian orccheckusa orcchecksmall parquetchecksmall dfscheck obscheck obsorccheck securitycheck dfsredischeck installcheck installcheck-parallel 2pccheck:
check fastcheck fastcheck_inplace fastcheck_parallel_initdb qunitcheck redischeck redocheck redochecksmall orccheckxian orccheckusa orcchecksmall parquetchecksmall obscheck obsorccheck securitycheck installcheck installcheck-parallel 2pccheck:
$(MAKE) -C $(root_builddir)/distribute/test/regress $@
#llt include all low level test

View File

@ -82,23 +82,13 @@ redochecksmall: all
redischeck: all
dfsredischeck: all
orccheckxian: all
orccheckusa: all
orcchecksmall: all
dfscheck: all
obscheck: all
obsorccheck: all
securitycheck: all
check fastcheck fastcheck_inplace fastcheck_parallel_initdb qunitcheck redischeck redocheck redochecksmall orccheckxian orccheckusa orcchecksmall dfscheck obscheck obsorccheck securitycheck dfsredischeck installcheck installcheck-parallel 2pccheck:
check fastcheck fastcheck_inplace fastcheck_parallel_initdb qunitcheck redischeck redocheck redochecksmall orccheckxian orccheckusa orcchecksmall obscheck obsorccheck securitycheck installcheck installcheck-parallel 2pccheck:
$(MAKE) -C src/test/regress $@
#llt include all low level test

1246
README.md

File diff suppressed because it is too large Load Diff

View File

@ -41,12 +41,11 @@
./share/postgresql/extension/file_fdw.control
./share/postgresql/extension/hstore--unpackaged--1.0.sql
./share/postgresql/extension/hstore--1.0--1.1.sql
./share/postgresql/extension/hdfs_fdw--1.0.sql
./share/postgresql/extension/hdfs_fdw.control
./share/postgresql/extension/log_fdw--1.0.sql
./share/postgresql/extension/log_fdw.control
./share/postgresql/extension/postgres_fdw--1.0.sql
./share/postgresql/extension/postgres_fdw.control
./share/postgresql/extension/packages--1.0.sql
./share/postgresql/extension/packages--1.0--1.1.sql
./share/postgresql/extension/packages.control
./share/postgresql/timezone/GB-Eire
./share/postgresql/timezone/Turkey
./share/postgresql/timezone/Kwajalein
@ -618,6 +617,23 @@
./share/postgresql/timezone/Asia/Yakutsk
./share/postgresql/timezone/Asia/Magadan
./share/postgresql/timezone/Asia/Amman
./share/postgresql/timezone/Asia/Barnaul
./share/postgresql/timezone/Asia/Chita
./share/postgresql/timezone/Asia/Tomsk
./share/postgresql/timezone/Asia/Atyrau
./share/postgresql/timezone/Asia/Famagusta
./share/postgresql/timezone/Asia/Qostanay
./share/postgresql/timezone/Asia/Srednekolymsk
./share/postgresql/timezone/Asia/Yangon
./share/postgresql/timezone/Pacific/Bougainville
./share/postgresql/timezone/Antarctica/Troll
./share/postgresql/timezone/Europe/Astrakhan
./share/postgresql/timezone/Europe/Ulyanovsk
./share/postgresql/timezone/Europe/Kirov
./share/postgresql/timezone/Europe/Saratov
./share/postgresql/timezone/America/Fort_Nelson
./share/postgresql/timezone/America/Nuuk
./share/postgresql/timezone/America/Punta_Arenas
./share/postgresql/timezone/Asia/Kuching
./share/postgresql/timezone/Asia/Novosibirsk
./share/postgresql/timezone/Asia/Seoul
@ -634,6 +650,7 @@
./share/postgresql/timezone/Navajo
./share/postgresql/timezone/GMT
./share/postgresql/system_views.sql
./share/postgresql/private_system_views.sql
./share/postgresql/performance_views.sql
./share/postgresql/sql_features.txt
./share/postgresql/pg_cast_oid.txt
@ -673,7 +690,6 @@
./share/postgresql/timezonesets/Etc.txt
./share/postgresql/postgres.bki
./share/sslcert/gsql/openssl.cnf
./share/sslcert/grpc/openssl.cnf
./lib/libnuma.so
./lib/libnuma.so.1
./lib/libnuma.so.1.0.0
@ -686,18 +702,16 @@
./lib/libcrypto.so.1.1
./lib/libcgroup.so
./lib/libcgroup.so.1
./lib/libz.so
./lib/libz.so.1
./lib/libz.so.1.2.11
./lib/libz.so*
./lib/liblz4.so
./lib/liblz4.so.1
./lib/liblz4.so.1.9.2
./lib/liblz4.so.1.9.3
./lib/libcjson.so
./lib/libcjson.so.1
./lib/libcjson.so.1.7.14
./lib/libcjson.so.1.7.15
./lib/libcjson_utils.so
./lib/libcjson_utils.so.1
./lib/libcjson_utils.so.1.7.14
./lib/libcjson_utils.so.1.7.15
./lib/libstdc++.so.6
./lib/libgcc_s.so.1
./lib/libgomp.so
@ -729,6 +743,7 @@
./lib/postgresql/utf8_and_sjis.so
./lib/postgresql/utf8_and_cyrillic.so
./lib/postgresql/hstore.so
./lib/postgresql/packages.so
./lib/postgresql/utf8_and_euc_kr.so
./lib/postgresql/ascii_and_mic.so
./lib/postgresql/utf8_and_iso8859_1.so
@ -743,17 +758,19 @@
./lib/postgresql/utf8_and_euc2004.so
./lib/postgresql/utf8_and_big5.so
./lib/postgresql/mppdb_decoding.so
./lib/postgresql/sql_decoding.so
./lib/postgresql/pg_plugin
./lib/postgresql/proc_srclib
./lib/postgresql/security_plugin.so
./lib/postgresql/pg_upgrade_support.so
./lib/postgresql/latin2_and_win1250.so
./lib/postgresql/euc2004_sjis2004.so
./lib/libxgboost.so
./include/postgresql/server/postgres_ext.h
./include/postgresql/server/pg_config_os.h
./include/postgresql/server/pgtime.h
./include/postgresql/server/datatypes.h
./include/postgresql/server/client_logic/client_logic_enums.h
./include/postgresql/server/libpq/libpq-fs.h
./include/postgresql/server/nodes/primnodes.h
./include/postgresql/server/nodes/parsenodes.h
./include/postgresql/server/nodes/parsenodes_common.h
@ -911,6 +928,7 @@
./lib/libssl.so
./lib/libssl.so.1.1
[header]
./include/libpq/libpq-fs.h
./include/libpq-fe.h
./include/postgres_ext.h
./include/gs_thread.h
@ -924,4 +942,4 @@
./include/pqcomm.h
./include/pqexpbuffer.h
[version]
3.0.0
3.0.3

View File

@ -69,8 +69,6 @@
./share/postgresql/extension/file_fdw.control
./share/postgresql/extension/hstore--unpackaged--1.0.sql
./share/postgresql/extension/hstore--1.0--1.1.sql
./share/postgresql/extension/hdfs_fdw--1.0.sql
./share/postgresql/extension/hdfs_fdw.control
./share/postgresql/extension/log_fdw--1.0.sql
./share/postgresql/extension/log_fdw.control
./share/postgresql/extension/mot_fdw--1.0.sql
@ -649,6 +647,23 @@
./share/postgresql/timezone/Asia/Yakutsk
./share/postgresql/timezone/Asia/Magadan
./share/postgresql/timezone/Asia/Amman
./share/postgresql/timezone/Asia/Barnaul
./share/postgresql/timezone/Asia/Chita
./share/postgresql/timezone/Asia/Tomsk
./share/postgresql/timezone/Asia/Atyrau
./share/postgresql/timezone/Asia/Famagusta
./share/postgresql/timezone/Asia/Qostanay
./share/postgresql/timezone/Asia/Srednekolymsk
./share/postgresql/timezone/Asia/Yangon
./share/postgresql/timezone/Pacific/Bougainville
./share/postgresql/timezone/Antarctica/Troll
./share/postgresql/timezone/Europe/Astrakhan
./share/postgresql/timezone/Europe/Ulyanovsk
./share/postgresql/timezone/Europe/Kirov
./share/postgresql/timezone/Europe/Saratov
./share/postgresql/timezone/America/Fort_Nelson
./share/postgresql/timezone/America/Nuuk
./share/postgresql/timezone/America/Punta_Arenas
./share/postgresql/timezone/Asia/Kuching
./share/postgresql/timezone/Asia/Novosibirsk
./share/postgresql/timezone/Asia/Seoul
@ -722,7 +737,6 @@
./lib/postgresql/pgxs/src/Makefile.port
./lib/postgresql/pgxs/src/nls-global.mk
./lib/postgresql/pgxs/src/Makefile.global
./lib/postgresql/pgxs/src/get_PlatForm_str.sh
./lib/postgresql/pgxs/config/install-sh
./lib/postgresql/euc_cn_and_mic.so
./lib/postgresql/latin_and_mic.so
@ -761,6 +775,9 @@
./lib/libpq_ce.so.5
./lib/libpq_ce.so.5.5
./lib/libgauss_cl_jni.so
./lib/libnuma.so
./lib/libnuma.so.1
./lib/libnuma.so.1.0.0
./lib/libcgroup.so
./lib/libcgroup.so.1
./lib/libcom_err_gauss.so
@ -832,12 +849,10 @@
./lib/libssl.so.1.1
./lib/libgcc_s.so.1
./lib/libstdc++.so.6
./lib/libz.so
./lib/libz.so.1
./lib/libz.so.1.2.11
./lib/libz.so*
./lib/liblz4.so
./lib/liblz4.so.1
./lib/liblz4.so.1.9.2
./lib/liblz4.so.1.9.3
./lib/libcjson.so*
./lib/libconfig.so
./lib/libconfig.so.4
@ -853,12 +868,6 @@
./lib/libpcre.so*
./lib/libsecurec.so
./lib/libxml2.so*
./lib/libparquet.so
./lib/libparquet.so.14
./lib/libparquet.so.14.1.0
./lib/libarrow.so
./lib/libarrow.so.14
./lib/libarrow.so.14.1.0
./lib/OBS.ini
./lib/postgresql/latin2_and_win1250.so
./lib/postgresql/euc2004_sjis2004.so
@ -1397,18 +1406,6 @@
./lib/libpq.so
./lib/libpq.so.5
./lib/libpq.so.5.5
./lib/libpq_ce.so
./lib/libpq_ce.so.5
./lib/libpq_ce.so.5.5
./lib/libgauss_cl_jni.so
./lib/libconfig.so
./lib/libconfig.so.4
./lib/libcrypto.so
./lib/libcrypto.so.1.1
./lib/libstdc++.so.6
./lib/libssl.so
./lib/libssl.so.1.1
./lib/libpgport_tool.so
./lib/libpgport_tool.so.1
./lib/libgssapi_krb5_gauss.so
./lib/libgssapi_krb5_gauss.so.2

View File

@ -32,7 +32,7 @@ function print_help()
-pkg|--package provode type of installation packages, values parameter is server.
-m|--version_mode this values of paramenter is debug, release, memcheck, the default value is release.
-pm product mode, values parameter is opengauss.
-mc|--make_check this values of paramenter is on or off, the default value is on.
-mc|--make_check this values of paramenter is on or off, the default value is on.
-s|--symbol_mode whether separate symbol in debug mode, the default value is on.
-co|--cmake_opt more cmake options
"
@ -93,7 +93,7 @@ while [ $# -gt 0 ]; do
fi
product_mode=$2
shift 2
;;
;;
-mc|--make_check)
if [ "$2"X = X ]; then
echo "no given make check values"
@ -101,7 +101,7 @@ while [ $# -gt 0 ]; do
fi
make_check=$2
shift 2
;;
;;
-s|--symbol_mode)
if [ "$2"X = X ]; then
echo "no given symbol parameter"
@ -109,7 +109,7 @@ while [ $# -gt 0 ]; do
fi
separate_symbol=$2
shift 2
;;
;;
--cmake_opt)
if [ "$2"X = X ]; then
echo "no extra configure options provided"
@ -125,7 +125,7 @@ while [ $# -gt 0 ]; do
fi
extra_config_opt=$2
shift 2
;;
;;
*)
echo "Internal Error: option processing error: $1" 1>&2
echo "please input right paramtenter, the following command may help you"
@ -149,7 +149,11 @@ else
echo "begin config cmake options:" >> "$LOG_FILE" 2>&1
declare BUILD_DIR="${ROOT_DIR}/mppdb_temp_install"
declare CMAKE_BUILD_DIR=${ROOT_DIR}/tmp_build
declare CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_MOT=ON ${extra_cmake_opt}"
if [ "$product_mode"x == "lite"x ]; then
declare CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_PRIVATEGAUSS=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_LITE_MODE=ON ${extra_cmake_opt}"
else
declare CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_MOT=ON ${extra_cmake_opt}"
fi
echo "[cmake options] cmake options is:${CMAKE_OPT}" >> "$LOG_FILE" 2>&1
source $SCRIPT_DIR/utils/cmake_compile.sh || exit 1
fi
@ -164,6 +168,5 @@ function main()
gaussdb_build
}
main
echo "now, all build has finished!"
exit 0
exit 0

View File

@ -49,9 +49,7 @@ elif [ X"$kernel" == X"centos" ]; then
elif [ X"$kernel" == X"openeuler" ]; then
dist_version="openEuler"
else
echo "Only support EulerOS|Centos|openEuler platform."
echo "Kernel is $kernel"
exit 1
dist_version="Platform"
fi
show_package=false
@ -291,12 +289,6 @@ declare symbol_package_name="${package_pre_name}-symbol.${install_package_format
echo "[makemppdb] $(date +%y-%m-%d' '%T): script dir : ${SCRIPT_DIR}"
ROOT_DIR=$(dirname "$SCRIPT_DIR")
ROOT_DIR=$(dirname "$ROOT_DIR")
PLAT_FORM_STR=$(sh "${ROOT_DIR}/src/get_PlatForm_str.sh")
if [ "${PLAT_FORM_STR}"x == "Failed"x ]
then
echo "Only support EulerOS openEuler platform."
exit 1
fi
CMAKE_BUILD_DIR=${ROOT_DIR}/tmp_build
declare LOG_FILE="${ROOT_DIR}/build/script/makemppdb_pkg.log"
@ -304,12 +296,12 @@ declare BUILD_DIR="${ROOT_DIR}/mppdb_temp_install"
declare ERR_MKGS_FAILED=1
declare MKGS_OK=0
if [ "${binarylib_dir}" != 'None' ] && [ -d "${binarylib_dir}" ]; then
BUILD_TOOLS_PATH="${binarylib_dir}/buildtools/${PLAT_FORM_STR}"
PLATFORM_PATH="${binarylib_dir}/platform/${PLAT_FORM_STR}"
BINARYLIBS_PATH="${binarylib_dir}/dependency"
BUILD_TOOLS_PATH="${binarylib_dir}/buildtools/"
PLATFORM_PATH="${binarylib_dir}/kernel/platform/"
BINARYLIBS_PATH="${binarylib_dir}/kernel/dependency"
else
BUILD_TOOLS_PATH="${ROOT_DIR}/buildtools/${PLAT_FORM_STR}"
PLATFORM_PATH="${ROOT_DIR}/platform/${PLAT_FORM_STR}"
BUILD_TOOLS_PATH="${ROOT_DIR}/buildtools/"
PLATFORM_PATH="${ROOT_DIR}/kernel/platform/"
BINARYLIBS_PATH="${ROOT_DIR}/binarylibs"
fi
@ -319,9 +311,9 @@ export CC="$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc"
export CXX="$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/g++"
export LD_LIBRARY_PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/lib64:$BUILD_TOOLS_PATH/gcc$gcc_version/isl/lib:$BUILD_TOOLS_PATH/gcc$gcc_version/mpc/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/mpfr/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH
jdkpath=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
jdkpath=${binarylib_dir}/kernel/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
if [ ! -d "${jdkpath}" ]; then
jdkpath=${binarylib_dir}/platform/openjdk8/${PLATFORM_ARCH}/jdk
jdkpath=${binarylib_dir}/kernel/platform/openjdk8/${PLATFORM_ARCH}/jdk
fi
export JAVA_HOME=${jdkpath}
@ -515,21 +507,6 @@ function install_gaussdb()
commitid=$(LD_PRELOAD='' ${BUILD_DIR}/bin/gaussdb -V | cut -d ")" -f 1 | awk '{print $NF}')
echo "${commitid}" >>${SCRIPT_DIR}/version.cfg
echo "End insert commitid into version.cfg" >> "$LOG_FILE" 2>&1
cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/iperf/comm/bin/iperf3 ${BUILD_DIR}/bin
if [ $? -ne 0 ]; then
die "cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/iperf/comm/bin/iperf3 ${BUILD_DIR}/bin failed"
fi
cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/iperf/comm/lib/libiperf.so.0 ${BUILD_DIR}/lib
if [ $? -ne 0 ]; then
die "cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/iperf/comm/lib/libiperf.so.0 ${BUILD_DIR}/lib failed"
fi
cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/fio/comm/bin/fio ${BUILD_DIR}/bin
if [ $? -ne 0 ]; then
die "cp ${BINARYLIBS_PATH}/${PLAT_FORM_STR}/fio/comm/bin/fio ${BUILD_DIR}/bin failed"
fi
}
#######################################################################

View File

@ -1,2 +1,2 @@
PRODUCT=openGauss
VERSION=3.0.0
VERSION=3.0.3

View File

@ -24,8 +24,6 @@
declare SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)
declare ROOT_DIR=$(dirname "${SCRIPT_DIR}")
declare ROOT_DIR=$(dirname "${ROOT_DIR}")
declare package_type='server'
declare product_mode='opengauss'
declare version_mode='release'
@ -35,8 +33,6 @@ declare cm_dir='None'
declare show_package='false'
declare install_package_format='tar'
function print_help()
{
echo "Usage: $0 [OPTION]
@ -48,7 +44,6 @@ function print_help()
"
}
if [ $# = 0 ] ; then
echo "missing option"
print_help
@ -126,10 +121,18 @@ fi
declare BUILD_DIR="${ROOT_DIR}/mppdb_temp_install"
declare PKG_TMP_DIR="${BUILD_DIR}/temp"
if [ -e "$SCRIPT_DIR/utils/internal_packages.sh" ];then
source $SCRIPT_DIR/utils/internal_packages.sh
if [ "${product_mode}" == "lite" ]; then
if [ -e "$SCRIPT_DIR/utils/internal_packages_lite.sh" ];then
source $SCRIPT_DIR/utils/internal_packages_lite.sh
else
exit 1
fi
else
exit 1
if [ -e "$SCRIPT_DIR/utils/internal_packages.sh" ];then
source $SCRIPT_DIR/utils/internal_packages.sh
else
exit 1
fi
fi
function main()
@ -141,4 +144,4 @@ function main()
main
echo "now, all packages has finished!"
exit 0
exit 0

View File

@ -119,7 +119,7 @@ separate_symbol()
chmod 755 "$INSTALL_DIR/${symbol_name}.symbol"
mv $INSTALL_DIR/${symbol_name}.symbol $CPTODEST
fi
elif [[ "$x" = *".so" ]]; then
elif [[ "$x" = *".so" || "$x" = *".so."* ]]; then
if [[ "$platformname" = "Redhat" ]] || [[ "$platformname" = "Euler" ]]; then
if [[ "$x" = "libkadm5clnt.so" ]]; then
echo "$x is not a dynamically linked or not stripped, do not separate symbol"

View File

@ -30,7 +30,7 @@ function read_gaussdb_version()
echo "${gaussdb_name_for_package}-${version_number}" > version.cfg
#auto read the number from kernal globals.cpp, no need to change it here
}
###################################
# get version number from globals.cpp
##################################
@ -64,7 +64,7 @@ function get_kernel_commitid()
{
export PATH=${BUILD_DIR}:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
commitid=$(LD_PRELOAD='' ${BUILD_DIR}/bin/gaussdb -V | awk '{print $5}' | cut -d ")" -f 1)
commitid=$(LD_PRELOAD='' ${BUILD_DIR}/bin/gaussdb -V | awk '{print $5}' | cut -d ")" -f 1)
echo "${commitid}" >>${SCRIPT_DIR}/version.cfg
echo "End insert commitid into version.cfg" >> "$LOG_FILE" 2>&1
}
@ -96,6 +96,7 @@ function make_license_control()
die "modify '$gaussdb_version_file' failed."
fi
}
function make_gaussdb_kernel()
{
export BUILD_TUPLE=${PLATFORM_ARCH}
@ -125,11 +126,10 @@ function make_gaussdb_kernel()
if [ $? -ne 0 ]; then
die "make install failed."
fi
echo "End make install gaussdb server" >> "$LOG_FILE" 2>&1
}
#######################################################################
##install gaussdb database contained server,client and libpq
#######################################################################
@ -148,14 +148,14 @@ function install_gaussdb()
echo "WARNING: do not separate symbol in debug mode!"
fi
if [ "$product_mode" != "opengauss" ]; then
die "the product mode can only be opengauss!"
if [ "$product_mode" != "opengauss" -a "$product_mode" != "lite" ]; then
die "the product mode can only be opengauss, lite!"
fi
echo "build gaussdb kernel." >> "$LOG_FILE" 2>&1
make_gaussdb_kernel
echo "build gaussdb kernel success." >> "$LOG_FILE" 2>&1
chmod 444 ${BUILD_DIR}/bin/cluster_guc.conf
dos2unix ${BUILD_DIR}/bin/cluster_guc.conf > /dev/null 2>&1
@ -163,9 +163,6 @@ function install_gaussdb()
get_kernel_commitid
}
#######################################################################
##install gaussdb database and others
##select to install something according to variables package_type need
@ -184,4 +181,4 @@ function gaussdb_build()
echo "please input right paramenter values server or libpq "
exit 1
esac
}
}

View File

@ -72,74 +72,89 @@ select_package_command
export PLAT_FORM_STR=$(sh "${ROOT_DIR}/src/get_PlatForm_str.sh")
if [ "${PLAT_FORM_STR}"x == "Failed"x -o "${PLAT_FORM_STR}"x == ""x ]
then
echo "We only support openEuler(aarch64), EulerOS(aarch64), CentOS, Kylin(aarch64) platform."
echo "We only support openEuler(aarch64), EulerOS(aarch64), CentOS, Kylin(aarch64), Asianux platform."
exit 1;
fi
if [[ "$PLAT_FORM_STR" =~ "euleros" ]]; then
if [[ -f "/etc/euleros-release" ]]; then
dist_version="EulerOS"
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA"
fi
elif [[ "$PLAT_FORM_STR" =~ "centos" ]]; then
elif [[ -f "/etc/centos-release" ]]; then
dist_version="CentOS"
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA"
fi
elif [[ "$PLAT_FORM_STR" =~ "openeuler" ]]; then
elif [[ -f "/etc/openEuler-release" ]]; then
dist_version="openEuler"
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA -D__ARM_LSE"
fi
elif [[ "$PLAT_FORM_STR" =~ "kylin" ]]; then
elif [[ -f "/etc/kylin-release" ]]; then
dist_version="Kylin"
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA"
fi
elif [[ "$PLAT_FORM_STR" =~ "asianux" ]]; then
dist_version="Asianux"
if [ "$PLATFORM_ARCH"X == "aarch64"X ];then
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA"
fi
else
echo "We only support openEuler(aarch64), EulerOS(aarch64), CentOS, Kylin(aarch64) platform."
echo "We only support openEuler(aarch64), EulerOS(aarch64), CentOS, Kylin(aarch64), Asianux platform."
echo "Kernel is $kernel"
exit 1
fi
##add platform architecture information
if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then
if [ "$dist_version" != "openEuler" ] && [ "$dist_version" != "EulerOS" ] && [ "$dist_version" != "Kylin" ] ; then
echo "We only support NUMA on openEuler(aarch64), EulerOS(aarch64), Kylin(aarch64) platform."
if [ "$dist_version" != "openEuler" ] && [ "$dist_version" != "EulerOS" ] && [ "$dist_version" != "Kylin" ] && [ "$dist_version" != "Asianux" ]; then
echo "We only support NUMA on openEuler(aarch64), EulerOS(aarch64), Kylin(aarch64), Asianux platform."
exit 1
fi
fi
if [ "${binarylib_dir}" != 'None' ] && [ -d "${binarylib_dir}" ]; then
BUILD_TOOLS_PATH="${binarylib_dir}/buildtools/${PLAT_FORM_STR}"
PLATFORM_PATH="${binarylib_dir}/platform/${PLAT_FORM_STR}"
BINARYLIBS_PATH="${binarylib_dir}/dependency"
BUILD_TOOLS_PATH="${binarylib_dir}/buildtools"
PLATFORM_PATH="${binarylib_dir}/kernel/platform"
BINARYLIBS_PATH="${binarylib_dir}/kernel/dependency"
else
die "${binarylib_dir} not exist"
die "${binarylib_dir} doesn't exist."
fi
declare INSTALL_TOOLS_DIR=${BINARYLIBS_PATH}/install_tools_${PLAT_FORM_STR}
declare UNIX_ODBC="${BINARYLIBS_PATH}/${PLAT_FORM_STR}/unixodbc"
# 小型化
declare lite_dist_version=${dist_version}
if [ "${lite_dist_version}" == "openEuler" ]; then
lite_dist_version="OPENEULER"
elif [ "${lite_dist_version}" == "Kylin" ]; then
lite_dist_version="LYLIN"
elif [ "${lite_dist_version}" == "EulerOS" ]; then
lite_dist_version="EULER"
fi
# Comment 编译相关
gcc_version="7.3"
declare INSTALL_TOOLS_DIR=${binarylib_dir}/install_tools
declare UNIX_ODBC="${BINARYLIBS_PATH}/unixodbc"
# Comment 编译相关
gcc_version="7.3"
ccache -V >/dev/null 2>&1 && USE_CCACHE="ccache " ENABLE_CCACHE="--enable-ccache"
export CC="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc"
export CXX="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/g++"
export LD_LIBRARY_PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/lib64:$BUILD_TOOLS_PATH/gcc$gcc_version/isl/lib:$BUILD_TOOLS_PATH/gcc$gcc_version/mpc/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/mpfr/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH
export JAVA_HOME=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
export JAVA_HOME=${PLATFORM_PATH}/huaweijdk8/${PLATFORM_ARCH}/jdk
declare ERR_MKGS_FAILED=1
declare MKGS_OK=0
gaussdb_200_file="${binarylib_dir}/buildtools/license_control/gaussdb.version.GaussDB200"
gaussdb_300_file="${binarylib_dir}/buildtools/license_control/gaussdb.version.GaussDB300"
gaussdb_200_standard_file="${binarylib_dir}/buildtools/license_control/gaussdb.license.GaussDB200_Standard"
gaussdb_200_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.version.GaussDB200"
gaussdb_300_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.version.GaussDB300"
gaussdb_200_standard_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.license.GaussDB200_Standard"
gaussdb_version_file="${ROOT_DIR}/src/gausskernel/process/postmaster/gaussdb_version.cpp"
if [ -f "$SCRIPT_DIR/gaussdb.ver" ];then
declare version_number=$(cat ${SCRIPT_DIR}/gaussdb.ver | grep 'VERSION' | awk -F "=" '{print $2}')
else
@ -159,6 +174,9 @@ declare libpq_package_name="${package_pre_name}-Libpq.tar.gz"
declare tools_package_name="${package_pre_name}-tools.tar.gz"
declare kernel_package_name="${package_pre_name}.tar.bz2"
declare symbol_package_name="${package_pre_name}-symbol.tar.gz"
declare sha256_name="${package_pre_name}.sha256"
declare sha256_name="${lite_package_pre_name}.sha256"
declare lite_package_pre_name="GaussDB-Kernel-V500R002C10-${lite_dist_version}-${PLATFORM}bit"
declare lite_kernel_package_name="${lite_package_pre_name}.bin"
declare lite_libpq_package_name="${lite_package_pre_name}-Libpq.tar.gz"
declare lite_symbol_package_name="${lite_package_pre_name}-symbol.tar.gz"
declare lite_sha256_name="${lite_package_pre_name}.sha256"

View File

@ -0,0 +1,223 @@
#!/bin/bash
#######################################################################
# Copyright (c): 2020-2021, Huawei Tech. Co., Ltd.
# descript: package opengauss lite
# Return 0 means OK.
# Return 1 means failed.
# version: 1.0
# date: 2022-04-10
#######################################################################
declare UPGRADE_SQL_DIR="${ROOT_DIR}/src/include/catalog/upgrade_sql"
#######################################################################
# move pkgs to output directory
#######################################################################
function deploy_pkgs()
{
mkdir -p $package_path
for pkg in $@; do
if [ -f "$pkg" ]; then
mv $pkg $package_path/
fi
done
}
#######################################################################
# copy directory's files list to $2
#######################################################################
function copy_files_list()
{
for file in $(echo $1)
do
test -e $file && tar -cpf - $file | ( cd $2; tar -xpf - )
done
}
#######################################################################
##copy target file into temporary directory temp
#######################################################################
function target_file_copy()
{
cd ${BUILD_DIR}
copy_files_list "$1" $2
sed -i '/^process_cpu_affinity|/d' $2/bin/cluster_guc.conf
#generate tar file
echo "Begin generate ${lite_kernel_package_name} tar file..." >> "$LOG_FILE" 2>&1
cd $2
${BUILD_TOOLS_PATH}/p7z/bin/7z a -t7z -sfx "${lite_kernel_package_name}" ./* >> "$LOG_FILE" 2>&1
cd '-'
mv $2/"${lite_kernel_package_name}" ./
if [ $? -ne 0 ]; then
die "generate ${lite_kernel_package_name} failed."
fi
echo "End generate ${lite_kernel_package_name} tar file" >> "$LOG_FILE" 2>&1
#generate sha256 file
sha256_name="${lite_sha256_name}"
echo "Begin generate ${lite_sha256_name} sha256 file..." >> "$LOG_FILE" 2>&1
sha256sum "${lite_kernel_package_name}" | awk -F" " '{print $1}' > "${lite_sha256_name}"
if [ $? -ne 0 ]; then
die "generate sha256 file failed."
fi
echo "End generate ${lite_sha256_name} sha256 file" >> "$LOG_FILE" 2>&1
if [ -d "${2}" ]; then
rm -rf ${2}
fi
}
function target_file_copy_for_non_server()
{
cd ${BUILD_DIR}
copy_files_list "$1" $2
}
#######################################################################
##function prep_dest_list parse release_file_list variable represent file
#######################################################################
function prep_dest_list()
{
cd $SCRIPT_DIR
releasefile=$1
pkgname=$2
local head=$(cat $releasefile | grep "\[$pkgname\]" -n | awk -F: '{print $1}')
if [ ! -n "$head" ]; then
die "error: ono find $pkgname in the $releasefile file "
fi
local tail=$(cat $releasefile | sed "1,$head d" | grep "^\[" -n | sed -n "1p" | awk -F: '{print $1}')
if [ ! -n "$tail" ]; then
local all=$(cat $releasefile | wc -l)
let tail=$all+1-$head
fi
dest_list=$(cat $releasefile | awk "NR==$head+1,NR==$tail+$head-1")
}
#######################################################################
##back to separate_debug_symbol.sh dir
#######################################################################
function separate_symbol()
{
cd $SCRIPT_DIR
if [ "$version_mode" = "release" ]; then
chmod +x ./separate_debug_information.sh
./separate_debug_information.sh
cd $SCRIPT_DIR
mv symbols.tar.gz $lite_symbol_package_name
deploy_pkgs $lite_symbol_package_name
fi
}
function make_package_srv()
{
echo "Begin package server"
cd $SCRIPT_DIR
prep_dest_list $release_file_list 'server'
rm -rf ${BUILD_DIR}/temp
mkdir -p ${BUILD_DIR}/temp/etc
target_file_copy "$dest_list" ${BUILD_DIR}/temp
make_package_upgrade_sql
cp ${SCRIPT_DIR}/version.cfg ${BUILD_DIR}/temp
if [ $? -ne 0 ]; then
die "copy ${SCRIPT_DIR}/version.cfg to ${BUILD_DIR}/temp failed"
fi
# pkg install uninstall scripts:install.sh, uninstall.sh, opengauss_lite.conf, upgrade_errorcode.sh
for filename in install.sh uninstall.sh opengauss_lite.conf
do
if ! cp ${ROOT_DIR}/liteom/${filename} ${BUILD_DIR}/temp ; then
die "copy ${ROOT_DIR}/liteom/${filename} to ${BUILD_DIR}/temp failed"
fi
done
chmod 500 ./install.sh ./uninstall.sh
# pkg upgrade scripts:upgrade_GAUSSV5.sh, upgrade_common.sh, upgrade_config.sh, upgrade_errorcode.sh
for filename in upgrade_GAUSSV5.sh upgrade_common.sh upgrade_config.sh upgrade_errorcode.sh
do
if ! cp ${ROOT_DIR}/liteom/${filename} ${BUILD_DIR}/temp ; then
die "copy ${ROOT_DIR}/liteom/${filename} to ${BUILD_DIR}/temp failed"
fi
done
chmod 500 ./upgrade_GAUSSV5.sh
chmod 400 ./upgrade_common.sh upgrade_errorcode.sh
chmod 600 ./opengauss_lite.conf upgrade_config.sh
mkdir -p ${BUILD_DIR}/temp/dependency
cp ${BUILD_DIR}/lib/libstdc++.so.6 ${BUILD_DIR}/temp/dependency
cd ${BUILD_DIR}/temp
cp ${BUILD_DIR}/"${lite_kernel_package_name}" ./
cp ${BUILD_DIR}/"${lite_sha256_name}" ./
tar -czf "${lite_package_pre_name}.tar.gz" ./*
deploy_pkgs "${lite_package_pre_name}.tar.gz"
echo "make server(all) package success!"
}
#######################################################################
# Install all SQL files from src/distribute/include/catalog/upgrade_sql
# to INSTALL_DIR/bin/script/upgrade_sql.
# Package all SQL files and then verify them with SHA256.
#######################################################################
function make_package_upgrade_sql()
{
echo "Begin to install upgrade_sql files..."
UPGRADE_SQL_TAR="upgrade_sql.tar.gz"
UPGRADE_SQL_SHA256="upgrade_sql.sha256"
cd $SCRIPT_DIR
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
rm -rf temp
mkdir temp
cd ${BUILD_DIR}/temp
cp -r "${UPGRADE_SQL_DIR}" ./upgrade_sql
[ $? -ne 0 ] && die "Failed to cp upgrade_sql files"
tar -czf ${UPGRADE_SQL_TAR} upgrade_sql
[ $? -ne 0 ] && die "Failed to package ${UPGRADE_SQL_TAR}"
rm -rf ./upgrade_sql > /dev/null 2>&1
sha256sum ${UPGRADE_SQL_TAR} | awk -F" " '{print $1}' > "${UPGRADE_SQL_SHA256}"
[ $? -ne 0 ] && die "Failed to generate sha256 sum file for ${UPGRADE_SQL_TAR}"
chmod 600 ${UPGRADE_SQL_TAR}
chmod 600 ${UPGRADE_SQL_SHA256}
echo "Successfully packaged upgrade_sql files."
}
function make_package_libpq()
{
cd $SCRIPT_DIR
prep_dest_list $release_file_list 'libpq'
rm -rf ${BUILD_DIR}/temp
mkdir -p ${BUILD_DIR}/temp
target_file_copy_for_non_server "$dest_list" ${BUILD_DIR}/temp
if [ "$version_mode" != "memcheck" ]; then
# copy include file
prep_dest_list $release_file_list 'header'
target_file_copy_for_non_server "$dest_list" ${BUILD_DIR}/temp
fi
cd ${BUILD_DIR}/temp
echo "packaging libpq..."
tar -zvcf "${lite_libpq_package_name}" ./* >>"$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
die "$package_command ${lite_libpq_package_name} failed"
fi
deploy_pkgs ${lite_libpq_package_name}
echo "install $pkgname tools is ${lite_libpq_package_name} of ${package_path} directory " >> "$LOG_FILE" 2>&1
echo "success!"
}
function gaussdb_pkg()
{
echo "Start package opengauss."
separate_symbol
make_package_srv
make_package_libpq
echo "End package opengauss."
}

View File

@ -142,8 +142,8 @@ function install_gaussdb()
echo "WARNING: do not separate symbol in debug mode!"
fi
if [ "$product_mode" != "opengauss" ]; then
die "the product mode can only be opengauss!"
if [ "$product_mode" != "opengauss" -a "$product_mode" != "lite" ]; then
die "the product mode can only be opengauss, lite!"
fi
#configure
@ -176,6 +176,20 @@ function install_gaussdb()
else
./configure $shared_opt CFLAGS="-O0 ${GAUSSDB_EXTRA_FLAGS}" --enable-mot --enable-debug --enable-cassert CC=g++ $extra_config_opt >> "$LOG_FILE" 2>&1
fi
elif [ "$product_mode"x == "lite"x ]; then
shared_opt="--gcc-version=${gcc_version}.0 --prefix="${BUILD_DIR}" --3rd=${binarylib_dir} --enable-thread-safety ${enable_readline} --without-zlib --without-gssapi --without-krb5"
if [ "$version_mode"x == "release"x ]; then
# configure -D__USE_NUMA -D__ARM_LSE with arm single mode
if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then
echo "configure -D__USE_NUMA -D__ARM_LSE with arm single mode"
GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA -D__ARM_LSE"
fi
./configure $shared_opt CFLAGS="-O2 -g3 ${GAUSSDB_EXTRA_FLAGS}" CC=g++ $extra_config_opt --enable-lite-mode >> "$LOG_FILE" 2>&1
elif [ "$version_mode"x == "memcheck"x ]; then
./configure $shared_opt CFLAGS='-O0' --enable-debug --enable-cassert --enable-memory-check CC=g++ $extra_config_opt --enable-lite-mode >> "$LOG_FILE" 2>&1
else
./configure $shared_opt CFLAGS="-O0 ${GAUSSDB_EXTRA_FLAGS}" --enable-debug --enable-cassert CC=g++ $extra_config_opt --enable-lite-mode>> "$LOG_FILE" 2>&1
fi
fi
if [ $? -ne 0 ]; then
@ -258,9 +272,6 @@ function install_gaussdb()
chmod 444 ${BUILD_DIR}/bin/cluster_guc.conf
dos2unix ${BUILD_DIR}/bin/cluster_guc.conf > /dev/null 2>&1
separate_symbol
get_kernel_commitid
}

View File

@ -4,8 +4,8 @@
./bin/gstrace
./bin/gs_dump
./bin/gs_dumpall
./bin/gs_initdb
./bin/gs_ctl
./bin/gs_initdb
./bin/gs_guc
./bin/gs_restore
./bin/pg_config
@ -41,12 +41,11 @@
./share/postgresql/extension/file_fdw.control
./share/postgresql/extension/hstore--unpackaged--1.0.sql
./share/postgresql/extension/hstore--1.0--1.1.sql
./share/postgresql/extension/hdfs_fdw--1.0.sql
./share/postgresql/extension/hdfs_fdw.control
./share/postgresql/extension/log_fdw--1.0.sql
./share/postgresql/extension/log_fdw.control
./share/postgresql/extension/postgres_fdw--1.0.sql
./share/postgresql/extension/postgres_fdw.control
./share/postgresql/extension/packages--1.0.sql
./share/postgresql/extension/packages--1.0--1.1.sql
./share/postgresql/extension/packages.control
./share/postgresql/timezone/GB-Eire
./share/postgresql/timezone/Turkey
./share/postgresql/timezone/Kwajalein
@ -618,6 +617,23 @@
./share/postgresql/timezone/Asia/Yakutsk
./share/postgresql/timezone/Asia/Magadan
./share/postgresql/timezone/Asia/Amman
./share/postgresql/timezone/Asia/Barnaul
./share/postgresql/timezone/Asia/Chita
./share/postgresql/timezone/Asia/Tomsk
./share/postgresql/timezone/Asia/Atyrau
./share/postgresql/timezone/Asia/Famagusta
./share/postgresql/timezone/Asia/Qostanay
./share/postgresql/timezone/Asia/Srednekolymsk
./share/postgresql/timezone/Asia/Yangon
./share/postgresql/timezone/Pacific/Bougainville
./share/postgresql/timezone/Antarctica/Troll
./share/postgresql/timezone/Europe/Astrakhan
./share/postgresql/timezone/Europe/Ulyanovsk
./share/postgresql/timezone/Europe/Kirov
./share/postgresql/timezone/Europe/Saratov
./share/postgresql/timezone/America/Fort_Nelson
./share/postgresql/timezone/America/Nuuk
./share/postgresql/timezone/America/Punta_Arenas
./share/postgresql/timezone/Asia/Kuching
./share/postgresql/timezone/Asia/Novosibirsk
./share/postgresql/timezone/Asia/Seoul
@ -634,6 +650,7 @@
./share/postgresql/timezone/Navajo
./share/postgresql/timezone/GMT
./share/postgresql/system_views.sql
./share/postgresql/private_system_views.sql
./share/postgresql/performance_views.sql
./share/postgresql/sql_features.txt
./share/postgresql/pg_cast_oid.txt
@ -682,18 +699,16 @@
./lib/libcrypto.so.1.1
./lib/libcgroup.so
./lib/libcgroup.so.1
./lib/libz.so
./lib/libz.so.1
./lib/libz.so.1.2.11
./lib/libz.so*
./lib/liblz4.so
./lib/liblz4.so.1
./lib/liblz4.so.1.9.2
./lib/liblz4.so.1.9.3
./lib/libcjson.so
./lib/libcjson.so.1
./lib/libcjson.so.1.7.14
./lib/libcjson.so.1.7.15
./lib/libcjson_utils.so
./lib/libcjson_utils.so.1
./lib/libcjson_utils.so.1.7.14
./lib/libcjson_utils.so.1.7.15
./lib/libstdc++.so.6
./lib/libgcc_s.so.1
./lib/libgomp.so
@ -725,6 +740,7 @@
./lib/postgresql/utf8_and_sjis.so
./lib/postgresql/utf8_and_cyrillic.so
./lib/postgresql/hstore.so
./lib/postgresql/packages.so
./lib/postgresql/utf8_and_euc_kr.so
./lib/postgresql/ascii_and_mic.so
./lib/postgresql/utf8_and_iso8859_1.so
@ -739,9 +755,11 @@
./lib/postgresql/utf8_and_euc2004.so
./lib/postgresql/utf8_and_big5.so
./lib/postgresql/mppdb_decoding.so
./lib/postgresql/sql_decoding.so
./lib/postgresql/pg_plugin
./lib/postgresql/proc_srclib
./lib/postgresql/security_plugin.so
./lib/postgresql/pg_upgrade_support.so
./lib/postgresql/latin2_and_win1250.so
./lib/postgresql/euc2004_sjis2004.so
./lib/libxgboost.so
@ -899,14 +917,15 @@
./include/postgresql/server/pgxc/locator.h
./include/postgresql/server/gstrace/gstrace_infra.h
[libpq]
./lib/libpq.so
./lib/libpq.so.5
./lib/libpq.so.5.5
./lib/libcrypto.so
./lib/libcrypto.so.1.1
./lib/libssl.so
./lib/libssl.so.1.1
./lib/libpq.so
./lib/libpq.so.5
./lib/libpq.so.5.5
[header]
./include/libpq/libpq-fs.h
./include/libpq-fe.h
./include/postgres_ext.h
./include/gs_thread.h
@ -920,4 +939,4 @@
./include/pqcomm.h
./include/pqexpbuffer.h
[version]
3.0.0
3.0.3

View File

@ -69,8 +69,6 @@
./share/postgresql/extension/file_fdw.control
./share/postgresql/extension/hstore--unpackaged--1.0.sql
./share/postgresql/extension/hstore--1.0--1.1.sql
./share/postgresql/extension/hdfs_fdw--1.0.sql
./share/postgresql/extension/hdfs_fdw.control
./share/postgresql/extension/log_fdw--1.0.sql
./share/postgresql/extension/log_fdw.control
./share/postgresql/extension/mot_fdw--1.0.sql
@ -649,6 +647,23 @@
./share/postgresql/timezone/Asia/Yakutsk
./share/postgresql/timezone/Asia/Magadan
./share/postgresql/timezone/Asia/Amman
./share/postgresql/timezone/Asia/Barnaul
./share/postgresql/timezone/Asia/Chita
./share/postgresql/timezone/Asia/Tomsk
./share/postgresql/timezone/Asia/Atyrau
./share/postgresql/timezone/Asia/Famagusta
./share/postgresql/timezone/Asia/Qostanay
./share/postgresql/timezone/Asia/Srednekolymsk
./share/postgresql/timezone/Asia/Yangon
./share/postgresql/timezone/Pacific/Bougainville
./share/postgresql/timezone/Antarctica/Troll
./share/postgresql/timezone/Europe/Astrakhan
./share/postgresql/timezone/Europe/Ulyanovsk
./share/postgresql/timezone/Europe/Kirov
./share/postgresql/timezone/Europe/Saratov
./share/postgresql/timezone/America/Fort_Nelson
./share/postgresql/timezone/America/Nuuk
./share/postgresql/timezone/America/Punta_Arenas
./share/postgresql/timezone/Asia/Kuching
./share/postgresql/timezone/Asia/Novosibirsk
./share/postgresql/timezone/Asia/Seoul
@ -722,7 +737,6 @@
./lib/postgresql/pgxs/src/Makefile.port
./lib/postgresql/pgxs/src/nls-global.mk
./lib/postgresql/pgxs/src/Makefile.global
./lib/postgresql/pgxs/src/get_PlatForm_str.sh
./lib/postgresql/pgxs/config/install-sh
./lib/postgresql/euc_cn_and_mic.so
./lib/postgresql/latin_and_mic.so
@ -832,12 +846,10 @@
./lib/libssl.so.1.1
./lib/libgcc_s.so.1
./lib/libstdc++.so.6
./lib/libz.so
./lib/libz.so.1
./lib/libz.so.1.2.11
./lib/libz.so*
./lib/liblz4.so
./lib/liblz4.so.1
./lib/liblz4.so.1.9.2
./lib/liblz4.so.1.9.3
./lib/libcjson.so*
./lib/libconfig.so
./lib/libconfig.so.4
@ -853,12 +865,6 @@
./lib/libpcre.so*
./lib/libsecurec.so
./lib/libxml2.so*
./lib/libparquet.so
./lib/libparquet.so.14
./lib/libparquet.so.14.1.0
./lib/libarrow.so
./lib/libarrow.so.14
./lib/libarrow.so.14.1.0
./lib/OBS.ini
./lib/postgresql/latin2_and_win1250.so
./lib/postgresql/euc2004_sjis2004.so

View File

@ -198,7 +198,7 @@ ENDMACRO(CHECK_CC_ENABLE)
function(GET_VERSIONSTR_FROMGIT ret)
set(PG_VERSION "9.2.4")
set(OPENGAUSS_VERSION "3.0.0")
set(OPENGAUSS_VERSION "3.0.3")
execute_process(
COMMAND ${CMAKE_SOURCE_DIR}/${openGauss}/cmake/src/buildfunction.sh --s ${PROJECT_TRUNK_DIR} OUTPUT_VARIABLE GS_VERSION_STR)
set(PG_VERSION "${PG_VERSION}" PARENT_SCOPE)

View File

@ -52,6 +52,8 @@ option(ENABLE_PRIVATEGAUSS "enable privategauss,the old is --enable-pribategauss
option(ENABLE_LITE_MODE "enable lite in single_node mode,the old is --enable-lite-mode" OFF)
option(ENABLE_DEBUG "enable privategauss,the old is --enable-pribategauss" OFF)
option(ENABLE_MOT "enable mot in single_node mode,the old is --enable-mot" OFF)
option(ENABLE_NUMA "enable numa,the old is --enable-numa" ON)
option(ENABLE_LSE "enable lse,the old is --enable-lse" ON)
option(ENABLE_MYSQL_FDW "enable export or import data with mysql,the old is --enable-mysql-fdw" OFF)
option(ENABLE_ORACLE_FDW "enable export or import data with oracle,the old is --enable-oracle-fdw" OFF)
option(BUILD_BY_CMAKE "the BUILD_BY_CMAKE is new,used in distribute pg_regress.cpp" ON)
@ -112,7 +114,7 @@ if($ENV{DEBUG_TYPE} STREQUAL "debug" OR $ENV{DEBUG_TYPE} STREQUAL "memcheck")
endif()
if(${BUILD_TUPLE} STREQUAL "aarch64")
if($ENV{DEBUG_TYPE} STREQUAL "release" AND ${ENABLE_MULTIPLE_NODES} STREQUAL "OFF")
if($ENV{DEBUG_TYPE} STREQUAL "release" AND ${ENABLE_MULTIPLE_NODES} STREQUAL "OFF" AND ${ENABLE_LSE} STREQUAL "ON")
set(DB_COMMON_DEFINE ${DB_COMMON_DEFINE} -D__ARM_LSE)
set(OS_OPTIONS -march=armv8-a+crc+lse)
else()
@ -120,7 +122,7 @@ if(${BUILD_TUPLE} STREQUAL "aarch64")
endif()
endif()
if(${BUILD_TUPLE} STREQUAL "aarch64")
if(${BUILD_TUPLE} STREQUAL "aarch64" AND ${ENABLE_NUMA} STREQUAL "ON")
if(NOT $ENV{DEBUG_TYPE} STREQUAL "memcheck")
set(DB_COMMON_DEFINE ${DB_COMMON_DEFINE} -D__USE_NUMA)
endif()
@ -171,7 +173,7 @@ set(MEMCHECK_LIBS "")
set(MEMCHECK_LINK_DIRECTORIES "")
if(${ENABLE_MEMORY_CHECK})
set(MEMCHECK_FLAGS ${MEMCHECK_FLAGS} -fsanitize=address -fsanitize=leak -fno-omit-frame-pointer)
set(MEMCHECK_LIBS ${MEMCHECK_LIBS} libasan.a)
set(MEMCHECK_LIBS ${MEMCHECK_LIBS} -static-libasan)
set(MEMCHECK_LINK_DIRECTORIES ${MEMCHECK_LINK_DIRECTORIES} ${MEMCHECK_LIB_PATH})
set(GAUSSDB_CONFIGURE "${GAUSSDB_CONFIGURE} -DENABLE_MEMORY_CHECK")
list(REMOVE_ITEM LIB_SECURE_OPTIONS -fstack-protector)
@ -183,7 +185,7 @@ set(THREAD_LIBS "")
set(THREAD_LINK_DIRECTORIES "")
if(${ENABLE_THREAD_CHECK})
set(THREAD_FLAGS ${THREAD_FLAGS} -fsanitize=thread -fno-omit-frame-pointer)
set(THREAD_LIBS ${THREAD_LIBS} libtsan.a)
set(THREAD_LIBS ${THREAD_LIBS} -static-libtsan)
set(THREAD_LINK_DIRECTORIES ${THREAD_LINK_DIRECTORIES} ${MEMCHECK_LIB_PATH})
set(GAUSSDB_CONFIGURE "${GAUSSDB_CONFIGURE} -DENABLE_THREAD_CHECK")
endif()
@ -244,31 +246,31 @@ add_definitions(-Wno-builtin-macro-redefined)
SET_GCC_FLAGS(DB_COMMON_FLAGS "")
#hotpatch
set(HOTPATCH_PLATFORM_LIST suse11_sp1_x86_64 suse12_sp5_x86_64 euleros2.0_sp8_aarch64 euleros2.0_sp9_aarch64 euleros2.0_sp10_aarch64 euleros2.0_sp2_x86_64 euleros2.0_sp5_x86_64 euleros2.0_sp10_x86_64 kylinv10_sp1_aarch64 kylinv10_sp1_x86_64_intel)
set(HOTPATCH_ARM_LIST euleros2.0_sp8_aarch64 euleros2.0_sp9_aarch64 euleros2.0_sp10_aarch64 kylinv10_sp1_aarch64)
list(FIND HOTPATCH_PLATFORM_LIST "${PLAT_FORM_NAME}" RET_HOTPATCH)
list(FIND HOTPATCH_ARM_LIST "${PLAT_FORM_NAME}" RET_ARM_HOTPATCH)
if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
if(NOT "${RET_HOTPATCH}" STREQUAL "-1")
if("${GCC_VERSION}" STREQUAL "7.3.0")
set(RET_ARM_HOTPATCH "no")
if("${CURRENT_ARCH}" STREQUAL "aarch64")
set(RET_ARM_HOTPATCH "yes")
endif()
set(SUPPORT_HOTPATCH "no")
if(EXISTS ${LIBHOTPATCH_LIB_PATH}/libdoprapatch.a)
if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
if(NOT "${ENABLE_LITE_NODES}" STREQUAL "ON")
set(SUPPORT_HOTPATCH "yes")
if(NOT ${RET_ARM_HOTPATCH} EQUAL -1)
set(HOTPATCH_ATOMIC_LDS -Wl,-T${LIBHOTPATCH_TOOL_PATH}/atomic.lds)
endif()
else()
set(SUPPORT_HOTPATCH "no")
endif()
else()
endif()
endif()
if("${SUPPORT_HOTPATCH}_${RET_ARM_HOTPATCH}" STREQUAL "yes_yes")
set(HOTPATCH_ATOMIC_LDS -Wl,-T${LIBHOTPATCH_TOOL_PATH}/atomic.lds)
endif()
if(EXISTS ${LIBHOTPATCH_SPEC_PATH}/x86_nop.spec)
if("${ENABLE_DEBUG}" STREQUAL "ON")
set(SUPPORT_HOTPATCH "no")
endif()
else()
set(SUPPORT_HOTPATCH "no")
if("${SUPPORT_HOTPATCH}" STREQUAL "yes")
list(REMOVE_ITEM OPTIMIZE_OPTIONS -pipe)
list(APPEND OPTIMIZE_OPTIONS -specs=${LIBHOTPATCH_SPEC_PATH}/x86_nop.spec)
set(HOTPATCH_ATOMIC_LDS -Wl,-T${LIBHOTPATCH_TOOL_PATH}/atomic.lds)
endif()
endif()
if(${ENABLE_LITE_MODE} STREQUAL "ON")
set(SUPPORT_HOTPATCH "no")
endif()
if(${ENABLE_LLVM_COMPILE} STREQUAL "ON")
# LLVM version
execute_process(COMMAND ${LLVM_CONFIG} --version OUTPUT_VARIABLE LLVM_VERSION_STR OUTPUT_STRIP_TRAILING_WHITESPACE)

View File

@ -714,7 +714,7 @@
#define PGXC_VERSION_NUM
/* openGauss version as a number string */
#define OPENGAUSS_VERSION_NUM_STR "3.0.0"
#define OPENGAUSS_VERSION_NUM_STR "3.0.3"
/* A string containing the version number, platform, and C compiler */
#define PG_VERSION_STR "@PG_VERSION_STR@"

View File

@ -695,7 +695,7 @@
#define PG_VERSION "9.2.4"
/* openGauss version as a string */
#define OPENGAUSS_VERSION "3.0.0"
#define OPENGAUSS_VERSION "3.0.3"
/* Gaussdb version as a string*/
#define DEF_GS_VERSION "(GaussDB A 8.0.0 build 21f07aff) compiled at 2020-03-17 10:59:07 commit 7431 last mr 12039 debug"

View File

@ -5,12 +5,10 @@ option(ENABLE_LLT "enable llt, current value is --enable-llt" OFF)
option(ENABLE_UT "enable ut, current value is --enable-ut" OFF)
option(WITH_OPENEULER_OS "Build openGauss rpm package on openEuler os" OFF)
execute_process(COMMAND sh ${PROJECT_SRC_DIR}/get_PlatForm_str.sh OUTPUT_VARIABLE PLAT_FORM_STR OUTPUT_STRIP_TRAILING_WHITESPACE)
#############################################################################
# get the depend lib path
# 1. libedit, event, libcgroup, kerberos, zlib1.2.11, boost,
# libxml and protobuf are support parameter --enable-llt and --enable-ut;
# libxml are support parameter --enable-llt and --enable-ut;
# $(LIB_SUPPORT_LLT)
# 2. Huawei_Secure_C, gtest, mockcpp, unixodbc, libstd
# and openssl not support parameter --enable-llt and --enable-ut;
@ -37,12 +35,11 @@ endif()
set(LIB_UNIFIED_SUPPORT comm)
set(MEMCHECK_BUILD_TYPE debug)
set(DEPENDENCY_PATH ${3RD_PATH}/dependency/${PLAT_FORM_STR})
set(PLATFORM_PATH ${3RD_PATH}/platform/${PLAT_FORM_STR})
set(BUILDTOOLS_PATH ${3RD_PATH}/buildtools/${PLAT_FORM_STR})
set(COMPONENT_PATH ${3RD_PATH}/component/${PLAT_FORM_STR})
set(DEPENDENCY_PATH ${3RD_PATH}/kernel/dependency)
set(PLATFORM_PATH ${3RD_PATH}/kernel/platform)
set(BUILDTOOLS_PATH ${3RD_PATH}/buildtools)
set(COMPONENT_PATH ${3RD_PATH}/kernel/component)
set(MEMCHECK_HOME ${DEPENDENCY_PATH}/memcheck/${MEMCHECK_BUILD_TYPE})
set(CJSON_HOME ${DEPENDENCY_PATH}/cjson/${SUPPORT_LLT})
set(ETCD_HOME ${DEPENDENCY_PATH}/etcd/${LIB_UNIFIED_SUPPORT})
set(EVENT_HOME ${DEPENDENCY_PATH}/event/${LIB_UNIFIED_SUPPORT})
@ -59,8 +56,6 @@ set(CGROUP_HOME ${DEPENDENCY_PATH}/libcgroup/${SUPPORT_LLT})
set(CURL_HOME ${DEPENDENCY_PATH}/libcurl/${SUPPORT_LLT})
set(EDIT_HOME ${DEPENDENCY_PATH}/libedit/${SUPPORT_LLT})
set(OBS_HOME ${DEPENDENCY_PATH}/libobs/${LIB_UNIFIED_SUPPORT})
set(ORC_HOME ${DEPENDENCY_PATH}/liborc/${SUPPORT_LLT})
set(PARQUET_HOME ${DEPENDENCY_PATH}/libparquet/${SUPPORT_LLT})
set(XML2_HOME ${DEPENDENCY_PATH}/libxml2/${SUPPORT_LLT})
set(LLVM_HOME ${DEPENDENCY_PATH}/llvm/${LIB_UNIFIED_SUPPORT})
set(LZ4_HOME ${DEPENDENCY_PATH}/lz4/${SUPPORT_LLT})
@ -68,15 +63,12 @@ set(NANOMSG_HOME ${DEPENDENCY_PATH}/nanomsg/${LIB_UNIFIED_SUPPORT})
set(NCURSES_HOME ${DEPENDENCY_PATH}/ncurses/${SUPPORT_LLT})
set(OPENSSL_HOME ${DEPENDENCY_PATH}/openssl/${LIB_UNIFIED_SUPPORT})
set(PLJAVA_HOME ${DEPENDENCY_PATH}/pljava/${LIB_UNIFIED_SUPPORT})
if (EXISTS "${3RD_PATH}/platform/openjdk8/${BUILD_TUPLE}/jdk")
set(JAVA_HOME ${3RD_PATH}/platform/openjdk8/${BUILD_TUPLE}/jdk)
if (EXISTS "${PLATFORM_PATH}/openjdk8/${BUILD_TUPLE}/jdk")
set(JAVA_HOME ${PLATFORM_PATH}/openjdk8/${BUILD_TUPLE}/jdk)
else()
set(JAVA_HOME ${3RD_PATH}/platform/huaweijdk8/${BUILD_TUPLE}/jdk)
set(JAVA_HOME ${PLATFORM_PATH}/huaweijdk8/${BUILD_TUPLE}/jdk)
endif()
set(PROTOBUF_HOME ${DEPENDENCY_PATH}/protobuf/${SUPPORT_LLT})
set(THRIFT_HOME ${DEPENDENCY_PATH}/thrift)
set(SNAPPY_HOME ${DEPENDENCY_PATH}/snappy/${LIB_UNIFIED_SUPPORT})
set(ZLIB_HOME ${DEPENDENCY_PATH}/zlib1.2.11/${SUPPORT_LLT})
set(ZLIB_HOME ${DEPENDENCY_PATH}/zlib1.2.12/${SUPPORT_LLT})
set(XGBOOST_HOME ${DEPENDENCY_PATH}/xgboost/${SUPPORT_LLT})
set(ZSTD_HOME ${DEPENDENCY_PATH}/zstd)
set(LICENSE_HOME ${PLATFORM_PATH}/AdaptiveLM_C_V100R005C01SPC002/${SUPPORT_LLT})
@ -86,19 +78,19 @@ set(DCF_HOME ${COMPONENT_PATH}/dcf)
set(MOCKCPP_HOME ${BUILDTOOLS_PATH}/mockcpp/${LIB_UNIFIED_SUPPORT})
set(GTEST_HOME ${BUILDTOOLS_PATH}/gtest/${LIB_UNIFIED_SUPPORT})
set(LIBSTD_HOME ${BUILDTOOLS_PATH}/gcc${GCC_VERSION_LIT}/${LIB_UNIFIED_SUPPORT})
set(MASSTREE_HOME ${BUILDTOOLS_PATH}/masstree/${LIB_UNIFIED_SUPPORT})
set(NUMA_HOME ${DEPENDENCY_PATH}/numactl/${SUPPORT_LLT})
set(ARROW_HOME ${DEPENDENCY_PATH}/libparquet/${SUPPORT_LLT})
set(BOOST_HOME ${DEPENDENCY_PATH}/boost/${SUPPORT_LLT})
set(ODBC_HOME ${3RD_PATH}/dependency/${PLAT_FORM_STR}/unixodbc)
set(ODBC_HOME ${DEPENDENCY_PATH}/unixodbc)
set(MASSTREE_HOME ${DEPENDENCY_PATH}/masstree/${LIB_UNIFIED_SUPPORT})
set(LCOV_HOME ${BUILDTOOLS_PATH}/gcc${GCC_VERSION_LIT}/gcc/lib/gcc/${HOST_TUPLE})
#############################################################################
# memcheck
#############################################################################
set(MEMCHECK_LIB_PATH ${MEMCHECK_HOME}/gcc${GCC_VERSION}/lib/)
set(GCC_LIB_PATH $ENV{GCC_INSTALL_HOME})
set(MEMCHECK_LIB_PATH $ENV{GCC_INSTALL_HOME}/lib64/)
if("${GCC_LIB_PATH}" STREQUAL "")
set(GCC_LIB_PATH ${BUILDTOOLS_PATH}/gcc${GCC_VERSION_LIT}/gcc)
set(MEMCHECK_HOME ${DEPENDENCY_PATH}/memcheck/${MEMCHECK_BUILD_TYPE})
set(MEMCHECK_LIB_PATH ${MEMCHECK_HOME}/gcc${GCC_VERSION}/lib/)
endif()
#############################################################################
# lcov
@ -205,18 +197,6 @@ set(LIBEDIT_LIB_PATH ${EDIT_HOME}/lib)
set(LIBOBS_INCLUDE_PATH ${OBS_HOME}/include)
set(LIBOBS_LIB_PATH ${OBS_HOME}/lib)
#############################################################################
# orc component
#############################################################################
set(LIBORC_INCLUDE_PATH ${ORC_HOME}/include)
set(LIBORC_LIB_PATH ${ORC_HOME}/lib)
#############################################################################
# parquet component
#############################################################################
set(LIBPARQUET_INCLUDE_PATH ${PARQUET_HOME}/include)
set(LIBPARQUET_LIB_PATH ${PARQUET_HOME}/lib)
#############################################################################
# xml2 component
#############################################################################
@ -258,25 +238,6 @@ set(LIBOPENSSL_LIB_PATH ${OPENSSL_HOME}/lib)
set(LIBOPENSSL_SSL_PATH ${OPENSSL_HOME}/ssl)
set(LIBOPENSSL_INCLUDE_PATH ${OPENSSL_HOME}/include)
#############################################################################
# protobuf component
#############################################################################
set(PROTOBUF_INCLUDE_PATH ${PROTOBUF_HOME}/include)
set(PROTOBUF_LIB_PATH ${PROTOBUF_HOME}/lib)
#############################################################################
# thrift component
#############################################################################
set(LIBTHRIFT_INCLUDE_PATH ${THRIFT_HOME}/include)
set(LIBTHRIFT_LIB_PATH ${THRIFT_HOME}/lib)
set(LIBTHRIFT_BIN_PATH ${THRIFT_HOME}/bin)
#############################################################################
# snappy component
#############################################################################
set(SNAPPY_INCLUDE_PATH ${SNAPPY_HOME}/include)
set(SNAPPY_LIB_PATH ${SNAPPY_HOME}/lib)
#############################################################################
# zlib component
#############################################################################
@ -314,6 +275,7 @@ set(LIBHOTPATCH_INCLUDE_PATH ${HOTPATCH_HOME}/include)
set(LIBHOTPATCH_LIB_PATH ${HOTPATCH_HOME}/lib)
set(LIBHOTPATCH_TOOL_PATH ${HOTPATCH_HOME}/tool)
set(LIBHOTPATCH_CONFIG_PATH ${HOTPATCH_HOME}/config)
set(LIBHOTPATCH_SPEC_PATH ${HOTPATCH_HOME}/spec)
#############################################################################
# secure component
@ -327,12 +289,6 @@ set(SECURE_LIB_PATH ${SECURE_HOME}/lib)
set(NUMA_INCLUDE_PATH ${NUMA_HOME}/include)
set(NUMA_LIB_PATH ${NUMA_HOME}/lib)
#############################################################################
# arrow component
#############################################################################
set(ARROW_INCLUDE_PATH ${ARROW_HOME}/include)
set(ARROW_LIB_PATH ${ARROW_HOME}/lib)
#############################################################################
# odbc component
#############################################################################

30
configure vendored
View File

@ -2195,7 +2195,7 @@ PACKAGE_VERSION='9.2.4'
# Postgres-XC 1.1devel is based on PostgreSQL 9.2.4
PACKAGE_XC_VERSION='1.1'
# openGauss is based on PostgreSQL 9.2.4 and it will be the Kernel of GaussDB database
OPENGAUSS_VERSION='3.0.0'
OPENGAUSS_VERSION='3.0.3'
cat >>confdefs.h <<_ACEOF
#define PG_VERSION "$PACKAGE_VERSION"
@ -5890,8 +5890,7 @@ fi
llvm_version_str='10.0.0'
if [[ ! -z "${with_3rdpartydir}" ]] && [[ "$enable_lite_mode" != yes ]]; then
platstr=$(sh src/get_PlatForm_str.sh)
llvm_version_str=`${with_3rdpartydir}/dependency/${platstr}/llvm/comm/bin/llvm-config --version`
llvm_version_str=`${with_3rdpartydir}/kernel/dependency/llvm/comm/bin/llvm-config --version`
fi
llvm_major_version=$(echo $llvm_version_str | awk -F "." '{print $1}')
llvm_minor_version=$(echo $llvm_version_str | awk -F "." '{print $2}')
@ -6622,18 +6621,17 @@ fi
#
with_jdk=''
if [[ ! -z "${with_3rdpartydir}" ]] && [[ "$with_openeuler_os" != yes ]]; then
platstr=$(sh src/get_PlatForm_str.sh)
cpuarch=$(uname -m)
for d in "openjdk8" "huaweijdk8"; do
$as_echo "$as_me:$LINENO: checking for jdk in ${with_3rdpartydir}/platform/${d}/${cpuarch}" >&5
if [ ! -d "${with_3rdpartydir}/platform/${d}/${cpuarch}" ]; then
$as_echo "$as_me:$LINENO: checking for jdk in ${with_3rdpartydir}/kernel/platform/${d}/${cpuarch}" >&5
if [ ! -d "${with_3rdpartydir}/kernel/platform/${d}/${cpuarch}" ]; then
$as_echo "$as_me:$LINENO: result: no" >&5
continue
fi
for d2 in $(ls "${with_3rdpartydir}/platform/${d}/${cpuarch}" | sort -r 2>/dev/null); do
if [ -f "${with_3rdpartydir}/platform/${d}/${cpuarch}/${d2}/jre/bin/java" ]; then
with_jdk="${with_3rdpartydir}/platform/${d}/${cpuarch}/${d2}"
for d2 in $(ls "${with_3rdpartydir}/kernel/platform/${d}/${cpuarch}" | sort -r 2>/dev/null); do
if [ -f "${with_3rdpartydir}/kernel/platform/${d}/${cpuarch}/${d2}/jre/bin/java" ]; then
with_jdk="${with_3rdpartydir}/kernel/platform/${d}/${cpuarch}/${d2}"
break;
fi
done
@ -6643,15 +6641,15 @@ if [[ ! -z "${with_3rdpartydir}" ]] && [[ "$with_openeuler_os" != yes ]]; then
break;
fi
$as_echo "$as_me:$LINENO: checking for jdk in ${with_3rdpartydir}/platform/${platstr}/${d}" >&5
if [ ! -d "${with_3rdpartydir}/platform/${platstr}/${d}" ]; then
$as_echo "$as_me:$LINENO: checking for jdk in ${with_3rdpartydir}/kernel/platform/${d}" >&5
if [ ! -d "${with_3rdpartydir}/kernel/platform/${d}" ]; then
$as_echo "$as_me:$LINENO: result: no" >&5
continue
fi
for d2 in $(ls "${with_3rdpartydir}/platform/${platstr}/${d}" | sort -r 2>/dev/null); do
if [ -f "${with_3rdpartydir}/platform/${platstr}/${d}/${d2}/jre/bin/java" ]; then
with_jdk="${with_3rdpartydir}/platform/${platstr}/${d}/${d2}"
for d2 in $(ls "${with_3rdpartydir}/kernel/platform/${d}" | sort -r 2>/dev/null); do
if [ -f "${with_3rdpartydir}/kernel/platform/${d}/${d2}/jre/bin/java" ]; then
with_jdk="${with_3rdpartydir}/kernel/platform/${d}/${d2}"
break;
fi
done
@ -29832,8 +29830,8 @@ CFLAGS="-DSTREAMPLAN $CFLAGS"
# force set char to signed char
CFLAGS="-fsigned-char $CFLAGS"
platform_version=`sh ./src/get_PlatForm_str.sh`
is_euler=`echo $platform_version | grep euleros`
release_file=`find /etc/ -name "euleros-release"`
is_euler=`echo $release_file | grep EulerOS`
# New gcc version should be compatible to old one
if test "$CC_VERSION" = "$NEW_GCC"; then
CFLAGS=" -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0 $CFLAGS -fno-aggressive-loop-optimizations -Wno-attributes -fno-omit-frame-pointer -fno-expensive-optimizations"

View File

@ -4,10 +4,9 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_RULE_MESSAGES OFF)
set(CMAKE_SKIP_RPATH TRUE)
INCLUDE_DIRECTORIES(${LIBTHRIFT_INCLUDE_PATH} ${SNAPPY_INCLUDE_PATH} ${CJSON_INCLUDE_PATH} ${BOOST_INCLUDE_PATH})
INCLUDE_DIRECTORIES(${CJSON_INCLUDE_PATH} ${BOOST_INCLUDE_PATH})
set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/carbondata
set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/gsredistribute
${CMAKE_CURRENT_SOURCE_DIR}/hstore
${CMAKE_CURRENT_SOURCE_DIR}/test_decoding
@ -21,7 +20,6 @@ set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/pagehack
${CMAKE_CURRENT_SOURCE_DIR}/pg_xlogdump
${CMAKE_CURRENT_SOURCE_DIR}/file_fdw
${CMAKE_CURRENT_SOURCE_DIR}/hdfs_fdw
${CMAKE_CURRENT_SOURCE_DIR}/log_fdw
${CMAKE_CURRENT_SOURCE_DIR}/gc_fdw
)
@ -40,7 +38,6 @@ add_subdirectory(dummy_seclabel)
add_subdirectory(pagehack)
add_subdirectory(pg_xlogdump)
add_subdirectory(file_fdw)
add_subdirectory(hdfs_fdw)
add_subdirectory(log_fdw)
if("${ENABLE_MULTIPLE_NODES}" STREQUAL "OFF")
add_subdirectory(gc_fdw)

View File

@ -61,6 +61,19 @@ static int32 gbt_textcmp(const void* a, const void* b, Oid collation)
return DatumGetInt32(DirectFunctionCall2Coll(bttextcmp, collation, PointerGetDatum(a), PointerGetDatum(b)));
}
static Datum gbt_rtrim1(PG_FUNCTION_ARGS)
{
text* string = PG_GETARG_TEXT_PP(0);
text* ret = NULL;
ret = dotrim(VARDATA_ANY(string), VARSIZE_ANY_EXHDR(string), " ", 1, false, true);
if ((ret == NULL || 0 == VARSIZE_ANY_EXHDR(ret)) && u_sess->attr.attr_sql.sql_compatibility == A_FORMAT)
PG_RETURN_NULL();
else
PG_RETURN_TEXT_P(ret);
}
static gbtree_vinfo tinfo = {
gbt_t_text, 0, FALSE, gbt_textgt, gbt_textge, gbt_texteq, gbt_textle, gbt_textlt, gbt_textcmp, NULL};
@ -91,7 +104,7 @@ Datum gbt_bpchar_compress(PG_FUNCTION_ARGS)
if (entry->leafkey) {
Datum d = DirectFunctionCall1(rtrim1, entry->key);
Datum d = DirectFunctionCall1(gbt_rtrim1, entry->key);
GISTENTRY trim;
gistentryinit(trim, d, entry->rel, entry->page, entry->offset, TRUE);
@ -135,7 +148,7 @@ Datum gbt_bpchar_consistent(PG_FUNCTION_ARGS)
bool retval = false;
GBT_VARKEY* key = (GBT_VARKEY*)DatumGetPointer(entry->key);
GBT_VARKEY_R r = gbt_var_key_readable(key);
void* trim = (void*)DatumGetPointer(DirectFunctionCall1(rtrim1, PointerGetDatum(query)));
void* trim = (void*)DatumGetPointer(DirectFunctionCall1(gbt_rtrim1, PointerGetDatum(query)));
/* All cases served by this function are exact */
*recheck = false;

View File

@ -1,13 +1,13 @@
/*-------------------------------------------------------------------------
*
* option_single.cpp
* option_single.cpp
* FDW option handling for gc_fdw
*
* IDENTIFICATION
* contrib/gc_fdw/option_single.cpp
* contrib/gc_fdw/option_single.cpp
*
*-------------------------------------------------------------------------
*/
*/
#include "postgres.h"
#include "knl/knl_variable.h"
@ -21,11 +21,11 @@
#include "commands/extension.h"
#include "foreign/foreign.h"
#include "gaussdb_version.h"
#include "utils/builtins.h"
PG_FUNCTION_INFO_V1(gc_fdw_validator);
#include "utils/builtins.h"
PG_FUNCTION_INFO_V1(gc_fdw_validator);
Datum gc_fdw_validator(PG_FUNCTION_ARGS)
{
{
PG_RETURN_VOID();
}
}

View File

@ -1,35 +0,0 @@
#This is the main CMAKE for build all components.
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/orc.cpp
COMMAND protoc-c --c_out=${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/orc.proto
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/orc.proto
COMMENT "Now Generating orc.cpp"
)
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TGT_hdfs_fdw_SRC)
set(TGT_hdfs_fdw_INC
${LIBORC_INCLUDE_PATH}
${PROJECT_SRC_DIR}/include
${PROJECT_OPENGS_DIR}/contrib/hdfs_fdw/include
${PROJECT_OPENGS_DIR}/contrib
)
if("${ENABLE_MULTIPLE_NODES}" STREQUAL "ON")
list(APPEND TGT_hdfs_fdw_INC ${PROJECT_TRUNK_DIR}/contrib/carbondata)
endif()
set(hdfs_fdw_DEF_OPTIONS ${MACRO_OPTIONS})
set(hdfs_fdw_COMPILE_OPTIONS ${OPTIMIZE_OPTIONS} ${OS_OPTIONS} ${PROTECT_OPTIONS} ${WARNING_OPTIONS} ${BIN_SECURE_OPTIONS} ${CHECK_OPTIONS})
set(hdfs_fdw_LINK_OPTIONS ${BIN_LINK_OPTIONS})
add_static_objtarget(contrib_hdfs_fdw TGT_hdfs_fdw_SRC TGT_hdfs_fdw_INC "${hdfs_fdw_DEF_OPTIONS}" "${hdfs_fdw_COMPILE_OPTIONS}" "${hdfs_fdw_LINK_OPTIONS}")
if("${ENABLE_MULTIPLE_NODES}" STREQUAL "ON")
add_dependencies(contrib_hdfs_fdw carbondata_static)
endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hdfs_fdw.control
DESTINATION share/postgresql/extension/
)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hdfs_fdw--1.0.sql
DESTINATION share/postgresql/extension/
)

View File

@ -1,39 +0,0 @@
# contrib/hdfs_fdw/Makefile
MODULE_big = hdfs_fdw
OBJS = hdfs_fdw.o scheduler.o
SHLIB_LINK = -lz $(shell pkg-config --libs libprotobuf)
top_builddir = ../..
EXTENSION = hdfs_fdw
DATA = hdfs_fdw--1.0.sql hdfs_fdw.control
REGRESS = hdfs_fdw
EXTRA_CLEAN = sql/hdfs_fdw.sql expected/hdfs_fdw.out
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/hdfs_fdw
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/src/gausskernel/common.mk
override CXXFLAGS += -I$(top_builddir)/contrib/hdfs_fdw/include -I$(LIBCARBONDATA_INCLUDE_PATH) -I$(LIBTHRIFT_INCLUDE_PATH)
install:install-data
.PHONY: install-data
install-data: installdirs
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/'
installdirs:
$(MKDIR_P) '$(DESTDIR)$(datadir)/extension'
uninstall:uninstall-data
.PHONY: uninstall-data
uninstall-data:
rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA)))
endif

View File

@ -1,23 +0,0 @@
/* contrib/hdfs_fdw/hdfs_fdw--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION hdfs_fdw" to load this file. \quit
CREATE FUNCTION pg_catalog.hdfs_fdw_handler()
RETURNS fdw_handler
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT NOT FENCED;
CREATE FUNCTION pg_catalog.hdfs_fdw_validator(text[], oid)
RETURNS void
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT NOT FENCED;
CREATE FOREIGN DATA WRAPPER hdfs_fdw
HANDLER hdfs_fdw_handler
VALIDATOR hdfs_fdw_validator;
/* we define the unified FDW named dfs_fdw. The hdfs_fdw will be reserved */
/* in order to compate with older version. */
CREATE FOREIGN DATA WRAPPER dfs_fdw
HANDLER hdfs_fdw_handler
VALIDATOR hdfs_fdw_validator;

View File

@ -1,5 +0,0 @@
# hdfs_fdw extension
comment = 'foreign-data wrapper for flat file access'
default_version = '1.0'
module_pathname = '$libdir/hdfs_fdw'
relocatable = true

File diff suppressed because it is too large Load Diff

View File

@ -1,75 +0,0 @@
#ifndef HDFS_FDW_h
#define HDFS_FDW_h
#include "access/dfs/dfs_am.h"
#include "foreign/foreign.h"
#include "nodes/execnodes.h"
#include "nodes/pg_list.h"
#define HDFS_TUPLE_COST_MULTIPLIER 5
typedef enum OptionType {
T_INVALID_TYPE = 0x0000,
T_SERVER_COMMON_OPTION = 0x0001 << 1,
T_OBS_SERVER_OPTION = 0x0001 << 2,
T_HDFS_SERVER_OPTION = 0x0001 << 3,
T_DUMMY_SERVER_OPTION = 0x0001 << 4,
T_FOREIGN_TABLE_COMMON_OPTION = 0x0001 << 5,
T_FOREIGN_TABLE_OBS_OPTION = 0x0001 << 6,
T_FOREIGN_TABLE_HDFS_OPTION = 0x0001 << 7,
T_SERVER_TYPE_OPTION = 0x0001 << 8,
T_FOREIGN_TABLE_TEXT_OPTION = 0x0001 << 9,
T_FOREIGN_TABLE_CSV_OPTION = 0x0001 << 10
} OptionType;
#define OBS_SERVER_OPTION (T_SERVER_COMMON_OPTION | T_OBS_SERVER_OPTION)
#define HDFS_SERVER_OPTION (T_SERVER_COMMON_OPTION | T_HDFS_SERVER_OPTION)
#define DUMMY_SERVER_OPTION (T_SERVER_COMMON_OPTION | T_DUMMY_SERVER_OPTION)
#define OBS_FOREIGN_TABLE_OPTION \
(T_FOREIGN_TABLE_COMMON_OPTION | T_FOREIGN_TABLE_OBS_OPTION | T_FOREIGN_TABLE_CSV_OPTION | \
T_FOREIGN_TABLE_TEXT_OPTION)
#define HDFS_FOREIGN_TABLE_OPTION \
(T_FOREIGN_TABLE_COMMON_OPTION | T_FOREIGN_TABLE_HDFS_OPTION | T_FOREIGN_TABLE_CSV_OPTION | \
T_FOREIGN_TABLE_TEXT_OPTION)
#define SERVER_TYPE_OPTION (T_SERVER_TYPE_OPTION)
#define DFS_OPTION_ARRAY \
(T_SERVER_COMMON_OPTION | T_HDFS_SERVER_OPTION | T_OBS_SERVER_OPTION | T_DUMMY_SERVER_OPTION | \
HDFS_FOREIGN_TABLE_OPTION | OBS_FOREIGN_TABLE_OPTION)
#define SERVER_TYPE_OPTION_ARRAY (T_SERVER_TYPE_OPTION)
/*
* HdfsValidOption keeps an option name and a context. When an option is passed
* into hdfs_fdw objects (server and foreign table), we compare this option's
* name and context against those of valid options.
*/
typedef struct HdfsValidOption {
const char* optionName;
uint32 optType;
} HdfsValidOption;
/*
* FDW-specific information for RelOptInfo.fdw_private.
*/
typedef struct HdfsFdwPlanState {
double tuplesCount; /* estimate of number of rows in file */
HdfsFdwOptions* hdfsFdwOptions;
} HdfsFdwPlanState;
/*
* HdfsFdwExecState keeps foreign data wrapper specific execution state that we
* create and hold onto when executing the query.
*/
typedef struct HdfsFdwExecState {
dfs::reader::ReaderState* readerState;
dfs::reader::Reader* fileReader;
} HdfsFdwExecState;
/* Function declarations for foreign data wrapper */
extern "C" Datum hdfs_fdw_handler(PG_FUNCTION_ARGS);
extern "C" Datum hdfs_fdw_validator(PG_FUNCTION_ARGS);
#endif /* hdfs_fdw_H */

View File

@ -1,71 +0,0 @@
#ifndef SCHEDULER_H_
#define SCHEDULER_H_
#include "hdfs_fdw.h"
#include "foreign/foreign.h"
#include "nodes/execnodes.h"
#include "nodes/pg_list.h"
#include <stdio.h>
#include <stdlib.h>
#define PGXC_NODE_ID 9015
#define MAX_FOREIGN_PARTITIONKEY_NUM 4
#define MASK_HIGH_UINT32(x) (x & (uint64)0xFFFFFFFF)
#define GETIP(x) ((uint32)(x & (uint64)0xFFFFFFFF))
#define GETOID(x) ((uint32)(x >> 32))
#define LOCAL_IP "127.0.0.1"
#define LOCAL_HOST "localhost"
#define MAX_HOST_NAME_LENGTH 255
#define EXTRA_IP_NUM 32
#define MAX_ROUNDROBIN_AVAILABLE_DN_NUM 256
#define MAX_UINT32 (0xFFFFFFFF)
typedef struct dnWork {
Oid nodeOid;
List* toDoList;
} dnWork;
typedef struct dnInfoStat {
uint32 ipAddr;
uint32 Start;
uint32 Cnt;
} dnInfoStat;
/*
* This is executed on CN to schedule the files to each dn for load balance and use cache.
* add param isAnalyze because the func CNScheduling has called by foreign scan which get random dn for schedule,
* the random dn also changed, we should get a determinded dn to get single stats for global stats in order to get
* stable stats.
*/
List* CNScheduling(Oid foreignTableId, Index relId, List* columnList, List* scanClauses, List*& prunningResult,
List*& partList, char locatorType, bool isAnalyze, List* allColumnList, int16 attrNum, int64* fileNum);
/* CNSchedulingForAnalyze
* firstly calculate the files to be analyzed,and because we just do analyze in one datanode,
* the analyze files is about (total files) /(datanode number)
* we will find the suitable datanode to do the anlayze and return
* add param isglbstats in order to discriminate the processing of single stats and global stats.
* we only get files in one dn for single stats, and we must get files in all dns for global stats.
*/
List* CNSchedulingForAnalyze(unsigned int* totalFilesNum, unsigned int* numOfDns, Oid foreignTableId, bool isglbstats);
/*
* Assign the list of splits scheduled by CN to the current data node.
* @_in_param splitToDnMap: The list of all the splits which map to each data node.
* @_in_out_param readerState: The state stores the splits of the current data node.
* @_in_param conn: The connector of dfs(hdfs or obs)
*/
void AssignSplits(List* splitToDnMap, dfs::reader::ReaderState* readerState, dfs::DFSConnector* conn);
/*
* Search the catalog pg_partition to build a partition list to return.
*
* @_in param relid: The oid of the foreign table by which we search the partition list from the
* catalog.
* @return Return the partition list we get.
*/
List* GetPartitionList(Oid relid);
#endif /* SCHEDULER_H_ */

View File

@ -1,23 +0,0 @@
#!/bin/bash
#Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
#openGauss is licensed under Mulan PSL v2.
#You can use this software according to the terms and conditions of the Mulan PSL v2.
#You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
#-------------------------------------------------------------------------
#
# init.sh
#
# IDENTIFICATION
# contrib/hdfs_fdw/init.sh
#
#-------------------------------------------------------------------------
protoc-c --c_out=. orc.proto

View File

@ -1,149 +0,0 @@
message IntegerStatistics {
optional sint64 minimum = 1;
optional sint64 maximum = 2;
optional sint64 sum = 3;
}
message DoubleStatistics {
optional double minimum = 1;
optional double maximum = 2;
optional double sum = 3;
}
message StringStatistics {
optional string minimum = 1;
optional string maximum = 2;
}
message BucketStatistics {
repeated uint64 count = 1 [packed=true];
}
message DecimalStatistics {
optional string minimum = 1;
optional string maximum = 2;
optional string sum = 3;
}
message DateStatistics {
// min,max values saved as days since epoch
optional sint32 minimum = 1;
optional sint32 maximum = 2;
}
message ColumnStatistics {
optional uint64 numberOfValues = 1;
optional IntegerStatistics intStatistics = 2;
optional DoubleStatistics doubleStatistics = 3;
optional StringStatistics stringStatistics = 4;
optional BucketStatistics bucketStatistics = 5;
optional DecimalStatistics decimalStatistics = 6;
optional DateStatistics dateStatistics = 7;
}
message RowIndexEntry {
repeated uint64 positions = 1 [packed=true];
optional ColumnStatistics statistics = 2;
}
message RowIndex {
repeated RowIndexEntry entry = 1;
}
message OrcStream {
// if you add new index stream kinds, you need to make sure to update
// StreamName to ensure it is added to the stripe in the right area
enum Kind {
PRESENT = 0;
DATA = 1;
LENGTH = 2;
DICTIONARY_DATA = 3;
DICTIONARY_COUNT = 4;
SECONDARY = 5;
ROW_INDEX = 6;
}
required Kind kind = 1;
optional uint32 column = 2;
optional uint64 length = 3;
}
message ColumnEncoding {
enum Kind {
DIRECT = 0;
DICTIONARY = 1;
DIRECT_V2 = 2;
DICTIONARY_V2 = 3;
}
required Kind kind = 1;
optional uint32 dictionarySize = 2;
}
message StripeFooter {
repeated OrcStream streams = 1;
repeated ColumnEncoding columns = 2;
}
message FieldType {
enum Kind {
BOOLEAN = 0;
BYTE = 1;
SHORT = 2;
INT = 3;
LONG = 4;
FLOAT = 5;
DOUBLE = 6;
STRING = 7;
BINARY = 8;
TIMESTAMP = 9;
LIST = 10;
MAP = 11;
STRUCT = 12;
UNION = 13;
DECIMAL = 14;
DATE = 15;
}
required Kind kind = 1;
repeated uint32 subtypes = 2 [packed=true];
repeated string fieldNames = 3;
}
message StripeInformation {
optional uint64 offset = 1;
optional uint64 indexLength = 2;
optional uint64 dataLength = 3;
optional uint64 footerLength = 4;
optional uint64 numberOfRows = 5;
}
message UserMetadataItem {
required string name = 1;
required bytes value = 2;
}
message Footer {
optional uint64 headerLength = 1;
optional uint64 contentLength = 2;
repeated StripeInformation stripes = 3;
repeated FieldType types = 4;
repeated UserMetadataItem metadata = 5;
optional uint64 numberOfRows = 6;
repeated ColumnStatistics statistics = 7;
optional uint32 rowIndexStride = 8;
}
enum CompressionKind {
NONE = 0;
ZLIB = 1;
SNAPPY = 2;
LZO = 3;
}
// Serialized length must be less that 255 bytes
message PostScript {
optional uint64 footerLength = 1;
optional CompressionKind compression = 2;
optional uint64 compressionBlockSize = 3;
repeated uint32 version = 4 [packed = true];
// Leave this last in the record
optional string magic = 8000;
}

File diff suppressed because it is too large Load Diff

View File

@ -285,12 +285,12 @@ static const unsigned int crc32tab[256] = {
unsigned int crc32_sz(char* buf, int size)
{
unsigned int crc = ~((unsigned int)0);
char* p = NULL;
unsigned char* p = NULL;
int len, nr;
len = 0;
nr = size;
for (len += nr, p = buf; nr--; ++p)
for (len += nr, p = (unsigned char*)buf; nr--; ++p)
_CRC32_(crc, *p);
return ~crc;
}

View File

@ -397,6 +397,7 @@ Datum hstore_from_text(PG_FUNCTION_ARGS)
p.needfree = false;
key = PG_GETARG_TEXT_PP(0);
FUNC_CHECK_HUGE_POINTER(false, key, "tconvert()");
p.key = VARDATA_ANY(key);
p.keylen = hstoreCheckKeyLen(VARSIZE_ANY_EXHDR(key));
@ -405,6 +406,7 @@ Datum hstore_from_text(PG_FUNCTION_ARGS)
p.isnull = true;
} else {
val = PG_GETARG_TEXT_PP(1);
FUNC_CHECK_HUGE_POINTER(false, val, "tconvert()");
p.val = VARDATA_ANY(val);
p.vallen = hstoreCheckValLen(VARSIZE_ANY_EXHDR(val));
p.isnull = false;

39
contrib/mppdb_decoding/mppdb_decoding.cpp Normal file → Executable file
View File

@ -105,6 +105,13 @@ static void pg_decode_startup(LogicalDecodingContext* ctx, OutputPluginOptions*
data->only_local = true;
data->tableWhiteList = NIL;
/* read default option from GUC */
DecodeOptionsDefault *defaultOption = LogicalDecodeGetOptionsDefault();
if (defaultOption != NULL) {
data->max_txn_in_memory = defaultOption->max_txn_in_memory;
data->max_reorderbuffer_in_memory = defaultOption->max_reorderbuffer_in_memory;
}
ctx->output_plugin_private = data;
opt->output_type = OUTPUT_PLUGIN_TEXTUAL_OUTPUT;
@ -219,8 +226,8 @@ static bool pg_decode_filter(LogicalDecodingContext* ctx, RepOriginId origin_id)
}
/* print the tuple 'tuple' into the StringInfo s */
static void TupleToJsoninfo(
cJSON* cols_name, cJSON* cols_type, cJSON* cols_val, TupleDesc tupdesc, HeapTuple tuple, bool skip_nulls)
static void TupleToJsoninfo(Relation relation, cJSON* cols_name, cJSON* cols_type, cJSON* cols_val, TupleDesc tupdesc,
HeapTuple tuple, bool isOld)
{
if ((tuple->tupTableType == HEAP_TUPLE) && (HEAP_TUPLE_IS_COMPRESSED(tuple->t_data) ||
(int)HeapTupleHeaderGetNatts(tuple->t_data, tupdesc) > tupdesc->natts)) {
@ -247,7 +254,7 @@ static void TupleToJsoninfo(
* Don't print system columns, oid will already have been printed if
* present.
*/
if (attr->attnum < 0)
if (attr->attnum < 0 || (isOld && !IsRelationReplidentKey(relation, attr->attnum)))
continue;
Oid typid = attr->atttypid; /* type of current attribute */
@ -258,8 +265,6 @@ static void TupleToJsoninfo(
} else {
origval = uheap_getattr((UHeapTuple)tuple, natt + 1, tupdesc, &isnull);
}
if (isnull && skip_nulls)
continue;
/* print attribute name */
@ -348,53 +353,53 @@ static void pg_decode_change(
case REORDER_BUFFER_CHANGE_INSERT:
op_type = cJSON_CreateString("INSERT");
if (change->data.tp.newtuple != NULL) {
TupleToJsoninfo(
columns_name, columns_type, columns_val, tupdesc, &change->data.tp.newtuple->tuple, false);
TupleToJsoninfo(relation, columns_name, columns_type, columns_val, tupdesc,
&change->data.tp.newtuple->tuple, false);
}
break;
case REORDER_BUFFER_CHANGE_UPDATE:
op_type = cJSON_CreateString("UPDATE");
if (change->data.tp.oldtuple != NULL) {
TupleToJsoninfo(
old_keys_name, old_keys_type, old_keys_val, tupdesc, &change->data.tp.oldtuple->tuple, true);
TupleToJsoninfo(relation, old_keys_name, old_keys_type, old_keys_val, tupdesc,
&change->data.tp.oldtuple->tuple, true);
}
if (change->data.tp.newtuple != NULL) {
TupleToJsoninfo(
columns_name, columns_type, columns_val, tupdesc, &change->data.tp.newtuple->tuple, false);
TupleToJsoninfo(relation, columns_name, columns_type, columns_val, tupdesc,
&change->data.tp.newtuple->tuple, false);
}
break;
case REORDER_BUFFER_CHANGE_DELETE:
op_type = cJSON_CreateString("DELETE");
if (change->data.tp.oldtuple != NULL) {
TupleToJsoninfo(
old_keys_name, old_keys_type, old_keys_val, tupdesc, &change->data.tp.oldtuple->tuple, true);
TupleToJsoninfo(relation, old_keys_name, old_keys_type, old_keys_val, tupdesc,
&change->data.tp.oldtuple->tuple, true);
}
/* if there was no PK, we only know that a delete happened */
break;
case REORDER_BUFFER_CHANGE_UINSERT:
op_type = cJSON_CreateString("INSERT");
if (change->data.utp.newtuple != NULL) {
TupleToJsoninfo(columns_name, columns_type, columns_val, tupdesc,
TupleToJsoninfo(relation, columns_name, columns_type, columns_val, tupdesc,
(HeapTuple)(&change->data.utp.newtuple->tuple), false);
}
break;
case REORDER_BUFFER_CHANGE_UDELETE:
op_type = cJSON_CreateString("DELETE");
if (change->data.utp.oldtuple != NULL) {
TupleToJsoninfo(old_keys_name, old_keys_type, old_keys_val, tupdesc,
TupleToJsoninfo(relation, old_keys_name, old_keys_type, old_keys_val, tupdesc,
(HeapTuple)(&change->data.utp.oldtuple->tuple), true);
}
break;
case REORDER_BUFFER_CHANGE_UUPDATE:
op_type = cJSON_CreateString("UPDATE");
if (change->data.utp.oldtuple != NULL) {
TupleToJsoninfo(old_keys_name, old_keys_type, old_keys_val, tupdesc,
TupleToJsoninfo(relation, old_keys_name, old_keys_type, old_keys_val, tupdesc,
(HeapTuple)(&change->data.utp.oldtuple->tuple), true);
}
if (change->data.utp.newtuple != NULL) {
TupleToJsoninfo(columns_name, columns_type, columns_val, tupdesc,
TupleToJsoninfo(relation, columns_name, columns_type, columns_val, tupdesc,
(HeapTuple)&change->data.utp.newtuple->tuple, false);
}
break;

View File

@ -1,46 +1,46 @@
#
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ---------------------------------------------------------------------------------------
#
# Makefile
# Makefile for the mysql_fdw
#
# IDENTIFICATION
# contrib/mysql_fdw/Makefile
#
# ---------------------------------------------------------------------------------------
all:mysql_fdw_target
install:install-data
top_builddir ?= ../../
include $(top_builddir)/src/Makefile.global
CODE_DIR=mysql_fdw
.PHONY: mysql_fdw_target
mysql_fdw_target: prep_checked
@make -C $(MYFDW_HOME) TOP_DIR=$(abs_top_srcdir)
prep_checked:
@test -d $(MYFDW_HOME) || ( echo "ERROR: You need fetch and copy mysql_fdw from 'third_party' repo to 'third_party_binarylibs' repo and keep directory strucutre unchanged" && exit 1 )
@test -d $(MYFDW_HOME) && date > prep_checked
.PHONY: install-data
install-data: mysql_fdw_target
@make -C $(MYFDW_HOME) TOP_DIR=$(abs_top_srcdir) install
uninstall distclean clean:
@rm -rf $(MYFDW_HOME)/*.o
@rm -rf $(MYFDW_HOME)/*.so
@rm -f prep_checked
MYSQL_FDW_RELEVANT_SOURCES = connection.c deparse.c mysql_fdw.c mysql_query.c option.c
#
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ---------------------------------------------------------------------------------------
#
# Makefile
# Makefile for the mysql_fdw
#
# IDENTIFICATION
# contrib/mysql_fdw/Makefile
#
# ---------------------------------------------------------------------------------------
all:mysql_fdw_target
install:install-data
top_builddir ?= ../../
include $(top_builddir)/src/Makefile.global
CODE_DIR=mysql_fdw
.PHONY: mysql_fdw_target
mysql_fdw_target: prep_checked
@make -C $(MYFDW_HOME) TOP_DIR=$(abs_top_srcdir)
prep_checked:
@test -d $(MYFDW_HOME) || ( echo "ERROR: You need fetch and copy mysql_fdw from 'third_party' repo to 'third_party_binarylibs' repo and keep directory strucutre unchanged" && exit 1 )
@test -d $(MYFDW_HOME) && date > prep_checked
.PHONY: install-data
install-data: mysql_fdw_target
@make -C $(MYFDW_HOME) TOP_DIR=$(abs_top_srcdir) install
uninstall distclean clean:
@rm -rf $(MYFDW_HOME)/*.o
@rm -rf $(MYFDW_HOME)/*.so
@rm -f prep_checked
MYSQL_FDW_RELEVANT_SOURCES = connection.c deparse.c mysql_fdw.c mysql_query.c option.c

View File

@ -15,7 +15,7 @@ set(pagehack_LINK_LIBS -lpgport -lcrypt -ldl -lm -ledit -lssl -lcrypto -lsecurec
add_bintarget(pagehack TGT_pagehack_SRC TGT_pagehack_INC "${pagehack_DEF_OPTIONS}" "${pagehack_COMPILE_OPTIONS}" "${pagehack_LINK_OPTIONS}" "${pagehack_LINK_LIBS}")
add_dependencies(pagehack pgport_static pagecompression)
target_link_directories(pagehack PUBLIC
${LIBOPENSSL_LIB_PATH} ${PROTOBUF_LIB_PATH} ${LIBPARQUET_LIB_PATH} ${LIBCURL_LIB_PATH} ${SECURE_LIB_PATH}
${LIBOPENSSL_LIB_PATH} ${LIBCURL_LIB_PATH} ${SECURE_LIB_PATH}
${ZLIB_LIB_PATH} ${LIBOBS_LIB_PATH} ${LIBEDIT_LIB_PATH} ${LIBCGROUP_LIB_PATH} ${CMAKE_BINARY_DIR}/lib
${ZSTD_LIB_PATH} ${PROJECT_SRC_DIR}/lib/page_compression
)

441
contrib/pagehack/pagehack.cpp Normal file → Executable file
View File

@ -141,7 +141,16 @@ static const char* PgHeapRelName[] = {"pg_class",
"pg_am",
"pg_statistic",
"pg_toast"};
typedef enum SegmentType { SEG_HEAP, SEG_FSM, SEG_UHEAP, SEG_INDEX_BTREE, SEG_UNDO, SEG_UNKNOWN } SegmentType;
typedef enum SegmentType {
SEG_HEAP,
SEG_FSM,
SEG_UHEAP,
SEG_INDEX_BTREE,
SEG_UNDO,
SEG_INDEX_URQ,
SEG_UNKNOWN
} SegmentType;
static void ParsePgClassTupleData(binary tupdata, int len, binary nullBitmap, int natrrs);
static void ParsePgIndexTupleData(binary tupdata, int len, binary nullBitmap, int nattrs);
@ -811,6 +820,7 @@ typedef enum HackingType {
HACKING_UNDO_RECORD,
HACKING_UNDO_FIX,
HACKING_SEGMENT,
HACKING_INDEX_URQ,
NUM_HACKINGTYPE
} HackingType;
@ -837,7 +847,8 @@ static const char* HACKINGTYPE[] = {"heap",
"undo_slot",
"undo_record",
"undo_fix",
"segment"
"segment",
"btree_index_urq"
};
const char* PageTypeNames[] = {"DATA", "FSM", "VM"};
@ -1055,7 +1066,8 @@ static void ParsePgCudescXXTupleData(binary tupdata, int len, binary nullBitmap,
char* nextAttr = (char*)tupdata;
bool isnulls[nattrs];
memset(isnulls, false, nattrs);
errno_t rc = memset_s(isnulls, nattrs, false, nattrs);
securec_check_c(rc, "\0", "\0");
if (NULL != nullBitmap) {
datlen = (nattrs + 7) / 8;
int j = 0;
@ -2360,12 +2372,14 @@ static void parse_uheap_item(const Item item, unsigned len, int blkno, int linen
indentLevel = 3;
errno_t rc = snprintf_s(buffer, 128, 127, "\t\t\txid:%d, td:%d locker_td:%d\n",
utuple->xid, utuple->td_id, utuple->locker_td_id);
errno_t rc = snprintf_s(buffer, 128, 127, "\t\t\txid:%u, td:%d locker_td:%d\n",
utuple->xid, utuple->td_id, utuple->reserved);
securec_check(rc, "\0", "\0");
fprintf(stdout, "%s", buffer);
fprintf(stdout, "\t\t\tNumber of columns: %d\n", UHeapTupleHeaderGetNatts(utuple));
fprintf(stdout, "\t\t\tFlag: %d\n", utuple->flag);
fprintf(stdout, "\t\t\tFlag2: %d\n", utuple->flag2);
fprintf(stdout, "\t\t\tt_hoff: %d\n", utuple->t_hoff);
if (utuple->flag & UHEAP_HAS_NULL) {
fprintf(stdout, "\t\t\tFlag: %s\n", "UHEAP_HASNULL ");
@ -2560,7 +2574,7 @@ static void parse_btree_index_item(const Item item, unsigned len, int blkno, int
/* there are xmin/xmax */
UstoreIndexXid uxid = (UstoreIndexXid)UstoreIndexTupleGetXid(itup);
fprintf(stdout,
"%s xmin:%d xmax:%d Heap Tid: block %u/%u, offset %u\n",
"%s xmin:%u xmax:%u Heap Tid: block %u/%u, offset %u\n",
indents[indentLevel],
uxid->xmin,
uxid->xmax,
@ -2705,7 +2719,7 @@ static void ParseUHeapPageHeader(const PageHeader page, int blkno, int blknum)
fprintf(stdout, "\tpd_xid_base: %lu, pd_multi_base: %lu\n",
upage->pd_xid_base, upage->pd_multi_base);
if (upage->pd_upper < upage->pd_lower) {
fprintf(stdout, "WARNING: INVALID PAGE!");
fprintf(stdout, "WARNING: INVALID PAGE!\n");
} else {
freeSpace = upage->pd_upper - upage->pd_lower;
g_freeMax = freeSpace > g_freeMax ? freeSpace : g_freeMax;
@ -2786,6 +2800,7 @@ static void parse_special_data(const char* buffer, SegmentType type)
fprintf(stdout, "\tbtree cycle ID: %u\n", opaque->btpo_cycleid);
if (uopaque) {
(void)fprintf(stdout, "\tubtree xidbase: %lu\n", uopaque->xid_base);
fprintf(stdout, "\tubtree active tuples: %d\n", uopaque->activeTupleCount);
}
} else if (SEG_UHEAP == type) {
@ -2890,7 +2905,7 @@ static void parse_heap_or_index_page(const char* buffer, int blkno, SegmentType
}
fprintf(stdout, "\n\tUHeap tuple information on this page\n");
for (i = FirstOffsetNumber; i <= nline; i++) {
rowptr = UPageGetRowPtr(buffer, i);
rowptr = UPageGenerateRowPtr(buffer, i);
if (RowPtrIsUsed(rowptr)) {
if (RowPtrHasStorage(rowptr))
nstorage++;
@ -3038,6 +3053,67 @@ static void parse_fsm_page(const char *buffer, int blkno)
fprintf(stdout, "\n");
}
static bool UrqIsMetaPage(BlockNumber blkno)
{
const int FirstNormalBlockNumber = 2;
return blkno < FirstNormalBlockNumber;
}
static uint32 UrqGetBlockMaxItems(BlockNumber blkno)
{
uint32 freeSpace = BLCKSZ - sizeof(PageHeaderData) - offsetof(UBTRecycleQueueHeaderData, items);
if (UrqIsMetaPage(blkno)) {
freeSpace -= sizeof(UBTRecycleMetaData);
}
return freeSpace / sizeof(UBTRecycleQueueItemData);
}
static UBTRecycleQueueHeader UrqGetRecycleQueueHeader(Page page, BlockNumber blkno)
{
if (!UrqIsMetaPage(blkno)) {
return (UBTRecycleQueueHeader)PageGetContents(page);
}
return (UBTRecycleQueueHeader)(((char*)PageGetContents(page)) + sizeof(UBTRecycleMetaData));
}
static void ParseBtreeIndexUrq(const char *buffer, int blkno)
{
const int baseIndent = 1;
const int indent1 = baseIndent + 1;
const int indent2 = indent1 + 1;
(void)fprintf(stdout, "\n%sRecycle queue information on this page\n", indents[baseIndent]);
if (UrqIsMetaPage((BlockNumber)blkno)) {
UBTRecycleMeta meta = (UBTRecycleMeta)(PageGetContents((Page)buffer));
(void)fprintf(stdout, "%sMeta: #%u\n", indents[indent1], blkno);
(void)fprintf(stdout, "%sflags: %u\n", indents[indent2], meta->flags);
(void)fprintf(stdout, "%sheadBlkno: %u\n", indents[indent2], meta->headBlkno);
(void)fprintf(stdout, "%stailBlkno: %u\n", indents[indent2], meta->tailBlkno);
(void)fprintf(stdout, "%snblocksUpper: %u\n", indents[indent2], meta->nblocksUpper);
(void)fprintf(stdout, "%snblocksLower: %u\n", indents[indent2], meta->nblocksLower);
}
UBTRecycleQueueHeader header = UrqGetRecycleQueueHeader((Page)buffer, (BlockNumber)blkno);
uint32 maxItem = UrqGetBlockMaxItems((BlockNumber)blkno);
(void)fprintf(stdout, "%sBlock: #%d, flags: %u, head:%d, tail:%d, ",
indents[indent1], blkno, header->flags, header->head, header->tail);
(void)fprintf(stdout, "freeItems:%d, freeListHead:%d, prevBlkno:%u, nextBlkno:%u\n",
header->freeItems, header->freeListHead, header->prevBlkno, header->nextBlkno);
for (uint32 i = 0; i < maxItem; i++) {
UBTRecycleQueueItem item = &(header->items[i]);
if (item->xid == 0 && item->blkno == 0 && item->prev == 0 && item->next == 0) {
continue;
}
(void)fprintf(stdout, "%s#%3d, xid: %lu, blkno: %3u, prev: %3d, next: %3d\n",
indents[indent2], i, item->xid, item->blkno, item->prev, item->next);
}
(void)fprintf(stdout, "%sSummary (%u total): %u used, %d free\n\n",
indents[baseIndent], maxItem, maxItem - header->freeItems, header->freeItems);
}
static bool parse_data_page(const char *buffer, int blkno, SegmentType type)
{
if (only_vm || only_bcm) {
@ -3047,6 +3123,8 @@ static bool parse_data_page(const char *buffer, int blkno, SegmentType type)
parse_heap_or_index_page(buffer, blkno, type);
} else if (type == SEG_FSM) {
parse_fsm_page(buffer, blkno);
} else if (type == SEG_INDEX_URQ) {
ParseBtreeIndexUrq(buffer, blkno);
}
return true;
}
@ -3058,7 +3136,7 @@ static int parse_a_page(const char* buffer, int blkno, int blknum, SegmentType t
if (PageIsNew(page)) {
fprintf(stdout, "Page information of block %d/%d : new page\n\n", blkno, blknum);
ParseHeapPageHeader(page, blkno, blknum);
ParsePageHeader(page, blkno, blknum, type);
return true;
}
@ -3236,7 +3314,8 @@ static int parse_uncompressed_page_file(const char *filename, SegmentType type,
unsigned char fill_byte[4096] = {0xFF};
for (int i = 0; i < 4096; i++)
fill_byte[i] = 0xFF;
memcpy(buffer + 4096, fill_byte, 4096);
errno_t rc = memcpy_s(buffer + 4096, BLCKSZ - 4096, fill_byte, 4096);
securec_check_c(rc, "\0", "\0");
}
fseek(fd, (start * BLCKSZ), SEEK_SET);
fwrite(buffer, 1, BLCKSZ, fd);
@ -3718,7 +3797,8 @@ static int parse_cu_file(char* filename, uint64 offset)
seg_num = offset / (RELSEG_SIZE * BLCKSZ);
seg_offset = offset % (RELSEG_SIZE * BLCKSZ);
sprintf(fullpath, "%s.%d", filename, seg_num);
errno_t rc = snprintf_s(fullpath, sizeof(fullpath), sizeof(fullpath) - 1, "%s.%d", filename, seg_num);
securec_check_ss_c(rc, "\0", "\0");
if (NULL == (fd = fopen(fullpath, "rb"))) {
fprintf(stderr, "%s: %s\n", fullpath, strerror(errno));
@ -3970,7 +4050,9 @@ static int parse_pg_control_file(char* filename)
* Format system_identifier separately to keep platform-dependent format
* code out of the translatable message string.
*/
snprintf(sysident_str, sizeof(sysident_str), UINT64_FORMAT, ControlFile.system_identifier);
errno_t rc = snprintf_s(sysident_str, sizeof(sysident_str), sizeof(sysident_str) - 1, UINT64_FORMAT,
ControlFile.system_identifier);
securec_check_ss_c(rc, "\0", "\0");
fprintf(stdout, "pg_control version number: %u\n", ControlFile.pg_control_version);
@ -4366,26 +4448,37 @@ static bool parse_dw_file(const char* file_name, uint32 start_page, uint32 page_
size_t result;
uint32 dw_batch_page_num;
dw_file_head_t file_head;
char meta_path[PATH_MAX];
char cur_dir[PATH_MAX];
char* meta_name;
char meta_full_path[PATH_MAX];
char meta_name_tmp[PATH_MAX];
dw_batch_meta_file* batch_meta_file;
char* meta_buf = NULL;
char* dw_buf = NULL;
rc = strcpy_s(cur_dir, PATH_MAX, file_name);
/* copy the full path of dw file to meta_full_path */
if (realpath(file_name, meta_full_path) == NULL && file_name[0] == '\0') {
fprintf(stderr, "could not get correct path or the absolute path is too long!\n");
return false;
}
/* extract the path dir of dw file, which is the dir of meta file */
(void)dirname(meta_full_path);
/* extract the meta name from DW_META_FILE */
rc = strcpy_s(meta_name_tmp, PATH_MAX, DW_META_FILE);
securec_check(rc, "", "");
(void)dirname(cur_dir);
rc = strcpy_s(meta_path, PATH_MAX, cur_dir);
meta_name = basename(meta_name_tmp);
/* fetch the full meta path with above two parts */
rc = strcat_s(meta_full_path, PATH_MAX, "/");
securec_check(rc, "", "");
rc = strcat_s(meta_path, PATH_MAX, "\\");
securec_check(rc, "", "");
rc = strcat_s(meta_path, PATH_MAX, DW_META_FILE);
rc = strcat_s(meta_full_path, PATH_MAX, meta_name);
securec_check(rc, "", "");
fd = fopen(meta_path, "rb+");
fd = fopen(meta_full_path, "rb+");
if (fd == NULL) {
fprintf(stderr, "%s: %s\n", meta_path, strerror(errno));
fprintf(stderr, "%s: %s\n", meta_full_path, strerror(errno));
return false;
}
@ -4400,7 +4493,7 @@ static bool parse_dw_file(const char* file_name, uint32 start_page, uint32 page_
if (result != 1) {
free(meta_buf);
fclose(fd);
fprintf(stderr, "read %s: %s\n", meta_path, strerror(errno));
fprintf(stderr, "read %s: %s\n", meta_full_path, strerror(errno));
return false;
}
@ -4822,11 +4915,15 @@ static int ParseUndoZoneMeta(const char *filename, int zid)
uspMetaInfo = (UndoZoneMetaInfo *) (uspMetaBuffer + offset * sizeof(UndoZoneMetaInfo));
if ((zid == INVALID_ZONE_ID) || (zid != INVALID_ZONE_ID && zid == zoneId)) {
fprintf(stdout,
"zid=%d, insert=%lu, discard=%lu, forcediscard=%lu, allocate=%lu, recycle=%lu, recyclexid=%lu, "
"lsn=%lu.\n",
zoneId, UNDO_PTR_GET_OFFSET(uspMetaInfo->insert), UNDO_PTR_GET_OFFSET(uspMetaInfo->discard),
UNDO_PTR_GET_OFFSET(uspMetaInfo->forceDiscard), UNDO_PTR_GET_OFFSET(uspMetaInfo->allocate),
UNDO_PTR_GET_OFFSET(uspMetaInfo->recycle), uspMetaInfo->recycleXid, uspMetaInfo->lsn);
"zid=%d, insertURecPtr=%lu, discardURecPtr=%lu, forcediscardURecPtr=%lu, allocateTSlotPtr=%lu, "
"recycleTSlotPtr=%lu, recyclexid=%lu, lsn=%lu.\n",
zoneId,
UNDO_PTR_GET_OFFSET(uspMetaInfo->insertURecPtr),
UNDO_PTR_GET_OFFSET(uspMetaInfo->discardURecPtr),
UNDO_PTR_GET_OFFSET(uspMetaInfo->forceDiscardURecPtr),
UNDO_PTR_GET_OFFSET(uspMetaInfo->allocateTSlotPtr),
UNDO_PTR_GET_OFFSET(uspMetaInfo->recycleTSlotPtr),
uspMetaInfo->recycleXid, uspMetaInfo->lsn);
if (zid != INVALID_ZONE_ID) {
break;
@ -4928,6 +5025,7 @@ static int ParseUndoSlot(const char *filename)
}
for (uint32 loop = 0; loop < UNDO_META_SEG_SIZE; loop++) {
int flag = 0;
seekpos = (off_t)BLCKSZ * loop;
lseek(fd, seekpos, SEEK_SET);
rc = memset_s(buffer, BLCKSZ, 0, BLCKSZ);
@ -4942,13 +5040,32 @@ static int ParseUndoSlot(const char *filename)
fprintf(stdout, "Block %u, LSN (%X/%X)\n", loop, (uint32)(PageGetLSN(buffer) >> 32),
(uint32)PageGetLSN(buffer));
if (PageIsNew(buffer)) {
continue;
}
for (uint32 offset = UNDO_LOG_BLOCK_HEADER_SIZE; offset < BLCKSZ - MAXALIGN(sizeof(TransactionSlot));
offset += MAXALIGN(sizeof(TransactionSlot))) {
slot = (TransactionSlot *) (buffer + offset);
if (slot->XactId() != InvalidTransactionId || slot->StartUndoPtr() != INVALID_UNDO_REC_PTR) {
if (flag > 0) {
uint32 tempOffset = offset - (uint32)flag * MAXALIGN(sizeof(TransactionSlot));
TransactionSlot *tempSlot = NULL;
fprintf(stdout, "WARNING: invalid slot num %d.\n", flag);
for (int i = 0; i < flag; i++) {
tempOffset += MAXALIGN(sizeof(TransactionSlot));
tempSlot = (TransactionSlot *) (buffer + tempOffset);
fprintf(stdout,
"offset=%u, xid=%lu, startptr=%lu, endptr=%lu, dbid=%u, rollback finish=%d.\n",
tempOffset, tempSlot->XactId(), tempSlot->StartUndoPtr(), tempSlot->EndUndoPtr(),
tempSlot->DbId(), !(tempSlot->NeedRollback()));
}
flag = 0;
}
fprintf(stdout, "offset=%u, xid=%lu, startptr=%lu, endptr=%lu, dbid=%u, rollback finish=%d.\n",
offset, slot->XactId(), slot->StartUndoPtr(), slot->EndUndoPtr(),
slot->DbId(), !(slot->NeedRollback()));
} else {
flag++;
}
}
}
@ -4964,26 +5081,40 @@ typedef struct UndoHeader {
UndoRecordOldTd wtd_;
UndoRecordPartition wpart_;
UndoRecordTablespace wtspc_;
StringInfoData rawdata_;
} UndoHeader;
char g_dir[100] = {0};
typedef struct UHeapDiskTupleDataHeader {
ShortTransactionId xid;
uint16 td_id : 8, reserved : 8; /* Locker as well as the last updater, 8 bits each */
uint16 flag; /* Flag for tuple attributes */
uint16 flag2; /* Number of attributes for now(11 bits) */
uint8 t_hoff; /* header incl. bitmap, padding */
} UHeapDiskTupleDataHeader;
char g_dir[MAX_PATH_LEN] = {0};
static int OpenUndoBlock(int zoneId, BlockNumber blockno)
{
char fileName[100] = {0};
char fileName[MAX_PATH_LEN] = {0};
const int idLen = 13;
errno_t rc = EOK;
int segno = blockno / UNDOSEG_SIZE;
rc = snprintf_s(fileName, sizeof(fileName), sizeof(fileName), g_dir);
rc = snprintf_s(fileName, sizeof(fileName), sizeof(fileName) - 1, g_dir);
securec_check(rc, "\0", "\0");
rc = snprintf_s(fileName + strlen(fileName), sizeof(fileName), sizeof(fileName), "%05X.%07zX", zoneId, segno);
if (strlen(g_dir) + idLen >= MAX_PATH_LEN) {
fprintf(stdout, "ERROR: path is too long, MAX_PATH_LEN %d, path len %lu.\n", MAX_PATH_LEN, strlen(g_dir));
}
rc = snprintf_s(fileName + strlen(fileName), sizeof(fileName) - strlen(fileName),
sizeof(fileName) - strlen(fileName) - 1, "%05X.%07zX", zoneId, segno);
securec_check(rc, "\0", "\0");
int fd = open(fileName, O_RDONLY | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0) {
fprintf(stderr, "Open file(%s), return code desc(%s).\n", UNDO_META_FILE, strerror(errno));
return-1;
fprintf(stderr, "Open file(%s), return code desc(%s).\n", fileName, strerror(errno));
return -1;
}
return fd;
@ -5057,69 +5188,191 @@ bool ReadUndoRecord(UndoHeader *urec, char *buffer, int startingByte, int *alrea
&readptr, endptr, &myBytesRead, alreadyRead)) {
return false;
}
}
urec->rawdata_.len = urec->wpay_.payloadlen;
if (urec->rawdata_.len > 0) {
if (urec->rawdata_.data == NULL) {
urec->rawdata_.data = (char *)malloc(urec->rawdata_.len);
if (NULL == urec->rawdata_.data) {
fprintf(stderr, "out of memory\n");
return false;
}
}
if (!ReadUndoBytes((char *)urec->rawdata_.data, urec->rawdata_.len,
&readptr, endptr, &myBytesRead, alreadyRead)) {
return false;
}
}
}
return true;
}
static bool ParseUndoRecord(UndoRecPtr urp)
static bool ParseUndoRecord(UndoRecPtr urp, bool forward = false)
{
char buffer[BLCKSZ] = {'\0'};
BlockNumber blockno = UNDO_PTR_GET_BLOCK_NUM(urp);
int zoneId = UNDO_PTR_GET_ZONE_ID(urp);
int startingByte = UNDO_PTR_GET_PAGE_OFFSET(urp);
int fd = -1;
int alreadyRead = 0;
off_t seekpos;
errno_t rc = EOK;
uint32 ret = 0;
UndoHeader *urec = (UndoHeader *)malloc(sizeof(UndoHeader));
UndoRecPtr blkprev = INVALID_UNDO_REC_PTR;
rc = memset_s(urec, sizeof(UndoHeader), (0), sizeof(UndoHeader));
securec_check(rc, "\0", "\0");
do {
fd = OpenUndoBlock(zoneId, blockno);
if (fd < 0) {
free(urec);
return false;
}
seekpos = (off_t)BLCKSZ * (blockno % ((BlockNumber)UNDOSEG_SIZE));
lseek(fd, seekpos, SEEK_SET);
rc = memset_s(buffer, BLCKSZ, 0, BLCKSZ);
char buffer[BLCKSZ] = {'\0'};
BlockNumber blockno = UNDO_PTR_GET_BLOCK_NUM(urp);
int zoneId = UNDO_PTR_GET_ZONE_ID(urp);
int startingByte = UNDO_PTR_GET_PAGE_OFFSET(urp);
int fd = -1;
int alreadyRead = 0;
off_t seekpos;
errno_t rc = EOK;
uint32 ret = 0;
UndoHeader *urec = (UndoHeader *)malloc(sizeof(UndoHeader));
UndoRecPtr blkprev = INVALID_UNDO_REC_PTR;
const UndoRecordSize UNDO_RECORD_FIX_SIZE = SIZE_OF_UNDO_RECORD_HEADER + SIZE_OF_UNDO_RECORD_BLOCK;
uint32 curSize = UNDO_RECORD_FIX_SIZE + sizeof(UndoRecordSize);
PageHeader phdr;
rc = memset_s(urec, sizeof(UndoHeader), (0), sizeof(UndoHeader));
securec_check(rc, "\0", "\0");
ret = read(fd, (char *)buffer, BLCKSZ);
if (ret != BLCKSZ) {
do {
fd = OpenUndoBlock(zoneId, blockno);
if (fd < 0) {
free(urec);
return false;
}
seekpos = (off_t)BLCKSZ * (blockno % ((BlockNumber)UNDOSEG_SIZE));
lseek(fd, seekpos, SEEK_SET);
rc = memset_s(buffer, BLCKSZ, 0, BLCKSZ);
securec_check(rc, "\0", "\0");
ret = read(fd, (char *)buffer, BLCKSZ);
if (ret != BLCKSZ) {
close(fd);
free(urec);
fprintf(stderr, "Read undo meta page failed, expect size(8192), real size(%u).\n", ret);
return false;
}
phdr = (PageHeader)buffer;
if (ReadUndoRecord(urec, buffer, startingByte, &alreadyRead)) {
break;
}
startingByte = UNDO_LOG_BLOCK_HEADER_SIZE;
blockno++;
close(fd);
} while (true);
if (!TransactionIdIsValid(urec->whdr_.xid)) {
free(urec);
fprintf(stderr, "Read undo meta page failed, expect size(8192), real size(%u).\n", ret);
return false;
close(fd);
return true;
}
if (ReadUndoRecord(urec, buffer, startingByte, &alreadyRead)) {
break;
fprintf(stdout, "DumpPageInfo: lsn:%X/%X, pd_checksum:%u, flags:%u, lower:%u, upper:%u, special:%u, "
"pagesize_version:%u.\n",
phdr->pd_lsn.xlogid, phdr->pd_lsn.xrecoff, (uint16)(phdr->pd_checksum), (uint16)(phdr->pd_flags),
(uint16)(phdr->pd_lower), (uint16)(phdr->pd_upper), (uint16)(phdr->pd_special),
(uint16)(phdr->pd_pagesize_version));
blkprev = urec->wblk_.blkprev;
fprintf(stdout, "UndoRecPtr(%lu):\nwhdr = xid(%lu), cid(%u), reloid(%u), relfilenode(%u), utype(%u), "
"uinfo(%u).\n", urp, urec->whdr_.xid, urec->whdr_.cid, urec->whdr_.reloid, urec->whdr_.relfilenode,
urec->whdr_.utype, urec->whdr_.uinfo);
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_PAYLOAD) != 0) {
fprintf(stdout, "flag_payload, size = %lu.\n", SIZE_OF_UNDO_RECORD_PAYLOAD);
curSize += SIZE_OF_UNDO_RECORD_PAYLOAD;
curSize += urec->rawdata_.len;
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_TRANSAC) != 0) {
fprintf(stdout, "flag_transac, size = %lu.\n", SIZE_OF_UNDO_RECORD_TRANSACTION);
curSize += SIZE_OF_UNDO_RECORD_TRANSACTION;
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_BLOCK) != 0) {
fprintf(stdout, "flag_block, size = %lu.\n", SIZE_OF_UNDO_RECORD_BLOCK);
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_OLDTD) != 0) {
fprintf(stdout, "flag_oldtd, size = %lu.\n", SIZE_OF_UNDO_RECORD_OLDTD);
curSize += SIZE_OF_UNDO_RECORD_OLDTD;
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_CONTAINS_SUBXACT) != 0) {
/* subxid is at the end of rawdata */
char *end = (char *)(urec->rawdata_.data) + (urec->rawdata_.len - sizeof(SubTransactionId));
SubTransactionId *subxid = (SubTransactionId *)end;
fprintf(stdout, "flag_subxact, subxid = %lu.\n", *subxid);
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_HAS_PARTOID) != 0) {
fprintf(stdout, "flag_partoid, size = %lu.\n", SIZE_OF_UNDO_RECORD_PARTITION);
curSize += SIZE_OF_UNDO_RECORD_PARTITION;
}
if ((urec->whdr_.uinfo & UNDO_UREC_INFO_HAS_TABLESPACEOID) != 0) {
fprintf(stdout, "flag_tablespaceoid, size = %lu.\n", SIZE_OF_UNDO_RECORD_TABLESPACE);
curSize += SIZE_OF_UNDO_RECORD_TABLESPACE;
}
fprintf(stdout, "wblk = blk_prev(%lu), blockno(%u), offset(%u).\n", urec->wblk_.blkprev, urec->wblk_.blkno,
urec->wblk_.offset);
fprintf(stdout, "wtxn = prevurp(%lu).\n", urec->wtxn_.prevurp);
fprintf(stdout, "wpay = payloadlen(%u).\n", urec->wpay_.payloadlen);
fprintf(stdout, "wtd = oldxactid(%lu).\n", urec->wtd_.oldxactid);
fprintf(stdout, "wpart_ = partitionoid(%u).\n", urec->wpart_.partitionoid);
fprintf(stdout, "wtspc_ = tablespace(%u).\n", urec->wtspc_.tablespace);
fprintf(stdout, "len = alreadyRead(%u).\n", alreadyRead);
char prevLen[2];
UndoRecordSize byteToRead = sizeof(UndoRecordSize);
char *readptr = buffer + startingByte - byteToRead;
for (auto i = 0; i < byteToRead; i++) {
prevLen[i] = *readptr;
readptr++;
}
UndoRecordSize prevRecLen = *(UndoRecordSize *)(prevLen);
fprintf(stdout, "prevLen = prevLen(%u).\n", prevRecLen);
if (urec->whdr_.utype != UNDO_INSERT && urec->whdr_.utype != UNDO_MULTI_INSERT &&
urec->rawdata_.len > 0 && urec->rawdata_.data != NULL) {
UHeapDiskTupleDataHeader diskTuple;
if (urec->whdr_.utype == UNDO_INPLACE_UPDATE) {
Assert(urec->rawdata_.len >= (int)SizeOfUHeapDiskTupleData);
uint8 *t_hoff_ptr = (uint8 *)(urec->rawdata_.data);
uint8 t_hoff = *t_hoff_ptr;
char *cur_undodata_ptr = NULL;
fprintf(stdout, "t_hoff %u ", t_hoff);
rc = memcpy_s((char *)&diskTuple + OffsetTdId, SizeOfUHeapDiskTupleHeaderExceptXid,
urec->rawdata_.data + sizeof(uint8), SizeOfUHeapDiskTupleHeaderExceptXid);
securec_check(rc, "", "");
cur_undodata_ptr = urec->rawdata_.data + sizeof(uint8) + t_hoff - OffsetTdId;
uint8* flags_ptr = (uint8 *)cur_undodata_ptr;
uint8 flags = *flags_ptr;
fprintf(stdout, "flags %u ", flags);
cur_undodata_ptr += sizeof(uint8);
if (flags & UREC_INPLACE_UPDATE_XOR_PREFIX) {
uint16* prefixlen_ptr = (uint16 *)(cur_undodata_ptr);
cur_undodata_ptr += sizeof(uint16);
uint16 prefixlen = *prefixlen_ptr;
fprintf(stdout, "PREFIXLEN %u ", prefixlen);
}
if (flags & UREC_INPLACE_UPDATE_XOR_SUFFIX) {
uint16* suffixlen_ptr = (uint16 *)(cur_undodata_ptr);
cur_undodata_ptr += sizeof(uint16);
uint16 suffixlen = *suffixlen_ptr;
fprintf(stdout, "SUFFIXLEN %u ", suffixlen);
}
diskTuple.xid = (ShortTransactionId)InvalidTransactionId;
} else {
Assert(urec->rawdata_.len >= (int)SizeOfUHeapDiskTupleHeaderExceptXid);
rc = memcpy_s(((char *)&diskTuple + OffsetTdId), SizeOfUHeapDiskTupleHeaderExceptXid,
urec->rawdata_.data, SizeOfUHeapDiskTupleHeaderExceptXid);
securec_check(rc, "", "");
diskTuple.xid = (ShortTransactionId)InvalidTransactionId;
}
fprintf(stdout, "\ndiskTuple: td_id %u, reserved %u, flag %u, flag2 %u, t_hoff %u.\n",
diskTuple.td_id, diskTuple.reserved, diskTuple.flag, diskTuple.flag2, diskTuple.t_hoff);
fprintf(stdout, "current undo record size: %u\n\n", curSize);
}
startingByte = UNDO_LOG_BLOCK_HEADER_SIZE;
blockno++;
} while (true);
free(urec);
close(fd);
blkprev = urec->wblk_.blkprev;
fprintf(stderr, "UndoRecPtr(%lu):\nwhdr = xid(%lu), cid(%u), reloid(%u), relfilenode(%u), utype(%u).\n",
urp, urec->whdr_.xid, urec->whdr_.cid, urec->whdr_.reloid, urec->whdr_.relfilenode, urec->whdr_.utype);
fprintf(stderr, "wblk = blk_prev(%lu), blockno(%u), offset(%u).\n", urec->wblk_.blkprev, urec->wblk_.blkno,
urec->wblk_.offset);
fprintf(stderr, "wtxn = prevurp(%lu).\n", urec->wtxn_.prevurp);
fprintf(stderr, "wpay = payloadlen(%u).\n", urec->wpay_.payloadlen);
free(urec);
close(fd);
if (blkprev != INVALID_UNDO_REC_PTR) {
ParseUndoRecord(blkprev);
}
if (!forward) {
urp = blkprev;
} else {
urp = UNDO_LOG_OFFSET_PLUS_USABLE_BYTES(urp, curSize);
}
} while (urp != INVALID_UNDO_REC_PTR);
return true;
}
@ -5336,7 +5589,9 @@ static void fill_filenode_map(char** class_map)
return;
}
if (NULL != cmap[i].class_name) {
memcpy(name, cmap[i].class_name, strlen(cmap[i].class_name) + 1);
errno_t rc = EOK;
rc = memcpy_s(name, 64 * sizeof(char), cmap[i].class_name, strlen(cmap[i].class_name) + 1);
securec_check_c(rc, "\0", "\0");
class_map[cmap[i].ralation_id] = name;
name = NULL;
} else {
@ -5529,7 +5784,8 @@ int main(int argc, char** argv)
if (((start_point != 0) || (num_block != 0)) &&
/* only heap/index/undo/dw */
(hackingtype > HACKING_UNDO && hackingtype != HACKING_DW && hackingtype != HACKING_SEGMENT)) {
(hackingtype > HACKING_UNDO && hackingtype != HACKING_DW && hackingtype != HACKING_SEGMENT &&
hackingtype != HACKING_INDEX_URQ)) {
fprintf(stderr, "Start point or block number only takes effect when hacking segment/heap/undo/index.\n");
start_point = num_block = 0;
}
@ -5595,6 +5851,13 @@ int main(int argc, char** argv)
}
break;
case HACKING_INDEX_URQ:
if (!parse_page_file(filename, SEG_INDEX_URQ, start_point, num_block)) {
(void)fprintf(stderr, "Error during parsing index urq file %s\n", filename);
exit(1);
}
break;
case HACKING_FILENODE:
if (!parse_filenodemap_file(filename)) {
fprintf(stderr, "Error during parsing filenode_map file %s\n", filename);
@ -5695,8 +5958,14 @@ int main(int argc, char** argv)
case HACKING_UNDO_RECORD:
ret = snprintf_s(g_dir, sizeof(g_dir), sizeof(g_dir), filename);
securec_check(ret, "\0", "\0");
if (!ParseUndoRecord(cu_offset)) {
fprintf(stderr, "Error during parsing undo group meta file %s\n", filename);
fprintf(stdout, "Parsing backward, urp %lu:\n", cu_offset);
if (!ParseUndoRecord(cu_offset, false)) {
fprintf(stderr, "Error during parsing undo group meta file %s backward\n", filename);
exit(1);
}
fprintf(stdout, "Parsing forward, urp %lu:\n", cu_offset);
if (!ParseUndoRecord(cu_offset, true)) {
fprintf(stderr, "Error during parsing undo group meta file %s forward\n", filename);
exit(1);
}
break;

View File

@ -39,7 +39,7 @@ SET(xlogdump_LINK_LIBS libpgcommon.a -lpgport -lcrypt -ldl -lm -ledit -lssl -lcr
add_bintarget(pg_xlogdump TGT_xlogdump_SRC TGT_xlogdump_INC "${xlogdump_DEF_OPTIONS}" "${xlogdump_COMPILE_OPTIONS}" "${xlogdump_LINK_OPTIONS}" "${xlogdump_LINK_LIBS}")
add_dependencies(pg_xlogdump pgport_static pgcommon_static)
target_link_directories(pg_xlogdump PUBLIC
${LIBOPENSSL_LIB_PATH} ${PROTOBUF_LIB_PATH} ${LIBPARQUET_LIB_PATH} ${LIBCURL_LIB_PATH} ${SECURE_LIB_PATH}
${LIBOPENSSL_LIB_PATH} ${LIBCURL_LIB_PATH} ${SECURE_LIB_PATH}
${ZLIB_LIB_PATH} ${LIBOBS_LIB_PATH} ${LIBEDIT_LIB_PATH} ${LIBCGROUP_LIB_PATH} ${CMAKE_BINARY_DIR}/lib
)

View File

@ -78,14 +78,17 @@ const char* timestamptz_to_str(TimestampTz dt)
char zone[MAXDATELEN + 1];
time_t result = (time_t)timestamptz_to_time_t(dt);
struct tm* ltime = localtime(&result);
errno_t rc = EOK;
strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S", ltime);
strftime(zone, sizeof(zone), "%Z", ltime);
#ifdef HAVE_INT64_TIMESTAMP
sprintf(buf, "%s.%06d %s", ts, (int)(dt % USECS_PER_SEC), zone);
rc = snprintf_s(buf, sizeof(buf), sizeof(buf) - 1, "%s.%06d %s", ts, (int)(dt % USECS_PER_SEC), zone);
securec_check_ss_c(rc, "\0", "\0");
#else
sprintf(buf, "%s.%.6f %s", ts, fabs(dt - floor(dt)), zone);
rc = snprintf_s(buf, sizeof(buf), sizeof(buf) - 1, "%s.%.6f %s", ts, fabs(dt - floor(dt)), zone);
securec_check_ss_c(rc, "\0", "\0");
#endif
return buf;

View File

@ -238,7 +238,7 @@ static bool foreign_expr_walker_var(Node *node, foreign_glob_cxt *glob_cxt, Oid
}
static void foreign_expr_walker_const(Node *node, Oid *collation,FDWCollateState * state)
static bool foreign_expr_walker_const(Node *node, Oid *collation,FDWCollateState * state)
{
Const *c = (Const *)node;
@ -255,9 +255,10 @@ static void foreign_expr_walker_const(Node *node, Oid *collation,FDWCollateSta
*state = FDW_COLLATE_UNSAFE;
}
return true;
}
static void foreign_expr_walker_param(Node *node, Oid *collation,FDWCollateState * state)
static bool foreign_expr_walker_param(Node *node, Oid *collation,FDWCollateState * state)
{
Param *p = (Param *)node;
@ -271,6 +272,7 @@ static void foreign_expr_walker_param(Node *node, Oid *collation,FDWCollateState
*state = FDW_COLLATE_UNSAFE;
}
return true;
}
static bool foreign_expr_walker_arrayref(Node *node, foreign_glob_cxt *glob_cxt, foreign_loc_cxt *inner_cxt,Oid *collation,FDWCollateState * state)
@ -626,11 +628,11 @@ static bool foreign_expr_walker(Node *node, foreign_glob_cxt *glob_cxt, foreign_
} break;
case T_Const: {
foreign_expr_walker_const(node, &collation, &state);
walker_result = foreign_expr_walker_const(node, &collation, &state);
} break;
case T_Param: {
foreign_expr_walker_param(node, &collation, &state);
walker_result = foreign_expr_walker_param(node, &collation, &state);
} break;
case T_ArrayRef: {

View File

@ -179,11 +179,8 @@ static bool is_valid_for_masking(const char* func_name, Oid funcnsp, int& funcid
{
CatCList *catlist = NULL;
#ifndef ENABLE_MULTIPLE_NODES
if (t_thrd.proc->workingVersionNum < 92470) {
catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(func_name));
} else {
catlist = SearchSysCacheList1(PROCALLARGS, CStringGetDatum(func_name));
}
int cacheId = (t_thrd.proc->workingVersionNum < 92470) ? PROCNAMEARGSNSP : PROCALLARGS;
catlist = SearchSysCacheList1(cacheId, CStringGetDatum(func_name));
#else
catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(func_name));
#endif

View File

@ -170,9 +170,10 @@ bool load_policy_labels(bool reload)
}
/* scan to load all labels */
if (all_labels == NULL) {
all_labels = new loaded_labels;
if (all_labels != NULL) {
delete all_labels;
}
all_labels = new loaded_labels;
scan_policy_labels(all_labels);
return true;

View File

@ -855,7 +855,7 @@ void gen_policy_labelitem(PolicyLabelItem &item, const ListCell *rel, int objtyp
switch (objtype) {
case O_VIEW:
case O_TABLE: {
Oid relid = RangeVarGetRelid((RangeVar *)rel, NoLock, false);
Oid relid = RangeVarGetRelid((const RangeVar *)rel, NoLock, true);
if (!OidIsValid(relid)) {
return;
}
@ -865,7 +865,7 @@ void gen_policy_labelitem(PolicyLabelItem &item, const ListCell *rel, int objtyp
}
case O_FUNCTION: {
FuncWithArgs *func = (FuncWithArgs *)(rel);
Oid funcid = LookupFuncNameTypeNames(func->funcname, func->funcargs, false);
Oid funcid = LookupFuncNameTypeNames(func->funcname, func->funcargs, true);
if (!OidIsValid(funcid)) {
return;
}
@ -974,4 +974,4 @@ CmdType get_rte_commandtype(RangeTblEntry *rte)
} else {
return CMD_UNKNOWN;
}
}
}

View File

@ -140,6 +140,7 @@ static THR_LOCAL MngEventsVector *mng_events = NULL;
using StrMap = gs_stl::gs_map<gs_stl::gs_string, masking_result>;
static void gsaudit_next_PostParseAnalyze_hook(ParseState *pstate, Query *query);
static void destroy_local_parameter();
static void destory_thread_variables()
{
@ -410,18 +411,16 @@ bool verify_copy_command_is_reparsed(List* parsetree_list, const char* query_str
gs_stl::gs_string& replaced_query_string)
{
/* do nothing when enable_security_policy is off */
if (!u_sess->attr.attr_security.Enable_Security_Policy || !is_masking_policy_exist()) {
return false;
}
bool is_exist = (!u_sess->attr.attr_security.Enable_Security_Policy ||
!is_masking_policy_exist());
if (is_exist) return false;
ListCell* item = NULL;
foreach(item, parsetree_list) {
Node* parsetree = (Node *) lfirst(item);
if (nodeTag(parsetree) == T_CopyStmt) {
CopyStmt* stmt = (CopyStmt*)parsetree;
if (stmt->is_from || stmt->query) {
return false;
}
bool is_from_query = (stmt->is_from || stmt->query);
if (is_from_query) return false;
/* verify policies */
IPV6 ip;
get_remote_addr(&ip);
@ -433,10 +432,8 @@ bool verify_copy_command_is_reparsed(List* parsetree_list, const char* query_str
checkSecurityPolicyFilter_hook(filter_item, &policy_ids);
}
}
if (policy_ids.empty() && !check_audit_policy_filter(&filter_item, &policy_ids)) {
return false;
}
bool is_empty_filter = (policy_ids.empty() && !check_audit_policy_filter(&filter_item, &policy_ids));
if (is_empty_filter) return false;
gs_stl::gs_string replace_buffer("(select ");
char replace_name[POLICY_TMP_BUFF_LEN] = {0};
@ -519,30 +516,6 @@ void set_result_set_function(const PolicyLabelItem &func)
}
}
/*
* check exchange partition list contains masked table.
* For given AlterTableCmd list, check whether ordinary
* tables have bound masking policies.
*/
static bool exchange_partition_with_masked_table(List *cmds)
{
if (cmds == NIL) {
return false;
}
ListCell *lc = NULL;
foreach (lc, cmds) {
AlterTableCmd *cmd = (AlterTableCmd*)lfirst(lc);
if (cmd->subtype == AT_ExchangePartition && cmd->exchange_with_rel != NULL) {
Oid relid = RangeVarGetRelid(cmd->exchange_with_rel, NoLock, true);
if (is_masked_relation(relid)) {
return true;
}
}
}
return false;
}
static void gsaudit_next_PostParseAnalyze_hook(ParseState *pstate, Query *query)
{
/* do nothing when enable_security_policy is off */
@ -559,7 +532,7 @@ static void gsaudit_next_PostParseAnalyze_hook(ParseState *pstate, Query *query)
enable_dml_auditing = true;
}
if (u_sess->proc_cxt.IsInnerMaintenanceTools || (t_thrd.role != WORKER && t_thrd.role != THREADPOOL_WORKER) ||
if (u_sess->proc_cxt.IsNoMaskingInnerTools || (t_thrd.role != WORKER && t_thrd.role != THREADPOOL_WORKER) ||
(!enable_dml_auditing && !is_masking_policy_exist())) {
if (next_post_parse_analyze_hook) {
next_post_parse_analyze_hook(pstate, query);
@ -656,9 +629,24 @@ static void gsaudit_next_PostParseAnalyze_hook(ParseState *pstate, Query *query)
/* For ALTER TABLE EXCHANGE, will not allowed if the ordinary table(it's columns) has masking policy.*/
if (query->utilityStmt != NULL && nodeTag(query->utilityStmt) == T_AlterTableStmt) {
AlterTableStmt *alter_table = (AlterTableStmt *)(query->utilityStmt);
if (exchange_partition_with_masked_table(alter_table->cmds)) {
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("ALTER TABLE EXCHANGE can not execute with masked ordinary table.")));
Oid relid = RangeVarGetRelid(alter_table->relation, NoLock, true);
ListCell *lc = NULL;
foreach (lc, alter_table->cmds) {
AlterTableCmd *cmd = (AlterTableCmd *)lfirst(lc);
if (cmd->subtype == AT_ExchangePartition) {
Assert(PointerIsValid(cmd->exchange_with_rel));
if (is_masked_relation(relid)) {
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("ALTER TABLE EXCHANGE can not execute with masked partition table.")));
}
Oid ordTableOid = RangeVarGetRelid(cmd->exchange_with_rel, NoLock, true);
if (is_masked_relation(ordTableOid)) {
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("ALTER TABLE EXCHANGE can not execute with masked ordinary table.")));
}
}
}
}
break;

View File

@ -48,7 +48,7 @@ declare
rd INTEGER;
size INTEGER := pg_catalog.length(col);
tmp text := col;
res text;
res text := '';
begin
while size > 0 loop
rd := pg_catalog.floor(pg_catalog.random() * pg_catalog.length(tmp) + 1);

View File

@ -1,5 +1,5 @@
# security_plugin extension
comment = 'provides security functionality'
default_version = '1.0'
module_pathname = '$libdir/security_plugin'
relocatable = true
# security_plugin extension
comment = 'provides security functionality'
default_version = '1.0'
module_pathname = '$libdir/security_plugin'
relocatable = true

39
contrib/sql_decoding/sql_decoding.cpp Normal file → Executable file
View File

@ -107,9 +107,9 @@ static void pg_decode_startup(LogicalDecodingContext* ctx, OutputPluginOptions*
foreach (option, ctx->output_plugin_options) {
DefElem* elem = (DefElem*)lfirst(option);
Assert(elem->arg == NULL || IsA(elem->arg, String));
if (strcmp(elem->defname, "include-xids") == 0) {
/* if option does not provide a value, it means its value is true */
if (elem->arg == NULL) {
@ -194,7 +194,7 @@ static void pg_decode_commit_txn(LogicalDecodingContext* ctx, ReorderBufferTXN*
OutputPluginPrepareWrite(ctx, true);
appendStringInfoString(ctx->out, "COMMIT");
appendStringInfo(ctx->out, " (at %s)", timestamptz_to_str(txn->commit_time));
appendStringInfo(ctx->out, " (at %s)", timestamptz_to_str(txn->commit_time));
appendStringInfo(ctx->out, " %lu", txn->csn);
OutputPluginWrite(ctx, true);
}
@ -286,7 +286,7 @@ static void print_literal(StringInfo s, Oid typid, char* outputstr)
/*
* Decode tuple into stringinfo.
*/
static void TupleToStringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple, bool skip_nulls)
static void TupleToStringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple)
{
Assert(tuple != NULL);
if ((tuple->tupTableType == HEAP_TUPLE) && (HEAP_TUPLE_IS_COMPRESSED(tuple->t_data) ||
@ -315,10 +315,6 @@ static void TupleToStringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple,
origval = uheap_getattr((UHeapTuple)tuple, natt + 1, tupdesc, &isnull);
}
if (skip_nulls && isnull) {
continue;
}
/* query output function */
Oid typid = attr->atttypid; /* type of current attribute */
getTypeOutputInfo(typid, &typoutput, &typisvarlena);
@ -343,7 +339,7 @@ static void TupleToStringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple,
* Decode tuple into stringinfo.
* This function is used for UPDATE or DELETE statements.
*/
static void TupleToStringinfoUpd(StringInfo s, TupleDesc tupdesc, HeapTuple tuple, bool skip_nulls)
static void TupleToStringinfoUpd(Relation relation, StringInfo s, TupleDesc tupdesc, HeapTuple tuple)
{
if ((tuple->tupTableType == HEAP_TUPLE) && (HEAP_TUPLE_IS_COMPRESSED(tuple->t_data) ||
(int)HeapTupleHeaderGetNatts(tuple->t_data, tupdesc) > tupdesc->natts)) {
@ -360,7 +356,7 @@ static void TupleToStringinfoUpd(StringInfo s, TupleDesc tupdesc, HeapTuple tupl
Form_pg_attribute attr = tupdesc->attrs[natt]; /* the attribute itself */
if (attr->attisdropped || attr->attnum < 0) {
if (attr->attisdropped || attr->attnum < 0 || !IsRelationReplidentKey(relation, attr->attnum)) {
continue;
}
@ -371,10 +367,6 @@ static void TupleToStringinfoUpd(StringInfo s, TupleDesc tupdesc, HeapTuple tupl
origval = uheap_getattr((UHeapTuple)tuple, natt + 1, tupdesc, &isnull);
}
if (isnull && skip_nulls) {
continue;
}
if (!isFirstAtt) {
appendStringInfoString(s, " and ");
} else {
@ -403,31 +395,32 @@ static void TupleToStringinfoUpd(StringInfo s, TupleDesc tupdesc, HeapTuple tupl
* Callback for handle decoded tuple.
* Additional info will be added if the tuple is found null.
*/
static void TupleHandler(StringInfo s, TupleDesc tupdesc, ReorderBufferChange* change, bool isHeap, bool isNewTuple)
static void TupleHandler(Relation relation, StringInfo s, TupleDesc tupdesc, ReorderBufferChange* change,
bool isHeap, bool isNewTuple)
{
if (isHeap && isNewTuple) {
if (change->data.tp.newtuple == NULL) {
appendStringInfoString(s, " (no-tuple-data)");
} else {
TupleToStringinfo(s, tupdesc, &change->data.tp.newtuple->tuple, false);
TupleToStringinfo(s, tupdesc, &change->data.tp.newtuple->tuple);
}
} else if (isHeap && !isNewTuple) {
if (change->data.tp.oldtuple == NULL) {
appendStringInfoString(s, " (no-tuple-data)");
} else {
TupleToStringinfoUpd(s, tupdesc, &change->data.tp.oldtuple->tuple, true);
TupleToStringinfoUpd(relation, s, tupdesc, &change->data.tp.oldtuple->tuple);
}
} else if (!isHeap && isNewTuple) {
if (change->data.utp.newtuple == NULL) {
appendStringInfoString(s, " (no-tuple-data)");
} else {
TupleToStringinfo(s, tupdesc, (HeapTuple)(&change->data.utp.newtuple->tuple), false);
TupleToStringinfo(s, tupdesc, (HeapTuple)(&change->data.utp.newtuple->tuple));
}
} else {
if (change->data.utp.oldtuple == NULL) {
appendStringInfoString(s, " (no-tuple-data)");
} else {
TupleToStringinfoUpd(s, tupdesc, (HeapTuple)(&change->data.utp.oldtuple->tuple), true);
TupleToStringinfoUpd(relation, s, tupdesc, (HeapTuple)(&change->data.utp.oldtuple->tuple));
}
}
}
@ -472,7 +465,7 @@ static void pg_decode_change(
isHeap = false;
}
appendStringInfoString(ctx->out, " values ");
TupleHandler(ctx->out, tupdesc, change, isHeap, true);
TupleHandler(relation, ctx->out, tupdesc, change, isHeap, true);
break;
case REORDER_BUFFER_CHANGE_UPDATE:
case REORDER_BUFFER_CHANGE_UUPDATE:
@ -483,12 +476,12 @@ static void pg_decode_change(
isHeap = false;
}
appendStringInfoString(ctx->out, " where ");
TupleHandler(ctx->out, tupdesc, change, isHeap, false);
TupleHandler(relation, ctx->out, tupdesc, change, isHeap, false);
appendStringInfoChar(ctx->out, ';');
appendStringInfoString(ctx->out, "insert into ");
appendStringInfoString(ctx->out, quote_qualified_identifier(schema, table));
appendStringInfoString(ctx->out, " values ");
TupleHandler(ctx->out, tupdesc, change, isHeap, true);
TupleHandler(relation, ctx->out, tupdesc, change, isHeap, true);
break;
@ -502,7 +495,7 @@ static void pg_decode_change(
}
appendStringInfoString(ctx->out, " where ");
TupleHandler(ctx->out, tupdesc, change, isHeap, false);
TupleHandler(relation, ctx->out, tupdesc, change, isHeap, false);
break;
default:
Assert(false);

15
contrib/test_decoding/test_decoding.cpp Normal file → Executable file
View File

@ -199,7 +199,7 @@ static bool pg_decode_filter(LogicalDecodingContext* ctx, RepOriginId origin_id)
return true;
return false;
}
static void tuple_to_stringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple, bool skip_nulls)
static void tuple_to_stringinfo(Relation relation, StringInfo s, TupleDesc tupdesc, HeapTuple tuple, bool isOld)
{
if (HEAP_TUPLE_IS_COMPRESSED(tuple->t_data))
return;
@ -237,7 +237,7 @@ static void tuple_to_stringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple
* Don't print system columns, oid will already have been printed if
* present.
*/
if (attr->attnum < 0)
if (attr->attnum < 0 || (isOld && !IsRelationReplidentKey(relation, attr->attnum)))
continue;
typid = attr->atttypid;
@ -245,9 +245,6 @@ static void tuple_to_stringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple
/* get Datum from tuple */
origval = heap_getattr(tuple, natt + 1, tupdesc, &isnull);
if (isnull && skip_nulls)
continue;
/* print attribute name */
appendStringInfoChar(s, ' ');
appendStringInfoString(s, quote_identifier(NameStr(attr->attname)));
@ -327,20 +324,20 @@ static void pg_decode_change(
if (change->data.tp.newtuple == NULL)
appendStringInfoString(ctx->out, " (no-tuple-data)");
else
tuple_to_stringinfo(ctx->out, tupdesc, &change->data.tp.newtuple->tuple, false);
tuple_to_stringinfo(relation, ctx->out, tupdesc, &change->data.tp.newtuple->tuple, false);
break;
case REORDER_BUFFER_CHANGE_UPDATE:
appendStringInfoString(ctx->out, " UPDATE:");
if (change->data.tp.oldtuple != NULL) {
appendStringInfoString(ctx->out, " old-key:");
tuple_to_stringinfo(ctx->out, tupdesc, &change->data.tp.oldtuple->tuple, true);
tuple_to_stringinfo(relation, ctx->out, tupdesc, &change->data.tp.oldtuple->tuple, true);
appendStringInfoString(ctx->out, " new-tuple:");
}
if (change->data.tp.newtuple == NULL)
appendStringInfoString(ctx->out, " (no-tuple-data)");
else
tuple_to_stringinfo(ctx->out, tupdesc, &change->data.tp.newtuple->tuple, false);
tuple_to_stringinfo(relation, ctx->out, tupdesc, &change->data.tp.newtuple->tuple, false);
break;
case REORDER_BUFFER_CHANGE_DELETE:
appendStringInfoString(ctx->out, " DELETE:");
@ -350,7 +347,7 @@ static void pg_decode_change(
appendStringInfoString(ctx->out, " (no-tuple-data)");
/* In DELETE, only the replica identity is present; display that */
else
tuple_to_stringinfo(ctx->out, tupdesc, &change->data.tp.oldtuple->tuple, true);
tuple_to_stringinfo(relation, ctx->out, tupdesc, &change->data.tp.oldtuple->tuple, true);
break;
default:
Assert(false);

View File

@ -22,7 +22,7 @@
<repoType>Generic</repoType>
<id>
<offering>Huawei Secure C</offering>
<version>Huawei Secure C V100R001C01SPC010B002</version>
<version>Huawei Secure C V100R001C01SPC012B002</version>
</id>
<copies>
<copy>
@ -36,7 +36,7 @@
<repoType>Generic</repoType>
<id>
<offering>DOPRA SSP</offering>
<version>DOPRA SSP V300R021C10SPC010B100</version>
<version>DOPRA SSP V300R022C00SPC050B200</version>
</id>
<copies>
<copy>
@ -50,7 +50,7 @@
<repoType>Generic</repoType>
<id>
<offering>BiSheng JDK Enterprise</offering>
<version>BiSheng JDK Enterprise 2.1.0.320.B001</version>
<version>BiSheng JDK Enterprise 2.3.0.340.B003</version>
</id>
<copies>
<copy>
@ -74,4 +74,4 @@
</copies>
</dependency>
</dependencies>
</project>
</project>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-ABORT">
<refmeta>
<refentrytitle>ABORT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ABORT</refname>
<refpurpose>abort the current transaction</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ABORT [ WORK | TRANSACTION ] ;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ABORT">
<refmeta>
<refentrytitle>ABORT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ABORT</refname>
<refpurpose>abort the current transaction</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ABORT [ WORK | TRANSACTION ] ;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,17 +1,17 @@
<refentry id="SQL-ALTER_APP_WORKLOAD_GROUP_MAPPING">
<refmeta>
<refentrytitle>ALTER APP WORKLOAD GROUP MAPPING</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER APP WORKLOAD GROUP MAPPING</refname>
<refpurpose>modify app group relate with group mapping</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER APP WORKLOAD GROUP MAPPING app_name
WITH ( WORKLOAD_GPNAME = wg_name );
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_APP_WORKLOAD_GROUP_MAPPING">
<refmeta>
<refentrytitle>ALTER APP WORKLOAD GROUP MAPPING</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER APP WORKLOAD GROUP MAPPING</refname>
<refpurpose>modify app group relate with group mapping</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER APP WORKLOAD GROUP MAPPING app_name
WITH ( WORKLOAD_GPNAME = wg_name );
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,35 +1,35 @@
<refentry id="SQL-ALTER_AUDIT_POLICY">
<refmeta>
<refentrytitle>ALTER AUDIT POLICY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER AUDIT POLICY</refname>
<refpurpose>change a audit policy</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ADD | REMOVE } { [ privilege_audit_clause ] [ access_audit_clause ] };
ALTER AUDIT POLICY [ IF EXISTS ] policy_name MODIFY ( filter_group_clause );
ALTER AUDIT POLICY [ IF EXISTS ] policy_name DROP FILTER;
ALTER AUDIT POLICY [ IF EXISTS ] policy_name COMMENTS policy_comments;
ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ENABLE | DISABLE };
where privilege_audit_clause can be:
PRIVILEGES { DDL | ALL }
where access_audit_clause can be:
ACCESS { DML | ALL }
where filter_group_clause can be:
FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
where DDL can be:
{ ( ALTER | ANALYZE | COMMENT | CREATE | DROP | GRANT | REVOKE | SET | SHOW | LOGIN_ACCESS | LOGIN_FAILURE | LOGOUT | LOGIN ) }
where DML can be:
{ ( COPY | DEALLOCATE | DELETE_P | EXECUTE | REINDEX | INSERT | PREPARE | SELECT | TRUNCATE | UPDATE ) }
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_AUDIT_POLICY">
<refmeta>
<refentrytitle>ALTER AUDIT POLICY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER AUDIT POLICY</refname>
<refpurpose>change a audit policy</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ADD | REMOVE } { [ privilege_audit_clause ] [ access_audit_clause ] };
ALTER AUDIT POLICY [ IF EXISTS ] policy_name MODIFY ( filter_group_clause );
ALTER AUDIT POLICY [ IF EXISTS ] policy_name DROP FILTER;
ALTER AUDIT POLICY [ IF EXISTS ] policy_name COMMENTS policy_comments;
ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ENABLE | DISABLE };
where privilege_audit_clause can be:
PRIVILEGES { DDL | ALL }
where access_audit_clause can be:
ACCESS { DML | ALL }
where filter_group_clause can be:
FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
where DDL can be:
{ ( ALTER | ANALYZE | COMMENT | CREATE | DROP | GRANT | REVOKE | SET | SHOW | LOGIN_ACCESS | LOGIN_FAILURE | LOGOUT | LOGIN ) }
where DML can be:
{ ( COPY | DEALLOCATE | DELETE_P | EXECUTE | REINDEX | INSERT | PREPARE | SELECT | TRUNCATE | UPDATE ) }
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,24 +1,24 @@
<refentry id="SQL-ALTER_DATA_SOURCE">
<refmeta>
<refentrytitle>ALTER DATA SOURCE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DATA SOURCE</refname>
<refpurpose>alter the data source</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DATA SOURCE src_name
[TYPE 'type_str']
[VERSION {'version_str' | NULL}]
[OPTIONS ( { [ADD | SET | DROP] optname ['optvalue'] } [, ...] )];
ALTER DATA SOURCE src_name RENAME TO src_new_name;
ALTER DATA SOURCE src_name OWNER TO new_owner;
Valid optname are:
DSN, USERNAME, PASSWORD, ENCODING
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_DATA_SOURCE">
<refmeta>
<refentrytitle>ALTER DATA SOURCE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DATA SOURCE</refname>
<refpurpose>alter the data source</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DATA SOURCE src_name
[TYPE 'type_str']
[VERSION {'version_str' | NULL}]
[OPTIONS ( { [ADD | SET | DROP] optname ['optvalue'] } [, ...] )];
ALTER DATA SOURCE src_name RENAME TO src_new_name;
ALTER DATA SOURCE src_name OWNER TO new_owner;
Valid optname are:
DSN, USERNAME, PASSWORD, ENCODING
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,29 +1,29 @@
<refentry id="SQL-ALTER_DATABASE">
<refmeta>
<refentrytitle>ALTER DATABASE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DATABASE</refname>
<refpurpose>change a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DATABASE database_name
[ [ WITH ] CONNECTION LIMIT connlimit ];
ALTER DATABASE database_name
RENAME TO new_name;
ALTER DATABASE database_name
OWNER TO new_owner;
ALTER DATABASE database_name
SET TABLESPACE new_tablespace;
ALTER DATABASE database_name
SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT };
ALTER DATABASE database_name
RESET { configuration_parameter | ALL };
ALTER DATABASE database_name
[ WITH ] { ENABLE | DISABLE } PRIVATE OBJECT;
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_DATABASE">
<refmeta>
<refentrytitle>ALTER DATABASE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DATABASE</refname>
<refpurpose>change a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DATABASE database_name
[ [ WITH ] CONNECTION LIMIT connlimit ];
ALTER DATABASE database_name
RENAME TO new_name;
ALTER DATABASE database_name
OWNER TO new_owner;
ALTER DATABASE database_name
SET TABLESPACE new_tablespace;
ALTER DATABASE database_name
SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT };
ALTER DATABASE database_name
RESET { configuration_parameter | ALL };
ALTER DATABASE database_name
[ WITH ] { ENABLE | DISABLE } PRIVATE OBJECT;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,103 +1,103 @@
<refentry id="SQL-ALTER_DEFAULT_PRIVILEGES">
<refmeta>
<refentrytitle>ALTER DEFAULT PRIVILEGES</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DEFAULT PRIVILEGES</refname>
<refpurpose>define default access privileges</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } target_role [, ...] ]
[ IN SCHEMA schema_name [, ...] ]
abbreviated_grant_or_revoke;
where abbreviated_grant_or_revoke can be:
grant_on_tables_clause
| grant_on_sequences_clause
| grant_on_functions_clause
| grant_on_types_clause
| grant_on_client_master_keys_clause
| grant_on_column_encryption_keys_clause
| revoke_on_tables_clause
| revoke_on_sequences_clause
| revoke_on_functions_clause
| revoke_on_types_clause
| revoke_on_client_master_keys_clause
| revoke_on_column_encryption_keys_clause
where grant_on_tables_clause can be:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES |
ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_sequences_clause can be:
GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_functions_clause can be:
GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON FUNCTIONS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_types_clause can be:
GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON TYPES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_client_master_keys_clause can be:
GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON CLIENT_MASTER_KEYS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_column_encryption_keys_clause can be:
GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON COLUMN_ENCRYPTION_KEYS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where revoke_on_tables_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES |
ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] }
ON TABLES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_sequences_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_functions_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON FUNCTIONS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_types_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON TYPES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_client_master_keys_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON CLIENT_MASTER_KEYS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_column_encryption_keys_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON COLUMN_ENCRYPTION_KEYS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_DEFAULT_PRIVILEGES">
<refmeta>
<refentrytitle>ALTER DEFAULT PRIVILEGES</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DEFAULT PRIVILEGES</refname>
<refpurpose>define default access privileges</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } target_role [, ...] ]
[ IN SCHEMA schema_name [, ...] ]
abbreviated_grant_or_revoke;
where abbreviated_grant_or_revoke can be:
grant_on_tables_clause
| grant_on_sequences_clause
| grant_on_functions_clause
| grant_on_types_clause
| grant_on_client_master_keys_clause
| grant_on_column_encryption_keys_clause
| revoke_on_tables_clause
| revoke_on_sequences_clause
| revoke_on_functions_clause
| revoke_on_types_clause
| revoke_on_client_master_keys_clause
| revoke_on_column_encryption_keys_clause
where grant_on_tables_clause can be:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES |
ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_sequences_clause can be:
GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_functions_clause can be:
GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON FUNCTIONS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_types_clause can be:
GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON TYPES
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_client_master_keys_clause can be:
GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON CLIENT_MASTER_KEYS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where grant_on_column_encryption_keys_clause can be:
GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON COLUMN_ENCRYPTION_KEYS
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ]
where revoke_on_tables_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES |
ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] }
ON TABLES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_sequences_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_functions_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON FUNCTIONS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_types_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
ON TYPES
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_client_master_keys_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON CLIENT_MASTER_KEYS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
where revoke_on_column_encryption_keys_clause can be:
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
ON COLUMN_ENCRYPTION_KEYS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,17 +1,17 @@
<refentry id="SQL-ALTER_DIRECTORY">
<refmeta>
<refentrytitle>ALTER DIRECTORY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DIRECTORY</refname>
<refpurpose>change a directory</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DIRECTORY directory_name
OWNER TO new_owner;
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_DIRECTORY">
<refmeta>
<refentrytitle>ALTER DIRECTORY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER DIRECTORY</refname>
<refpurpose>change a directory</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER DIRECTORY directory_name
OWNER TO new_owner;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -27,19 +27,19 @@ ALTER EXTENSION <replaceable class="PARAMETER">name</replaceable> UPDATE [ TO <r
ALTER EXTENSION <replaceable class="PARAMETER">name</replaceable> SET SCHEMA <replaceable class="PARAMETER">new_schema</replaceable>;
ALTER EXTENSION <replaceable class="PARAMETER">name</replaceable> ADD <replaceable class="PARAMETER">member_object</replaceable>;
ALTER EXTENSION <replaceable class="PARAMETER">name</replaceable> DROP <replaceable class="PARAMETER">member_object</replaceable>;
<phrase>where <replaceable class="PARAMETER">member_object</replaceable> is:</phrase>
FOREIGN TABLE <replaceable class="PARAMETER">object_name</replaceable> |
FUNCTION <replaceable class="PARAMETER">function_name</replaceable> ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) |
[ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">object_name</replaceable> |
SCHEMA <replaceable class="PARAMETER">object_name</replaceable> |
SERVER <replaceable class="PARAMETER">object_name</replaceable> |
TABLE <replaceable class="PARAMETER">object_name</replaceable> |
TEXT SEARCH CONFIGURATION <replaceable class="PARAMETER">object_name</replaceable> |
TYPE <replaceable class="PARAMETER">object_name</replaceable> |
VIEW <replaceable class="PARAMETER">object_name</replaceable>
</synopsis>
<phrase>where <replaceable class="PARAMETER">member_object</replaceable> is:</phrase>
FOREIGN TABLE <replaceable class="PARAMETER">object_name</replaceable> |
FUNCTION <replaceable class="PARAMETER">function_name</replaceable> ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) |
[ PROCEDURAL ] LANGUAGE <replaceable class="PARAMETER">object_name</replaceable> |
SCHEMA <replaceable class="PARAMETER">object_name</replaceable> |
SERVER <replaceable class="PARAMETER">object_name</replaceable> |
TABLE <replaceable class="PARAMETER">object_name</replaceable> |
TEXT SEARCH CONFIGURATION <replaceable class="PARAMETER">object_name</replaceable> |
TYPE <replaceable class="PARAMETER">object_name</replaceable> |
VIEW <replaceable class="PARAMETER">object_name</replaceable>
</synopsis>
</refsynopsisdiv>
<refsect1>

View File

@ -1,88 +1,88 @@
<refentry id="SQL-ALTER_FOREIGN_TABLE">
<refmeta>
<refentrytitle>ALTER FOREIGN TABLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FOREIGN TABLE</refname>
<refpurpose>change the definition of a foreign table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
1. GDS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
2. HDFS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS integer
| ALTER [ COLUMN ] column_name OPTIONS ( {[ ADD | SET | DROP ] option ['value'] } [, ... ])
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
3. OBS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS integer
| ALTER [ COLUMN ] column_name OPTIONS ( {[ ADD | SET | DROP ] option ['value'] } [, ... ])
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
4. GC:
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OPTIONS ( {[ SET ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| MODIFY column_name data_type
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_FOREIGN_TABLE">
<refmeta>
<refentrytitle>ALTER FOREIGN TABLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FOREIGN TABLE</refname>
<refpurpose>change the definition of a foreign table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
1. GDS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
2. HDFS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS integer
| ALTER [ COLUMN ] column_name OPTIONS ( {[ ADD | SET | DROP ] option ['value'] } [, ... ])
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
3. OBS:
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS integer
| ALTER [ COLUMN ] column_name OPTIONS ( {[ ADD | SET | DROP ] option ['value'] } [, ... ])
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
4. GC:
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OPTIONS ( {[ SET ] option ['value']} [, ... ]);
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type [, ...] );
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| MODIFY column_name data_type
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,30 +1,30 @@
<refentry id="SQL-ALTER_FOREIGN_TABLE_FOR_HDFS">
<refmeta>
<refentrytitle>ALTER FOREIGN TABLE FOR HDFS</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FOREIGN TABLE FOR HDFS</refname>
<refpurpose>change the definition of a foreign table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_FOREIGN_TABLE_FOR_HDFS">
<refmeta>
<refentrytitle>ALTER FOREIGN TABLE FOR HDFS</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FOREIGN TABLE FOR HDFS</refname>
<refpurpose>change the definition of a foreign table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
OWNER TO new_owner;
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
action [, ... ];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
DROP CONSTRAINT constraint_name ;
where action can be:
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,35 +1,35 @@
<refentry id="SQL-ALTER_FUNCTION">
<refmeta>
<refentrytitle>ALTER FUNCTION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FUNCTION</refname>
<refpurpose>change the definition of a function</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
action [ ... ] [ RESTRICT ];
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
RENAME TO new_name;
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
OWNER TO new_owner;
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
SET SCHEMA new_schema;
where action can be:
{CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
| {IMMUTABLE | STABLE | VOLATILE}
| {NOT FENCED | FENCED}
| [ NOT ] LEAKPROOF
| {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER}
| AUTHID { DEFINER | CURRENT_USER }
| COST execution_cost
| ROWS result_rows
| SET configuration_parameter {{ TO | = } { value | DEFAULT }| FROM CURRENT}
| RESET {configuration_parameter| ALL}
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_FUNCTION">
<refmeta>
<refentrytitle>ALTER FUNCTION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER FUNCTION</refname>
<refpurpose>change the definition of a function</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
action [ ... ] [ RESTRICT ];
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
RENAME TO new_name;
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
OWNER TO new_owner;
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
SET SCHEMA new_schema;
where action can be:
{CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
| {IMMUTABLE | STABLE | VOLATILE}
| {NOT FENCED | FENCED}
| [ NOT ] LEAKPROOF
| {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER}
| AUTHID { DEFINER | CURRENT_USER }
| COST execution_cost
| ROWS result_rows
| SET configuration_parameter {{ TO | = } { value | DEFAULT }| FROM CURRENT}
| RESET {configuration_parameter| ALL}
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,21 +1,21 @@
<refentry id="SQL-ALTER_GROUP">
<refmeta>
<refentrytitle>ALTER GROUP</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER GROUP</refname>
<refpurpose>change role name or membership</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER GROUP group_name
ADD USER user_name [, ... ];
ALTER GROUP group_name
DROP USER user_name [, ... ];
ALTER GROUP group_name
RENAME TO new_name;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_GROUP">
<refmeta>
<refentrytitle>ALTER GROUP</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER GROUP</refname>
<refpurpose>change role name or membership</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER GROUP group_name
ADD USER user_name [, ... ];
ALTER GROUP group_name
DROP USER user_name [, ... ];
ALTER GROUP group_name
RENAME TO new_name;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,31 +1,31 @@
<refentry id="SQL-ALTER_INDEX">
<refmeta>
<refentrytitle>ALTER INDEX</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER INDEX</refname>
<refpurpose>change the definition of an index</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER INDEX [ IF EXISTS ] index_name
RENAME TO new_name;
ALTER INDEX [ IF EXISTS ] index_name
SET TABLESPACE tablespace_name;
ALTER INDEX [ IF EXISTS ] index_name
SET ( {storage_parameter = value} [, ... ] );
ALTER INDEX [ IF EXISTS ] index_name
RESET ( storage_parameter [, ... ] ) ;
ALTER INDEX [ IF EXISTS ] index_name
[ MODIFY PARTITION partition_name ] UNUSABLE;
ALTER INDEX index_name
REBUILD [ PARTITION partition_name ];
ALTER INDEX [ IF EXISTS ] index_name
RENAME PARTITION partition_name TO new_partition_name;
ALTER INDEX [ IF EXISTS ] index_name
MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_INDEX">
<refmeta>
<refentrytitle>ALTER INDEX</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER INDEX</refname>
<refpurpose>change the definition of an index</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER INDEX [ IF EXISTS ] index_name
RENAME TO new_name;
ALTER INDEX [ IF EXISTS ] index_name
SET TABLESPACE tablespace_name;
ALTER INDEX [ IF EXISTS ] index_name
SET ( {storage_parameter = value} [, ... ] );
ALTER INDEX [ IF EXISTS ] index_name
RESET ( storage_parameter [, ... ] ) ;
ALTER INDEX [ IF EXISTS ] index_name
[ MODIFY PARTITION partition_name ] UNUSABLE;
ALTER INDEX index_name
REBUILD [ PARTITION partition_name ];
ALTER INDEX [ IF EXISTS ] index_name
RENAME PARTITION partition_name TO new_partition_name;
ALTER INDEX [ IF EXISTS ] index_name
MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,17 +1,17 @@
<refentry id="SQL-ALTER_LARGE_OBJECT">
<refmeta>
<refentrytitle>ALTER LARGE OBJECT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER LARGE OBJECT</refname>
<refpurpose>change the definition of a large object</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER LARGE OBJECT large_object_oid
OWNER TO new_owner;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_LARGE_OBJECT">
<refmeta>
<refentrytitle>ALTER LARGE OBJECT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER LARGE OBJECT</refname>
<refpurpose>change the definition of a large object</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER LARGE OBJECT large_object_oid
OWNER TO new_owner;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,31 +1,31 @@
<!--
doc/src/sgml/ref/alter_materialized_view.sgml
PostgreSQL documentation
-->
<refentry id="SQL-ALTERMATERIALIZEDVIEW">
<refmeta>
<refentrytitle>ALTER MATERIALIZED VIEW</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER MATERIALIZED VIEW</refname>
<refpurpose>replace the contents of a materialized view</refpurpose>
</refnamediv>
<indexterm zone="sql-altermaterializedview">
<primary>ALTER MATERIALIZED VIEW</primary>
</indexterm>
<refsynopsisdiv>
<synopsis>
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
OWNER TO new_owner;
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
RENAME [COLUMN] column_name to new_column_name;
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
RENAME TO new_name;
</synopsis>
</refentry>
<!--
doc/src/sgml/ref/alter_materialized_view.sgml
PostgreSQL documentation
-->
<refentry id="SQL-ALTERMATERIALIZEDVIEW">
<refmeta>
<refentrytitle>ALTER MATERIALIZED VIEW</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER MATERIALIZED VIEW</refname>
<refpurpose>replace the contents of a materialized view</refpurpose>
</refnamediv>
<indexterm zone="sql-altermaterializedview">
<primary>ALTER MATERIALIZED VIEW</primary>
</indexterm>
<refsynopsisdiv>
<synopsis>
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
OWNER TO new_owner;
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
RENAME [COLUMN] column_name to new_column_name;
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
RENAME TO new_name;
</synopsis>
</refentry>

View File

@ -1,32 +1,32 @@
<refentry id="SQL-ALTER_NODE">
<refmeta>
<refentrytitle>ALTER NODE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER NODE</refname>
<refpurpose>alter a cluster node</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER NODE nodename WITH
(
[ TYPE = nodetype,]
[ HOST = hostname,]
[ PORT = portnum,]
[ HOST1 = 'hostname',]
[ PORT1 = portnum,]
[ HOSTPRIMARY [ = boolean ],]
[ PRIMARY [ = boolean ],]
[ PREFERRED [ = boolean ],]
[ SCTP_PORT = portnum,]
[ CONTROL_PORT = portnum,]
[ SCTP_PORT1 = portnum,]
[ CONTROL_PORT1 = portnum, ]
[ NODEIS_CENTRAL [= boolean], ]
[ NODEIS_ACTIVE [= boolean] ]
);
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_NODE">
<refmeta>
<refentrytitle>ALTER NODE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER NODE</refname>
<refpurpose>alter a cluster node</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER NODE nodename WITH
(
[ TYPE = nodetype,]
[ HOST = hostname,]
[ PORT = portnum,]
[ HOST1 = 'hostname',]
[ PORT1 = portnum,]
[ HOSTPRIMARY [ = boolean ],]
[ PRIMARY [ = boolean ],]
[ PREFERRED [ = boolean ],]
[ SCTP_PORT = portnum,]
[ CONTROL_PORT = portnum,]
[ SCTP_PORT1 = portnum,]
[ CONTROL_PORT1 = portnum, ]
[ NODEIS_CENTRAL [= boolean], ]
[ NODEIS_ACTIVE [= boolean] ]
);
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -0,0 +1,46 @@
<refentry id="sql-alterprocedure">
<indexterm zone="sql-alterprocedure">
<primary>ALTER PROCEDURE</primary>
</indexterm>
<refmeta>
<refentrytitle>ALTER PROCEDURE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER PROCEDURE</refname>
<refpurpose>change the definition of a procedure</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
<replaceable class="parameter">action</replaceable> [ ... ] [ RESTRICT ]
ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
RENAME TO <replaceable>new_name</replaceable>
ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
OWNER TO <replaceable>new_owner</replaceable>
ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
SET SCHEMA <replaceable>new_schema</replaceable>
<phrase>where <replaceable class="parameter">action</replaceable> is one of:</phrase>
CALLED ON NULL INPUT | STRICT
IMMUTABLE | STABLE | VOLATILE
SHIPPABLE | NOT SHIPPABLE
NOT FENCED | FENCED
[ NOT ] LEAKPROOF
[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
AUTHID DEFINER
AUTHID CURRENT_USER
COST <replaceable class="parameter">execution_cost</replaceable>
ROWS <replaceable class="parameter">result_rows</replaceable>
SET <replaceable class="parameter">configuration_parameter</replaceable> { TO | = } { <replaceable class="parameter">value</replaceable> | DEFAULT }
SET <replaceable class="parameter">configuration_parameter</replaceable> FROM CURRENT
RESET <replaceable class="parameter">configuration_parameter</replaceable>
RESET ALL
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,17 +1,17 @@
<refentry id="SQL-ALTER_RESOURCE_POOL">
<refmeta>
<refentrytitle>ALTER RESOURCE POOL</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER RESOURCE POOL</refname>
<refpurpose>change the resource pool</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER RESOURCE POOL pool_name
WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='priority' | nodegroup='nodegroup_name' }[, ... ]);
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_RESOURCE_POOL">
<refmeta>
<refentrytitle>ALTER RESOURCE POOL</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER RESOURCE POOL</refname>
<refpurpose>change the resource pool</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER RESOURCE POOL pool_name
WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='priority' | nodegroup='nodegroup_name' }[, ... ]);
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,51 +1,51 @@
<refentry id="SQL-ALTER_ROLE">
<refmeta>
<refentrytitle>ALTER ROLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER ROLE</refname>
<refpurpose>change a database role</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER ROLE role_name [ [ WITH ] option [ ... ] ];
ALTER ROLE role_name
RENAME TO new_name;
ALTER ROLE role_name [ IN DATABASE database_name ]
SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
ALTER ROLE role_name
[ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
where option can be:
{CREATEDB | NOCREATEDB}
| {CREATEROLE | NOCREATEROLE}
| {INHERIT | NOINHERIT}
| {AUDITADMIN | NOAUDITADMIN}
| {SYSADMIN | NOSYSADMIN}
| {MONADMIN | NOMONADMIN}
| {OPRADMIN | NOOPRADMIN}
| {POLADMIN | NOPOLADMIN}
| {USEFT | NOUSEFT}
| {LOGIN | NOLOGIN}
| {REPLICATION | NOREPLICATION}
| {INDEPENDENT | NOINDEPENDENT}
| {VCADMIN | NOVCADMIN}
| {PERSISTENCE | NOPERSISTENCE}
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [ EXPIRED ] | DISABLE | EXPIRED }
| [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE }
| VALID BEGIN 'timestamp'
| VALID UNTIL 'timestamp'
| RESOURCE POOL 'respool'
| USER GROUP 'groupuser'
| PERM SPACE 'spacelimit'
| TEMP SPACE 'tmpspacelimit'
| SPILL SPACE 'spillspacelimit'
| NODE GROUP logic_cluster_name
| ACCOUNT { LOCK | UNLOCK }
| PGUSER
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_ROLE">
<refmeta>
<refentrytitle>ALTER ROLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER ROLE</refname>
<refpurpose>change a database role</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER ROLE role_name [ [ WITH ] option [ ... ] ];
ALTER ROLE role_name
RENAME TO new_name;
ALTER ROLE role_name [ IN DATABASE database_name ]
SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
ALTER ROLE role_name
[ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
where option can be:
{CREATEDB | NOCREATEDB}
| {CREATEROLE | NOCREATEROLE}
| {INHERIT | NOINHERIT}
| {AUDITADMIN | NOAUDITADMIN}
| {SYSADMIN | NOSYSADMIN}
| {MONADMIN | NOMONADMIN}
| {OPRADMIN | NOOPRADMIN}
| {POLADMIN | NOPOLADMIN}
| {USEFT | NOUSEFT}
| {LOGIN | NOLOGIN}
| {REPLICATION | NOREPLICATION}
| {INDEPENDENT | NOINDEPENDENT}
| {VCADMIN | NOVCADMIN}
| {PERSISTENCE | NOPERSISTENCE}
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [ EXPIRED ] | DISABLE | EXPIRED }
| [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE }
| VALID BEGIN 'timestamp'
| VALID UNTIL 'timestamp'
| RESOURCE POOL 'respool'
| USER GROUP 'groupuser'
| PERM SPACE 'spacelimit'
| TEMP SPACE 'tmpspacelimit'
| SPILL SPACE 'spillspacelimit'
| NODE GROUP logic_cluster_name
| ACCOUNT { LOCK | UNLOCK }
| PGUSER
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,20 +1,20 @@
<refentry id="SQL-ALTER_SCHEMA">
<refmeta>
<refentrytitle>ALTER SCHEMA</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SCHEMA</refname>
<refpurpose>change the definition of a schema</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SCHEMA schema_name
RENAME TO new_name;
ALTER SCHEMA schema_name
OWNER TO new_owner;
ALTER SCHEMA schema_name {WITH | WITHOUT} BLOCKCHAIN;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_SCHEMA">
<refmeta>
<refentrytitle>ALTER SCHEMA</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SCHEMA</refname>
<refpurpose>change the definition of a schema</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SCHEMA schema_name
RENAME TO new_name;
ALTER SCHEMA schema_name
OWNER TO new_owner;
ALTER SCHEMA schema_name {WITH | WITHOUT} BLOCKCHAIN;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,21 +1,21 @@
<refentry id="SQL-ALTER_SERVER">
<refmeta>
<refentrytitle>ALTER SERVER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SERVER</refname>
<refpurpose>change the definition of a foreign server</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SERVER server_name [ VERSION 'new_version' ]
[ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ];
ALTER SERVER server_name
OWNER TO new_owner;
ALTER SERVER server_name
RENAME TO new_name;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_SERVER">
<refmeta>
<refentrytitle>ALTER SERVER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SERVER</refname>
<refpurpose>change the definition of a foreign server</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SERVER server_name [ VERSION 'new_version' ]
[ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ];
ALTER SERVER server_name
OWNER TO new_owner;
ALTER SERVER server_name
RENAME TO new_name;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,27 +1,27 @@
<refentry id="SQL-ALTER_SESSION">
<refmeta>
<refentrytitle>ALTER SESSION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SESSION</refname>
<refpurpose>define and modify the current session influenced by condition or parameter</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SESSION SET
{{config_parameter { { TO | = } { value | DEFAULT }
| FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT }
| TIME ZONE time_zone
| SCHEMA schema
| NAMES encoding_name
| ROLE role_name PASSWORD 'password'
| SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT }
| XML OPTION { DOCUMENT | CONTENT }
} ;
ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION
{ ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } | { READ ONLY | READ WRITE } } [, ...] ;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_SESSION">
<refmeta>
<refentrytitle>ALTER SESSION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SESSION</refname>
<refpurpose>define and modify the current session influenced by condition or parameter</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SESSION SET
{{config_parameter { { TO | = } { value | DEFAULT }
| FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT }
| TIME ZONE time_zone
| SCHEMA schema
| NAMES encoding_name
| ROLE role_name PASSWORD 'password'
| SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT }
| XML OPTION { DOCUMENT | CONTENT }
} ;
ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION
{ ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } | { READ ONLY | READ WRITE } } [, ...] ;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-ALTER_SYSTEM_KILL_SESSION">
<refmeta>
<refentrytitle>ALTER SYSTEM KILL SESSION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SYSTEM KILL SESSION</refname>
<refpurpose>kill and finish a system session</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_SYSTEM_KILL_SESSION">
<refmeta>
<refentrytitle>ALTER SYSTEM KILL SESSION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SYSTEM KILL SESSION</refname>
<refpurpose>kill and finish a system session</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,18 @@
<refentry id="SQL-ALTER_SYSTEM_SET">
<refmeta>
<refentrytitle>ALTER SYSTEM SET</refentrytitle>
<manvolnum>6</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SYSTEM SET</refname>
<refpurpose>set a high-level(postmaster, sighup and backend) GUC.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SYSTEM SET { GUC_name } TO { GUC_value };
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_SYSTEM_SET">
<refmeta>
<refentrytitle>ALTER SYSTEM SET</refentrytitle>
<manvolnum>6</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER SYSTEM SET</refname>
<refpurpose>set a high-level(postmaster, sighup and backend) GUC.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER SYSTEM SET { GUC_name } TO { GUC_value };
NOTICE: only supported in opengauss, not supported in distributeGauss or privateGauss.
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,102 +1,102 @@
<refentry id="SQL-ALTER_TABLE">
<refmeta>
<refentrytitle>ALTER TABLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TABLE</refname>
<refpurpose>change the definition of a table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
action [, ... ];
ALTER TABLE [ IF EXISTS ] table_name
ADD ( { column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]} [, ...] );
ALTER TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER TABLE [ IF EXISTS ] table_name
RENAME TO new_table_name;
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
RENAME [ COLUMN ] column_name TO new_column_name;
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
RENAME CONSTRAINT constraint_name TO new_constraint_name;
ALTER TABLE [ IF EXISTS ] table_name
SET SCHEMA new_schema;
where action can be:
column_clause
| ADD table_constraint [ NOT VALID ]
| ADD table_constraint_using_index
| VALIDATE CONSTRAINT constraint_name
| DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
| CLUSTER ON index_name
| SET WITHOUT CLUSTER
| SET ( {storage_parameter = value} [, ... ] )
| RESET ( storage_parameter [, ... ] )
| OWNER TO new_owner
| SET TABLESPACE new_tablespace
| SET {COMPRESS|NOCOMPRESS}
| TO { GROUP groupname | NODE ( nodename [, ... ] ) }
| ADD NODE ( nodename [, ... ] )
| DELETE NODE ( nodename [, ... ] )
| UPDATE SLICE LIKE table_name
| DISABLE TRIGGER [ trigger_name | ALL | USER ]
| ENABLE TRIGGER [ trigger_name | ALL | USER ]
| ENABLE REPLICA TRIGGER trigger_name
| ENABLE ALWAYS TRIGGER trigger_name
| ENABLE ROW LEVEL SECURITY
| DISABLE ROW LEVEL SECURITY
| FORCE ROW LEVEL SECURITY
| NO FORCE ROW LEVEL SECURITY
| ENCRYPTION KEY ROTATION
where column_clause can be:
ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
| DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
| ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
| ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT }
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
| ADD STATISTICS (( column_1_name, column_2_name [, ...] ))
| DELETE STATISTICS (( column_1_name, column_2_name [, ...] ))
| ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] )
| ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
| ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
where column_constraint can be:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
CHECK ( expression ) |
DEFAULT default_expr |
GENERATED ALWAYS AS ( generation_expr ) STORED |
UNIQUE index_parameters |
PRIMARY KEY index_parameters |
ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
where compress_mode can be:
{ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS }
where table_constraint can be:
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
UNIQUE ( column_name [, ... ] ) index_parameters |
PRIMARY KEY ( column_name [, ... ] ) index_parameters |
PARTIAL CLUSTER KEY ( column_name [, ... ] ) |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
where index_parameters can be:
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace_name ]
where table_constraint_using_index can be:
[ CONSTRAINT constraint_name ]
{ UNIQUE | PRIMARY KEY } USING INDEX index_name
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_TABLE">
<refmeta>
<refentrytitle>ALTER TABLE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TABLE</refname>
<refpurpose>change the definition of a table</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
action [, ... ];
ALTER TABLE [ IF EXISTS ] table_name
ADD ( { column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]} [, ...] );
ALTER TABLE [ IF EXISTS ] table_name
MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
ALTER TABLE [ IF EXISTS ] table_name
RENAME TO new_table_name;
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
RENAME [ COLUMN ] column_name TO new_column_name;
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
RENAME CONSTRAINT constraint_name TO new_constraint_name;
ALTER TABLE [ IF EXISTS ] table_name
SET SCHEMA new_schema;
where action can be:
column_clause
| ADD table_constraint [ NOT VALID ]
| ADD table_constraint_using_index
| VALIDATE CONSTRAINT constraint_name
| DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
| CLUSTER ON index_name
| SET WITHOUT CLUSTER
| SET ( {storage_parameter = value} [, ... ] )
| RESET ( storage_parameter [, ... ] )
| OWNER TO new_owner
| SET TABLESPACE new_tablespace
| SET {COMPRESS|NOCOMPRESS}
| TO { GROUP groupname | NODE ( nodename [, ... ] ) }
| ADD NODE ( nodename [, ... ] )
| DELETE NODE ( nodename [, ... ] )
| UPDATE SLICE LIKE table_name
| DISABLE TRIGGER [ trigger_name | ALL | USER ]
| ENABLE TRIGGER [ trigger_name | ALL | USER ]
| ENABLE REPLICA TRIGGER trigger_name
| ENABLE ALWAYS TRIGGER trigger_name
| ENABLE ROW LEVEL SECURITY
| DISABLE ROW LEVEL SECURITY
| FORCE ROW LEVEL SECURITY
| NO FORCE ROW LEVEL SECURITY
| ENCRYPTION KEY ROTATION
where column_clause can be:
ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]
| MODIFY column_name data_type
| MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
| MODIFY column_name [ CONSTRAINT constraint_name ] NULL
| DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
| ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
| ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT }
| ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
| ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
| ADD STATISTICS (( column_1_name, column_2_name [, ...] ))
| DELETE STATISTICS (( column_1_name, column_2_name [, ...] ))
| ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] )
| ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
| ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
where column_constraint can be:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
CHECK ( expression ) |
DEFAULT default_expr |
GENERATED ALWAYS AS ( generation_expr ) STORED |
UNIQUE index_parameters |
PRIMARY KEY index_parameters |
ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
where compress_mode can be:
{ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS }
where table_constraint can be:
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
UNIQUE ( column_name [, ... ] ) index_parameters |
PRIMARY KEY ( column_name [, ... ] ) index_parameters |
PARTIAL CLUSTER KEY ( column_name [, ... ] ) |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
where index_parameters can be:
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace_name ]
where table_constraint_using_index can be:
[ CONSTRAINT constraint_name ]
{ UNIQUE | PRIMARY KEY } USING INDEX index_name
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,25 +1,25 @@
<refentry id="SQL-ALTER_TABLESPACE">
<refmeta>
<refentrytitle>ALTER TABLESPACE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TABLESPACE</refname>
<refpurpose>change the definition of a tablespace</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TABLESPACE tablespace_name
RENAME TO new_tablespace_name;
ALTER TABLESPACE tablespace_name
OWNER TO new_owner;
ALTER TABLESPACE tablespace_name
SET ( {tablespace_option = value} [, ... ] );
ALTER TABLESPACE tablespace_name
RESET ( tablespace_option [, ... ] );
ALTER TABLESPACE tablespace_name
RESIZE MAXSIZE { UNLIMITED | 'space_size' };
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_TABLESPACE">
<refmeta>
<refentrytitle>ALTER TABLESPACE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TABLESPACE</refname>
<refpurpose>change the definition of a tablespace</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TABLESPACE tablespace_name
RENAME TO new_tablespace_name;
ALTER TABLESPACE tablespace_name
OWNER TO new_owner;
ALTER TABLESPACE tablespace_name
SET ( {tablespace_option = value} [, ... ] );
ALTER TABLESPACE tablespace_name
RESET ( tablespace_option [, ... ] );
ALTER TABLESPACE tablespace_name
RESIZE MAXSIZE { UNLIMITED | 'space_size' };
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,29 +1,29 @@
<refentry id="SQL-ALTER_TEXT_SEARCH_CONFIGURATION">
<refmeta>
<refentrytitle>ALTER TEXT SEARCH CONFIGURATION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TEXT SEARCH CONFIGURATION</refname>
<refpurpose>change the definition of a text search configuration</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TEXT SEARCH CONFIGURATION name
ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary;
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING REPLACE old_dictionary WITH new_dictionary;
ALTER TEXT SEARCH CONFIGURATION name
DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ];
ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name;
ALTER TEXT SEARCH CONFIGURATION name OWNER TO new_owner;
ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema;
ALTER TEXT SEARCH CONFIGURATION name SET ( {configuration_option = value} [, ...] );
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_TEXT_SEARCH_CONFIGURATION">
<refmeta>
<refentrytitle>ALTER TEXT SEARCH CONFIGURATION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER TEXT SEARCH CONFIGURATION</refname>
<refpurpose>change the definition of a text search configuration</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER TEXT SEARCH CONFIGURATION name
ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary;
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING REPLACE old_dictionary WITH new_dictionary;
ALTER TEXT SEARCH CONFIGURATION name
DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ];
ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name;
ALTER TEXT SEARCH CONFIGURATION name OWNER TO new_owner;
ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema;
ALTER TEXT SEARCH CONFIGURATION name SET ( {configuration_option = value} [, ...] );
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,51 +1,51 @@
<refentry id="SQL-ALTER_USER">
<refmeta>
<refentrytitle>ALTER USER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER USER</refname>
<refpurpose>change a database role</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER USER user_name [ [ WITH ] option [ ... ] ];
ALTER USER user_name
RENAME TO new_name;
ALTER USER user_name [ IN DATABASE database_name ]
SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
ALTER USER user_name
[ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
where option can be:
{CREATEDB | NOCREATEDB}
| {CREATEROLE | NOCREATEROLE}
| {INHERIT | NOINHERIT}
| {AUDITADMIN | NOAUDITADMIN}
| {SYSADMIN | NOSYSADMIN}
| {MONADMIN | NOMONADMIN}
| {OPRADMIN | NOOPRADMIN}
| {POLADMIN | NOPOLADMIN}
| {USEFT | NOUSEFT}
| {LOGIN | NOLOGIN}
| {REPLICATION | NOREPLICATION}
| {INDEPENDENT | NOINDEPENDENT}
| {VCADMIN | NOVCADMIN}
| {PERSISTENCE | NOPERSISTENCE}
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [ EXPIRED ] | DISABLE | EXPIRED }
| [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE }
| VALID BEGIN 'timestamp'
| VALID UNTIL 'timestamp'
| RESOURCE POOL 'respool'
| USER GROUP 'groupuser'
| PERM SPACE 'spacelimit'
| TEMP SPACE 'tmpspacelimit'
| SPILL SPACE 'spillspacelimit'
| NODE GROUP logic_cluster_name
| ACCOUNT { LOCK | UNLOCK }
| PGUSER
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ALTER_USER">
<refmeta>
<refentrytitle>ALTER USER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER USER</refname>
<refpurpose>change a database role</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER USER user_name [ [ WITH ] option [ ... ] ];
ALTER USER user_name
RENAME TO new_name;
ALTER USER user_name [ IN DATABASE database_name ]
SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
ALTER USER user_name
[ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
where option can be:
{CREATEDB | NOCREATEDB}
| {CREATEROLE | NOCREATEROLE}
| {INHERIT | NOINHERIT}
| {AUDITADMIN | NOAUDITADMIN}
| {SYSADMIN | NOSYSADMIN}
| {MONADMIN | NOMONADMIN}
| {OPRADMIN | NOOPRADMIN}
| {POLADMIN | NOPOLADMIN}
| {USEFT | NOUSEFT}
| {LOGIN | NOLOGIN}
| {REPLICATION | NOREPLICATION}
| {INDEPENDENT | NOINDEPENDENT}
| {VCADMIN | NOVCADMIN}
| {PERSISTENCE | NOPERSISTENCE}
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [ EXPIRED ] | DISABLE | EXPIRED }
| [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE }
| VALID BEGIN 'timestamp'
| VALID UNTIL 'timestamp'
| RESOURCE POOL 'respool'
| USER GROUP 'groupuser'
| PERM SPACE 'spacelimit'
| TEMP SPACE 'tmpspacelimit'
| SPILL SPACE 'spillspacelimit'
| NODE GROUP logic_cluster_name
| ACCOUNT { LOCK | UNLOCK }
| PGUSER
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,29 +1,29 @@
<refentry id="SQL-ALTER_VIEW">
<refmeta>
<refentrytitle>ALTER VIEW</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER VIEW</refname>
<refpurpose>change the definition of a view</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER VIEW [ IF EXISTS ] view_name
ALTER [ COLUMN ] column_name SET DEFAULT expression;
ALTER VIEW [ IF EXISTS ] view_name
ALTER [ COLUMN ] column_name DROP DEFAULT;
ALTER VIEW [ IF EXISTS ] view_name
OWNER TO new_owner;
ALTER VIEW [ IF EXISTS ] view_name
RENAME TO new_name;
ALTER VIEW [ IF EXISTS ] view_name
SET SCHEMA new_schema;
ALTER VIEW [ IF EXISTS ] view_name
SET ( {view_option_name [= view_option_value]} [, ... ] );
ALTER VIEW [ IF EXISTS ] view_name
RESET ( view_option_name [, ... ] );
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_VIEW">
<refmeta>
<refentrytitle>ALTER VIEW</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER VIEW</refname>
<refpurpose>change the definition of a view</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER VIEW [ IF EXISTS ] view_name
ALTER [ COLUMN ] column_name SET DEFAULT expression;
ALTER VIEW [ IF EXISTS ] view_name
ALTER [ COLUMN ] column_name DROP DEFAULT;
ALTER VIEW [ IF EXISTS ] view_name
OWNER TO new_owner;
ALTER VIEW [ IF EXISTS ] view_name
RENAME TO new_name;
ALTER VIEW [ IF EXISTS ] view_name
SET SCHEMA new_schema;
ALTER VIEW [ IF EXISTS ] view_name
SET ( {view_option_name [= view_option_value]} [, ... ] );
ALTER VIEW [ IF EXISTS ] view_name
RESET ( view_option_name [, ... ] );
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,17 +1,17 @@
<refentry id="SQL-ALTER_WORKLOAD_GROUP">
<refmeta>
<refentrytitle>ALTER WORKLOAD GROUP</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER WORKLOAD GROUP</refname>
<refpurpose>change the definition of a workload group</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER WORKLOAD GROUP wg_name
USING RESOURCE POOL pool_name [ WITH ( ACT_STATEMENTS = count ) ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-ALTER_WORKLOAD_GROUP">
<refmeta>
<refentrytitle>ALTER WORKLOAD GROUP</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ALTER WORKLOAD GROUP</refname>
<refpurpose>change the definition of a workload group</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
ALTER WORKLOAD GROUP wg_name
USING RESOURCE POOL pool_name [ WITH ( ACT_STATEMENTS = count ) ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,29 +1,29 @@
<refentry id="SQL-ANALYSE">
<refmeta>
<refentrytitle>ANALYSE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ANALYSE</refname>
<refpurpose>collect statistics about a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ANALYZE | ANALYSE} [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ];
{ANALYZE | ANALYSE} [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ]
PARTITION patrition_name;
{ANALYZE | ANALYSE} [ VERBOSE ]
{ foreign_table_name | FOREIGN TABLES };
{ANALYZE | ANALYSE} [ VERBOSE ]
table_name (( column_1_name, column_2_name [, ...] ));
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE};
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}
table_name|index_name [CASCADE];
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}
table_name PARTITION (patrition_name) [CASCADE];
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ANALYSE">
<refmeta>
<refentrytitle>ANALYSE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ANALYSE</refname>
<refpurpose>collect statistics about a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ANALYZE | ANALYSE} [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ];
{ANALYZE | ANALYSE} [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ]
PARTITION patrition_name;
{ANALYZE | ANALYSE} [ VERBOSE ]
{ foreign_table_name | FOREIGN TABLES };
{ANALYZE | ANALYSE} [ VERBOSE ]
table_name (( column_1_name, column_2_name [, ...] ));
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE};
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}
table_name|index_name [CASCADE];
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE}
table_name PARTITION (patrition_name) [CASCADE];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,28 +1,28 @@
<refentry id="SQL-ANALYZE">
<refmeta>
<refentrytitle>ANALYZE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ANALYZE</refname>
<refpurpose>collect statistics about a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ ANALYZE | ANALYSE } [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ];
{ ANALYZE | ANALYSE } [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ]
PARTITION patrition_name;
{ ANALYZE | ANALYSE } [ VERBOSE ]
{ foreign_table_name | FOREIGN TABLES };
{ ANALYZE | ANALYSE } [ VERBOSE ]
table_name (( column_1_name, column_2_name [, ...] ));
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE };
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE } table_name | index_name [ CASCADE ];
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE }
table_name PARTITION (patrition_name) [ CASCADE ];
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-ANALYZE">
<refmeta>
<refentrytitle>ANALYZE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ANALYZE</refname>
<refpurpose>collect statistics about a database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ ANALYZE | ANALYSE } [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ];
{ ANALYZE | ANALYSE } [ VERBOSE ]
[ table_name [ ( column_name [, ...] ) ] ]
PARTITION patrition_name;
{ ANALYZE | ANALYSE } [ VERBOSE ]
{ foreign_table_name | FOREIGN TABLES };
{ ANALYZE | ANALYSE } [ VERBOSE ]
table_name (( column_1_name, column_2_name [, ...] ));
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE };
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE } table_name | index_name [ CASCADE ];
{ ANALYZE | ANALYSE } VERIFY { FAST | COMPLETE }
table_name PARTITION (patrition_name) [ CASCADE ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,31 +1,31 @@
<refentry id="SQL-BEGIN">
<refmeta>
<refentrytitle>BEGIN</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>BEGIN</refname>
<refpurpose>1. start a anonymous block. 2. start a transaction.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
start a anonymous block:
[DECLARE [declare_statements]]
BEGIN
execution_statements
END;
/
start a transaction:
BEGIN [ WORK | TRANSACTION ]
[
{
ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
| { READ WRITE | READ ONLY }
} [, ...]
];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-BEGIN">
<refmeta>
<refentrytitle>BEGIN</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>BEGIN</refname>
<refpurpose>1. start a anonymous block. 2. start a transaction.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
start a anonymous block:
[DECLARE [declare_statements]]
BEGIN
execution_statements
END;
/
start a transaction:
BEGIN [ WORK | TRANSACTION ]
[
{
ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
| { READ WRITE | READ ONLY }
} [, ...]
];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-CALL">
<refmeta>
<refentrytitle>CALL</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CALL</refname>
<refpurpose>call a defined function</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CALL [ schema. ] func_name ( param_expr );
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CALL">
<refmeta>
<refentrytitle>CALL</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CALL</refname>
<refpurpose>call a defined function</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CALL [ schema. ] func_name ( param_expr );
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,19 +1,19 @@
<refentry id="SQL-CLEAN_CONNECTION">
<refmeta>
<refentrytitle>CLEAN CONNECTION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLEAN CONNECTION</refname>
<refpurpose>clean up pooler connections in a cluster</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLEAN CONNECTION
TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL [ CHECK ] [ FORCE ] }
[ FOR DATABASE dbname ]
[ TO USER username ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CLEAN_CONNECTION">
<refmeta>
<refentrytitle>CLEAN CONNECTION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLEAN CONNECTION</refname>
<refpurpose>clean up pooler connections in a cluster</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLEAN CONNECTION
TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL [ CHECK ] [ FORCE ] }
[ FOR DATABASE dbname ]
[ TO USER username ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-CLOSE">
<refmeta>
<refentrytitle>CLOSE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLOSE</refname>
<refpurpose>close a cursor</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLOSE { cursor_name | ALL };
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CLOSE">
<refmeta>
<refentrytitle>CLOSE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLOSE</refname>
<refpurpose>close a cursor</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLOSE { cursor_name | ALL };
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,18 +1,18 @@
<refentry id="SQL-CLUSTER">
<refmeta>
<refentrytitle>CLUSTER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLUSTER</refname>
<refpurpose>cluster a table according to an index</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLUSTER [ VERBOSE ] table_name [ USING index_name ];
CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ];
CLUSTER [ VERBOSE ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CLUSTER">
<refmeta>
<refentrytitle>CLUSTER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CLUSTER</refname>
<refpurpose>cluster a table according to an index</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CLUSTER [ VERBOSE ] table_name [ USING index_name ];
CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ];
CLUSTER [ VERBOSE ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,49 +1,49 @@
<refentry id="SQL-COMMENT">
<refmeta>
<refentrytitle>COMMENT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMENT</refname>
<refpurpose>define or change the comment of an object</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
COMMENT ON
{
AGGREGATE agg_name (agg_type [, ...] ) |
CAST (source_type AS target_type) |
COLLATION object_name |
COLUMN { table_name.column_name | view_name.column_name } |
CONSTRAINT constraint_name ON table_name |
CONVERSION object_name |
DATABASE object_name |
DOMAIN object_name |
EXTENSION object_name |
FOREIGN DATA WRAPPER object_name |
FOREIGN TABLE object_name |
FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) |
INDEX object_name |
LARGE OBJECT large_object_oid |
OPERATOR operator_name (left_type, right_type) |
OPERATOR CLASS object_name USING index_method |
OPERATOR FAMILY object_name USING index_method |
[ PROCEDURAL ] LANGUAGE object_name |
ROLE object_name |
RULE rule_name ON table_name |
SCHEMA object_name |
SERVER object_name |
TABLE object_name |
TABLESPACE object_name |
TEXT SEARCH CONFIGURATION object_name |
TEXT SEARCH DICTIONARY object_name |
TEXT SEARCH PARSER object_name |
TEXT SEARCH TEMPLATE object_name |
TYPE object_name |
VIEW object_name
}
IS 'text';
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-COMMENT">
<refmeta>
<refentrytitle>COMMENT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMENT</refname>
<refpurpose>define or change the comment of an object</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
COMMENT ON
{
AGGREGATE agg_name (agg_type [, ...] ) |
CAST (source_type AS target_type) |
COLLATION object_name |
COLUMN { table_name.column_name | view_name.column_name } |
CONSTRAINT constraint_name ON table_name |
CONVERSION object_name |
DATABASE object_name |
DOMAIN object_name |
EXTENSION object_name |
FOREIGN DATA WRAPPER object_name |
FOREIGN TABLE object_name |
FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) |
INDEX object_name |
LARGE OBJECT large_object_oid |
OPERATOR operator_name (left_type, right_type) |
OPERATOR CLASS object_name USING index_method |
OPERATOR FAMILY object_name USING index_method |
[ PROCEDURAL ] LANGUAGE object_name |
ROLE object_name |
RULE rule_name ON table_name |
SCHEMA object_name |
SERVER object_name |
TABLE object_name |
TABLESPACE object_name |
TEXT SEARCH CONFIGURATION object_name |
TEXT SEARCH DICTIONARY object_name |
TEXT SEARCH PARSER object_name |
TEXT SEARCH TEMPLATE object_name |
TYPE object_name |
VIEW object_name
}
IS 'text';
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-COMMIT">
<refmeta>
<refentrytitle>COMMIT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMIT</refname>
<refpurpose>commit the current transaction</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ COMMIT | END } [ WORK | TRANSACTION ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-COMMIT">
<refmeta>
<refentrytitle>COMMIT</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMIT</refname>
<refpurpose>commit the current transaction</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
{ COMMIT | END } [ WORK | TRANSACTION ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-COMMIT_PREPARED">
<refmeta>
<refentrytitle>COMMIT PREPARED</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMIT PREPARED</refname>
<refpurpose>commit a transaction that was earlier prepared for two-phase commit</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
COMMIT PREPARED transaction_id;
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-COMMIT_PREPARED">
<refmeta>
<refentrytitle>COMMIT PREPARED</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>COMMIT PREPARED</refname>
<refpurpose>commit a transaction that was earlier prepared for two-phase commit</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
COMMIT PREPARED transaction_id;
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -36,7 +36,7 @@ COPY query
| [ FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) ];
where option can be:
FORMAT 'format_name'
FORMAT format_name
| OIDS [ boolean ]
| DELIMITER 'delimiter_character'
| NULL 'null_string'

View File

@ -1,17 +1,17 @@
<refentry id="SQL-CREATE_APP_WORKLOAD_GROUP_MAPPING">
<refmeta>
<refentrytitle>CREATE APP WORKLOAD GROUP MAPPING</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE APP WORKLOAD GROUP MAPPING</refname>
<refpurpose>create a workload group mapping</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE APP WORKLOAD GROUP MAPPING app_name
[ WITH ( WORKLOAD_GPNAME = workload_gpname ) ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CREATE_APP_WORKLOAD_GROUP_MAPPING">
<refmeta>
<refentrytitle>CREATE APP WORKLOAD GROUP MAPPING</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE APP WORKLOAD GROUP MAPPING</refname>
<refpurpose>create a workload group mapping</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE APP WORKLOAD GROUP MAPPING app_name
[ WITH ( WORKLOAD_GPNAME = workload_gpname ) ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,34 +1,34 @@
<refentry id="SQL-CREATE_AUDIT_POLICY">
<refmeta>
<refentrytitle>CREATE AUDIT POLICY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE AUDIT POLICY</refname>
<refpurpose>define a new audit policy</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [ filter_group_clause ] [ ENABLED | DISABLED ] };
where privilege_audit_clause can be:
PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
where access_audit_clause can be:
ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
where filter_group_clause can be:
FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
where DDL can be:
{ ( ALTER | ANALYZE | COMMENT | CREATE | DROP | GRANT | REVOKE | SET | SHOW | LOGIN_ACCESS | LOGIN_FAILURE | LOGOUT | LOGIN ) }
where DML can be:
{ ( COPY | DEALLOCATE | DELETE_P | EXECUTE | REINDEX | INSERT | PREPARE | SELECT | TRUNCATE | UPDATE ) }
where FILTER_TYPE can be:
{ APP | ROLES | IP }
</synopsis>
</refsynopsisdiv>
</refentry>
<refentry id="SQL-CREATE_AUDIT_POLICY">
<refmeta>
<refentrytitle>CREATE AUDIT POLICY</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE AUDIT POLICY</refname>
<refpurpose>define a new audit policy</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [ filter_group_clause ] [ ENABLED | DISABLED ] };
where privilege_audit_clause can be:
PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
where access_audit_clause can be:
ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
where filter_group_clause can be:
FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
where DDL can be:
{ ( ALTER | ANALYZE | COMMENT | CREATE | DROP | GRANT | REVOKE | SET | SHOW | LOGIN_ACCESS | LOGIN_FAILURE | LOGOUT | LOGIN ) }
where DML can be:
{ ( COPY | DEALLOCATE | DELETE_P | EXECUTE | REINDEX | INSERT | PREPARE | SELECT | TRUNCATE | UPDATE ) }
where FILTER_TYPE can be:
{ APP | ROLES | IP }
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,16 +1,16 @@
<refentry id="SQL-CREATE_BARRIER">
<refmeta>
<refentrytitle>CREATE BARRIER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE BARRIER</refname>
<refpurpose>create a new barrier</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE BARRIER [ barrier_name ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CREATE_BARRIER">
<refmeta>
<refentrytitle>CREATE BARRIER</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE BARRIER</refname>
<refpurpose>create a new barrier</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE BARRIER [ barrier_name ];
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,22 +1,22 @@
<refentry id="SQL-CREATE_DATA_SOURCE">
<refmeta>
<refentrytitle>CREATE DATA SOURCE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE DATA SOURCE</refname>
<refpurpose>define a data source</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE DATA SOURCE src_name
[TYPE 'type_str']
[VERSION {'version_str' | NULL}]
[OPTIONS (optname 'optvalue' [, ...])];
Valid optname are:
DSN, USERNAME, PASSWORD, ENCODING
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CREATE_DATA_SOURCE">
<refmeta>
<refentrytitle>CREATE DATA SOURCE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE DATA SOURCE</refname>
<refpurpose>define a data source</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE DATA SOURCE src_name
[TYPE 'type_str']
[VERSION {'version_str' | NULL}]
[OPTIONS (optname 'optvalue' [, ...])];
Valid optname are:
DSN, USERNAME, PASSWORD, ENCODING
</synopsis>
</refsynopsisdiv>
</refentry>

View File

@ -1,24 +1,24 @@
<refentry id="SQL-CREATE_DATABASE">
<refmeta>
<refentrytitle>CREATE DATABASE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE DATABASE</refname>
<refpurpose>create a new database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE DATABASE database_name
[ [ WITH ] {[ OWNER [=] user_name ]|
[ TEMPLATE [=] template ]|
[ ENCODING [=] encoding ]|
[ LC_COLLATE [=] lc_collate ]|
[ LC_CTYPE [=] lc_ctype ]|
[ DBCOMPATIBILITY [=] compatibility_type ]|
[ TABLESPACE [=] tablespace_name ]|
[ CONNECTION LIMIT [=] connlimit ]}[...] ];
</synopsis>
</refsynopsisdiv>
<refentry id="SQL-CREATE_DATABASE">
<refmeta>
<refentrytitle>CREATE DATABASE</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE DATABASE</refname>
<refpurpose>create a new database</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
CREATE DATABASE database_name
[ [ WITH ] {[ OWNER [=] user_name ]|
[ TEMPLATE [=] template ]|
[ ENCODING [=] encoding ]|
[ LC_COLLATE [=] lc_collate ]|
[ LC_CTYPE [=] lc_ctype ]|
[ DBCOMPATIBILITY [=] compatibility_type ]|
[ TABLESPACE [=] tablespace_name ]|
[ CONNECTION LIMIT [=] connlimit ]}[...] ];
</synopsis>
</refsynopsisdiv>
</refentry>

Some files were not shown because too many files have changed in this diff Show More