From 0ccb10179f832380f3d28182c04bf448d39b7e39 Mon Sep 17 00:00:00 2001 From: liyang0608 <2643278072qq.com> Date: Wed, 30 Sep 2020 15:48:29 +0800 Subject: [PATCH] sync dts --- .../en/docs/Developerguide/checkpoints-41.md | 14 + .../global_get_bgwriter_status.md | 60 + content/en/docs/Developerguide/lock.md | 6 +- .../miscellaneous-parameters.md | 632 ++-- .../en/docs/Developerguide/other-functions.md | 5 + .../statistics-information-functions.md | 74 +- content/en/menu/index.md | 1 + content/zh/docs/Developerguide/LOCK-1.md | 6 +- ...66\345\256\203\351\200\211\351\241\271.md" | 634 ++-- ...41\346\201\257\345\207\275\346\225\260.md" | 2776 +++++++++++------ 10 files changed, 2573 insertions(+), 1635 deletions(-) create mode 100644 content/en/docs/Developerguide/global_get_bgwriter_status.md diff --git a/content/en/docs/Developerguide/checkpoints-41.md b/content/en/docs/Developerguide/checkpoints-41.md index 81441c8c8..067b48c15 100644 --- a/content/en/docs/Developerguide/checkpoints-41.md +++ b/content/en/docs/Developerguide/checkpoints-41.md @@ -104,3 +104,17 @@ This parameter is a SIGHUP parameter. Set it based on instructions provided in +## max_redo_log_size + +**Parameter description**: Specifies the size of logs before the recovery point and the current log location. You are advised not to set this parameter to a large value if the RTO is concerned. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 163840 to 2147483647. The unit is KB. + +**Default value**: **1GB** + + + + + diff --git a/content/en/docs/Developerguide/global_get_bgwriter_status.md b/content/en/docs/Developerguide/global_get_bgwriter_status.md new file mode 100644 index 000000000..c671d3e29 --- /dev/null +++ b/content/en/docs/Developerguide/global_get_bgwriter_status.md @@ -0,0 +1,60 @@ +# GLOBAL\_GET\_BGWRITER\_STATUS + +**GLOBAL\_GET\_BGWRITER\_STATUS** displays the information about pages flushed by the bgwriter threads of all instances in the cluster, number of pages in the candidate buffer chain, and buffer eviction information. + +**Table 1** GLOBAL\_GET\_BGWRITER\_STATUS columns + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Name

+

Type

+

Description

+

node_name

+

text

+

Instance name

+

bgwr_actual_flush_total_num

+

bigint

+

Total number of dirty pages flushed by the bgwriter thread from the startup time to the current time

+

bgwr_last_flush_num

+

integer

+

Number of dirty pages flushed by the bgwriter thread in the previous batch

+

candidate_slots

+

integer

+

Number of pages in the current candidate buffer chain.

+

get_buffer_from_list

+

bigint

+

Number of times that pages are obtained from the candidate buffer chain during buffer eviction.

+

get_buffer_clock_sweep

+

bigint

+

Number of times that pages are obtained from the original eviction solution during buffer eviction.

+
+ diff --git a/content/en/docs/Developerguide/lock.md b/content/en/docs/Developerguide/lock.md index 0499cc528..8cd6fdbde 100644 --- a/content/en/docs/Developerguide/lock.md +++ b/content/en/docs/Developerguide/lock.md @@ -216,9 +216,11 @@ LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]} If **ONLY** is specified, only that table is locked. If **ONLY** is not specified, the table and all its sub-tables are locked. -- **ACCESS SHARE** +- **ACCESS SHARE** - Allows only read operations on a table. In general, any SQL statements that only read a table and do not modify it will acquire this lock mode. The **SELECT** statement acquires a lock of this mode on referenced tables. + Only conflict with ACCESS EXCLUSIVE. + + The SELECT command requests one such lock on the referenced table. Generally, any command that only reads the table without modifying it requires this lock mode. - **ROW SHARE** diff --git a/content/en/docs/Developerguide/miscellaneous-parameters.md b/content/en/docs/Developerguide/miscellaneous-parameters.md index d422192d1..134f658be 100644 --- a/content/en/docs/Developerguide/miscellaneous-parameters.md +++ b/content/en/docs/Developerguide/miscellaneous-parameters.md @@ -1,218 +1,220 @@ -# Miscellaneous Parameters - -## server\_version - -**Parameter description**: Specifies the server version number. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Value range**: a string - -**Default value**: **9.2.4** - -## server\_version\_num - -**Parameter description**: Specifies the server version number. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Value range**: an integer - -**Default value**: **90204** - -## block\_size - -**Parameter description**: Specifies the block size of the current database. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Value**: **8192** - -**Default value**: **8192** - -## segment\_size - -**Parameter description**: Specifies the segment file size of the current database. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Unit**: 8 KB - -**Default value**: 131072, that is, 1 GB - -## max\_index\_keys - -**Parameter description**: Specifies the maximum number of index keys supported by the current database. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Default value**: **32** - -## integer\_datetimes - -**Parameter description**: Specifies whether the date and time are in the 64-bit integer format. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Value range**: Boolean - -- **on** indicates that the 64-bit integer format is used. -- **off** indicates that the 64-bit integer format is not used. - -**Default value**: **on** - -## lc\_collate - -**Parameter description:** Specifies the locale in which sorting of textual data is done. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Default value**: Determined by the configuration set during the openGauss installation and deployment. - -## lc\_ctype - -**Parameter description**: Specifies the locale that determines character classifications. For example, it specifies what a letter and its upper-case equivalent are. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Default value**: Determined by the configuration set during the openGauss installation and deployment. - -## max\_identifier\_length - -**Parameter description**: Specifies the maximum identifier length. - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Value range**: an integer - -**Default value**: **63** - -## server\_encoding - -**Parameter description**: Specifies the database encoding \(character set\). - -This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. - -**Default value**: Determined when the database is created. - -## enable\_upgrade\_merge\_lock\_mode - -**Parameter description**: If this parameter is set to **on**, the delta merge operation internally increases the lock level, and errors can be prevented when update and delete operations are performed at the same time. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: Boolean - -- If this parameter is set to **on**, the delta merge operation internally increases the lock level. In this way, when the **DELTAMERGE** operation is concurrently performed with the **UPDATE** or **DELETE** operation, one operation can be performed only after the previous one is complete. -- If this parameter is set to **off**, and any two of the **DELTAMERGE**, **UPDATE**, and **DELETE** operations are concurrently performed to data in a row in the delta table of the HDFS table, errors will be reported during the later operation, and the operation will stop. - -**Default value**: **off** - -## job\_queue\_processes - -**Parameter description:** Specifies the number of jobs that can be concurrently executed. This parameter is a POSTMASTER parameter. You can set it using **gs\_guc**, and you need to restart **gaussdb** to make the setting take effect. - -This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: 0 to 1000 - -Function: - -- Setting **job\_queue\_processes** to **0** indicates that the scheduled job function is disabled and that no job will be executed. \(Enabling scheduled jobs may affect the system performance. At sites where this function is not required, you are advised to disable it.\) -- Setting **job\_queue\_processes** to a value that is greater than **0** indicates that the scheduled job function is enabled and this value is the maximum number of jobs that can be concurrently processed. - -After the scheduled job function is enabled, the job\_scheduler thread polls the **pg\_job** system catalog at a scheduled interval. The scheduled job check is performed every second by default. - -Too many concurrent jobs consume many system resources, so you need to set the number of concurrent jobs to be processed. If the current number of concurrent jobs reaches the value of **job\_queue\_processes** and some of them expire, these jobs will be postponed to the next polling period. Therefore, you are advised to set the polling interval \(the **Interval** parameter of the submit interface\) based on the execution duration of each job to avoid the problem that jobs in the next polling period cannot be properly processed because of overlong job execution time. - -Note: If the number of concurrent jobs is large and the value is too small, these jobs will wait in queues. However, a large parameter value leads to large resource consumption. You are advised to set this parameter to **100** and change it based on the system resource condition. - -**Default value:** **10** - -## ngram\_gram\_size - -**Parameter description**: Specifies the length of the ngram parser segmentation. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: an integer ranging from 1 to 4 - -**Default value:** **2** - -## ngram\_grapsymbol\_ignore - -**Parameter description**: Specifies whether the ngram parser ignores graphical characters. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: Boolean - -- **on**: The ngram parser ignores graphical characters. -- **off**: The ngram parser does not ignore graphical characters. - -**Default value**: **off** - -## ngram\_punctuation\_ignore - -**Parameter description**: Specifies whether the ngram parser ignores punctuations. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: Boolean - -- **on**: The ngram parser ignores punctuations. -- **off**: The ngram parser does not ignore punctuations. - -**Default value**: **on** - -## transparent\_encrypted\_string - -**Parameter description**: Specifies a sample string that is transparently encrypted. Its value is generated by encrypting **TRANS\_ENCRYPT\_SAMPLE\_STRING** using a database secret key. The ciphertext is used to check whether the DEK obtained during secondary startup is correct. If it is incorrect, database nodes will not be started. This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: a string. An empty string indicates that the openGauss is a not encrypted. - -**Default value**: empty - ->![](public_sys-resources/icon-note.gif) **NOTE:** ->Do not set this parameter manually. Otherwise, the openGauss may become faulty. - -## transparent\_encrypt\_kms\_url - -**Parameter description**: Specifies the URL for obtaining the database secret key to be transparently encrypted. It must contain only the characters specified in RFC3986, and the maximum length is 2047 bytes. The format is **kms://**_Protocol_**@**_KMS host name 1_**;**_KMS host name 2_**:**_KMS port number_**/kms**, for example, **kms://https@linux175:29800/**. - -This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: a string - -**Default value**: empty - -## transparent\_encrypt\_kms\_region - -**Parameter description**: Specifies the deployment region of the openGauss. It must contain only the characters specified in RFC3986, and the maximum length is 2047 bytes. - -This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: a string - -**Default value**: empty - -## behavior\_compat\_options - -**Parameter description**: Specifies database compatibility behavior. Multiple items are separated by commas \(,\). - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: a string - -**Default value**: empty - ->![](public_sys-resources/icon-note.gif) **NOTE:** ->- Currently, only compatibility configuration items in [Table 1](#en-us_topic_0237124754_table182861153114812) are supported. ->- Multiple items are separated by commas \(,\), for example, **set behavior\_compat\_options='end\_month\_calculate,display\_leading\_zero';**. - -**Table 1** Compatibility configuration items - - +# Miscellaneous Parameters + +## server\_version + +**Parameter description**: Specifies the server version number. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Value range**: a string + +**Default value**: **9.2.4** + +## server\_version\_num + +**Parameter description**: Specifies the server version number. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Value range**: an integer + +**Default value**: **90204** + +## block\_size + +**Parameter description**: Specifies the block size of the current database. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Value**: **8192** + +**Default value**: **8192** + +## segment\_size + +**Parameter description**: Specifies the segment file size of the current database. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Unit**: 8 KB + +**Default value**: 131072, that is, 1 GB + +## max\_index\_keys + +**Parameter description**: Specifies the maximum number of index keys supported by the current database. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Default value**: **32** + +## integer\_datetimes + +**Parameter description**: Specifies whether the date and time are in the 64-bit integer format. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Value range**: Boolean + +- **on** indicates that the 64-bit integer format is used. +- **off** indicates that the 64-bit integer format is not used. + +**Default value**: **on** + +## lc\_collate + +**Parameter description:** Specifies the locale in which sorting of textual data is done. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Default value**: Determined by the configuration set during the openGauss installation and deployment. + +## lc\_ctype + +**Parameter description**: Specifies the locale that determines character classifications. For example, it specifies what a letter and its upper-case equivalent are. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Default value**: Determined by the configuration set during the openGauss installation and deployment. + +## max\_identifier\_length + +**Parameter description**: Specifies the maximum identifier length. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Value range**: an integer + +**Default value**: **63** + +## server\_encoding + +**Parameter description**: Specifies the database encoding \(character set\). + +By default, gs\_initdb will initialize the setting of this parameter based on the current system environment. You can also run the **locale** command to check the current configuration environment. + +This parameter is an INTERNAL parameter. The value of this parameter cannot be modified. + +**Default value:** determined by the current system environment when the database is created. + +## enable\_upgrade\_merge\_lock\_mode + +**Parameter description**: If this parameter is set to **on**, the delta merge operation internally increases the lock level, and errors can be prevented when update and delete operations are performed at the same time. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: Boolean + +- If this parameter is set to **on**, the delta merge operation internally increases the lock level. In this way, when the **DELTAMERGE** operation is concurrently performed with the **UPDATE** or **DELETE** operation, one operation can be performed only after the previous one is complete. +- If this parameter is set to **off**, and any two of the **DELTAMERGE**, **UPDATE**, and **DELETE** operations are concurrently performed to data in a row in the delta table of the HDFS table, errors will be reported during the later operation, and the operation will stop. + +**Default value**: **off** + +## job\_queue\_processes + +**Parameter description:** Specifies the number of jobs that can be concurrently executed. This parameter is a POSTMASTER parameter. You can set it using **gs\_guc**, and you need to restart **gaussdb** to make the setting take effect. + +This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: 0 to 1000 + +Function: + +- Setting **job\_queue\_processes** to **0** indicates that the scheduled job function is disabled and that no job will be executed. \(Enabling scheduled jobs may affect the system performance. At sites where this function is not required, you are advised to disable it.\) +- Setting **job\_queue\_processes** to a value that is greater than **0** indicates that the scheduled job function is enabled and this value is the maximum number of jobs that can be concurrently processed. + +After the scheduled job function is enabled, the job\_scheduler thread polls the **pg\_job** system catalog at a scheduled interval. The scheduled job check is performed every second by default. + +Too many concurrent jobs consume many system resources, so you need to set the number of concurrent jobs to be processed. If the current number of concurrent jobs reaches the value of **job\_queue\_processes** and some of them expire, these jobs will be postponed to the next polling period. Therefore, you are advised to set the polling interval \(the **Interval** parameter of the submit interface\) based on the execution duration of each job to avoid the problem that jobs in the next polling period cannot be properly processed because of overlong job execution time. + +Note: If the number of concurrent jobs is large and the value is too small, these jobs will wait in queues. However, a large parameter value leads to large resource consumption. You are advised to set this parameter to **100** and change it based on the system resource condition. + +**Default value:** **10** + +## ngram\_gram\_size + +**Parameter description**: Specifies the length of the ngram parser segmentation. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 1 to 4 + +**Default value:** **2** + +## ngram\_grapsymbol\_ignore + +**Parameter description**: Specifies whether the ngram parser ignores graphical characters. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: Boolean + +- **on**: The ngram parser ignores graphical characters. +- **off**: The ngram parser does not ignore graphical characters. + +**Default value**: **off** + +## ngram\_punctuation\_ignore + +**Parameter description**: Specifies whether the ngram parser ignores punctuations. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: Boolean + +- **on**: The ngram parser ignores punctuations. +- **off**: The ngram parser does not ignore punctuations. + +**Default value**: **on** + +## transparent\_encrypted\_string + +**Parameter description**: Specifies a sample string that is transparently encrypted. Its value is generated by encrypting **TRANS\_ENCRYPT\_SAMPLE\_STRING** using a database secret key. The ciphertext is used to check whether the DEK obtained during secondary startup is correct. If it is incorrect, database nodes will not be started. This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a string. An empty string indicates that the openGauss is a not encrypted. + +**Default value**: empty + +>![](public_sys-resources/icon-note.gif) **NOTE:** +>Do not set this parameter manually. Otherwise, the openGauss may become faulty. + +## transparent\_encrypt\_kms\_url + +**Parameter description**: Specifies the URL for obtaining the database secret key to be transparently encrypted. It must contain only the characters specified in RFC3986, and the maximum length is 2047 bytes. The format is **kms://**_Protocol_**@**_KMS host name 1_**;**_KMS host name 2_**:**_KMS port number_**/kms**, for example, **kms://https@linux175:29800/**. + +This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a string + +**Default value**: empty + +## transparent\_encrypt\_kms\_region + +**Parameter description**: Specifies the deployment region of the openGauss. It must contain only the characters specified in RFC3986, and the maximum length is 2047 bytes. + +This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a string + +**Default value**: empty + +## behavior\_compat\_options + +**Parameter description**: Specifies database compatibility behavior. Multiple items are separated by commas \(,\). + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a string + +**Default value**: empty + +>![](public_sys-resources/icon-note.gif) **NOTE:** +>- Currently, only compatibility configuration items in [Table 1](#en-us_topic_0237124754_table182861153114812) are supported. +>- Multiple items are separated by commas \(,\), for example, **set behavior\_compat\_options='end\_month\_calculate,display\_leading\_zero';**. + +**Table 1** Compatibility configuration items + + - + - + -

