分片表达式中的用户定义的函数

对于包含用户定义的数据类型的行,您可以使用比较条件或用户定义的函数来定义范围规则。在以下示例中,比较条件为包含不透明数据类型的 long1 列定义了范围规则:
FRAGMENT BY EXPRESSION
        long1 < '3001' IN dbsp1,
        long1 BETWEEN '3001' AND '6000' IN dbsp2,
        long1 > '6000' IN dbsp3;

隐式的、用户定义的强制转型将 30016000 转换为不透明类型。

此外,您还可以使用用户定义的函数为 long1 列的不透明数据类型定义范围规则:
FRAGMENT BY EXPRESSION
        (lessthan(long1,'3001')) IN dbsp1,
        (greaterthanorequal(long1,'3001') AND 
        lessthanorequal(long1,'6000')) IN dbsp2,
        (greaterthan(long1,'6000')) IN dbsp3;

如前面的示例所示,显式的用户定义的函数需要在 IN 子句前的整个分片表达式周围加上括号。

可以用 SPL 或 C 或 Java™ 语言来编写分片表达式中用户定义的函数。这些函数必须满足四个要求:

有关如何为分片表达式创建 UDR 的信息,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南