开发者社区 问答 正文

如何使用PL/Java UDF

HybridDB for PostgreSQL 支持用户使用 PL/Java 语言,编写并上传 jar 软件包,并利用这些 jar 包创建用户自定义函数(UDF)。支持的 PL/Java 语言版本对应社区的 PL/Java 1.5.0,使用的 JVM 版本为 1.8。下面是一个创建 PL/Java UDF 的示例步骤。更多的 PL/Java 例子,请参见 PL/Java代码(编译方法见其 文档)。

操作步骤


  1. 在 HybridDB for PostgreSQL 中,执行如下命令,创建 PL/Java 插件(每个数据库只需执行一次)。create extension pljava;


根据业务需要,编写自定义函数。例如,使用如下代码编写 Test.java 文件: public class Test
{
     public static String substring(String text, int beginIndex,
               int endIndex)
             {
                     try {
                         Process process = null;
                         process = Runtime.getRuntime().exec("echo Test running");
                     } catch (Exception e) {
                        return "" + e;
                     }
                     return text.substring(beginIndex, endIndex);
             }
}


编写 manifest.txt 文件,如下所示: Manifest-Version: 1.0
Main-Class: Test
Specification-Title: "Test"
Specification-Version: "1.0"
Created-By: 1.7.0_99
Build-Date: 01/20/2016 21:00 AM


执行如下命令,将程序编译打包。 javac Test.java
jar cfm analytics.jar manifest.txt Test.class


将上一步生成的 analytics.jar 文件,通过 OSS 控制台命令上传到 OSS。 osscmd put analytics.jar oss://zzz

在 HybridDB for PostgreSQL 中,执行 Create Library 命令,导入到 HybridDB 中。
注意:Create Library 只支持 filepath,一次导入一个文件。另外,Create Library 还支持字节流形式,可以不通过 OSS 直接导入,详情请参见 Create Library 命令的使用create library example language java from 'oss://oss-cn-hangzhou.aliyuncs.com filepath=analytics.jar id=xxx key=yyy bucket=zzz';

在 HybridDB for PostgreSQL 中,执行如下命令,创建和使用相应 UDF。 create table temp (a varchar) distributed randomly;
insert into temp values ('my string');
create or replace function java_substring(varchar, int, int) returns varchar as 'Test.substring' language java;
select java_substring(a, 1, 5) from temp;

展开
收起
云栖大讲堂 2017-11-01 11:18:23 2414 分享 版权
0 条回答
写回答
取消 提交回答