Configuration Item

Behavior

@@ -287,92 +289,136 @@ add_months
  • If this item is not specified, the empty string is displayed as NULL.
postgres=# select length(lpad('123',0,'*')) from dual;
 length
---------(1 row)
+-------- + +(1 row)
  • If this item is specified, the empty string is displayed as single quotation marks ('').
-
postgres=# select length(lpad('123',0,'*')) from dual;length0
+
postgres=# select length(lpad('123',0,'*')) from dual;
+length
+--------
+0
 (1 row)

compat_concat_variadic

Specifies the compatibility of variadic results of the concat() and concat_ws() functions.

If this item is specified and a concat function has a parameter of the variadic type, different result formats in O and Teradata are retained. If this item is not specified and a concat function has a parameter of the variadic type, the result format of O is retained for both O and Teradata. This option has no effect on MY because MY has no variadic type.

Specifies the compatibility of variadic results of the concat() and concat_ws() functions.

+

If this item is specified and a concat function has a parameter of the variadic type, different result formats in O and Teradata are retained. If this item is not specified and a concat function has a parameter of the variadic type, the result format of O is retained for both O and Teradata. This option has no effect on MY because MY has no variadic type.

+

merge_update_multi

Controls the UPDATE operation if a data record in the destination table conflicts with multiple source data records when MERGE INTO ... WHEN MATCHED THEN UPDATE (see MERGE INTO) and INSERT ... ON DUPLICATE KEY UPDATE (see INSERT) are used.

If this item is specified and the preceding scenario exists, the system performs multiple UPDATE operations on the conflicting row. If this item is not specified and the preceding scenario exists, an error is reported, that is, the MERGE or INSERT operation fails.

Controls the UPDATE operation if a data record in the destination table conflicts with multiple source data records when MERGE INTO ... WHEN MATCHED THEN UPDATE (see MERGE INTO) and INSERT ... ON DUPLICATE KEY UPDATE (see INSERT) are used.

+

If this item is specified and the preceding scenario exists, the system performs multiple UPDATE operations on the conflicting row. If this item is not specified and the preceding scenario exists, an error is reported, that is, the MERGE or INSERT operation fails.

+
- -## table\_skewness\_warning\_threshold - -**Parameter description**: Specifies the threshold for triggering a table skew alarm. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: a floating point number ranging from 0 to 1 - -**Default value**: **1** - -## table\_skewness\_warning\_rows - -**Parameter description**: Specifies the minimum number of rows for triggering a table skew alarm. - -This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: an integer ranging from 0 to _INT\_MAX_ - -**Default value**: **100000** - -## datanode\_heartbeat\_interval - -**Parameter description**: Specifies the interval at which heartbeat messages are sent between heartbeat threads. You are advised to set this parameter to a value no more than wal\_receiver\_timeout/2. - -This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: an integer ranging from 1000 to 60000. The unit is ms. - -Default value: **1s** - -## pagewriter\_thread\_num - -**Parameter description**: Specifies the number of threads used for refreshing background pages when incremental checkpointing is enabled. - -This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: an integer ranging from 1 to 8 - -**Default value**: **2** - -## pagewriter\_threshold - -**Parameter description**: Specifies the number of dirty pages that must be reached for the thread to continue refreshing dirty pages without sleeping when incremental checkpointing is enabled. - -This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range:** an integer ranging from 1 to _INT\_MAX_ - -**Default value**: **818** - -## pagewriter\_sleep - -**Parameter description**: Specifies the time in which the thread continues refreshing dirty pages when incremental checkpointing is enabled and the number of dirty pages does not reach the value of **pagewriter\_threshold**. - -This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](resetting-parameters.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). - -**Value range**: an integer ranging from 0 to 3600000. The unit is ms. - -**Default value**: **100ms** - -## remote\_read\_mode - -**Parameter description**: Specifies whether to enable the remote read function. This function allows pages on the standby server to be read when reading pages on the primary server fails. - -**Value range**: enumerated values - -- **off** indicates that the remote read function is disabled. -- **non\_authentication** indicates that the remote read function is enabled but certificate authentication is not required. -- **authentication** indicates that the remote read function is enabled and certificate authentication is required. - -**Default value**: **authentication** - + + +## table\_skewness\_warning\_threshold + +**Parameter description**: Specifies the threshold for triggering a table skew alarm. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a floating point number ranging from 0 to 1 + +**Default value**: **1** + +## table\_skewness\_warning\_rows + +**Parameter description**: Specifies the minimum number of rows for triggering a table skew alarm. + +This parameter is a USERSET parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 0 to _INT\_MAX_ + +**Default value**: **100000** + +## datanode\_heartbeat\_interval + +**Parameter description**: Specifies the interval at which heartbeat messages are sent between heartbeat threads. You are advised to set this parameter to a value no more than wal\_receiver\_timeout/2. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 1000 to 60000. The unit is ms. + +Default value: **1s** + +## bgwriter\_thread\_num + +**Parameter description**: Specifies the number of bgwriter threads for flushing pages after the incremental checkpoint is enabled. Dirty pages to be evicted are flushed to disks, and non-dirty pages are placed in the candidate buffer chain. This parameter helps accelerate buffer eviction and improve performance. + +This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0237121562.md#en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 0 to 8 + +- To test the effect of disabling this feature during development, you can set this parameter to **0**. However, if this parameter is set to **0**, the value will be changed to **1** in the code and the feature cannot be disabled. +- If this parameter is set to a value ranging from 1 to 8, the corresponding number of background threads are started to maintain the candidate buffer chain. Dirty pages that meet the conditions are flushed to disks, and non-dirty pages are added to the candidate list. + +**Default value**: **2** + +## candidate\_buf\_percent\_target + +**Parameter description**: Specifies the expected percentage of available buffers in the shared\_buffer when the incremental checkpoint is enabled and the value of bgwriter\_thread\_num is not 0. When the number of available buffers in the current candidate buffer is less than the target value, the bgwriter thread starts to flush dirty pages that meet the conditions to disks. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](en-us_topic_0237121562.md#en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: double precision floating point number ranging from 0.1 to 0.85 + +**Default value**: **0.3** + +## pagewriter\_thread\_num + +**Parameter description**: Specifies the number of threads for background page flushing after the incremental checkpoint is enabled. Dirty pages are flushed in sequence to disks, promoting recovery points. + +This parameter is a POSTMASTER parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 1 to 8 + +**Default value**: **2** + +## pagewriter\_threshold + +**Parameter description**: Specifies the number of dirty pages that must be reached for the thread to continue refreshing dirty pages without sleeping when incremental checkpointing is enabled. This parameter does not take effect any more. + +Use **dirty\_page\_percent\_max** to set the value. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range:** an integer ranging from 1 to _INT\_MAX_ + +**Default value**: **818** + +## dirty\_page\_percent\_max + +**Parameter description**: Specifies the percentage of dirty pages to shared\_buffers after the incremental checkpoint is enabled. When the percentage is reached, the background thread for flushing pages continues flushing dirty pages without sleeping. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: a floating point number ranging from 0.1 to 1 + +**Default value**: **0.9** + +## pagewriter\_sleep + +**Parameter description**: Specifies the time in which the thread continues refreshing dirty pages when incremental checkpointing is enabled and the number of dirty pages does not reach the value of **pagewriter\_threshold**. + +This parameter is a SIGHUP parameter. Set it based on instructions provided in [Table 1](en-us_topic_0242370406.md#en-us_topic_0237121562_en-us_topic_0059777490_t91a6f212010f4503b24d7943aed6d846). + +**Value range**: an integer ranging from 0 to 3600000. The unit is ms. + +**Default value**: **2000ms** + +## remote\_read\_mode + +**Parameter description**: Specifies whether to enable the remote read function. This function allows pages on the standby server to be read when reading pages on the primary server fails. + +**Value range**: enumerated values + +- **off** indicates that the remote read function is disabled. +- **non\_authentication** indicates that the remote read function is enabled but certificate authentication is not required. +- **authentication** indicates that the remote read function is enabled and certificate authentication is required. + +**Default value**: **authentication** + diff --git a/content/en/docs/Developerguide/other-functions.md b/content/en/docs/Developerguide/other-functions.md index f56e4937e..6c0beacd4 100644 --- a/content/en/docs/Developerguide/other-functions.md +++ b/content/en/docs/Developerguide/other-functions.md @@ -248,3 +248,8 @@ >![](public_sys-resources/icon-note.gif) **NOTE:** >**pgxc\_lock\_for\_backup** locks openGauss before **gs\_dump** or **gs\_dumpall** is used to back up openGauss. After openGauss is locked, operations changing the system structure are not allowed. This function does not affect DML statements. ++ local_bgwriter_stat() + + Description: Displays the information about pages flushed by the bgwriter thread of this instance, number of pages in the candidate buffer chain, and buffer elimination information. + + Return type: record \ No newline at end of file diff --git a/content/en/docs/Developerguide/statistics-information-functions.md b/content/en/docs/Developerguide/statistics-information-functions.md index b771f24a2..2d09395ba 100644 --- a/content/en/docs/Developerguide/statistics-information-functions.md +++ b/content/en/docs/Developerguide/statistics-information-functions.md @@ -1813,7 +1813,7 @@ Statistics information functions are divided into the following two categories: - create\_wlm\_session\_info\(int flag\) - Description: Clears top SQL query statement-level statistics recorded in the current memory. If the input parameter is greater than 0, the information is archived to **gs\_wlm\_session\_query\_info\_all**. Otherwise, the information is not archived. Only the administrator can execute this function. + Description: Clears top SQL query statement-level statistics recorded in the current memory. Only the administrator can execute this function. Return type: int @@ -2427,13 +2427,75 @@ Statistics information functions are divided into the following two categories: Return type: record +- remote\_bgwriter\_stat\(\) + + Description: Displays the information about pages flushed by the bgwriter threads of all instances in the cluster, number of pages in the candidate buffer chain, and buffer elimination information \(except for the local node and not available on the DN\). + + Return type: record + + **Table 7** remote\_bgwriter\_stat parameter description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Type

