CREATE PROCEDURE 或 CREATE FUNCTION 语句 / 添加修饰符 |
COMMUTATOR 修饰符允许您指定 SPL 函数为您正在创建的 SPL 函数的转换函数。转换函数接受相同的参数作为您正在创建的 SPL 函数,但以相反的顺序,并返回相同值。对于 SQL 优化器的执行,转换函数的成本效益比更高。
图: 定义转换函数。
CREATE FUNCTION lessthan( a dtype1, b dtype2 ) RETURNING BOOLEAN WITH ( COMMUTATOR = greaterthan ); . . . END FUNCTION;
如果 greaterthan(b,a) 的执行成本低于 lessthan(a,b),则优化器可能使用 greaterthan(b,a)。要指定转换函数,您必须同时拥有该转换函数和您正在编写的 SPL 函数。您还必须将两个函数的 Execute 权限授予您的 SPL 函数的用户。
要了解授予权限的详细描述,请参阅 GBase 8s SQL 指南:语法 中的 GRANT 语句的描述。