Skip to main content

Summary of Built-in Functions

Cloudberry Database supports built-in functions and operators including analytic functions and window functions that can be used in window expressions.

Cloudberry Database function types

Cloudberry Database evaluates functions and operators used in SQL expressions. Some functions and operators are only allowed to run on the coordinator since they could lead to inconsistencies in Cloudberry Database segment instances. This table describes the Cloudberry Database Function Types.

Function TypeCloudberry SupportDescriptionComments
IMMUTABLEYesRelies only on information directly in its argument list. Given the same argument values, always returns the same result. 
STABLEYes, in most casesWithin a single table scan, returns the same result for same argument values, but results change across SQL statements.Results depend on database lookups or parameter values. current_timestamp family of functions is STABLE; values do not change within an execution.
VOLATILERestrictedFunction values can change within a single table scan. For example: random(), timeofday().Any function with side effects is volatile, even if its result is predictable. For example: setval().

In Cloudberry Database, data is divided up across segments — each segment is a distinct PostgreSQL database. To prevent inconsistent or unexpected results, do not run functions classified as VOLATILE at the segment level if they contain SQL commands or modify the database in any way. For example, functions such as setval() are not allowed to run on distributed data in Cloudberry Database because they can cause inconsistent data between segment instances.

To ensure data consistency, you can safely use VOLATILE and STABLE functions in statements that are evaluated on and run from the coordinator. For example, the following statements run on the coordinator (statements without a FROM clause):

SELECT setval('myseq', 201);
SELECT foo();

If a statement has a FROM clause containing a distributed table and the function in the FROM clause returns a set of rows, the statement can run on the segments:

SELECT * from foo();

Cloudberry Database does not support functions that return a table reference (rangeFuncs) or functions that use the refCursor datatype.

Built-in functions and operators

The following table lists the categories of built-in functions and operators supported by PostgreSQL. All functions and operators are supported in Cloudberry Database as in PostgreSQL with the exception of STABLE and VOLATILE functions, which are subject to the restrictions noted in Cloudberry Database Function Types. See the Functions and Operators section of the PostgreSQL documentation for more information about these built-in functions and operators.

Operator/Function CategoryVOLATILE FunctionsSTABLE FunctionsRestrictions
Logical Operators   
Comparison Operators   
Mathematical Functions and Operatorsrandom

setseed
  
String Functions and OperatorsAll built-in conversion functionsconvert

pg_client_encoding
 
Binary String Functions and Operators   
Bit String Functions and Operators   
Pattern Matching   
Data Type Formatting Functions to_char

to_timestamp
 
Date/Time Functions and Operatorstimeofdayage

current_date

current_time

current_timestamp

localtime

localtimestamp

now
 
Enum Support Functions   
Geometric Functions and Operators   
Network Address Functions and Operators   
Sequence Manipulation Functionsnextval()

setval()
  
Conditional Expressions   
Array Functions and Operators All array functions 
Aggregate Functions   
Subquery Expressions   
Row and Array Comparisons   
Set Returning Functionsgenerate_series  
System Information Functions All session information functions

All access privilege inquiry functions

All schema visibility inquiry functions

All system catalog information functions

All comment information functions

All transaction ids and snapshots
 
System Administration Functionsset_config

pg_cancel_backend

pg_reload_conf

pg_rotate_logfile

pg_start_backup

pg_stop_backup

pg_size_pretty

pg_ls_dir

pg_read_file

pg_stat_file

current_setting

All database object size functions
> Note The function pg_column_size displays bytes required to store the value, possibly with TOAST compression.
XML Functions and function-like expressions cursor_to_xml(cursor refcursor, count int, nulls boolean, tableforest boolean, targetns text)

cursor_to_xmlschema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)

database_to_xml(nulls boolean, tableforest boolean, targetns text)

database_to_xmlschema(nulls boolean, tableforest boolean, targetns text)

database_to_xml_and_xmlschema(nulls boolean, tableforest boolean, targetns text)

query_to_xml(query text, nulls boolean, tableforest boolean, targetns text)

query_to_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)

query_to_xml_and_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)

schema_to_xml(schema name, nulls boolean, tableforest boolean, targetns text)

schema_to_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)

schema_to_xml_and_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)

table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text)

table_to_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)

table_to_xml_and_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)

xmlagg(xml)

xmlconcat(xml[, ...])

xmlelement(name name [, xmlattributes(value [AS attname] [, ... ])] [, content, ...])

xmlexists(text, xml)

xmlforest(content [AS name] [, ...])

xml_is_well_formed(text)

xml_is_well_formed_document(text)

xml_is_well_formed_content(text)

xmlparse ( { DOCUMENT | CONTENT } value)

xpath(text, xml)

xpath(text, xml, text[])

xpath_exists(text, xml)

xpath_exists(text, xml, text[])

xmlpi(name target [, content])

xmlroot(xml, version text | no value [, standalone yes|no|no value])

xmlserialize ( { DOCUMENT | CONTENT } value AS type )

xml(text)

text(xml)

xmlcomment(xml)

xmlconcat2(xml, xml)