+

Description

+

node_name

+

text

+

Instance name

+

bgwr_actual_flush_total_num

+

bigint

+

Total number of dirty pages flushed by the bgwriter thread from the startup time to the current time

+

bgwr_last_flush_num

+

integer

+

Number of dirty pages flushed by the bgwriter thread in the previous batch

+

candidate_slots

+

integer

+

Number of pages in the current candidate buffer chain.

+

get_buffer_from_list

+

bigint

+

Number of times that pages are obtained from the candidate buffer chain during buffer elimination.

+

get_buf_clock_sweep

+

bigint

+

Number of times that pages are obtained from the original elimination solution during buffer elimination.

+
+ - remote\_ckpt\_stat\(\) Description: Displays the checkpoint information and log flushing information about all instances in the cluster \(except the current node\). Return type: record - **Table 7** remote\_ckpt\_stat parameter description + **Table 8** remote\_ckpt\_stat parameter description

Parameter

@@ -2502,7 +2564,7 @@ Statistics information functions are divided into the following two categories: Return type: record - **Table 8** remote\_double\_write\_stat parameter description + **Table 9** remote\_double\_write\_stat parameter description

Parameter

@@ -2599,7 +2661,7 @@ Statistics information functions are divided into the following two categories: Return type: record - **Table 9** remote\_pagewriter\_stat parameter description + **Table 10** remote\_pagewriter\_stat parameter description

Parameter

@@ -2675,7 +2737,7 @@ Statistics information functions are divided into the following two categories: Return type: record - **Table 10** remote\_recovery\_status parameter description + **Table 11** remote\_recovery\_status parameter description

Parameter

@@ -2758,7 +2820,7 @@ Statistics information functions are divided into the following two categories: Return type: record - **Table 11** remote\_redo\_stat parameter description + **Table 12** remote\_redo\_stat parameter description

Parameter

diff --git a/content/en/menu/index.md b/content/en/menu/index.md index 1b85643f6..956017ccf 100644 --- a/content/en/menu/index.md +++ b/content/en/menu/index.md @@ -1105,6 +1105,7 @@ headless: true - [CLASS\_VITAL\_INFO]({{< relref "./docs/Developerguide/class_vital_info.md" >}}) - [USER\_LOGIN]({{< relref "./docs/Developerguide/user_login.md" >}}) - [SUMMARY\_USER\_LOGIN]({{< relref "./docs/Developerguide/summary_user_login.md" >}}) + - [GLOBAL\_GET\_BGWRITER\_STATUS]({{< relref "./docs/Developerguide/sglobal_get_bgwriter_status.md" >}}) - [Lock]({{< relref "./docs/Developerguide/lock-25.md" >}}) - [LOCKS]({{< relref "./docs/Developerguide/locks.md" >}}) - [GLOBAL\_LOCKS]({{< relref "./docs/Developerguide/global_locks.md" >}}) diff --git a/content/zh/docs/Developerguide/LOCK-1.md b/content/zh/docs/Developerguide/LOCK-1.md index e3b32bd71..c1bd0e030 100644 --- a/content/zh/docs/Developerguide/LOCK-1.md +++ b/content/zh/docs/Developerguide/LOCK-1.md @@ -216,9 +216,11 @@ LOCK的参数说明如下所示: 如果指定ONLY,只有该表被锁定。如果没有声明,该表和他的所有子表将都被锁定。 -- **ACCESS SHARE** +- **ACCESS SHARE** - ACCESS锁只允许对表进行读取,而禁止对表进行修改。所有对表进行读取而不修改的SQL语句都会自动请求这种锁。例如,SELECT命令会自动在被引用的表上请求一个这种锁。 + 只与ACCESS EXCLUSIVE冲突。 + + SELECT命令在被引用的表上请求一个这种锁。通常,任何只读取表而不修改它的命令都请求这种锁模式。 - **ROW SHARE** diff --git "a/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" "b/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" index 74d7e126e..c18f96457 100644 --- "a/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" +++ "b/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" @@ -1,220 +1,220 @@ -# 其它选项 - -## server\_version - -**参数说明:**报告服务器版本号\(字符串形式\)。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**取值范围:**字符串 - -**默认值:**9.2.4 - -## server\_version\_num - -**参数说明:**报告服务器版本号\(整数形式\)。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**取值范围:**整数 - -**默认值:**90204 - -## block\_size - -**参数说明:**报告当前数据库所使用的块大小。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**取值范围:**8192 - -**默认值:**8192 - -## segment\_size - -**参数说明:**报告当前数据库所使用的段文件大小。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**单位**: 8KB - -**默认值:**131072, 即1GB - -## max\_index\_keys - -**参数说明:**报告当前数据库能够支持的索引键值的最大数目。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**默认值:**32 - -## integer\_datetimes - -**参数说明:**报告是否支持64位整数形式的日期和时间格式。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**取值范围:**布尔型 - -- on表示支持。 -- off表示不支持。 - -**默认值:**on - -## lc\_collate - -**参数说明:**报告当前数据库的字符串排序区域设置。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**默认值:**依赖于openGauss安装部署时的配置 - -## lc\_ctype - -**参数说明:**报告当前数据库的字母类别区域设置。如:哪些字符属于字母,它对应的大写形式是什么。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**默认值:**依赖于openGauss安装部署时的配置 - -## max\_identifier\_length - -**参数说明:**报告当前系统允许的标识符最大长度。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**取值范围:**整型 - -**默认值:**63 - -## server\_encoding - -**参数说明:**报告当前数据库的服务端编码字符集。 - -缺省情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 - -该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 - -**默认值:**在创建数据库的时候由当前系统环境决定的。 - -## enable\_upgrade\_merge\_lock\_mode - -**参数说明:**当该参数设置为on时,通过提升deltamerge内部实现的锁级别,避免和update/delete并发操作时的报错。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:** 布尔型 - -- on,提升deltamerge内部实现的锁级别,并发执行deltamerge和update/delete操作时,一个操作先执行,另一个操作被阻塞,在前一个操作完成后,后一个操作再执行。 -- off,在对表的delta table的同一行并发执行deltamerge和update/delete操作时,后一个对同一行数据更新的操作会报错退出。 - -**默认值:**off - -## job\_queue\_processes - -**参数说明:**表示系统可以并发执行的job数目。该参数为postmaster级别,通过gs\_guc设置,需要重启gaussdb才能生效。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**0~1000 - -功能: - -- 当job\_queue\_processes设置为0值,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。 -- 当job\_queue\_processes为大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。 - -启用定时任务功能后,job\_scheduler线程会在定时时间间隔轮询pg\_job系统表,系统设置定时任务检查周期默认为1s。 - -由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job\_queue\_processes时,且此时又有任务到期,那么这些任务本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理的设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。 - -注:如果同一时间内并行的job数很多,过小的参数值会导致job等待。而过大的参数值则消耗更多的系统资源,建议设置此参数为100,用户可以根据系统资源情况合理调整。 - -**默认值:**10 - -## ngram\_gram\_size - -**参数说明:**ngram解析器分词的长度。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型 ,1~4 - -**默认值:**2 - -## ngram\_grapsymbol\_ignore - -**参数说明:**ngram解析器是否忽略图形化字符。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on表示忽略图形化字符。 -- off表示不忽略图形化字符。 - -**默认值:**off - -## ngram\_punctuation\_ignore - -**参数说明:**ngram解析器是否忽略标点符号。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on表示忽略标点符号。 -- off表示不忽略标点符号。 - -**默认值:**on - -## transparent\_encrypted\_string - -**参数说明:**它存储的是透明加密的一个样本串,使用数据库加密密钥加密固定串“TRANS\_ENCRYPT\_SAMPLE\_STRING”后的密文,用来校验二次启动时获取的DEK是否正确。如果校验失败,那么数据库节点将拒绝启动。该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串,设置为空表示openGauss非加密。 - -**默认值:**空 - ->![](public_sys-resources/icon-note.gif) **说明:** ->请勿手动设置该参数,设置不当将导致openGauss不可用。 - -## transparent\_encrypt\_kms\_url - -**参数说明:**它存储的是透明加密的数据库密钥获取地址,内容要求不可出现RFC3986标准外的字符,最大长度2047字节。格式为“kms://协议@KMS主机名1;KMS主机名2:KMS端口号/kms”,例如 kms://https@linux175:29800/。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串 - -**默认值:**空 - -## transparent\_encrypt\_kms\_region - -**参数说明:**它存储的是openGauss的部署区域,内容要求不可出现RFC3986标准外的字符,最大长度2047字节。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串 - -**默认值:**空 - -## behavior\_compat\_options - -**参数说明:**数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串 - -**默认值:**空 - ->![](public_sys-resources/icon-note.gif) **说明:** ->- 当前只支持[表1](#zh-cn_topic_0237124754_table182861153114812)。 ->- 配置多个兼容性配置项时,相邻配置项用逗号隔开,例如:set behavior\_compat\_options='end\_month\_calculate,display\_leading\_zero'; - -**表 1** 兼容性配置项 - - +# 其它选项 + +## server\_version + +**参数说明:**报告服务器版本号\(字符串形式\)。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**取值范围:**字符串 + +**默认值:**9.2.4 + +## server\_version\_num + +**参数说明:**报告服务器版本号\(整数形式\)。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**取值范围:**整数 + +**默认值:**90204 + +## block\_size + +**参数说明:**报告当前数据库所使用的块大小。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**取值范围:**8192 + +**默认值:**8192 + +## segment\_size + +**参数说明:**报告当前数据库所使用的段文件大小。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**单位**: 8KB + +**默认值:**131072, 即1GB + +## max\_index\_keys + +**参数说明:**报告当前数据库能够支持的索引键值的最大数目。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**默认值:**32 + +## integer\_datetimes + +**参数说明:**报告是否支持64位整数形式的日期和时间格式。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**取值范围:**布尔型 + +- on表示支持。 +- off表示不支持。 + +**默认值:**on + +## lc\_collate + +**参数说明:**报告当前数据库的字符串排序区域设置。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**默认值:**依赖于openGauss安装部署时的配置 + +## lc\_ctype + +**参数说明:**报告当前数据库的字母类别区域设置。如:哪些字符属于字母,它对应的大写形式是什么。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**默认值:**依赖于openGauss安装部署时的配置 + +## max\_identifier\_length + +**参数说明:**报告当前系统允许的标识符最大长度。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**取值范围:**整型 + +**默认值:**63 + +## server\_encoding + +**参数说明:**报告当前数据库的服务端编码字符集。 + +默认情况下,gs\_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 + +该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 + +**默认值:**在创建数据库的时候由当前系统环境决定的。 + +## enable\_upgrade\_merge\_lock\_mode + +**参数说明:**当该参数设置为on时,通过提升deltamerge内部实现的锁级别,避免和update/delete并发操作时的报错。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:** 布尔型 + +- on,提升deltamerge内部实现的锁级别,并发执行deltamerge和update/delete操作时,一个操作先执行,另一个操作被阻塞,在前一个操作完成后,后一个操作再执行。 +- off,在对表的delta table的同一行并发执行deltamerge和update/delete操作时,后一个对同一行数据更新的操作会报错退出。 + +**默认值:**off + +## job\_queue\_processes + +**参数说明:**表示系统可以并发执行的job数目。该参数为postmaster级别,通过gs\_guc设置,需要重启gaussdb才能生效。 + +该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**0~1000 + +功能: + +- 当job\_queue\_processes设置为0值,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。 +- 当job\_queue\_processes为大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。 + +启用定时任务功能后,job\_scheduler线程会在定时时间间隔轮询pg\_job系统表,系统设置定时任务检查周期默认为1s。 + +由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job\_queue\_processes时,且此时又有任务到期,那么这些任务本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理的设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。 + +注:如果同一时间内并行的job数很多,过小的参数值会导致job等待。而过大的参数值则消耗更多的系统资源,建议设置此参数为100,用户可以根据系统资源情况合理调整。 + +**默认值:**10 + +## ngram\_gram\_size + +**参数说明:**ngram解析器分词的长度。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型 ,1~4 + +**默认值:**2 + +## ngram\_grapsymbol\_ignore + +**参数说明:**ngram解析器是否忽略图形化字符。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on表示忽略图形化字符。 +- off表示不忽略图形化字符。 + +**默认值:**off + +## ngram\_punctuation\_ignore + +**参数说明:**ngram解析器是否忽略标点符号。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on表示忽略标点符号。 +- off表示不忽略标点符号。 + +**默认值:**on + +## transparent\_encrypted\_string + +**参数说明:**它存储的是透明加密的一个样本串,使用数据库加密密钥加密固定串“TRANS\_ENCRYPT\_SAMPLE\_STRING”后的密文,用来校验二次启动时获取的DEK是否正确。如果校验失败,那么数据库节点将拒绝启动。该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串,设置为空表示openGauss非加密。 + +**默认值:**空 + +>![](public_sys-resources/icon-note.gif) **说明:** +>请勿手动设置该参数,设置不当将导致openGauss不可用。 + +## transparent\_encrypt\_kms\_url + +**参数说明:**它存储的是透明加密的数据库密钥获取地址,内容要求不可出现RFC3986标准外的字符,最大长度2047字节。格式为“kms://协议@KMS主机名1;KMS主机名2:KMS端口号/kms”,例如 kms://https@linux175:29800/。 + +该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串 + +**默认值:**空 + +## transparent\_encrypt\_kms\_region + +**参数说明:**它存储的是openGauss的部署区域,内容要求不可出现RFC3986标准外的字符,最大长度2047字节。 + +该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串 + +**默认值:**空 + +## behavior\_compat\_options + +**参数说明:**数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串 + +**默认值:**空 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 当前只支持[表1](#zh-cn_topic_0237124754_table182861153114812)。 +>- 配置多个兼容性配置项时,相邻配置项用逗号隔开,例如:set behavior\_compat\_options='end\_month\_calculate,display\_leading\_zero'; + +**表 1** 兼容性配置项 + + - + - + + -

