第10章 内置函数总结

来源:互联网 发布:淘宝大促活动 编辑:程序博客网 时间:2024/06/16 14:23

第10章 内置函数总结

Greenplum数据库支持内置函数和操作符,包括可以在窗口表达式中使用的分析函数和窗口函数。 有关使用内置Greenplum数据库函数的信息,请参阅“Greenplum数据库管理员指南”中的“使用函数和操作符”。

•Greenplum数据库功能类型

•内置函数和操作符

•窗口功能

•高级分析功能


 

 


Greenplum Database Function Types

Greenplum数据库评估SQL表达式中使用的函数和运算符。 一些函数和操作符只允许在主服务器上执行,因为它们可能导致在Greenplum数据库段实例中的不一致。 该表格描述了Greenplum数据库功能类型。

Table 136: Functions in Greenplum Database

Function Type

Greenplum

Support

描述

Comments

IMMUTABLE

Yes

只依赖直接在参数列表 Greenplum数据库评估SQL表达式中使用的函数和运算符。 一些函数和操作符只允许在主服务器上执行,因为它们可能导致在Greenplum数据库段实例中的不一致。 该表格描述了Greenplum数据库功能类型。

 

STABLE

Yes, in most cases

在单个表扫描中,对于相同的参数值返回相同的结果,但在不同的SQL 场景中结果会不一致。

结果取决于数据库查找

结果取决于数据库查找或参数值。

当前时间戳函数系列是稳定的; 值在执行中不会改变。

VOLATILE

Restricted

函数值可以在单个表扫描中更改。 例如:random(),currval(),timeofday()。

任何具有副作用的函数都是不稳定的,即使其结果是可预测的。 例如:

SETVAL()。


 


 

 

在Greenplum数据库中,数据被划分为多个段 - 每个段都是一个独特的PostgreSQL数据库。为防止出现不一致或意外的结果,如果它们包含SQL命令或以任何方式修改数据库,请不要在段级别执行分类为VOLATILE的函数。例如,setvai()等函数不允许在Greenplum数据库的分布式数据上执行,因为它们可能会导致段实例之间的数据不一致。

为了确保数据的一致性,可以安全地使用VOLATILE和STABLE函数,这些函数在主机上进行评估和运行。例如,以下语句在master(没有FROM子句的语句)上运行:

SELECTsetval('myseq',201);

SELECT foo();

如果语句具有包含分布式表的FROM子句,并且FROM子句中的函数返回一组行,则语句可以在段上运行:

SELECT *from foo();

Greenplum数据库不支持返回表引用(rangeFuncs)的函数或使用refcursor数据类型的函数。

原创粉丝点击