云服务器内容精选

  • 规格约束 事务 使用DATABASE LINK的时候本地和远程事务的关系如下: 本地事务会同步控制远程事务的提交/回滚状态。 隔离级别的对应关系为: 本地隔离级别 远程隔离级别 Read Uncommitted Repeatable Read Read Committed Repeatable Read Repeatable Read Repeatable Read Serializable Serializable 本地事务提交过程中会向远端发送事务提交请求,如果远端事务提交成功后出现异常情况导致本地的事务提交失败,如连接异常,本地集群实例异常等情况,远端的事务提交无法被撤回,可能出现本地事务与远端事务不一致的情况。 本地用户对DATABASE LINK的使用权限。 如果使用了public关键词,就是公有的DATABASE LINK,可以被所有用户/模式使用。 如果没有使用public关键词,就是私有的的DATABASE LINK,仅能被当前用户/模式使用(包括sys用户也无法跨SCHEMA使用DATABASE LINK)。 通过DATABASE LINK访问远程数据库对象的权限。 对远程数据库对象的访问权限与DATABASE LINK绑定的远程连接用户的权限保持一致。 支持SQL范围。 DATABASE LINK相关语句支持情况见表1。 DATABASE LINK相关表类型支持情况见表2。 DATABASE LINK函数调用。 DATABASE LINK调用远程函数不支持自定义类型、OUT/INOUT参数、PACKAGE内函数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内通过DATABASE LINK调用远程数据库的存储过程或函数不支持自定义类型、OUT/INOUT参数、PACKAGE内函数、重载函数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内调用远程数据库的存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( param_expr )语法格式调用。 PLSQL_BODY内调用远程数据库的无参存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( )语法格式调用。 同义词 不支持将DATABASE LINK名创建为一个同义词的使用方法。 不支持通过DATABASE LINK调用远端数据库中指向一个DATABASE LINK对象的同义词。例如如下场景: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK1,并创建同义词"CREATE SYNONYM T1 FOR TABLE1@DBLINK1"。 步骤三:在DB3上创建连接DB2的DBLINK2,通过DBLINK2调用DB2上的同义词T1,"SELECT * FROM T1@DBLINK2"。 表类型约束 HASHBUCKET:不支持通过DATABASE LINK对远端Hash bucket表进行查询或DML操作。 SLICE:不支持通过DATABASE LINK对远端slice表进行查询或DML操作。 复制表:不支持通过DATABASE LINK对远端复制表进行查询或DML操作。 TEMPORARY:不支持通过DATABASE LINK对远端临时表进行查询或DML操作。 视图 目前支持对DATABASE LINK的远端表创建视图,但是当远端表本身的结构发生变化时,该视图使用时可能会发生异常。例如: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK,并创建视图"CREATE VIEW V1 AS SELECT * FROM TABLE1@DBLINK。 步骤三:在DB1上删除TABLE1的一列,在DB2上查询该视图会产生报错。 其他场景: DATABASE LINK表不支持TRIGGER,包括TRIGGER调用函数内使用DATABASE LINK场景、TRIGGER调用函数为DATABASE LINK函数、在DATABASE LINK上定义TRIGGER情况。 暂不支持UPSERT、MERGE语法。 不支持current cursor语法。 不支持查询表的隐藏字段。 dump与备份。 不支持DATABASE LINK相关数据库对象的dump,备机不支持DATABASE LINK调用,也不支持被DATABASE LINK连接。 谓词下推约束。 仅支持WHERE子句使用的数据类型、操作符和函数是内置的,并且使用的函数是IMMUTABLE类型。 聚集函数下推约束。 仅支持单表且没有GROUP、ORDER BY、HAVING、LIMIT子句的SELECT语句,并且不支持窗口函数。 hint下推。 支持针对DATABASE LINK表对象的hint条件下推,仅限scan方式的hint下推,语法格式如下: [no] tablescan|indexscan|indexonlyscan(table [index]) 并要求在一个 queryblock 中的表名或表别名不能重复。 表1 支持SQL范围 SQL类型 操作对象 支持选项说明 执行上下文 创建DATABASE LINK DATABASE LINK NA 普通事务块 修改DATABASE LINK DATABASE LINK 仅支持用户名、密码的修改 普通事务块 删除DATABASE LINK DATABASE LINK NA 普通事务块 SELECT语句 普通表、普通视图、全量物化视图 WHERE子句 DATABASE LINK表和内部表JOIN DATABASE LINK表和DATABASE LINK表JOIN 聚集函数 LIMIT子句 ORDER BY子句 GROUP BY子句、HAVING子句 UNION子句 WITH子句 START WITH子句和CONNECT BY子句 FOR UPDATE子句 Rownum使用 普通事务块、存储过程、函数、高级包、逻辑视图 INSERT语句 普通表 多VALUE插入 普通事务块、存储过程、函数、高级包 UPDATE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 DELETE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 LOCK TABLE语句 普通表 LOCKMODE子句 NOWAIT子句 普通事务块 表2 表类型支持情况 维度 GaussDB表类型 DATABASE LINK支持情况 TEMP选项 临时表 不支持 全局临时表 支持 UNLOGGED选项 非日志表 支持 存储特性 行存 Astore 支持 Ustore 支持 分区表 支持 二级分区表 支持 视图 DATABASE LINK访问远程视图 支持dql,不支持dml 本地视图通过 DATABASE LINK 关联远程表 支持dql,不支持dml
  • 功能描述 在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。 DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。 所有已创建的DATABASE LINK信息都存在本地数据库的系统视图gs_db_links中。
  • 注意事项 DATABASE LINK特性只在A兼容版本下可以使用。 DATABASE LINK连接的远端数据库仅支持503.1.0及之后版本。 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和guc参数behavior_compat_options、a_format_dev_version、a_format_version取值一致。 DATABASE LINK连接开启session时会设置如下guc参数: set search_path=pg_catalog, '$user', 'public'; set datestyle=ISO; set intervalstyle=postgres; set extra_float_digits=3; 其余参数为远端设置的参数,远端参数与本地参数不同时,可能会出现数据显示格式不一致等情况,使用时应尽量保证远端与本地参数相同。 使用前置准备:使用gs_guc在gs_hba.conf文件中添加白名单允许客户端连接。 示例:gs_guc reload -I all -N all -Z datanode -h "host all all 192.168.11.11/32 sha256" 详细配置参数信息参考gs_guc客户端认证策略设置。 创建DATABASE LINK权限需要使用GRANT语法赋予,新建用户默认无权限,系统管理员拥有权限。详见GRANT相关说明。 使用DATABASE LINK对远端表操作时,会在本地创建与远端对应的SCHEMA,若本地不存在该表的元数据信息,会将元数据信息写入本地系统表中,此时会使用7级锁保证写入的一致性,持续到事务结束放锁,删除DATABASE LINK时会将相应的元数据信息删除。 使用DATABASE LINK时在本地创建的表仅用于存储远端表的元数据信息,无法通过\d或pg_get_tabledef函数查询到表结构。 如果业务中有长事务首次使用DATABASE LINK操作远端对象,会持续持锁直到事务结束,其他首次使用DATABASE LINK的事务会被阻塞。可通过一条快速执行的语句先对要使用的远端对象做查询操作使其元数据落盘来规避这种情况,如 "select * from t1@dblink where 1=2;"。另外,远端表结构发生变化时本地要更新存储的元数据信息,也会有类似情况。 如果本地与远端字符集不同,可能会出现无法转换的报错,报错信息为远端返回报错。当本地数据库字符编码为GB18030_2022时,发送到远端会被转换为GB18030。因此,若本地数据库的字符集为GB18030_2022时,远程数据库字符集只能是GB18030或GB18030_2022。 在本地创建与远端对应的SCHEMA时会使用“USERNAME(私有DATABASE LINK才有)#远端SCHEMA@DBLINK名”作为SCHEMA名,名称长度上限为63。 当赋予用户创建DATABASE LINK权限时,相当于许可用户使用服务端DATABASE的IP对远端进行访问。若不希望有此效果,应不要使用GRANT对用户赋权。
  • 美元引用的字符串常量 如果在字符串序列中包含有'(单引号),那么应当将'(单引号)加倍为''(两个单引号)否则sql语句很可能无法执行。 如果字符串中包含很多单引号或者反斜杠,那么理解字符串的内容可能就会变得很苦涩,并且容易出错,因为单引号都要加倍。 为了让这种场合下的查询更具可读性,允许另外一种称作“美元符界定”的字符串常量书写办法。一个通过美元符界定声明的字符串常量由一个美元符号($)、零个或多个字符组成的"记号"、另一个美元符号、组成字符串常量的任意字符序列、一个美元符号、与前面相同的记号、一个美元符号组成的。 gaussdb=# SELECT $$it's an example$$; ?column? ----------------- it's an example (1 row) 父主题: 附录
  • 行表达式函数白名单 表1 为数据对象增加或修改策略ILM所支持的行表达式函数白名单 func_oid_value func_name 56 boollt 57 boolgt 60 booleq 61 chareq 63 int2eq 64 int2lt 65 int4eq 66 int4lt 67 texteq 70 charne 72 charle 73 chargt 74 charge 77 int4 78 char 84 boolne 111 numeric_fac 141 int4mul 144 int4ne 145 int2ne 146 int2gt 147 int4gt 148 int2le 149 int4le 150 int4ge 151 int2ge 152 int2mul 153 int2div 154 int4div 155 int2mod 156 int4mod 157 textne 158 int24eq 159 int42eq 160 int24lt 161 int42lt 162 int24gt 163 int42gt 164 int24ne 165 int42ne 166 int24le 167 int42le 168 int24ge 169 int42ge 170 int24mul 171 int42mul 172 int24div 173 int42div 176 int2pl 177 int4pl 178 int24pl 179 int42pl 180 int2mi 181 int4mi 182 int24mi 183 int42mi 202 float4mul 203 float4div 204 float4pl 205 float4mi 206 float4um 207 float4abs 209 float4larger 211 float4smaller 212 int4um 213 int2um 216 float8mul 217 float8div 218 float8pl 219 float8mi 220 float8um 221 float8abs 223 float8larger 224 float8smaller 228 dround 229 dtrunc 235 float8 236 float4 237 int2 238 int2 244 timepl 245 timemi 248 intinterval 249 tintervalrel 251 abstimeeq 252 abstimene 253 abstimelt 254 abstimegt 255 abstimele 256 abstimege 257 reltimeeq 258 reltimene 259 reltimelt 260 reltimegt 261 reltimele 262 reltimege 263 tintervalsame 264 tintervalct 265 tintervalov 266 tintervalleneq 267 tintervallenne 268 tintervallenlt 269 tintervallengt 270 tintervallenle 271 tintervallenge 273 tintervalend 275 isfinite 279 float48mul 280 float48div 281 float48pl 282 float48mi 283 float84mul 284 float84div 285 float84pl 286 float84mi 287 float4eq 288 float4ne 289 float4lt 290 float4le 291 float4gt 292 float4ge 293 float8eq 294 float8ne 295 float8lt 296 float8le 297 float8gt 298 float8ge 299 float48eq 300 float48ne 301 float48lt 302 float48le 303 float48gt 304 float48ge 305 float84eq 306 float84ne 307 float84lt 308 float84le 309 float84gt 310 float84ge 311 float8 312 float4 313 int4 314 int2 316 float8 317 int4 318 float4 319 int4 350 btint2cmp 351 btint4cmp 354 btfloat4cmp 355 btfloat8cmp 357 btabstimecmp 358 btcharcmp 360 bttextcmp 377 cash_cmp 380 btreltimecmp 381 bttintervalcmp 385 regexp_count 386 regexp_count 387 regexp_count 400 hashtext 432 hash_numeric 449 hashint2 450 hashint4 451 hashfloat4 452 hashfloat8 454 hashchar 458 text_larger 459 text_smaller 461 int8out 462 int8um 463 int8pl 464 int8mi 465 int8mul 466 int8div 467 int8eq 468 int8ne 469 int8lt 470 int8gt 471 int8le 472 int8ge 474 int84eq 475 int84ne 476 int84lt 477 int84gt 478 int84le 479 int84ge 480 int4 481 int8 482 float8 483 int8 630 regexp_instr 631 regexp_instr 632 regexp_instr 633 regexp_instr 634 regexp_instr 652 float4 654 hashint1_numeric 665 hashint2_numeric 667 hashint16 676 mktinterval 682 hashint4_numeric 714 int2 720 octet_length 721 get_byte 722 set_byte 723 get_bit 724 set_bit 740 text_lt 741 text_le 742 text_gt 743 text_ge 754 int8 755 hashint8_numeric 766 int4inc 768 int4larger 769 int4smaller 770 int2larger 771 int2smaller 784 tintervaleq 785 tintervalne 786 tintervallt 787 tintervalgt 788 tintervalle 789 tintervalge 792 btint12cmp 793 btint14cmp 794 btint18cmp 795 btint116cmp 796 btint1numericcmp 797 btint21cmp 798 btint216cmp 799 btint2numericcmp 800 btint41cmp 801 btint416cmp 802 btint4numericcmp 803 btint81cmp 804 btint816cmp 805 btint8numericcmp 837 int82pl 838 int82mi 839 int82mul 840 int82div 841 int28pl 842 btint8cmp 846 cash_mul_flt4 847 cash_div_flt4 848 flt4_mul_cash 849 position 852 int48eq 853 int48ne 854 int48lt 855 int48gt 856 int48le 857 int48ge 860 bpchar 862 int4_mul_cash 863 int2_mul_cash 864 cash_mul_int4 865 cash_div_int4 866 cash_mul_int2 867 cash_div_int2 868 strpos 870 lower 871 upper 877 substr 883 substr 888 cash_eq 889 cash_ne 890 cash_lt 891 cash_le 892 cash_gt 893 cash_ge 894 cash_pl 895 cash_mi 896 cash_mul_flt8 897 cash_div_flt8 898 cashlarger 899 cashsmaller 919 flt8_mul_cash 935 cash_words 936 substring 937 substring 940 mod 941 mod 942 int28mi 943 int28mul 944 char 945 int8mod 947 mod 948 int28div 949 hashint8 1026 timezone 1048 bpchareq 1049 bpcharlt 1050 bpcharle 1051 bpchargt 1052 bpcharge 1053 bpcharne 1063 bpchar_larger 1064 bpchar_smaller 1078 bpcharcmp 1080 hashbpchar 1102 time_lt 1103 time_le 1104 time_gt 1105 time_ge 1106 time_ne 1107 time_cmp 1116 regexp_replace 1117 regexp_replace 1118 regexp_replace 1119 regexp_replace 1145 time_eq 1152 timestamptz_eq 1153 timestamptz_ne 1154 timestamptz_lt 1155 timestamptz_le 1156 timestamptz_ge 1157 timestamptz_gt 1158 to_timestamp 1159 timezone 1162 interval_eq 1163 interval_ne 1164 interval_lt 1165 interval_le 1166 interval_ge 1167 interval_gt 1168 interval_um 1169 interval_pl 1170 interval_mi 1172 date_part 1173 timestamptz 1177 interval 1180 abstime 1188 timestamptz_mi 1194 reltime 1195 timestamptz_smaller 1196 timestamptz_larger 1197 interval_smaller 1198 interval_larger 1199 age 1200 interval 1218 date_trunc 1219 int8inc 1230 int8abs 1236 int8larger 1237 int8smaller 1238 texticregexeq 1239 texticregexne 1246 charlt 1251 int4abs 1253 int2abs 1254 textregexeq 1256 textregexne 1271 overlaps 1273 date_part 1274 int84pl 1275 int84mi 1276 int84mul 1277 int84div 1278 int48pl 1279 int48mi 1280 int48mul 1281 int48div 1282 quote_ident 1283 quote_literal 1289 quote_nullable 1299 now 1304 overlaps 1308 overlaps 1309 overlaps 1310 overlaps 1311 overlaps 1314 timestamptz_cmp 1315 interval_cmp 1316 time 1326 interval_div 1342 round 1343 trunc 1352 timetz_eq 1353 timetz_ne 1354 timetz_lt 1355 timetz_le 1356 timetz_ge 1357 timetz_gt 1358 timetz_cmp 1359 timestamptz 1370 interval 1373 isfinite 1374 octet_length 1375 octet_length 1377 time_larger 1378 time_smaller 1379 timetz_larger 1380 timetz_smaller 1384 date_part 1385 date_part 1389 isfinite 1390 isfinite 1394 abs 1395 abs 1396 abs 1397 abs 1398 abs 1419 time 1481 tinterval 1581 biteq 1582 bitne 1592 bitge 1593 bitgt 1594 bitle 1595 bitlt 1596 bitcmp 1608 degrees 1618 interval_mul 1620 ascii 1621 chr 1622 repeat 1623 similar_escape 1624 mul_d_interval 1633 texticlike 1634 texticnlike 1637 like_escape 1656 bpcharicregexeq 1657 bpcharicregexne 1658 bpcharregexeq 1659 bpcharregexne 1660 bpchariclike 1661 bpcharicnlike 1666 varbiteq 1667 varbitne 1668 varbitge 1669 varbitgt 1670 varbitle 1671 varbitlt 1672 varbitcmp 1673 bitand 1674 bitor 1675 bitxor 1676 bitnot 1677 bitshiftleft 1678 bitshiftright 1679 bitcat 1680 substring 1682 octet_length 1683 bit 1684 int4 1685 bit 1687 varbit 1688 time_hash 1690 time_mi_time 1691 boolle 1692 boolge 1693 btboolcmp 1696 timetz_hash 1697 interval_hash 1698 position 1699 substring 1702 numeric_out 1703 numeric 1704 numeric_abs 1705 abs 1706 sign 1707 round 1709 trunc 1710 trunc 1711 ceil 1712 floor 1718 numeric_eq 1719 numeric_ne 1720 numeric_gt 1721 numeric_ge 1722 numeric_lt 1723 numeric_le 1724 numeric_add 1725 numeric_sub 1726 numeric_mul 1727 numeric_div 1728 mod 1729 numeric_mod 1740 numeric 1742 numeric 1743 numeric 1744 int4 1745 float4 1746 float8 1747 time_pl_interval 1748 time_mi_interval 1749 timetz_pl_interval 1750 timetz_mi_interval 1752 trunc 1753 trunc 1764 numeric_inc 1766 numeric_smaller 1767 numeric_larger 1769 numeric_cmp 1771 numeric_uminus 1781 numeric 1782 numeric 1783 int2 1810 bit_length 1811 bit_length 1812 bit_length 1840 int2_sum 1841 int4_sum 1842 int8_sum 1845 to_ascii 1846 to_ascii 1848 interval_pl_time 1850 int28eq 1851 int28ne 1852 int28lt 1853 int28gt 1854 int28le 1855 int28ge 1856 int82eq 1857 int82ne 1858 int82lt 1859 int82gt 1860 int82le 1861 int82ge 1874 btint161cmp 1875 btint162cmp 1876 btint164cmp 1877 btint168cmp 1878 btnumericint1cmp 1879 btnumericint2cmp 1880 btnumericint4cmp 1881 btnumericint8cmp 1882 btint16cmp 1892 int2and 1893 int2or 1894 int2xor 1895 int2not 1896 int2shl 1897 int2shr 1898 int4and 1899 int4or 1900 int4xor 1901 int4not 1902 int4shl 1903 int4shr 1904 int8and 1905 int8or 1906 int8xor 1907 int8not 1908 int8shl 1909 int8shr 1910 int8up 1911 int2up 1912 int4up 1913 float4up 1914 float8up 1915 numeric_uplus 1946 encode 1961 timestamp 1967 timestamptz 1968 time 1969 timetz 1973 div 1980 numeric_div_trunc 2009 like_escape 2012 substring 2013 substring 2014 position 2020 date_trunc 2021 date_part 2024 timestamp 2025 timestamp 2031 timestamp_mi 2032 timestamp_pl_interval 2033 timestamp_mi_interval 2035 timestamp_smaller 2036 timestamp_larger 2038 timezone 2039 timestamp_hash 2041 overlaps 2042 overlaps 2043 overlaps 2044 overlaps 2045 timestamp_cmp 2046 time 2048 isfinite 2052 timestamp_eq 2053 timestamp_ne 2054 timestamp_lt 2055 timestamp_le 2056 timestamp_ge 2057 timestamp_gt 2058 age 2069 timezone 2070 timezone 2073 substring 2074 substring 2075 bit 2076 int8 2089 to_hex 2090 to_hex 2160 text_pattern_lt 2161 text_pattern_le 2163 text_pattern_ge 2164 text_pattern_gt 2166 bttext_pattern_cmp 2167 ceiling 2174 bpchar_pattern_lt 2175 bpchar_pattern_le 2177 bpchar_pattern_ge 2178 bpchar_pattern_gt 2180 btbpchar_pattern_cmp 2188 btint48cmp 2189 btint84cmp 2190 btint24cmp 2191 btint42cmp 2192 btint28cmp 2193 btint82cmp 2194 btfloat48cmp 2195 btfloat84cmp 2308 ceil 2309 floor 2310 sign 2320 ceiling 2515 booland_statefunc 2516 boolor_statefunc 2547 interval_pl_timetz 2548 interval_pl_timestamp 2557 bool 2558 int4 2765 regexp_split_to_table 2766 regexp_split_to_table 2805 int8inc_float8_float8 2906 timestamptypmodout 2908 timestamptztypmodout 2910 timetypmodout 2912 timetztypmodout 2996 int8_sum_to_int8 3032 get_bit 3033 set_bit 3062 reverse 3167 instr 3168 instr 3169 instr 3170 multiply 3171 multiply 3175 lengthb 3176 lengthb 3177 int8_bool 3178 bool_int8 3180 int2_bool 3181 bool_int2 3182 substring_inner 3183 substring_inner 3226 timestamp_diff 3227 timestamp_diff 3343 int8_mul_cash 3344 cash_mul_int8 3345 cash_div_int8 3822 cash_div_cash 3922 int4range_subdiff 3923 int8range_subdiff 3924 numrange_subdiff 3925 daterange_subdiff 3929 tsrange_subdiff 3930 tstzrange_subdiff 4162 varchar_date 4163 bpchar_date 4164 text_date 4166 int2_text 4167 int4_text 4168 int8_text 4169 float4_text 4170 float8_text 4171 numeric_text 5580 smalldatetime_eq 5581 smalldatetime_ne 5582 smalldatetime_lt 5583 smalldatetime_le 5584 smalldatetime_ge 5585 smalldatetime_gt 5586 smalldatetime_cmp 5587 smalldatetime_hash 5809 b_db_last_day 5810 b_db_last_day 5811 b_db_last_day 5816 b_db_last_day 5858 weekofyear 5859 weekofyear 5860 weekofyear 5861 weekofyear 6407 int16 6408 int2 6409 int16 6410 int4 6411 int16 6412 int8 6413 int16 6414 float8 6415 int16 6416 float4 6419 int16 6420 int16_bool 6421 int16 6422 numeric 6423 int16eq 6424 int16ne 6425 int16lt 6426 int16le 6427 int16gt 6428 int16ge 6429 int16pl 6430 int16mi 6431 int16mul 6432 int16div 6433 numeric 6434 numeric_bool 6438 int21gt 6439 int21le 6440 int21ge 6441 int216eq 6442 int216ne 6443 int216lt 6444 int216gt 6445 int216le 6446 int216ge 6447 int2numericeq 6448 int2numericne 6449 int2numericlt 6450 int2numericgt 6451 int2numericle 6452 int2numericge 6453 int41eq 6454 int41ne 6455 int41lt 6456 int41gt 6457 int41le 6458 int41ge 6459 int416eq 6460 int416ne 6461 int416lt 6462 int416gt 6463 int416le 6464 int416ge 6465 int4numericeq 6466 int4numericne 6467 int4numericlt 6468 int4numericgt 6469 int4numericle 6470 int4numericge 6471 int81eq 6472 int81ne 6473 int81lt 6474 int81gt 6475 int81le 6476 int81ge 6477 int816eq 6478 int816ne 6479 int816lt 6480 int816gt 6481 int816le 6482 int816ge 6483 int8numericeq 6484 int8numericne 6485 int8numericlt 6486 int8numericgt 6487 int8numericle 6488 int8numericge 6539 int21eq 6540 int21ne 6578 b_timestampdiff 6579 b_timestampdiff 6582 b_timestampdiff 6583 b_timestampdiff 6584 b_timestampdiff 6585 b_timestampdiff 6586 b_timestampdiff 6587 b_timestampdiff 6588 b_timestampdiff 6589 b_timestampdiff 6590 b_timestampdiff 6591 b_timestampdiff 6592 b_timestampdiff 6593 b_timestampdiff 6594 b_timestampdiff 6595 b_timestampdiff 6635 int21lt 6814 int12eq 6815 numericint1eq 6853 int168ge 7747 numericint2le 7748 numericint2ge 7749 numericint4eq 7750 numericint4ne 7751 numericint4lt 7752 numericint4gt 7753 numericint4le 7754 numericint4ge 7755 numericint8eq 7756 numericint8ne 7757 numericint8lt 7758 numericint8gt 7759 numericint8le 7760 numericint8ge 7761 int161eq 7762 int161ne 7763 int161lt 8751 int161gt 8752 int161le 8753 int161ge 8754 int162eq 8755 int162ne 8756 int162lt 8757 int162gt 8758 int162le 8759 int162ge 8760 int164eq 8761 int164ne 8762 int164lt 8763 int164gt 8764 int164le 8765 int164ge 8766 int168eq 8767 int168ne 8768 int168lt 8769 int168gt 8770 int168le 9011 smalldatetime_smaller 9012 smalldatetime_larger 9558 int12ne 9559 int12lt 9560 int12gt 9561 int12le 9562 int12ge 9563 int14eq 9564 int14ne 9566 int14lt 9567 int14gt 9568 int14le 9569 int14ge 9573 int18eq 9574 int18ne 9575 int18lt 9576 int18gt 9584 int18le 9585 int18ge 9586 int116eq 9587 int116ne 9588 int116lt 9589 int116gt 9590 int116le 9591 int116ge 9592 int1numericeq 9593 int1numericne 9594 int1numericlt 9595 int1numericgt 9596 int1numericle 9597 int1numericge 9624 numericint1ne 9625 numericint1lt 9626 numericint1gt 9627 numericint1le 9628 numericint1ge 9629 numericint2eq 9630 numericint2ne 9631 numericint2lt 9632 numericint2gt 9910 substring_index 父主题: 附录
  • 注意事项 DATABASE LINK特性只在ORA兼容版本下可以使用。 DATABASE LINK连接的远端数据库仅支持503.1.0及之后版本。 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和guc参数behavior_compat_options、a_format_dev_version、a_format_version取值一致。 DATABASE LINK连接开启session时会设置如下guc参数: set search_path=pg_catalog, '$user', 'public'; set datestyle=ISO; set intervalstyle=postgres; set extra_float_digits=3; 其余参数为远端设置的参数,远端参数与本地参数不同时,可能会出现数据显示格式不一致等情况,使用时应尽量保证远端与本地参数相同。 使用前置准备:使用gs_guc在gs_hba.conf文件中添加白名单允许客户端连接。 示例:gs_guc reload -I all -N all -Z coordinator -Z datanode -h "host all all 192.168.11.11/32 sha256" 详细配置参数信息参考gs_guc客户端认证策略设置。 某些情况集群白名单中也需要添加DN的IP。 创建DATABASE LINK权限需要使用GRANT语法赋予,新建用户默认无权限,系统管理员拥有权限。详见GRANT相关说明。 使用DATABASE LINK对远端表操作时,会在本地创建与远端对应的SCHEMA,若本地不存在该表的元数据信息,会将元数据信息写入本地系统表中,此时会使用7级锁保证写入的一致性,持续到事务结束放锁,删除DATABASE LINK时会将相应的元数据信息删除。 使用DATABASE LINK时在本地创建的表仅用于存储远端表的元数据信息,无法通过\d或pg_get_tabledef函数查询到表结构。 如果业务中有长事务首次使用DATABASE LINK操作远端对象,会持续持锁直到事务结束,其他首次使用DATABASE LINK的事务会被阻塞。可通过一条快速执行的语句先对要使用的远端对象做查询操作使其元数据落盘来规避这种情况,如 "select * from t1@dblink where 1=2;"。另外,远端表结构发生变化时本地要更新存储的元数据信息,也会有类似情况。 在本地创建与远端对应的SCHEMA时会使用“USERNAME(私有DATABASE LINK才有)#远端SCHEMA@DBLINK名”作为SCHEMA名,名称长度上限为63。 如果本地与远端字符集不同,可能会出现无法转换的报错,报错信息为远端返回报错。当本地数据库字符编码为GB18030_2022时,发送到远端会被转换为GB18030。因此,若本地数据库的字符集为GB18030_2022时,远程数据库字符集只能是GB18030或GB18030_2022。 使用DATABASE LINK对远端表操作时,会创建一个单节点的NODE GROUP随机绑定一个DN。 当赋予用户创建DATABASE LINK权限时,相当于许可用户使用服务端DATABASE的IP对远端进行访问。若不希望有此效果,应不要使用GRANT对用户赋权。
  • 规格约束 事务 使用DATABASE LINK的时候本地和远程事务的关系如下: 本地事务会同步控制远程事务的提交/回滚状态。 隔离级别的对应关系为: 本地隔离级别 远程隔离级别 Read Uncommitted Repeatable Read Read Committed Repeatable Read Repeatable Read Repeatable Read Serializable Serializable 本地事务提交过程中会向远端发送事务提交请求,如果远端事务提交成功后出现异常情况导致本地的事务提交失败,如连接异常,本地集群实例异常等情况,远端的事务提交无法被撤回,可能出现本地事务与远端事务不一致的情况。 本地用户对DATABASE LINK的使用权限 如果使用了public关键词,就是公有的DATABASE LINK,可以被所有用户/模式使用。 如果没有使用public关键词,就是私有的DATABASE LINK,仅能被当前用户/模式使用(包括SYSADMIN用户也无法跨SCHEMA使用DATABASE LINK)。 通过DATABASE LINK访问远程数据库对象的权限 对远程数据库对象的访问权限与DATABASE LINK绑定的远程连接用户的权限保持一致。 支持SQL范围 DATABASE LINK相关语句支持情况请参见表1。 DATABASE LINK相关表类型支持情况请参见表2。 DATABASE LINK函数调用 DATABASE LINK调用远程函数不支持OUT/INOUT参数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内通过DATABASE LINK调用远程数据库的存储过程或函数不支持OUT/INOUT参数、重载函数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内调用远程数据库的存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( param_expr )语法格式调用。 PLSQL_BODY内调用远程数据库的无参存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( )语法格式调用。 同义词 不支持将DATABASE LINK名创建为一个同义词的使用方法。 不支持通过DATABASE LINK调用远端数据库中指向一个DATABASE LINK对象的同义词。例如如下场景: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK1,并创建同义词"CREATE SYNONYM T1 FOR TABLE1@DBLINK1"。 步骤三:在DB3上创建连接DB2的DBLINK2,通过DBLINK2调用DB2上的同义词T1,"SELECT * FROM T1@DBLINK2"。 表类型约束 HASHBUCKET:不支持通过DATABASE LINK对远端Hash bucket表进行查询或DML操作。 SLICE:不支持通过DATABASE LINK对远端slice表进行查询或DML操作。 复制表:不支持通过DATABASE LINK对远端复制表进行查询或DML操作。 TEMPORARY:不支持通过DATABASE LINK对远端临时表进行查询或DML操作。 视图 目前支持对DATABASE LINK的远端表创建视图,但是当远端表本身的结构发生变化时,该视图使用时可能会发生异常。例如: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK,并创建视图"CREATE VIEW V1 AS SELECT * FROM TABLE1@DBLINK。 步骤三:在DB1上删除TABLE1的一列,在DB2上查询该视图会产生报错。 其他场景: DATABASE LINK表不支持TRIGGER,包括TRIGGER调用函数内使用DATABASE LINK场景、TRIGGER调用函数为DATABASE LINK函数、在DATABASE LINK上定义TRIGGER情况。 暂不支持UPSERT、MERGE语法。 不支持current cursor语法。 不支持查询表的隐藏字段。 dump与备份 不支持DATABASE LINK相关数据库对象的dump,备机不支持DATABASE LINK调用,也不支持被DATABASE LINK连接。 谓词下推约束 仅支持WHERE子句使用的数据类型、操作符和函数是内置的,并且使用的函数是IMMUTABLE类型。 聚集函数下推约束 仅支持单表且没有GROUP、ORDER BY、HAVING、LIMIT子句的SELECT语句,并且不支持窗口函数。 hint下推 支持针对DATABASE LINK表对象的hint条件下推,仅限scan方式的hint下推,语法格式如下: [no] tablescan|indexscan|indexonlyscan(table [index]) 并要求在一个 queryblock 中的表名或表别名不能重复。 表1 支持SQL范围 SQL类型 操作对象 支持选项说明 执行上下文 创建DATABASE LINK DATABASE LINK NA 普通事务块 修改DATABASE LINK DATABASE LINK 仅支持用户名、密码的修改 普通事务块 删除DATABASE LINK DATABASE LINK NA 普通事务块 SELECT语句 普通表、普通视图、全量物化视图 WHERE子句 DATABASE LINK表和内部表JOIN DATABASE LINK表和DATABASE LINK表JOIN 聚集函数 LIMIT子句 ORDER BY子句 GROUP BY子句、HAVING子句 UNION子句 WITH子句 FOR UPDATE子句 Rownum使用 普通事务块、存储过程、函数、高级包、逻辑视图 INSERT语句 普通表 多VALUE插入 普通事务块、存储过程、函数、高级包 UPDATE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 DELETE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 LOCK TABLE语句 普通表 LOCKMODE子句 NOWAIT子句 普通事务块 表2 表类型支持情况 维度 GaussDB表类型 DATABASE LINK支持情况 TEMP选项 临时表 不支持 全局临时表 不支持 UNLOGGED选项 非日志表 支持 存储特性 行存 Astore 支持 Ustore 不支持 分区表 不支持 二级分区表 不支持 视图 DATABASE LINK访问远程视图 支持dql,不支持dml 本地视图通过 DATABASE LINK 关联远程表 支持dql,不支持dml
  • 功能描述 在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。 DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。 所有已创建的DATABASE LINK信息都存在本地数据库的系统视图gs_db_links中。
  • 美元引用的字符串常量 如果在字符串序列中包含有'(单引号),那么应当将'(单引号)加倍为''(两个单引号)否则sql语句很可能无法执行。 如果字符串中包含很多单引号或者反斜杠,那么理解字符串的内容可能就会变得很苦涩,并且容易出错,因为单引号都要加倍。 为了让这种场合下的查询更具可读性,允许另外一种称作“美元符界定”的字符串常量书写办法。一个通过美元符界定声明的字符串常量由一个美元符号($)、零个或多个字符组成的"记号"、另一个美元符号、组成字符串常量的任意字符序列、一个美元符号、与前面相同的记号、一个美元符号组成的。 gaussdb=# SELECT $$it's an example$$; ?column? ----------------- it's an example (1 row) 父主题: 附录
  • 扩展语法 GaussDB提供的扩展语法如下。 表1 扩展SQL语法 类别 语法关键字 描述 创建表CREATE TABLE column_constraint: REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ][ ON DELETE action ] [ ON UPDATE action ] 支持用REFERENCES reftable[ ( refcolumn ) ] [ MATCH FULL |MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 为表创建外键约束。 加载模块 CREATE EXTENSION 把一个新的模块加载进当前数据库中。该特性为内部使用,不建议用户使用。 DROP EXTENSION 删除已加载的模块。该特性为内部使用,不建议用户使用。 聚集函数 CREATE AGGREGATE 定义一个新的聚集函数。 ALTER AGGREGATE 修改一个聚集函数的定义。 DROP AGGREGATE 删除一个现存的聚集函数。 父主题: 附录
  • ASP报告信息 表1 Report Header信息 列名称 描述 Start Time 开始时间。 End Time 结束时间。 Slot Count 指标展示时分割的时间段的个数。 Elapsed Time 生成报告的时间段。 Sample Count 生成ASP报告的总的样本数。 Slice Count 总的采样次数。 Average Active Sessions 平均活跃会话数。 Boundary Time 内存中样本和磁盘样本的分割时间点。 Data Source 生成ASP报告的样本中,来自内存中的样本数和来自磁盘上的样本数。 表2 System Load信息 列名称 描述 Host Node Name 节点名称。 CPUs CPU核心总量。 Cores 单个CPU核心数量。 Sockets CPU插槽数量。 Physical Memory 内存大小。 GaussDB Version GaussDB Kernel版本。 表3 Top Client信息 列名称 描述 Client Addr 客户端地址。 User Id 用户id。 Application Name 客户端连接程序名称。 %Activity 活跃百分比(活跃会话总数/样本数量)。 Avg Active Sessions 平均活跃数量(活跃会话总数/切面个数)。 表4 Active sessions信息 列名称 描述 sample_time(x_axis) 采样时间。 count(y_axis) 采样事件数量。 表5 Top Events Summary信息 列名 描述 Wait Status wait status名称。 Wait Status Count wait status数量。 %Wait Status wait status百分比(wait status数量/样本数量)。 Avg Active Session wait status平均活跃会话数(wait status数量/切面数量)。 Event wait event名称。 Event Count wait event数量。 表6 Top Events Graph信息 列名 描述 smaple_time(x_axis) 采样时间。 count(y_axis) 采样事件数量。 表7 Top Sessions with Top event信息 列名 描述 Session Id 会话id。 Session Start 会话开始事件。 Session Count 活跃会话数量。 %Activity 活跃百分比(活跃会话总数/样本数量)。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 Event 活跃会话事件。 Event Count 该会话的wait event的数量。 %Event 会话事件百分比(事件数量/样本数量)。 表8 Top Sessions with Top event split by slots信息 列名 描述 Slot time 分片时间。 Session Id 会话id。 Session Start 会话开始事件。 Session Count 会话事件数量。 %Activity 活跃百分比(活跃会话总数/样本数量)。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 Event 活跃会话事件。 Event Count 该会话的wait event的数量。 %Event 会话事件百分比(事件数量/样本数量)。 表9 Top Sessions with Top SQL信息 列名 描述 Session Id 会话id。 Session Start 会话开始事件。 Session Count 会话事件数量。 %Activity 活跃百分比。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 SQL Id sqlid。 Node Id 节点id。 SQL Text SQL语句。 表10 Top Sessions with Top SQL split by slots信息 列名 描述 Slot Time 分片时间。 Session Id 会话id。 Session Start 会话开始事件。 Session Count 会话事件数量。 %Activity 活跃百分比(活跃会话总数/样本数量)。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 SQL Id SQL id。 Node Id 节点id。 SQLText SQL语句。 表11 Top final blocking sessions with Top event split by slots信息 列名 描述 Slot Time 分片时间。 Final Blocking Session Id 阻塞会话id。 Session Start 持锁会话开始时间。 Blocked count 被该会话阻塞的会话的数量。 Blocked%Activity 阻塞会话占活跃会话百分比(阻塞会话总数/样本数量)。 Event Caused final Blocking Session等待事件。 Event Caused Count final Blocking Session等待事件的数量。 %Event 等待事件百分比(等待事件数量/样本数量)。 PID 线程id。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 Xact Start Time 持锁事务开始时间。 Global Session Id 全局会话id。 表12 Top blocked sessions with Top SQL split by slots信息 列名 描述 Slot Time 分片时间。 Lock Tag 锁tag。 Lock Mode 锁模式。 Waiting Session Count 等待会话数。 Waiting Session Id 等锁会话id。 Session Start 等锁会话开始时间。 Session Count 等锁会话数量。 Block Session Id 阻塞会话id。 Final Block Session Id 阻塞队列头部会话id。 PID 线程id。 User Id 用户id。 Application Name 连接程序名称。 Client Addr 客户端地址。 Client Port 客户端端口信息。 Xact Start Time 持锁事务开始时间。 Global Session Id 全局会话id。 SQL Id SQL id。 Query Start SQL开始的时间。 SQL Count SQL的数量。 Node Id 节点id。 SQL Text SQL语句。 表13 Top SQL with Top event信息 列名 描述 SQL Id SQL id。 Node Id 节点id。 User Id 用户id。 Count 会话事件数量。 %Activity 活跃百分比(SQL会话总数/样本数量)。 Event 活跃会话事件。 Event Count wait event数量。 %Event 会话事件百分比(SQL事件数量/样本数量)。 SQL Text SQL语句。 表14 Top SQL with Top event split by slots信息 列名 描述 Slot Time 分片时间。 SQL Id SQL id。 Node Id 节点id。 User Id 用户id。 Count 会话事件数量。 %Activity 活跃百分比(SQL会话总数/样本数量)。 Event 活跃会话事件。 Event Count wait event数量。 %Event 会话事件百分比(SQL事件数量/样本数量)。 SQL Text SQL语句。 表15 Top SQL Text信息 列名 描述 SQL Id SQL id。 Node Id 节点id。 User Id 用户id。 SQL Text SQL语句。 父主题: 附录
  • 行表达式函数白名单 表1 为数据对象增加或修改策略ILM所支持的行表达式函数白名单 func_oid_value func_name 56 boollt 57 boolgt 60 booleq 61 chareq 63 int2eq 64 int2lt 65 int4eq 66 int4lt 67 texteq 70 charne 72 charle 73 chargt 74 charge 77 int4 78 char 84 boolne 111 numeric_fac 141 int4mul 144 int4ne 145 int2ne 146 int2gt 147 int4gt 148 int2le 149 int4le 150 int4ge 151 int2ge 152 int2mul 153 int2div 154 int4div 155 int2mod 156 int4mod 157 textne 158 int24eq 159 int42eq 160 int24lt 161 int42lt 162 int24gt 163 int42gt 164 int24ne 165 int42ne 166 int24le 167 int42le 168 int24ge 169 int42ge 170 int24mul 171 int42mul 172 int24div 173 int42div 176 int2pl 177 int4pl 178 int24pl 179 int42pl 180 int2mi 181 int4mi 182 int24mi 183 int42mi 202 float4mul 203 float4div 204 float4pl 205 float4mi 206 float4um 207 float4abs 209 float4larger 211 float4smaller 212 int4um 213 int2um 216 float8mul 217 float8div 218 float8pl 219 float8mi 220 float8um 221 float8abs 223 float8larger 224 float8smaller 228 dround 229 dtrunc 235 float8 236 float4 237 int2 238 int2 244 timepl 245 timemi 248 intinterval 249 tintervalrel 251 abstimeeq 252 abstimene 253 abstimelt 254 abstimegt 255 abstimele 256 abstimege 257 reltimeeq 258 reltimene 259 reltimelt 260 reltimegt 261 reltimele 262 reltimege 263 tintervalsame 264 tintervalct 265 tintervalov 266 tintervalleneq 267 tintervallenne 268 tintervallenlt 269 tintervallengt 270 tintervallenle 271 tintervallenge 273 tintervalend 275 isfinite 279 float48mul 280 float48div 281 float48pl 282 float48mi 283 float84mul 284 float84div 285 float84pl 286 float84mi 287 float4eq 288 float4ne 289 float4lt 290 float4le 291 float4gt 292 float4ge 293 float8eq 294 float8ne 295 float8lt 296 float8le 297 float8gt 298 float8ge 299 float48eq 300 float48ne 301 float48lt 302 float48le 303 float48gt 304 float48ge 305 float84eq 306 float84ne 307 float84lt 308 float84le 309 float84gt 310 float84ge 311 float8 312 float4 313 int4 314 int2 316 float8 317 int4 318 float4 319 int4 350 btint2cmp 351 btint4cmp 354 btfloat4cmp 355 btfloat8cmp 357 btabstimecmp 358 btcharcmp 360 bttextcmp 377 cash_cmp 380 btreltimecmp 381 bttintervalcmp 385 regexp_count 386 regexp_count 387 regexp_count 400 hashtext 432 hash_numeric 449 hashint2 450 hashint4 451 hashfloat4 452 hashfloat8 454 hashchar 458 text_larger 459 text_smaller 461 int8out 462 int8um 463 int8pl 464 int8mi 465 int8mul 466 int8div 467 int8eq 468 int8ne 469 int8lt 470 int8gt 471 int8le 472 int8ge 474 int84eq 475 int84ne 476 int84lt 477 int84gt 478 int84le 479 int84ge 480 int4 481 int8 482 float8 483 int8 630 regexp_instr 631 regexp_instr 632 regexp_instr 633 regexp_instr 634 regexp_instr 652 float4 654 hashint1_numeric 665 hashint2_numeric 667 hashint16 676 mktinterval 682 hashint4_numeric 714 int2 720 octet_length 721 get_byte 722 set_byte 723 get_bit 724 set_bit 740 text_lt 741 text_le 742 text_gt 743 text_ge 754 int8 755 hashint8_numeric 766 int4inc 768 int4larger 769 int4smaller 770 int2larger 771 int2smaller 784 tintervaleq 785 tintervalne 786 tintervallt 787 tintervalgt 788 tintervalle 789 tintervalge 792 btint12cmp 793 btint14cmp 794 btint18cmp 795 btint116cmp 796 btint1numericcmp 797 btint21cmp 798 btint216cmp 799 btint2numericcmp 800 btint41cmp 801 btint416cmp 802 btint4numericcmp 803 btint81cmp 804 btint816cmp 805 btint8numericcmp 837 int82pl 838 int82mi 839 int82mul 840 int82div 841 int28pl 842 btint8cmp 846 cash_mul_flt4 847 cash_div_flt4 848 flt4_mul_cash 849 position 852 int48eq 853 int48ne 854 int48lt 855 int48gt 856 int48le 857 int48ge 860 bpchar 862 int4_mul_cash 863 int2_mul_cash 864 cash_mul_int4 865 cash_div_int4 866 cash_mul_int2 867 cash_div_int2 868 strpos 870 lower 871 upper 877 substr 883 substr 888 cash_eq 889 cash_ne 890 cash_lt 891 cash_le 892 cash_gt 893 cash_ge 894 cash_pl 895 cash_mi 896 cash_mul_flt8 897 cash_div_flt8 898 cashlarger 899 cashsmaller 919 flt8_mul_cash 935 cash_words 936 substring 937 substring 940 mod 941 mod 942 int28mi 943 int28mul 944 char 945 int8mod 947 mod 948 int28div 949 hashint8 1026 timezone 1048 bpchareq 1049 bpcharlt 1050 bpcharle 1051 bpchargt 1052 bpcharge 1053 bpcharne 1063 bpchar_larger 1064 bpchar_smaller 1078 bpcharcmp 1080 hashbpchar 1102 time_lt 1103 time_le 1104 time_gt 1105 time_ge 1106 time_ne 1107 time_cmp 1116 regexp_replace 1117 regexp_replace 1118 regexp_replace 1119 regexp_replace 1145 time_eq 1152 timestamptz_eq 1153 timestamptz_ne 1154 timestamptz_lt 1155 timestamptz_le 1156 timestamptz_ge 1157 timestamptz_gt 1158 to_timestamp 1159 timezone 1162 interval_eq 1163 interval_ne 1164 interval_lt 1165 interval_le 1166 interval_ge 1167 interval_gt 1168 interval_um 1169 interval_pl 1170 interval_mi 1172 date_part 1173 timestamptz 1177 interval 1180 abstime 1188 timestamptz_mi 1194 reltime 1195 timestamptz_smaller 1196 timestamptz_larger 1197 interval_smaller 1198 interval_larger 1199 age 1200 interval 1218 date_trunc 1219 int8inc 1230 int8abs 1236 int8larger 1237 int8smaller 1238 texticregexeq 1239 texticregexne 1246 charlt 1251 int4abs 1253 int2abs 1254 textregexeq 1256 textregexne 1271 overlaps 1273 date_part 1274 int84pl 1275 int84mi 1276 int84mul 1277 int84div 1278 int48pl 1279 int48mi 1280 int48mul 1281 int48div 1282 quote_ident 1283 quote_literal 1289 quote_nullable 1299 now 1304 overlaps 1308 overlaps 1309 overlaps 1310 overlaps 1311 overlaps 1314 timestamptz_cmp 1315 interval_cmp 1316 time 1326 interval_div 1342 round 1343 trunc 1352 timetz_eq 1353 timetz_ne 1354 timetz_lt 1355 timetz_le 1356 timetz_ge 1357 timetz_gt 1358 timetz_cmp 1359 timestamptz 1370 interval 1373 isfinite 1374 octet_length 1375 octet_length 1377 time_larger 1378 time_smaller 1379 timetz_larger 1380 timetz_smaller 1384 date_part 1385 date_part 1389 isfinite 1390 isfinite 1394 abs 1395 abs 1396 abs 1397 abs 1398 abs 1419 time 1481 tinterval 1581 biteq 1582 bitne 1592 bitge 1593 bitgt 1594 bitle 1595 bitlt 1596 bitcmp 1608 degrees 1618 interval_mul 1620 ascii 1621 chr 1622 repeat 1623 similar_escape 1624 mul_d_interval 1633 texticlike 1634 texticnlike 1637 like_escape 1656 bpcharicregexeq 1657 bpcharicregexne 1658 bpcharregexeq 1659 bpcharregexne 1660 bpchariclike 1661 bpcharicnlike 1666 varbiteq 1667 varbitne 1668 varbitge 1669 varbitgt 1670 varbitle 1671 varbitlt 1672 varbitcmp 1673 bitand 1674 bitor 1675 bitxor 1676 bitnot 1677 bitshiftleft 1678 bitshiftright 1679 bitcat 1680 substring 1682 octet_length 1683 bit 1684 int4 1685 bit 1687 varbit 1688 time_hash 1690 time_mi_time 1691 boolle 1692 boolge 1693 btboolcmp 1696 timetz_hash 1697 interval_hash 1698 position 1699 substring 1702 numeric_out 1703 numeric 1704 numeric_abs 1705 abs 1706 sign 1707 round 1709 trunc 1710 trunc 1711 ceil 1712 floor 1718 numeric_eq 1719 numeric_ne 1720 numeric_gt 1721 numeric_ge 1722 numeric_lt 1723 numeric_le 1724 numeric_add 1725 numeric_sub 1726 numeric_mul 1727 numeric_div 1728 mod 1729 numeric_mod 1740 numeric 1742 numeric 1743 numeric 1744 int4 1745 float4 1746 float8 1747 time_pl_interval 1748 time_mi_interval 1749 timetz_pl_interval 1750 timetz_mi_interval 1752 trunc 1753 trunc 1764 numeric_inc 1766 numeric_smaller 1767 numeric_larger 1769 numeric_cmp 1771 numeric_uminus 1781 numeric 1782 numeric 1783 int2 1810 bit_length 1811 bit_length 1812 bit_length 1840 int2_sum 1841 int4_sum 1842 int8_sum 1845 to_ascii 1846 to_ascii 1848 interval_pl_time 1850 int28eq 1851 int28ne 1852 int28lt 1853 int28gt 1854 int28le 1855 int28ge 1856 int82eq 1857 int82ne 1858 int82lt 1859 int82gt 1860 int82le 1861 int82ge 1874 btint161cmp 1875 btint162cmp 1876 btint164cmp 1877 btint168cmp 1878 btnumericint1cmp 1879 btnumericint2cmp 1880 btnumericint4cmp 1881 btnumericint8cmp 1882 btint16cmp 1892 int2and 1893 int2or 1894 int2xor 1895 int2not 1896 int2shl 1897 int2shr 1898 int4and 1899 int4or 1900 int4xor 1901 int4not 1902 int4shl 1903 int4shr 1904 int8and 1905 int8or 1906 int8xor 1907 int8not 1908 int8shl 1909 int8shr 1910 int8up 1911 int2up 1912 int4up 1913 float4up 1914 float8up 1915 numeric_uplus 1946 encode 1961 timestamp 1967 timestamptz 1968 time 1969 timetz 1973 div 1980 numeric_div_trunc 2009 like_escape 2012 substring 2013 substring 2014 position 2020 date_trunc 2021 date_part 2024 timestamp 2025 timestamp 2031 timestamp_mi 2032 timestamp_pl_interval 2033 timestamp_mi_interval 2035 timestamp_smaller 2036 timestamp_larger 2038 timezone 2039 timestamp_hash 2041 overlaps 2042 overlaps 2043 overlaps 2044 overlaps 2045 timestamp_cmp 2046 time 2048 isfinite 2052 timestamp_eq 2053 timestamp_ne 2054 timestamp_lt 2055 timestamp_le 2056 timestamp_ge 2057 timestamp_gt 2058 age 2069 timezone 2070 timezone 2073 substring 2074 substring 2075 bit 2076 int8 2089 to_hex 2090 to_hex 2160 text_pattern_lt 2161 text_pattern_le 2163 text_pattern_ge 2164 text_pattern_gt 2166 bttext_pattern_cmp 2167 ceiling 2174 bpchar_pattern_lt 2175 bpchar_pattern_le 2177 bpchar_pattern_ge 2178 bpchar_pattern_gt 2180 btbpchar_pattern_cmp 2188 btint48cmp 2189 btint84cmp 2190 btint24cmp 2191 btint42cmp 2192 btint28cmp 2193 btint82cmp 2194 btfloat48cmp 2195 btfloat84cmp 2308 ceil 2309 floor 2310 sign 2320 ceiling 2515 booland_statefunc 2516 boolor_statefunc 2547 interval_pl_timetz 2548 interval_pl_timestamp 2557 bool 2558 int4 2765 regexp_split_to_table 2766 regexp_split_to_table 2805 int8inc_float8_float8 2906 timestamptypmodout 2908 timestamptztypmodout 2910 timetypmodout 2912 timetztypmodout 2996 int8_sum_to_int8 3032 get_bit 3033 set_bit 3062 reverse 3167 instr 3168 instr 3169 instr 3170 multiply 3171 multiply 3175 lengthb 3176 lengthb 3177 int8_bool 3178 bool_int8 3180 int2_bool 3181 bool_int2 3182 substring_inner 3183 substring_inner 3226 timestamp_diff 3227 timestamp_diff 3343 int8_mul_cash 3344 cash_mul_int8 3345 cash_div_int8 3822 cash_div_cash 3922 int4range_subdiff 3923 int8range_subdiff 3924 numrange_subdiff 3925 daterange_subdiff 3929 tsrange_subdiff 3930 tstzrange_subdiff 4162 varchar_date 4163 bpchar_date 4164 text_date 4166 int2_text 4167 int4_text 4168 int8_text 4169 float4_text 4170 float8_text 4171 numeric_text 5580 smalldatetime_eq 5581 smalldatetime_ne 5582 smalldatetime_lt 5583 smalldatetime_le 5584 smalldatetime_ge 5585 smalldatetime_gt 5586 smalldatetime_cmp 5587 smalldatetime_hash 5809 b_db_last_day 5810 b_db_last_day 5811 b_db_last_day 5816 b_db_last_day 5858 weekofyear 5859 weekofyear 5860 weekofyear 5861 weekofyear 6407 int16 6408 int2 6409 int16 6410 int4 6411 int16 6412 int8 6413 int16 6414 float8 6415 int16 6416 float4 6419 int16 6420 int16_bool 6421 int16 6422 numeric 6423 int16eq 6424 int16ne 6425 int16lt 6426 int16le 6427 int16gt 6428 int16ge 6429 int16pl 6430 int16mi 6431 int16mul 6432 int16div 6433 numeric 6434 numeric_bool 6438 int21gt 6439 int21le 6440 int21ge 6441 int216eq 6442 int216ne 6443 int216lt 6444 int216gt 6445 int216le 6446 int216ge 6447 int2numericeq 6448 int2numericne 6449 int2numericlt 6450 int2numericgt 6451 int2numericle 6452 int2numericge 6453 int41eq 6454 int41ne 6455 int41lt 6456 int41gt 6457 int41le 6458 int41ge 6459 int416eq 6460 int416ne 6461 int416lt 6462 int416gt 6463 int416le 6464 int416ge 6465 int4numericeq 6466 int4numericne 6467 int4numericlt 6468 int4numericgt 6469 int4numericle 6470 int4numericge 6471 int81eq 6472 int81ne 6473 int81lt 6474 int81gt 6475 int81le 6476 int81ge 6477 int816eq 6478 int816ne 6479 int816lt 6480 int816gt 6481 int816le 6482 int816ge 6483 int8numericeq 6484 int8numericne 6485 int8numericlt 6486 int8numericgt 6487 int8numericle 6488 int8numericge 6539 int21eq 6540 int21ne 6578 b_timestampdiff 6579 b_timestampdiff 6582 b_timestampdiff 6583 b_timestampdiff 6584 b_timestampdiff 6585 b_timestampdiff 6586 b_timestampdiff 6587 b_timestampdiff 6588 b_timestampdiff 6589 b_timestampdiff 6590 b_timestampdiff 6591 b_timestampdiff 6592 b_timestampdiff 6593 b_timestampdiff 6594 b_timestampdiff 6595 b_timestampdiff 6635 int21lt 6814 int12eq 6815 numericint1eq 6853 int168ge 7747 numericint2le 7748 numericint2ge 7749 numericint4eq 7750 numericint4ne 7751 numericint4lt 7752 numericint4gt 7753 numericint4le 7754 numericint4ge 7755 numericint8eq 7756 numericint8ne 7757 numericint8lt 7758 numericint8gt 7759 numericint8le 7760 numericint8ge 7761 int161eq 7762 int161ne 7763 int161lt 8751 int161gt 8752 int161le 8753 int161ge 8754 int162eq 8755 int162ne 8756 int162lt 8757 int162gt 8758 int162le 8759 int162ge 8760 int164eq 8761 int164ne 8762 int164lt 8763 int164gt 8764 int164le 8765 int164ge 8766 int168eq 8767 int168ne 8768 int168lt 8769 int168gt 8770 int168le 9011 smalldatetime_smaller 9012 smalldatetime_larger 9558 int12ne 9559 int12lt 9560 int12gt 9561 int12le 9562 int12ge 9563 int14eq 9564 int14ne 9566 int14lt 9567 int14gt 9568 int14le 9569 int14ge 9573 int18eq 9574 int18ne 9575 int18lt 9576 int18gt 9584 int18le 9585 int18ge 9586 int116eq 9587 int116ne 9588 int116lt 9589 int116gt 9590 int116le 9591 int116ge 9592 int1numericeq 9593 int1numericne 9594 int1numericlt 9595 int1numericgt 9596 int1numericle 9597 int1numericge 9624 numericint1ne 9625 numericint1lt 9626 numericint1gt 9627 numericint1le 9628 numericint1ge 9629 numericint2eq 9630 numericint2ne 9631 numericint2lt 9632 numericint2gt 9910 substring_index 父主题: 附录
  • 扩展函数 下表列举了GaussDB中支持的扩展函数,不作为商用特性交付,仅供参考。 分类 函数名称 描述 访问权限查询函数 has_sequence_privilege(user, sequence, privilege) 指定用户是否有访问序列的权限 has_sequence_privilege(sequence, privilege) 当前用户是否有访问序列的权限 触发器函数 pg_get_triggerdef(oid) 为触发器获取CREATE [ CONSTRAINT ] TRIGGER命令 pg_get_triggerdef(oid, boolean) 为触发器获取CREATE [ CONSTRAINT ] TRIGGER命令 父主题: 附录
  • 规格约束 事务 使用DATABASE LINK的时候本地和远程事务的关系如下: 本地事务会同步控制远程事务的提交/回滚状态。 隔离级别的对应关系为: 本地隔离级别 远程隔离级别 Read Uncommitted Repeatable Read Read Committed Repeatable Read Repeatable Read Repeatable Read Serializable Serializable 本地事务提交过程中会向远端发送事务提交请求,如果远端事务提交成功后出现异常情况导致本地的事务提交失败,如连接异常,本地集群实例异常等情况,远端的事务提交无法被撤回,可能出现本地事务与远端事务不一致的情况。 本地用户对DATABASE LINK的使用权限 如果使用了public关键词,就是公有的DATABASE LINK,可以被所有用户/schema使用。 如果没有使用public关键词,就是私有的DATABASE LINK,仅能被当前用户/schema使用(包括sysadmin用户也无法跨schema使用DATABASE LINK)。 通过DATABASE LINK访问远程数据库对象的权限 对远程数据库对象的访问权限与DATABASE LINK绑定的远程连接用户的权限保持一致。 支持SQL范围 DATABASE LINK相关语句支持情况见表1。 DATABASE LINK相关表类型支持情况见表2。 DATABASE LINK函数调用 DATABASE LINK调用远程函数不支持OUT/INOUT参数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内通过DATABASE LINK调用远程数据库的存储过程或函数不支持OUT/INOUT参数、重载函数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内调用远程数据库的存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( param_expr )语法格式调用。 PLSQL_BODY内调用远程数据库的无参存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( )语法格式调用。 同义词 不支持将DATABASE LINK名创建为一个同义词的使用方法。 不支持通过DATABASE LINK调用远端数据库中指向一个DATABASE LINK对象的同义词。例如如下场景: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK1,并创建同义词"CREATE SYNONYM T1 FOR TABLE1@DBLINK1"。 步骤三:在DB3上创建连接DB2的DBLINK2,通过DBLINK2调用DB2上的同义词T1,"SELECT * FROM T1@DBLINK2"。 表类型约束 HASHBUCKET:不支持通过DATABASE LINK对远端Hash bucket表进行查询或DML操作。 SLICE:不支持通过DATABASE LINK对远端slice表进行查询或DML操作。 复制表:不支持通过DATABASE LINK对远端复制表进行查询或DML操作。 TEMPORARY:不支持通过DATABASE LINK对远端临时表进行查询或DML操作。 视图 目前支持对DATABASE LINK的远端表创建视图,但是当远端表本身的结构发生变化时,该视图使用时可能会发生异常。例如: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK,并创建视图"CREATE VIEW V1 AS SELECT * FROM TABLE1@DBLINK。 步骤三:在DB1上删除TABLE1的一列,在DB2上查询该视图会产生报错。 其他场景: DATABASE LINK表不支持TRIGGER,包括TRIGGER调用函数内使用DATABASE LINK场景、trigger调用函数为DATABASE LINK函数、在DATABASE LINK上定义TRIGGER情况。 暂不支持UPSERT、MERGE语法。 不支持current cursor语法。 不支持查询表的隐藏字段。 dump与备份 不支持DATABASE LINK相关数据库对象的dump,备机不支持DATABASE LINK调用,也不支持被DATABASE LINK连接。 谓词下推约束 仅支持WHERE子句使用的数据类型、操作符和函数是内置的,并且使用的函数是IMMUTABLE类型。 聚集函数下推约束 仅支持单表且没有GROUP、ORDER BY、HAVING、LIMIT子句的SELECT语句,并且不支持窗口函数。 hint下推 支持针对DATABASE LINK表对象的hint条件下推,仅限scan方式的hint下推,语法格式如下: [no] tablescan|indexscan|indexonlyscan(table [index]) 并要求在一个 queryblock 中的表名或表别名不能重复。 表1 支持SQL范围 SQL类型 操作对象 支持选项说明 执行上下文 创建DATABASE LINK DATABASE LINK NA 普通事务块 修改DATABASE LINK DATABASE LINK 仅支持用户名、密码的修改 普通事务块 删除DATABASE LINK DATABASE LINK NA 普通事务块 SELECT语句 普通表、普通视图、全量物化视图 WHERE子句 DATABASE LINK表和内部表JOIN DATABASE LINK表和DATABASE LINK表JOIN 聚集函数 LIMIT子句 ORDER BY子句 GROUP BY子句、HAVING子句 UNION子句 WITH子句 FOR UPDATE子句 Rownum使用 普通事务块、存储过程、函数、高级包、逻辑视图 INSERT语句 普通表 多VALUE插入 普通事务块、存储过程、函数、高级包 UPDATE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 DELETE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 LOCK TABLE语句 普通表 LOCKMODE子句 NOWAIT子句 普通事务块 表2 表类型支持情况 维度 GaussDB表类型 DATABASE LINK支持情况 TEMP选项 临时表 不支持 全局临时表 不支持 UNLOGGED选项 非日志表 支持 存储特性 行存 Astore 支持 Ustore 不支持 分区表 不支持 二级分区表 不支持 视图 DATABASE LINK访问远程视图 支持dql,不支持dml 本地视图通过 DATABASE LINK 关联远程表 支持dql,不支持dml
  • 注意事项 DATABASE LINK特性只在ORA兼容版本下可以使用。 DATABASE LINK连接的远端数据库仅支持503.1及之后版本。 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和guc参数behavior_compat_options、a_format_dev_version、a_format_version取值一致。 DATABASE LINK连接开启session时会设置如下guc参数: set search_path=pg_catalog, '$user', 'public'; set datestyle=ISO; set intervalstyle=postgres; set extra_float_digits=3; 其余参数为远端设置的参数,远端参数与本地参数不同时,可能会出现数据显示格式不一致等情况,使用时应尽量保证远端与本地参数相同。 使用前置准备:使用gs_guc在pg_hba.conf文件中添加白名单允许客户端连接。 示例:gs_guc reload -I all -N all -Z coordinator -Z datanode -h "host all all 192.168.11.11/32 sha256" 详细配置参数信息参考gs_guc客户端认证策略设置。 某些情况集群白名单中也需要添加DN的IP。 创建DATABASE LINK权限需要使用GRANT语法赋予,新建用户默认无权限,系统管理员拥有权限。详见GRANT相关说明。 使用DATABASE LINK对远端表操作时,会在本地创建与远端对应的Schema,若本地不存在该表的元数据信息,会将元数据信息写入本地系统表中,此时会使用7级锁保证写入的一致性,持续到事务结束放锁,删除DATABASE LINK时会将相应的元数据信息删除。 如果业务中有长事务首次使用dblink操作远端对象,会持续持锁直到事务结束,其他首次使用dblink的事务会被阻塞。可通过一条快速执行的语句先对要使用的远端对象做查询操作使其元数据落盘来规避这种情况,如 "select * from t1@dblink where 1=2;"。另外,远端表结构发生变化时本地要更新存储的元数据信息,也会有类似情况。 在本地创建与远端对应的SCHEMA时会使用“USERNAME(私有DATABASE LINK才有)#远端SCHEMA@DBLINK名”做为SCHEMA名,名称长度上限为63。 如果本地与远端字符集不同,可能会出现无法转换的报错,报错信息为远端返回报错。当本地数据库字符编码为gb18030_2022时,发送到远端会被转换为gb18030。因此,若本地数据库的字符集为GB18030_2022时,远程数据库字符集只能是GB18030或GB18030_2022。 使用DATABASE LINK对远端表操作时,会创建一个单节点的NODE GROUP随机绑定一个DN。 当赋予用户创建DATABASE LINK权限时,相当于许可用户使用服务端DATABASE的IP对远端进行访问。若不希望有此效果,应不要使用GRANT对用户赋权。