兼容性配置项

兼容性行为控制

@@ -290,93 +290,135 @@ add_months
postgres=# select length(lpad('123',0,'*')) from dual;
 length
 --------
+
 (1 row)
  • 设置此配置项时,空字符串显示为''。
-
postgres=# select length(lpad('123',0,'*')) from dual;length0
+
postgres=# select length(lpad('123',0,'*')) from dual;
+length
+--------
+0
 (1 row)

compat_concat_variadic

控制函数concat()和concat_ws()对variadic类型结果兼容性的配置项。

若设置此配置项,当concat函数参数为variadic类型时,保留a db和Teradata兼容模式下不同的结果形式;否则默认a db和Teradata兼容模式下结果相同,且与a db保持一致。由于MY无variadic类型,所以该选项对MY无影响。

控制函数concat()和concat_ws()对variadic类型结果兼容性的配置项。

+

若设置此配置项,当concat函数参数为variadic类型时,保留a db和Teradata兼容模式下不同的结果形式;否则默认a db和Teradata兼容模式下结果相同,且与a db保持一致。由于MY无variadic类型,所以该选项对MY无影响。

+

merge_update_multi

控制在使用MERGE INTO ... WHEN MATCHED THEN UPDATE(参考MERGE INTO) 和INSERT ... ON DUPLICATE KEY UPDATE(参考INSERT)时,当目标表中一条目标数据与多条源数据冲突时UPDATE行为。

若设置此配置项,当存在上述场景时,该冲突行将会多次执行UPDATE;否则(默认)报错,即MERGE或INSERT操作失败。

控制在使用MERGE INTO ... WHEN MATCHED THEN UPDATE(参考MERGE INTO) 和INSERT ... ON DUPLICATE KEY UPDATE(参考INSERT)时,当目标表中一条目标数据与多条源数据冲突时UPDATE行为。

+

若设置此配置项,当存在上述场景时,该冲突行将会多次执行UPDATE;否则(默认)报错,即MERGE或INSERT操作失败。

+
- - - -## table\_skewness\_warning\_threshold - -**参数说明**:设置用于表倾斜告警的阈值。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:浮点型,0~1 - -**默认值**:1 - -## table\_skewness\_warning\_rows - -**参数说明**:设置用于表倾斜告警的行数。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,0~INT\_MAX - -**默认值**:100000 - -## datanode\_heartbeat\_interval - -**参数说明**:设置心跳线程间心跳消息发送时间间隔,建议值不超过wal\_receiver\_timeout / 2。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,1000~60000(毫秒) - -**默认值**:1s - -## pagewriter\_thread\_num - -**参数说明**:设置用于增量检查点打开后后台刷页的线程数。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,1~8 - -**默认值**:2 - -## pagewriter\_threshold - -**参数说明**:设置用于增量检查点打开后脏页数量达到这个数值时,后台刷页线程将一直刷脏页,不sleep。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,1~INT\_MAX - -**默认值**:818 - -## pagewriter\_sleep - -**参数说明**:设置用于增量检查点打开后,脏页数量不足pagewriter\_threshold时,后台刷页线程将sleep设置的时间继续刷页。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,0~3600000(毫秒) - -**默认值**:100ms - -## remote\_read\_mode - -参数说明:远程读功能开关。读取主机上的页面失败时可以从备机上读取对应的页面。 - -取值范围:枚举类型 - -- off表示关闭远程读功能 -- non\_authentication表示开启远程读功能,但不进行证书认证 -- authentication表示开启远程读功能,但要进行证书认证 - -默认值:authentication - +
+ +## table\_skewness\_warning\_threshold + +**参数说明**:设置用于表倾斜告警的阈值。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:浮点型,0~1 + +**默认值**:1 + +## table\_skewness\_warning\_rows + +**参数说明**:设置用于表倾斜告警的行数。 + +该参数属于USERSET类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,0~INT\_MAX + +**默认值**:100000 + +## datanode\_heartbeat\_interval + +**参数说明**:设置心跳线程间心跳消息发送时间间隔,建议值不超过wal\_receiver\_timeout / 2。 + +该参数属于SIGHUP类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,1000~60000(毫秒) + +**默认值**:1s + +## bgwriter\_thread\_num + +**参数说明**:设置用于增量检查点打开后后台刷页的线程数,将可以淘汰的脏页刷盘,不脏的页面放入到候选buffer链,设置此选项有助于加快buffer淘汰速度,提升性能。 + +该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0237121562.md#zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,0~8 + +- 开发期间为测试关闭该特性的效果,可以设置为0,但是当前如果设置为0,会在代码中修正为1,不再支持关闭该特性。 +- 当参数设置为1\~8时,表示会启动相对应数量的background线程,用于维护候选buffer链,将满足条件的脏页刷盘,不脏的页放入到候选list中。 + +**默认值**:2 + +## candidate\_buf\_percent\_target + +**参数说明**:设置用于增量检查点打开,并且bgwriter\_thread\_num数目不是0时,候选buffer链中可用buffer数目占据shared\_buffer内存缓冲区百分比的期望值,当前候选链中的数目少于目标值时,bgwriter线程会启动将满足条件的脏页刷盘。 + +该参数属于SIGHUP类型参数,请参考[表1](zh-cn_topic_0237121562.md#zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:双精度类型,0.1~0.85 + +**默认值**:0.3 + +## pagewriter\_thread\_num + +**参数说明**:设置用于增量检查点打开后后台刷页的线程数,主要是按照脏页置脏的顺序刷盘,用于推进recovery点。。 + +该参数属于POSTMASTER类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,1~8 + +**默认值**:2 + +## pagewriter\_threshold + +**参数说明**:设置用于增量检查点打开后脏页数量达到这个数值时,后台刷页线程将一直刷脏页,不sleep。为方便客户设置,目前这个参数不再生效,使用 + +dirty\_page\_percent\_max来设置。 + +该参数属于SIGHUP类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,1~INT\_MAX + +**默认值**:818 + +## dirty\_page\_percent\_max + +**参数说明**:设置用于增量检查点打开后脏页数量占shared\_buffers的百分比达到这个设定值时,后台刷页线程将一直刷脏页,不sleep。 + +该参数属于SIGHUP类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:浮点型,0.1~1 + +**默认值**:0.9 + +## pagewriter\_sleep + +**参数说明**:设置用于增量检查点打开后,脏页数量不足pagewriter\_threshold时,后台刷页线程将sleep设置的时间继续刷页。 + +该参数属于SIGHUP类型参数,请参考[表1](zh-cn_topic_0242370406.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,0~3600000(毫秒) + +**默认值**:2000ms + +## remote\_read\_mode + +参数说明:远程读功能开关。读取主机上的页面失败时可以从备机上读取对应的页面。 + +取值范围:枚举类型 + +- off表示关闭远程读功能 +- non\_authentication表示开启远程读功能,但不进行证书认证 +- authentication表示开启远程读功能,但要进行证书认证 + +默认值:authentication + diff --git "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" index 12691e36b..4d63dc1dc 100644 --- "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" @@ -1,1025 +1,1667 @@ -# 系统信息函数 - -## 会话信息函数 - -- current\_catalog - - 描述:当前数据库的名称(在标准SQL中称"catalog")。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT current_catalog; - current_database - ------------------ - postgres - (1 row) - ``` - -- current\_database\(\) - - 描述:当前数据库的名称。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT current_database(); - current_database - ------------------ - postgres - (1 row) - ``` - -- current\_query\(\) - - 描述:由客户端提交的当前执行语句(可能包含多个声明)。 - - 返回值类型:text - - 示例: - - ``` - postgres=# SELECT current_query(); - current_query - ------------------------- - SELECT current_query(); - (1 row) - ``` - -- current\_schema\[\(\)\] - - 描述:当前模式的名称。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT current_schema(); - current_schema - ---------------- - public - (1 row) - ``` - - 备注:current\_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 - -- current\_schemas\(Boolean\) - - 描述:搜索路径中的模式名称。 - - 返回值类型:name\[\] - - 示例: - - ``` - postgres=# SELECT current_schemas(true); - current_schemas - --------------------- - {pg_catalog,public} - (1 row) - ``` - - 备注: - - current\_schemas\(Boolean\)返回搜索路径中所有模式名称的数组。布尔选项决定像pg\_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >搜索路径可以通过运行时设置更改。命令是: - >``` - >SET search_path TO schema [, schema, ...] - >``` - -- current\_user - - 描述:当前执行环境下的用户名。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT current_user; - current_user - -------------- - omm - (1 row) - ``` - - 备注:current\_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过[SET ROLE](SET-ROLE.md)改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 - -- pg\_current\_sessionid\(\) - - 描述:当前执行环境下的会话ID。 - - 返回值类型:text - - 示例: - - ``` - postgres=# SELECT pg_current_sessionid(); - pg_current_sessionid - ---------------------------- - 1579228402.140190434944768 - (1 row) - ``` - - 备注:pg\_current\_sessionid\(\)是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable\_thread\_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID为ThreadID。 - -- inet\_client\_addr\(\) - - 描述:连接的远端地址。inet\_client\_addr返回当前客户端的IP地址。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >此函数只有在远程连接模式下有效。 - - 返回值类型:inet - - 示例: - - ``` - postgres=# SELECT inet_client_addr(); - inet_client_addr - ------------------ - 10.10.0.50 - (1 row) - ``` - -- inet\_client\_port\(\) - - 描述:连接的远端端口。inet\_client\_port返回当前客户端的端口号。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >此函数只有在远程连接模式下有效。 - - 返回值类型:int - - 示例: - - ``` - postgres=# SELECT inet_client_port(); - inet_client_port - ------------------ - 33143 - (1 row) - ``` - -- inet\_server\_addr\(\) - - 描述:连接的本地地址。inet\_server\_addr返回服务器接收当前连接用的IP地址。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >此函数只有在远程连接模式下有效。 - - 返回值类型:inet - - 示例: - - ``` - postgres=# SELECT inet_server_addr(); - inet_server_addr - ------------------ - 10.10.0.13 - (1 row) - ``` - -- inet\_server\_port\(\) - - 描述:连接的本地端口。inet\_server\_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >此函数只有在远程连接模式下有效。 - - 返回值类型:int - - 示例: - - ``` - postgres=# SELECT inet_server_port(); - inet_server_port - ------------------ - 8000 - (1 row) - ``` - -- pg\_backend\_pid\(\) - - 描述:当前会话连接的服务进程的进程ID。 - - 返回值类型:int - - 示例: - - ``` - postgres=# SELECT pg_backend_pid(); - pg_backend_pid - ----------------- - 140229352617744 - (1 row) - ``` - -- pg\_conf\_load\_time\(\) - - 描述:配置加载时间。pg\_conf\_load\_time返回最后加载服务器配置文件的时间戳。 - - 返回值类型:timestamp with time zone - - 示例: - - ``` - postgres=# SELECT pg_conf_load_time(); - pg_conf_load_time - ------------------------------ - 2017-09-01 16:05:23.89868+08 - (1 row) - ``` - -- pg\_my\_temp\_schema\(\) - - 描述:会话的临时模式的OID,不存在则为0。 - - 返回值类型:oid - - 示例: - - ``` - postgres=# SELECT pg_my_temp_schema(); - pg_my_temp_schema - ------------------- - 0 - (1 row) - ``` - - 备注:pg\_my\_temp\_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg\_is\_other\_temp\_schema则返回true。 - -- pg\_is\_other\_temp\_schema\(oid\) - - 描述:是否为另一个会话的临时模式。 - - 返回值类型:Boolean - - 示例: - - ``` - postgres=# SELECT pg_is_other_temp_schema(25356); - pg_is_other_temp_schema - ------------------------- - f - (1 row) - ``` - -- pg\_listening\_channels\(\) - - 描述:会话正在监听的信道名称。 - - 返回值类型:setof text - - 示例: - - ``` - postgres=# SELECT pg_listening_channels(); - pg_listening_channels - ----------------------- - (0 rows) - ``` - - 备注:pg\_listening\_channels返回当前会话正在监听的一组信道名称。 - -- pg\_postmaster\_start\_time\(\) - - 描述:服务器启动时间。pg\_postmaster\_start\_time返回服务器启动时的timestamp with time zone。 - - 返回值类型:timestamp with time zone - - 示例: - - ``` - postgres=# SELECT pg_postmaster_start_time(); - pg_postmaster_start_time - ------------------------------ - 2017-08-30 16:02:54.99854+08 - (1 row) - ``` - -- pg\_trigger\_depth\(\) - - 描述:触发器的嵌套层次。 - - 返回值类型:int - - 示例: - - ``` - postgres=# SELECT pg_trigger_depth(); - pg_trigger_depth - ------------------ - 0 - (1 row) - ``` - -- pgxc\_version\(\) - - 描述:Postgres-XC版本信息。 - - 返回值类型:text - - 示例: - - ``` - postgres=# SELECT pgxc_version(); - pgxc_version - ------------------------------------------------------------------------------------------------------------- - Postgres-XC 1.1 on x86_64-unknown-linux-gnu, based on PostgreSQL 9.2.4, compiled by g++ (GCC) 5.4.0, 64-bit - (1 row) - ``` - -- session\_user - - 描述:会话用户名。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT session_user; - session_user - -------------- - omm - (1 row) - ``` - - 备注:session\_user通常是连接当前数据库的初始用户,不过系统管理员可以用[SET SESSION AUTHORIZATION](SET-SESSION-AUTHORIZATION.md)修改这个设置。 - -- user - - 描述:等价于current\_user。 - - 返回值类型:name - - 示例: - - ``` - postgres=# SELECT user; - current_user - -------------- - omm - (1 row) - ``` - -- version\(\) - - 描述:版本信息。version返回一个描述服务器版本信息的字符串。 - - 返回值类型:text - - 示例: - - ``` - postgres=# SELECT version(); - version - --------------------------------------------------------------------------------------------------------------------------------------- - PostgreSQL 9.2.4 (openGauss-1.0.0 build 66e54e4d) compiled at 2020-01-02 13:02:26 commit 7218 last mr 10175 on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 8.2.0, 64-bit - - (1 row) - ``` - - -## 访问权限查询函数 - -- has\_any\_column\_privilege\(user, table, privilege\) - - 描述:指定用户是否有访问表任何列的权限。 - - 返回类型:Boolean - -- has\_any\_column\_privilege\(table, privilege\) - - 描述:当前用户是否有访问表任何列的权限。 - - 返回类型:Boolean - - 备注:has\_any\_column\_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has\_table\_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has\_table\_privilege参数相同,has\_any\_column\_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 - -- has\_column\_privilege\(user, table, column, privilege\) - - 描述:指定用户是否有访问列的权限。 - - 返回类型:Boolean - -- has\_column\_privilege\(table, column, privilege\) - - 描述:当前用户是否有访问列的权限。 - - 返回类型:Boolean - - 备注:has\_column\_privilege检查用户是否以特定方式访问一列。其参数类似于has\_table\_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >拥有表的表级别权限则隐含的拥有该表每列的列级权限。 - -- has\_database\_privilege\(user, database, privilege\) - - 描述:指定用户是否有访问数据库的权限。 - - 返回类型:Boolean - -- has\_database\_privilege\(database, privilege\) - - 描述:当前用户是否有访问数据库的权限。 - - 返回类型:Boolean - - 备注:has\_database\_privilege检查用户是否能以在特定方式访问数据库。其参数类似has\_table\_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。 - -- has\_directory\_privilege\(user, database, privilege\) - - 描述:指定用户是否有访问directory的权限。 - - 返回类型:Boolean - -- has\_directory\_privilege\(database, privilege\) - - 描述:当前用户是否有访问directory的权限。 - - 返回类型:Boolean - -- has\_foreign\_data\_wrapper\_privilege\(user, fdw, privilege\) - - 描述:指定用户是否有访问外部数据封装器的权限。 - - 返回类型:Boolean - -- has\_foreign\_data\_wrapper\_privilege\(fdw, privilege\) - - 描述:当前用户是否有访问外部数据封装器的权限。 - - 返回类型:Boolean - - 备注:has\_foreign\_data\_wrapper\_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 - -- has\_function\_privilege\(user, function, privilege\) - - 描述:指定用户是否有访问函数的权限。 - - 返回类型:Boolean - -- has\_function\_privilege\(function, privilege\) - - 描述:当前用户是否有访问函数的权限。 - - 返回类型:Boolean - - 备注:has\_function\_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has\_table\_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考[对象标识符类型](对象标识符类型.md))。访问权限类型必须是EXECUTE。 - -- has\_language\_privilege\(user, language, privilege\) - - 描述:指定用户是否有访问语言的权限。 - - 返回类型:Boolean - -- has\_language\_privilege\(language, privilege\) - - 描述:当前用户是否有访问语言的权限。 - - 返回类型:Boolean - - 备注:has\_language\_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 - -- has\_schema\_privilege\(user, schema, privilege\) - - 描述:指定用户是否有访问模式的权限。 - - 返回类型:Boolean - -- has\_schema\_privilege\(schema, privilege\) - - 描述:当前用户是否有访问模式的权限。 - - 返回类型:Boolean - - 备注:has\_schema\_privilege检查用户是否能以特定方式访问一个模式。其参数类似has\_table\_privilege。访问权限类型必须是CREATE或USAGE的一些组合。 - -- has\_server\_privilege\(user, server, privilege\) - - 描述:指定用户是否有访问外部服务的权限。 - - 返回类型:Boolean - -- has\_server\_privilege\(server, privilege\) - - 描述:当前用户是否有访问外部服务的权限。 - - 返回类型:Boolean - - 备注:has\_server\_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 - -- has\_table\_privilege\(user, table, privilege\) - - 描述:指定用户是否有访问表的权限。 - - 返回类型:Boolean - -- has\_table\_privilege\(table, privilege\) - - 描述:当前用户是否有访问表的权限。 - - 返回类型:Boolean - - 备注:has\_table\_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg\_authid.oid)来指定,public表明PUBLIC伪角色,或如果缺省该参数,则使用current\_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果便为true。 - - 示例: - - ``` - postgres=# SELECT has_table_privilege('tpcds.web_site', 'select'); - has_table_privilege - --------------------- - t - (1 row) - - postgres=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); - has_table_privilege - --------------------- - t - (1 row) - ``` - -- has\_tablespace\_privilege\(user, tablespace, privilege\) - - 描述:指定用户是否有访问表空间的权限。 - - 返回类型:Boolean - -- has\_tablespace\_privilege\(tablespace, privilege\) - - 描述:当前用户是否有访问表空间的权限。 - - 返回类型:Boolean - - 备注:has\_tablespace\_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has\_table\_privilege。访问权限类型必须是CREATE。 - -- pg\_has\_role\(user, role, privilege\) - - 描述:指定用户是否有角色的权限。 - - 返回类型:Boolean - -- pg\_has\_role\(role, privilege\) - - 描述:当前用户是否有角色的权限。 - - 返回类型:Boolean - - 备注:pg\_has\_role检查用户是否能以特定方式访问一个角色。其参数类似has\_table\_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。 - - -## 模式可见性查询函数 - -每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 - -所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。 - -比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称: - -``` -postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); -``` - -- pg\_collation\_is\_visible\(collation\_oid\) - - 描述:该排序是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_conversion\_is\_visible\(conversion\_oid\) - - 描述:该转换是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_function\_is\_visible\(function\_oid\) - - 描述:该函数是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_opclass\_is\_visible\(opclass\_oid\) - - 描述:该操作符类是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_operator\_is\_visible\(operator\_oid\) - - 描述:该操作符是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_opfamily\_is\_visible\(opclass\_oid\) - - 描述:该操作符族是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_table\_is\_visible\(table\_oid\) - - 描述:该表是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_ts\_config\_is\_visible\(config\_oid\) - - 描述:该文本检索配置是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_ts\_dict\_is\_visible\(dict\_oid\) - - 描述:该文本检索词典是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_ts\_parser\_is\_visible\(parser\_oid\) - - 描述:该文本搜索解析是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_ts\_template\_is\_visible\(template\_oid\) - - 描述:该文本检索模板是否在搜索路径中可见。 - - 返回类型:Boolean - -- pg\_type\_is\_visible\(type\_oid\) - - 描述:该类型(或域)是否在搜索路径中可见。 - - 返回类型:Boolean - - -## 系统表信息函数 - -- format\_type\(type\_oid, typemod\) - - 描述:获取数据类型的SQL名称 - - 返回类型:text - - 备注:format\_type通过某个数据类型的类型OID以及可能的类型修饰词,返回其SQL名称。如果不知道具体的修饰词,则在类型修饰词的位置传入NULL。类型修饰词一般只对有长度限制的数据类型有意义。format\_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - sizeof\(int32\),单位字节。原因是数据存储时需要32位的空间来存储用户对数据类型的自定义长度信息,即实际存储长度要比用户定义长度多4个字节。在下例中,format\_type返回的SQL名称为“character varying\(6\)”,6表示varchar类型的长度值是6字节,因此该类型的实际存储长度为10字节。 - - ``` - postgres=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); - format_type - ---------------------- - character varying(6) - (1 row) - ``` - -- pg\_check\_authid\(role\_oid\) - - 描述:检查是否存在给定oid的角色名 - - 返回类型:bool - -- pg\_describe\_object\(catalog\_id, object\_id, object\_sub\_id\) - - 描述:获取数据库对象的描述 - - 返回类型:text - - 备注:pg\_describe\_object返回由目录OID,对象OID和一个(或许0个)子对象ID指定的数据库对象的描述。这有助于确认存储在pg\_depend系统表中对象的身份。 - -- pg\_get\_constraintdef\(constraint\_oid\) - - 描述:获取约束的定义 - - 返回类型:text - -- pg\_get\_constraintdef\(constraint\_oid, pretty\_bool\) - - 描述:获取约束的定义 - - 返回类型:text - - 备注:pg\_get\_constraintdef和pg\_get\_indexdef分别从约束或索引上使用创建命令进行重构。 - -- pg\_get\_expr\(pg\_node\_tree, relation\_oid\) - - 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 - - 返回类型:text - -- pg\_get\_expr\(pg\_node\_tree, relation\_oid, pretty\_bool\) - - 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 - - 返回类型:text - - 备注:pg\_get\_expr反编译一个独立表达式的内部形式,比如一个字段的缺省值。在检查系统表的内容的时候很有用。如果表达式可能包含关键字,则指定他们引用相关的OID作为第二个参数;如果没有关键字,零就足够了。 - -- pg\_get\_functiondef\(func\_oid\) - - 描述:获取函数的定义 - - 返回类型:text - -- pg\_get\_function\_arguments\(func\_oid\) - - 描述:获取函数定义的参数列表(带默认值) - - 返回类型:text - - 备注:pg\_get\_function\_arguments返回一个函数的参数列表,需要在CREATE FUNCTION中使用这种格式。 - -- pg\_get\_function\_identity\_arguments\(func\_oid\) - - 描述:获取参数列表来确定一个函数 \(不带默认值\) - - 返回类型:text - - 备注:pg\_get\_function\_identity\_arguments返回需要的参数列表用来标识函数,这种形式需要在ALTER FUNCTION中使用,并且这种形式省略了默认值。 - -- pg\_get\_function\_result\(func\_oid\) - - 描述:获取函数的RETURNS子句 - - 返回类型:text - - 备注:pg\_get\_function\_result为函数返回适当的RETURNS子句。 - -- pg\_get\_indexdef\(index\_oid\) - - 描述:获取索引的CREATE INDEX命令 - - 返回类型:text - -- pg\_get\_indexdef\(index\_oid, column\_no, pretty\_bool\) - - 描述:获取索引的CREATE INDEX命令,或者如果column\_no不为零,则只获取一个索引字段的定义。 - - 返回类型:text - - 备注:pg\_get\_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 - -- pg\_get\_keywords\(\) - - 描述:获取SQL关键字和类别列表 - - 返回类型:setof record - - 备注:pg\_get\_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的,C表示列名,T表示类型或函数名,或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 - -- pg\_get\_userbyid\(role\_oid\) - - 描述:获取给定OID的角色名 - - 返回类型:name - - 备注:pg\_get\_userbyid通过角色的OID抽取对应的用户名。 - -- pg\_get\_viewdef\(view\_name\) - - 描述:为视图获取底层的SELECT命令 - - 返回类型:text - -- pg\_get\_viewdef\(view\_name, pretty\_bool\) - - 描述:为视图获取底层的SELECT命令,如果pretty\_bool为true,行字段可以包含80列。 - - 返回类型:text - - 备注:pg\_get\_viewdef重构出定义视图的SELECT查询。这些函数大多数都有两种形式,其中带有pretty\_bool参数,且参数为true时,是"适合打印"的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果是完全一样。 - -- pg\_get\_viewdef\(view\_oid\) - - 描述:为视图获取底层的SELECT命令 - - 返回类型:text - -- pg\_get\_viewdef\(view\_oid, pretty\_bool\) - - 描述:为视图获取底层的SELECT命令,如果pretty\_bool为true,行字段可以包含80列。 - - 返回类型:text - -- pg\_get\_viewdef\(view\_oid, wrap\_column\_int\) - - 描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。 - - 返回类型:text - -- pg\_get\_tabledef\(table\_oid\) - - 描述:根据table\_oid获取表定义 - - 返回类型:text - -- pg\_get\_tabledef\(table\_name\) - - 描述:根据table\_name获取表定义 - - 返回类型:text - - 备注:pg\_get\_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments信息。对于表对象依赖的group、schema、tablespace、server等信息,需要用户自己去创建,表定义里不会有这些对象的创建语句。 - -- pg\_options\_to\_table\(reloptions\) - - 描述:获取存储选项名称/值对的集合 - - 返回类型:setof record - - 备注:pg\_options\_to\_table当通过pg\_class.reloptions或pg\_attribute.attoptions时返回存储选项名称/值对(option\_name/option\_value)的集合。 - -- pg\_tablespace\_databases\(tablespace\_oid\) - - 描述:获取在指定的表空间中有对象的数据库OID集合 - - 返回类型:setof oid - - 备注:pg\_tablespace\_databases允许检查表空间的状况,返回在该表空间中保存了对象的数据库OID集合。如果这个函数返回数据行,则该表空间就是非空的,因此不能删除。要显示该表空间中的特定对象,用户需要连接pg\_tablespace\_databases标识的数据库与查询pg\_class系统表。 - -- pg\_tablespace\_location\(tablespace\_oid\) - - 描述:获取表空间所在的文件系统的路径 - - 返回类型:text - -- pg\_typeof\(any\) - - 描述:获取任何值的数据类型 - - 返回类型:regtype - - 备注:pg\_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考[对象标识符类型](对象标识符类型.md));这意味着它是一个为了比较而显示类型名称的OID。 - - 示例: - - ``` - postgres=# SELECT pg_typeof(33); - pg_typeof - ----------- - integer - (1 row) - - postgres=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); - typlen - -------- - 4 - (1 row) - ``` - -- collation for \(any\) - - 描述:获取参数的排序 - - 返回类型:text - - 备注:表达式collation for返回传递给他的值的排序。示例: - - ``` - postgres=# SELECT collation for (description) FROM pg_description LIMIT 1; - pg_collation_for - ------------------ - "default" - (1 row) - ``` - - 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。 - -- getdistributekey\(table\_name\) - - 描述:获取一个hash表的分布列。 - - 返回类型:text - - 示例: - - ``` - postgres=# SELECT getdistributekey('item'); - getdistributekey - ------------------ - i_item_sk - (1 row) - ``` - - -## 注释信息函数 - -- col\_description\(table\_oid, column\_number\) - - 描述:获取一个表字段的注释 - - 返回类型:text - - 备注:col\_description返回一个表中字段的注释,通过表OID和字段号来声明。 - -- obj\_description\(object\_oid, catalog\_name\) - - 描述:获取一个数据库对象的注释 - - 返回类型:text - - 备注:带有两个参数的obj\_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj\_description\(123456,'pg\_class'\)将返回OID为123456的表的注释。只带一个参数的obj\_description只要求对象OID。 - - obj\_description不能用于表字段,因为字段没有自己的OID。 - -- obj\_description\(object\_oid\) - - 描述:获取一个数据库对象的注释 - - 返回类型:text - -- shobj\_description\(object\_oid, catalog\_name\) - - 描述:获取一个共享数据库对象的注释 - - 返回类型:text - - 备注:shobj\_description和obj\_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于openGauss中所有数据库的全局表,因此这些表的注释也是全局存储的。 - - -## 事务ID和快照 - -以下的函数在一个输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。 - -- pgxc\_is\_committed\(transaction\_id\) - - 描述:如果提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行,准备,冻结等)。 - - 返回类型:bool - -- txid\_current\(\) - - 描述:获取当前事务ID。 - - 返回类型:bigint - -- txid\_current\_snapshot\(\) - - 描述:获取当前快照。 - - 返回类型:txid\_snapshot - -- txid\_snapshot\_xip\(txid\_snapshot\) - - 描述:在快照中获取正在进行的事务ID。 - - 返回类型:setof bigint - -- txid\_snapshot\_xmax\(txid\_snapshot\) - - 描述:获取快照的xmax。 - - 返回类型:bigint - -- txid\_snapshot\_xmin\(txid\_snapshot\) - - 描述:获取快照的xmin。 - - 返回类型:bigint - -- txid\_visible\_in\_snapshot\(bigint, txid\_snapshot\) - - 描述:在快照中事务ID是否可见(不使用子事务ID)。 - - 返回类型:Boolean - -- get\_local\_prepared\_xact\(\) - - 描述:获取当前节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的oid,database的oid及当前节点的node\_name。 - - 返回类型:xid, text, timestamptz, oid, oid,text - -- get\_remote\_prepared\_xacts\(\) - - 描述:获取所有远程节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的名称,database的名称及node\_name。 - - 返回类型:xid, text, timestamptz, name, name,text - -- global\_clean\_prepared\_xacts\(text, text\) - - 描述:并发清理两阶段残留事务,仅gs\_clean工具可以调用清理,其他用户调用均返回false。 - - 返回类型:Boolean - -- pgxc\_stat\_get\_wal\_senders\_status\(\) - - 描述:返回节点事务日志备机接收状态。 - - 返回值如下: - - **表 1** pgxc\_stat\_get\_wal\_senders\_status返回参数说明 - - +# 系统信息函数 + +## 会话信息函数 + +- current\_catalog + + 描述:当前数据库的名称(在标准SQL中称"catalog")。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT current_catalog; + current_database + ------------------ + postgres + (1 row) + ``` + +- current\_database\(\) + + 描述:当前数据库的名称。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT current_database(); + current_database + ------------------ + postgres + (1 row) + ``` + +- current\_query\(\) + + 描述:由客户端提交的当前执行语句(可能包含多个声明)。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT current_query(); + current_query + ------------------------- + SELECT current_query(); + (1 row) + ``` + +- current\_schema\[\(\)\] + + 描述:当前模式的名称。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT current_schema(); + current_schema + ---------------- + public + (1 row) + ``` + + 备注:current\_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 + +- current\_schemas\(Boolean\) + + 描述:搜索路径中的模式名称。 + + 返回值类型:name\[\] + + 示例: + + ``` + postgres=# SELECT current_schemas(true); + current_schemas + --------------------- + {pg_catalog,public} + (1 row) + ``` + + 备注: + + current\_schemas\(Boolean\)返回搜索路径中所有模式名称的数组。布尔选项决定像pg\_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >搜索路径可以通过运行时设置更改。命令是: + >``` + >SET search_path TO schema [, schema, ...] + >``` + +- current\_user + + 描述:当前执行环境下的用户名。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT current_user; + current_user + -------------- + omm + (1 row) + ``` + + 备注:current\_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过[SET ROLE](zh-cn_topic_0242370652.md)改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 + +- definer\_current\_user + + 描述:当前执行环境下的用户名。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT definer_current_user(); + definer_current_user + ---------------------- + omm + (1 row) + ``` + +- pg\_current\_sessionid\(\) + + 描述:当前执行环境下的会话ID。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT pg_current_sessionid(); + pg_current_sessionid + ---------------------------- + 1579228402.140190434944768 + (1 row) + ``` + + 备注:pg\_current\_sessionid\(\)是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable\_thread\_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID为ThreadID。 + +- pg\_current\_sessid + + 描述:当前执行环境下的会话ID。 + + 返回值类型:text + + 示例: + + ``` + postgres=# select pg_current_sessid(); + pg_current_sessid + ------------------- + 140308875015936 + (1 row) + ``` + + 备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。 + +- pg\_current\_userid + + 描述:当前用户ID。 + + 返回值类型:text + + ``` + postgres=# SELECT pg_current_userid(); + pg_current_userid + ------------------- + 10 + (1 row) + ``` + +- tablespace\_oid\_name\(\) + + 描述: 根据表空间oid,查找表空间名称。 + + 返回值类型:text + + 示例: + + ``` + postgres=# select tablespace_oid_name(1663); + tablespace_oid_name + --------------------- + pg_default + (1 row) + ``` + +- inet\_client\_addr\(\) + + 描述:连接的远端地址。inet\_client\_addr返回当前客户端的IP地址。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >此函数只有在远程连接模式下有效。 + + 返回值类型:inet + + 示例: + + ``` + postgres=# SELECT inet_client_addr(); + inet_client_addr + ------------------ + 10.10.0.50 + (1 row) + ``` + +- inet\_client\_port\(\) + + 描述:连接的远端端口。inet\_client\_port返回当前客户端的端口号。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >此函数只有在远程连接模式下有效。 + + 返回值类型:int + + 示例: + + ``` + postgres=# SELECT inet_client_port(); + inet_client_port + ------------------ + 33143 + (1 row) + ``` + +- inet\_server\_addr\(\) + + 描述:连接的本地地址。inet\_server\_addr返回服务器接收当前连接用的IP地址。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >此函数只有在远程连接模式下有效。 + + 返回值类型:inet + + 示例: + + ``` + postgres=# SELECT inet_server_addr(); + inet_server_addr + ------------------ + 10.10.0.13 + (1 row) + ``` + +- inet\_server\_port\(\) + + 描述:连接的本地端口。inet\_server\_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >此函数只有在远程连接模式下有效。 + + 返回值类型:int + + 示例: + + ``` + postgres=# SELECT inet_server_port(); + inet_server_port + ------------------ + 8000 + (1 row) + ``` + +- pg\_backend\_pid\(\) + + 描述:当前会话连接的服务进程的进程ID。 + + 返回值类型:int + + 示例: + + ``` + postgres=# SELECT pg_backend_pid(); + pg_backend_pid + ----------------- + 140229352617744 + (1 row) + ``` + +- pg\_conf\_load\_time\(\) + + 描述:配置加载时间。pg\_conf\_load\_time返回最后加载服务器配置文件的时间戳。 + + 返回值类型:timestamp with time zone + + 示例: + + ``` + postgres=# SELECT pg_conf_load_time(); + pg_conf_load_time + ------------------------------ + 2017-09-01 16:05:23.89868+08 + (1 row) + ``` + +- pg\_my\_temp\_schema\(\) + + 描述:会话的临时模式的OID,不存在则为0。 + + 返回值类型:oid + + 示例: + + ``` + postgres=# SELECT pg_my_temp_schema(); + pg_my_temp_schema + ------------------- + 0 + (1 row) + ``` + + 备注:pg\_my\_temp\_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg\_is\_other\_temp\_schema则返回true。 + +- pg\_is\_other\_temp\_schema\(oid\) + + 描述:是否为另一个会话的临时模式。 + + 返回值类型:Boolean + + 示例: + + ``` + postgres=# SELECT pg_is_other_temp_schema(25356); + pg_is_other_temp_schema + ------------------------- + f + (1 row) + ``` + +- pg\_listening\_channels\(\) + + 描述:会话正在侦听的信道名称。 + + 返回值类型:setof text + + 示例: + + ``` + postgres=# SELECT pg_listening_channels(); + pg_listening_channels + ----------------------- + (0 rows) + ``` + + 备注:pg\_listening\_channels返回当前会话正在侦听的一组信道名称。 + +- pg\_postmaster\_start\_time\(\) + + 描述:服务器启动时间。pg\_postmaster\_start\_time返回服务器启动时的timestamp with time zone。 + + 返回值类型:timestamp with time zone + + 示例: + + ``` + postgres=# SELECT pg_postmaster_start_time(); + pg_postmaster_start_time + ------------------------------ + 2017-08-30 16:02:54.99854+08 + (1 row) + ``` + +- sessionid2pid\(\) + + 描述: 从sessionid中得到pid信息(例如,pv\_session\_stat中sessid列)。 + + 返回值类型: int8 + + 示例: + + ``` + postgres=# select sessionid2pid(sessid::cstring) from pv_session_stat limit 2; + sessionid2pid + ----------------- + 139973107902208 + 139973107902208 + (2 rows) + ``` + +- pg\_trigger\_depth\(\) + + 描述:触发器的嵌套层次。 + + 返回值类型:int + + 示例: + + ``` + postgres=# SELECT pg_trigger_depth(); + pg_trigger_depth + ------------------ + 0 + (1 row) + ``` + +- pgxc\_version\(\) + + 描述:Postgres-XC版本信息。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT pgxc_version(); + pgxc_version + ------------------------------------------------------------------------------------------------------------- + Postgres-XC 1.1 on x86_64-unknown-linux-gnu, based on PostgreSQL 9.2.4, compiled by g++ (GCC) 5.4.0, 64-bit + (1 row) + ``` + +- session\_user + + 描述:会话用户名。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT session_user; + session_user + -------------- + omm + (1 row) + ``` + + 备注:session\_user通常是连接当前数据库的初始用户,不过系统管理员可以用[SET SESSION AUTHORIZATION](zh-cn_topic_0242370653.md)修改这个设置。 + +- user + + 描述:等价于current\_user。 + + 返回值类型:name + + 示例: + + ``` + postgres=# SELECT user; + current_user + -------------- + omm + (1 row) + ``` + +- get\_shard\_oids\_byname + + 描述:输入node的名字返回node的oid。 + + 返回值类型:oid + + 示例: + + ``` + postgres=# select get_shard_oids_byname('datanode1'); + get_shard_oids_byname + ----------------------- + {16385} + (1 row) + ``` + +- getpgusername\(\) + + 描述:获取数据库用户名。 + + 返回值类型:name + + 示例: + + ``` + postgres=# select getpgusername(); + getpgusername + --------------- + GaussDB_userna + (1 row) + ``` + +- getdatabaseencoding\(\) + + 描述:获取数据库编码方式。 + + 返回值类型:name + + 示例: + + ``` + postgres=# select getdatabaseencoding(); + getdatabaseencoding + --------------------- + SQL_ASCII + (1 row) + ``` + +- version\(\) + + 描述:版本信息。version返回一个描述服务器版本信息的字符串。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT version(); + version + --------------------------------------------------------------------------------------------------------------------------------------- + PostgreSQL 9.2.4 (openGauss-1.0.0 build 66e54e4d) compiled at 2020-01-02 13:02:26 commit 7218 last mr 10175 on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 8.2.0, 64-bit + + (1 row) + ``` + + +- get\_hostname\(\) + + 描述:返回当前节点的hostname。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT get_hostname(); + get_hostname + -------------- + linux-user + (1 row) + ``` + + +- get\_nodename\(\) + + 描述:返回当前节点的名字。 + + 返回值类型:text + + 示例: + + ``` + postgres=# SELECT get_nodename(); + get_nodename + -------------- + coordinator1 + (1 row) + ``` + + +- get\_schema\_oid\(cstring\) + + 描述:返回查询schema的oid。 + + 返回值类型:oid + + 示例: + + ``` + postgres=# SELECT get_schema_oid('public'); + get_schema_oid + ---------------- + 2200 + (1 row) + ``` + + +- pgxc\_parse\_clog\(OUT xid int8, OUT nodename text, OUT status text\) + + 描述:返回当前集群中所有事务的状态。 + + 返回值类型:set of record + + 示例: + + ``` + postgres=# SELECT pgxc_parse_clog(); + pgxc_parse_clog + ---------------- + (0,dn_6004_6005_6006,INPROGRESS) + (1,dn_6004_6005_6006,COMMITTED) + (2,dn_6004_6005_6006,INPROGRESS) + (3 row) + ``` + + +- pgxc\_prepared\_xact\(\) + + 描述:返回集群中处于prepared阶段事务GID列表。 + + 返回值类型:set of text + + 示例: + + ``` + postgres=# SELECT pgxc_prepared_xact(); + pgxc_prepared_xact + -------------------- + (0 row) + ``` + + +- pgxc\_xacts\_iscommitted\(\) + + 描述:返回集群中指定事务xid的事务的状态。t代表committed,f代表aborted,null代表others。 + + 返回值类型:set of record + + 示例: + + ``` + postgres=# SELECT pgxc_xacts_iscommitted(1); + pgxc_xacts_iscommitted + -------------------- + (dn_6004_6005_6006,t) + (cn_5001,t) + (cn_5002,t) + (dn_6001_6002_6003,t) + (4 row) + ``` + + +- pgxc\_total\_memory\_detail\(\) + + 描述:显示集群内存使用情况。 + + 返回值类型:set of pv\_total\_memory\_detail + + 示例: + + ``` + postgres=# SELECT pgxc_total_memory_detail(); + pgxc_total_memory_detail + -------------------- + (dn_6004_6005_6006,max_process_memory,81920) + (dn_6004_6005_6006,process_used_memory,72747) + (dn_6004_6005_6006,max_dynamic_memory,12096) + (dn_6004_6005_6006,dynamic_used_memory,1530) + (4 row) + ``` + + +## 访问权限查询函数 + +- has\_any\_column\_privilege\(user, table, privilege\) + + 描述:指定用户是否有访问表任何列的权限。 + + **表 1** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

table

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_any\_column\_privilege\(table, privilege\) + + 描述:当前用户是否有访问表任何列的权限,合法参数类型见[表1](#table933075917538)。 + + 返回类型:Boolean + + 备注:has\_any\_column\_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has\_table\_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has\_table\_privilege参数相同,has\_any\_column\_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 + +- has\_column\_privilege\(user, table, column, privilege\) + + 描述:指定用户是否有访问列的权限。 + + **表 2** 参数类型说明 + + + + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

table

+

text, oid

+

column

+

text, smallint

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_column\_privilege\(table, column, privilege\) + + 描述:当前用户是否有访问列的权限,合法参数类型见[表2](#table9581157145120)。 + + 返回类型:Boolean + + 备注:has\_column\_privilege检查用户是否以特定方式访问一列。其参数类似于has\_table\_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >拥有表的表级别权限则隐含的拥有该表每列的列级权限。 + +- has\_database\_privilege\(user, database, privilege\) + + 描述:指定用户是否有访问数据库的权限。 + + **表 3** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

database

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_database\_privilege\(database, privilege\) + + 描述:当前用户是否有访问数据库的权限,合法参数类型请参见[表3](#table111152337017)。 + + 返回类型:Boolean + + 备注:has\_database\_privilege检查用户是否能以在特定方式访问数据库。其参数类似has\_table\_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。 + +- has\_directory\_privilege\(user, database, privilege\) + + 描述:指定用户是否有访问directory的权限。 + + **表 4** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

database

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_directory\_privilege\(database, privilege\) + + 描述:当前用户是否有访问directory的权限,合法参数类型请参见[表4](#table111483362025)。 + + 返回类型:Boolean + +- has\_foreign\_data\_wrapper\_privilege\(user, fdw, privilege\) + + 描述:指定用户是否有访问外部数据封装器的权限。 + + **表 5** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

fdw

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_foreign\_data\_wrapper\_privilege\(fdw, privilege\) + + 描述:当前用户是否有访问外部数据封装器的权限。合法参数类型请参见[表5](#table3176631131)。 + + 返回类型:Boolean + + 备注:has\_foreign\_data\_wrapper\_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 + +- has\_function\_privilege\(user, function, privilege\) + + 描述:指定用户是否有访问函数的权限。 + + **表 6** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

function

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_function\_privilege\(function, privilege\) + + 描述:当前用户是否有访问函数的权限。合法参数类型请参见[表6](#table169651367619)。 + + 返回类型:Boolean + + 备注:has\_function\_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has\_table\_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考[对象标识符类型](zh-cn_topic_0242370424.md))。访问权限类型必须是EXECUTE。 + +- has\_language\_privilege\(user, language, privilege\) + + 描述:指定用户是否有访问语言的权限。 + + **表 7** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

language

+

text, oid

+

privilege

+

text

+
+ + 返回类型:Boolean + +- has\_language\_privilege\(language, privilege\) + + 描述:当前用户是否有访问语言的权限。合法参数类型请参见[表7](#table7622265910)。 + + 返回类型:Boolean + + 备注:has\_language\_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 + +- has\_nodegroup\_privilege(user, nodegroup, privilege) + + 描述:检查用户是否有集群节点访问权限。 + + 返回类型:Boolean + + **表 8** 参数类型说明 + + + + + + + + + + + + + + + + +

参数名

+

合法入参类型

+

user

+

name, oid

+

nodegroup

+

text, oid

+

privilege

+

text

+
+ +- has\_nodegroup\_privilege(nodegroup, privilege) + + 描述:检查用户是否有集群节点访问权限。 + + 返回类型:Boolean + +- has\_schema\_privilege\(user, schema, privilege\) + + 描述:指定用户是否有访问模式的权限。 + + 返回类型:Boolean + +- has\_schema\_privilege\(schema, privilege\) + + 描述:当前用户是否有访问模式的权限。 + + 返回类型:Boolean + + 备注:has\_schema\_privilege检查用户是否能以特定方式访问一个模式。其参数类似has\_table\_privilege。访问权限类型必须是CREATE或USAGE的一些组合。 + +- has\_server\_privilege\(user, server, privilege\) + + 描述:指定用户是否有访问外部服务的权限。 + + 返回类型:Boolean + +- has\_server\_privilege\(server, privilege\) + + 描述:当前用户是否有访问外部服务的权限。 + + 返回类型:Boolean + + 备注:has\_server\_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has\_table\_privilege。访问权限类型必须是USAGE。 + +- has\_table\_privilege\(user, table, privilege\) + + 描述:指定用户是否有访问表的权限。 + + 返回类型:Boolean + +- has\_table\_privilege\(table, privilege\) + + 描述:当前用户是否有访问表的权限。 + + 返回类型:Boolean + + 备注:has\_table\_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg\_authid.oid)来指定,public表明PUBLIC伪角色,或如果缺省该参数,则使用current\_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果便为true。 + + 示例: + + ``` + postgres=# SELECT has_table_privilege('tpcds.web_site', 'select'); + has_table_privilege + --------------------- + t + (1 row) + + postgres=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); + has_table_privilege + --------------------- + t + (1 row) + ``` + +- has\_tablespace\_privilege\(user, tablespace, privilege\) + + 描述:指定用户是否有访问表空间的权限。 + + 返回类型:Boolean + +- has\_tablespace\_privilege\(tablespace, privilege\) + + 描述:当前用户是否有访问表空间的权限。 + + 返回类型:Boolean + + 备注:has\_tablespace\_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has\_table\_privilege。访问权限类型必须是CREATE。 + +- pg\_has\_role\(user, role, privilege\) + + 描述:指定用户是否有角色的权限。 + + 返回类型:Boolean + +- pg\_has\_role\(role, privilege\) + + 描述:当前用户是否有角色的权限。 + + 返回类型:Boolean + + 备注:pg\_has\_role检查用户是否能以特定方式访问一个角色。其参数类似has\_table\_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。 + + +## 模式可见性查询函数 + +每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 + +所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。 + +比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称: + +``` +postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); +``` + +- pg\_collation\_is\_visible\(collation\_oid\) + + 描述:该排序是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_conversion\_is\_visible\(conversion\_oid\) + + 描述:该转换是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_function\_is\_visible\(function\_oid\) + + 描述:该函数是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_opclass\_is\_visible\(opclass\_oid\) + + 描述:该操作符类是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_operator\_is\_visible\(operator\_oid\) + + 描述:该操作符是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_opfamily\_is\_visible\(opclass\_oid\) + + 描述:该操作符族是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_table\_is\_visible\(table\_oid\) + + 描述:该表是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_ts\_config\_is\_visible\(config\_oid\) + + 描述:该文本检索配置是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_ts\_dict\_is\_visible\(dict\_oid\) + + 描述:该文本检索词典是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_ts\_parser\_is\_visible\(parser\_oid\) + + 描述:该文本搜索解析是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_ts\_template\_is\_visible\(template\_oid\) + + 描述:该文本检索模板是否在搜索路径中可见。 + + 返回类型:Boolean + +- pg\_type\_is\_visible\(type\_oid\) + + 描述:该类型(或域)是否在搜索路径中可见。 + + 返回类型:Boolean + + +## 系统表信息函数 + +- format\_type\(type\_oid, typemod\) + + 描述:获取数据类型的SQL名称 + + 返回类型:text + + 备注:format\_type通过某个数据类型的类型OID以及可能的类型修饰词,返回其SQL名称。如果不知道具体的修饰词,则在类型修饰词的位置传入NULL。类型修饰词一般只对有长度限制的数据类型有意义。format\_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - sizeof\(int32\),单位字节。原因是数据存储时需要32位的空间来存储用户对数据类型的自定义长度信息,即实际存储长度要比用户定义长度多4个字节。在下例中,format\_type返回的SQL名称为“character varying\(6\)”,6表示varchar类型的长度值是6字节,因此该类型的实际存储长度为10字节。 + + ``` + postgres=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); + format_type + ---------------------- + character varying(6) + (1 row) + ``` + +- pg\_check\_authid\(role\_oid\) + + 描述:检查是否存在给定oid的角色名 + + 返回类型:bool + + 示例: + + ``` + postgres=# select pg_check_authid(1); + pg_check_authid + ----------------- + f + (1 row) + ``` + +- pg\_describe\_object\(catalog\_id, object\_id, object\_sub\_id\) + + 描述:获取数据库对象的描述 + + 返回类型:text + + 备注:pg\_describe\_object返回由目录OID,对象OID和一个(或许0个)子对象ID指定的数据库对象的描述。这有助于确认存储在pg\_depend系统表中对象的身份。 + +- pg\_get\_constraintdef\(constraint\_oid\) + + 描述:获取约束的定义 + + 返回类型:text + +- pg\_get\_constraintdef\(constraint\_oid, pretty\_bool\) + + 描述:获取约束的定义 + + 返回类型:text + + 备注:pg\_get\_constraintdef和pg\_get\_indexdef分别从约束或索引上使用创建命令进行重构。 + +- pg\_get\_expr\(pg\_node\_tree, relation\_oid\) + + 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 + + 返回类型:text + +- pg\_get\_expr\(pg\_node\_tree, relation\_oid, pretty\_bool\) + + 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 + + 返回类型:text + + 备注:pg\_get\_expr反编译一个独立表达式的内部形式,比如一个字段的缺省值。在检查系统表的内容的时候很有用。如果表达式可能包含关键字,则指定他们引用相关的OID作为第二个参数;如果没有关键字,零就足够了。 + +- pg\_get\_functiondef\(func\_oid\) + + 描述:获取函数的定义 + + 返回类型:text + + 示例: + + ``` + postgres=# select * from pg_get_functiondef(598); + headerlines | definition + -------------+---------------------------------------------------- + 4 | CREATE OR REPLACE FUNCTION pg_catalog.abbrev(inet)+ + | RETURNS text + + | LANGUAGE internal + + | IMMUTABLE STRICT NOT FENCED NOT SHIPPABLE + + | AS $function$inet_abbrev$function$ + + | + (1 row) + ``` + +- pg\_get\_function\_arguments\(func\_oid\) + + 描述:获取函数定义的参数列表(带默认值) + + 返回类型:text + + 备注:pg\_get\_function\_arguments返回一个函数的参数列表,需要在CREATE FUNCTION中使用这种格式。 + +- pg\_get\_function\_identity\_arguments\(func\_oid\) + + 描述:获取参数列表来确定一个函数 \(不带默认值\) + + 返回类型:text + + 备注:pg\_get\_function\_identity\_arguments返回需要的参数列表用来标识函数,这种形式需要在ALTER FUNCTION中使用,并且这种形式省略了默认值。 + +- pg\_get\_function\_result\(func\_oid\) + + 描述:获取函数的RETURNS子句 + + 返回类型:text + + 备注:pg\_get\_function\_result为函数返回适当的RETURNS子句。 + +- pg\_get\_indexdef\(index\_oid\) + + 描述:获取索引的CREATE INDEX命令 + + 返回类型:text + + 示例: + + ``` + postgres=# select * from pg_get_indexdef(16416); + pg_get_indexdef + ------------------------------------------------------------------------- + CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default + (1 row) + ``` + +- pg\_get\_indexdef\(index\_oid, column\_no, pretty\_bool\) + + 描述:获取索引的CREATE INDEX命令,或者如果column\_no不为零,则只获取一个索引字段的定义。 + + 示例: + + ``` + postgres=# select * from pg_get_indexdef(16416, 0, false); + pg_get_indexdef + ------------------------------------------------------------------------- + CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default + (1 row) + postgres=# select * from pg_get_indexdef(16416, 1, false); + pg_get_indexdef + ----------------- + b + (1 row) + ``` + + 返回类型:text + + 备注:pg\_get\_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 + +- pg\_get\_keywords\(\) + + 描述:获取SQL关键字和类别列表 + + 返回类型:setof record + + 备注:pg\_get\_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的,C表示列名,T表示类型或函数名,或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 + +- pg\_get\_userbyid\(role\_oid\) + + 描述:获取给定OID的角色名 + + 返回类型:name + + 备注:pg\_get\_userbyid通过角色的OID抽取对应的用户名。 + +- pg\_check\_authid\(role\_id\) + + 描述:通过role\_id检查用户是否存在 + + 返回类型:text + + 示例: + + ``` + postgres=# select pg_check_authid(20); + pg_check_authid + ----------------- + f + (1 row) + ``` + +- pg\_get\_viewdef\(view\_name\) + + 描述:为视图获取底层的SELECT命令 + + 返回类型:text + +- pg\_get\_viewdef\(view\_name, pretty\_bool\) + + 描述:为视图获取底层的SELECT命令,如果pretty\_bool为true,行字段可以包含80列。 + + 返回类型:text + + 备注:pg\_get\_viewdef重构出定义视图的SELECT查询。这些函数大多数都有两种形式,其中带有pretty\_bool参数,且参数为true时,是"适合打印"的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果是完全一样。 + +- pg\_get\_viewdef\(view\_oid\) + + 描述:为视图获取底层的SELECT命令 + + 返回类型:text + +- pg\_get\_viewdef\(view\_oid, pretty\_bool\) + + 描述:为视图获取底层的SELECT命令,如果pretty\_bool为true,行字段可以包含80列。 + + 返回类型:text + +- pg\_get\_viewdef\(view\_oid, wrap\_column\_int\) + + 描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。 + + 返回类型:text + +- pg\_get\_tabledef\(table\_oid\) + + 描述:根据table\_oid获取表定义 + + 示例: + + ``` + postgres=# select * from pg_get_tabledef(16384); + pg_get_tabledef + ------------------------------------------------------- + SET search_path = public; + + CREATE TABLE t1 ( + + c1 bigint DEFAULT nextval('serial'::regclass)+ + ) + + WITH (orientation=row, compression=no) + + DISTRIBUTE BY HASH(c1) + + TO GROUP group1; + (1 row) + ``` + + 返回类型:text + +- pg\_get\_tabledef\(table\_name\) + + 描述:根据table\_name获取表定义 + + 示例: + + ``` + postgres=# select * from pg_get_tabledef('t1'); + pg_get_tabledef + ------------------------------------------------------- + SET search_path = public; + + CREATE TABLE t1 ( + + c1 bigint DEFAULT nextval('serial'::regclass)+ + ) + + WITH (orientation=row, compression=no) + + DISTRIBUTE BY HASH(c1) + + TO GROUP group1; + (1 row) + ``` + + 返回类型:text + + 备注:pg\_get\_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments信息。对于表对象依赖的group、schema、tablespace、server等信息,需要用户自己去创建,表定义里不会有这些对象的创建语句。 + +- pg\_options\_to\_table\(reloptions\) + + 描述:获取存储选项名称/值对的集合 + + 返回类型:setof record + + 备注:pg\_options\_to\_table当通过pg\_class.reloptions或pg\_attribute.attoptions时返回存储选项名称/值对(option\_name/option\_value)的集合。 + +- pg\_tablespace\_databases\(tablespace\_oid\) + + 描述:获取在指定的表空间中有对象的数据库OID集合 + + 返回类型:setof oid + + 备注:pg\_tablespace\_databases允许检查表空间的状况,返回在该表空间中保存了对象的数据库OID集合。如果这个函数返回数据行,则该表空间就是非空的,因此不能删除。要显示该表空间中的特定对象,用户需要连接pg\_tablespace\_databases标识的数据库与查询pg\_class系统表。 + +- pg\_tablespace\_location\(tablespace\_oid\) + + 描述:获取表空间所在的文件系统的路径 + + 返回类型:text + +- pg\_typeof\(any\) + + 描述:获取任何值的数据类型 + + 返回类型:regtype + + 备注:pg\_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考[对象标识符类型](zh-cn_topic_0242370424.md));这意味着它是一个为了比较而显示类型名称的OID。 + + 示例: + + ``` + postgres=# SELECT pg_typeof(33); + pg_typeof + ----------- + integer + (1 row) + + postgres=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); + typlen + -------- + 4 + (1 row) + ``` + +- collation for \(any\) + + 描述:获取参数的排序 + + 返回类型:text + + 备注:表达式collation for返回传递给他的值的排序。 + + 示例: + + ``` + postgres=# SELECT collation for (description) FROM pg_description LIMIT 1; + pg_collation_for + ------------------ + "default" + (1 row) + ``` + + 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。 + +- getdistributekey\(table\_name\) + + 描述:获取一个hash表的分布列 + + 返回类型:text + + 示例: + + ``` + postgres=# SELECT getdistributekey('item'); + getdistributekey + ------------------ + i_item_sk + (1 row) + ``` + +- pg\_extension\_update\_paths\(name\) + + 描述:返回指定扩展的版本更新路径。 + + 返回类型:text\(source text\), text\(path text\), text\(target text\) + +- pg\_get\_serial\_sequence\(tablename, colname\) + + 描述:获取对应表名和列名上的序列。 + + 返回类型:text + + 示例: + + ``` + postgres=# select * from pg_get_serial_sequence('t1', 'c1'); + pg_get_serial_sequence + ------------------------ + public.serial + (1 row) + ``` + +- pg\_sequence\_parameters\(sequence\_oid\) + + 描述:获取指定sequence的参数,包含起始值,最小值和最大值,递增值等。 + + 返回类型:bigint, bigint, bigint, bigint, Boolean + + 示例: + + ``` + postgres=# select * from pg_sequence_parameters(16420); + start_value | minimum_value | maximum_value | increment | cycle_option + -------------+---------------+---------------------+-----------+-------------- + 101 | 1 | 9223372036854775807 | 1 | f + (1 row) + ``` + +- pgxc\_get\_variable\_info\(\) + + 描述:获取节点上的变量值,包括nodeName, nextOid, nextXid, oldestXid, xidVacLimit, oldestXidDB, lastExtendCSNLogpage, startExtendCSNLogpage, nextCommitSeqNo, latestCompleteXid,startupMaxXid。 + + 返回类型:set of pg\_variable\_info + + 示例: + + ``` + postgres=# select pgxc_get_variable_info( ); + pgxc_get_variable_info + ------------------------------------------------------------------------- + (dn_6004_6005_6006,25617,141396349,2073,20000002073,15808,138111,0,127154152,141396348,104433004) + (1 row) + ``` + + +## 注释信息函数 + +- col\_description\(table\_oid, column\_number\) + + 描述:获取一个表字段的注释 + + 返回类型:text + + 备注:col\_description返回一个表中字段的注释,通过表OID和字段号来声明。 + +- obj\_description\(object\_oid, catalog\_name\) + + 描述:获取一个数据库对象的注释 + + 返回类型:text + + 备注:带有两个参数的obj\_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj\_description\(123456,'pg\_class'\)将返回OID为123456的表的注释。只带一个参数的obj\_description只要求对象OID。 + + obj\_description不能用于表字段,因为字段没有自己的OID。 + +- obj\_description\(object\_oid\) + + 描述:获取一个数据库对象的注释 + + 返回类型:text + +- shobj\_description\(object\_oid, catalog\_name\) + + 描述:获取一个共享数据库对象的注释 + + 返回类型:text + + 备注:shobj\_description和obj\_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于openGauss中所有数据库的全局表,因此这些表的注释也是全局存储的。 + + +## 事务ID和快照 + +以下的函数在一个输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。 + +- pgxc\_is\_committed\(transaction\_id\) + + 描述:如果提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行,准备,冻结等)。 + + 返回类型:bool + +- txid\_current\(\) + + 描述:获取当前事务ID。 + + 返回类型:bigint + +- txid\_current\_snapshot\(\) + + 描述:获取当前快照。 + + 返回类型:txid\_snapshot + +- txid\_snapshot\_xip\(txid\_snapshot\) + + 描述:在快照中获取正在进行的事务ID。 + + 返回类型:setof bigint + +- txid\_snapshot\_xmax\(txid\_snapshot\) + + 描述:获取快照的xmax。 + + 返回类型:bigint + +- txid\_snapshot\_xmin\(txid\_snapshot\) + + 描述:获取快照的xmin。 + + 返回类型:bigint + +- txid\_visible\_in\_snapshot\(bigint, txid\_snapshot\) + + 描述:在快照中事务ID是否可见(不使用子事务ID)。 + + 返回类型:Boolean + +- get\_local\_prepared\_xact\(\) + + 描述:获取当前节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的oid,database的oid及当前节点的node\_name。 + + 返回类型:xid, text, timestamptz, oid, oid,text + +- get\_remote\_prepared\_xacts\(\) + + 描述:获取所有远程节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的名称,database的名称及node\_name。 + + 返回类型:xid, text, timestamptz, name, name,text + +- global\_clean\_prepared\_xacts\(text, text\) + + 描述:并发清理两阶段残留事务,仅gs\_clean工具可以调用清理,其他用户调用均返回false。 + + 返回类型:Boolean + +- pgxc\_stat\_get\_wal\_senders\_status\(\) + + 描述:返回节点事务日志备机接收状态。 + + 返回值如下: + + **表 9** pgxc\_stat\_get\_wal\_senders\_status返回参数说明 + + -

字段名

描述

@@ -1112,14 +1754,14 @@ postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
- - -内部事务ID类型(xid)是32位,每40亿事务一次循环。这些函数使用的数据类型txid\_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在[表2](#zh-cn_topic_0237121987_zh-cn_topic_0059777618_t537e765e3f164cdeb9ca75f865e3aa0d)。 - -**表 2** 快照组件 - - +
+ + +内部事务ID类型(xid)是32位,每40亿事务一次循环。这些函数使用的数据类型txid\_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在[表10](#zh-cn_topic_0237121987_zh-cn_topic_0059777618_t537e765e3f164cdeb9ca75f865e3aa0d)。 + +**表 10** 快照组件 + + -

名称

描述

@@ -1142,9 +1784,71 @@ postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
- -txid\_snapshot的文本表示为:xmin:xmax:xip\_list。 - -示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip\_list=10, 14, 15。 - +
+ +txid\_snapshot的文本表示为:xmin:xmax:xip\_list。 + +示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip\_list=10, 14, 15。 + +- slice\(hstore, text\[\]\) + + 描述: 提取hstore的子集 + + 返回值: hstore + + 示例: + + ``` + postgres=# select slice('a=>1,b=>2,c=>3'::hstore, ARRAY['b','c','x']); + slice + -------------------- + "b"=>"2", "c"=>"3" + (1 row) + ``` + +- slice\_array\(hstore, text\[\]\) + + 描述:提取hstore的值的集合 + + 返回值:值数组 + + 示例: + + ``` + postgres=# select slice_array('a=>1,b=>2,c=>3'::hstore, ARRAY['b','c','x']); + slice_array + ------------- + {2,3,NULL} + (1 row) + ``` + +- skeys\(hstore\) + + 描述:返回hstore的所有键构成的集合。 + + 返回值:键的集合。 + + 示例: + + ``` + postgres=# select skeys('a=>1,b=>2'); + skeys + ------- + a + b + (2 rows) + ``` + +- simsearch\_lib\_load\_status\(\) + + 描述: 搜索动态库的状态加载成功或者失败。 + + 返回值:SETOF record + +- simsearch\_gpu\_vector\_status\(\) + + 描述:搜索searchlet的状态是否有向量。 + + 返回值:SETOF record + + -- Gitee