AnalyticDB for PostgreSQL は、PL/Java 言語で書かれた JAR ソフトウェアパッケージのコンパイルとアップロードをサポートします。また、これらの JAR パッケージを使用して、ユーザー定義関数 (UDF) を作成することもできます。この機能でサポートされている PL/Java 言語は、Community Edition PL/Java 1.5.0 で、JVM バージョンは 1.8 です。
このドキュメントでは、PL/Java UDF の作成方法を説明します。PL/Java の例の詳細は、「PL/Java Code」をご参照ください。また、「Building PL/Java」もご参照ください。
手順
AnalyticDB for PostgreSQL で次のコマンドを実行し、PL/Java プラグインを作成します。このコマンドは、データベースに対して一度だけ実行する必要があります。
create extension pljava;
ビジネス要件に基づいて UDF をコンパイルします。たとえば、次のコードを使用して
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
次の OSS コンソールコマンドを使用して、ステップ 4 で生成された
analytics.jar
ファイルを OSS にアップロードします。osscmd put analytics.jar oss://zzz
HAnalyticDB for PostgreSQL で「Create Library」コマンドを実行して、ファイルを AnalyticDB for PostgreSQL にインポートします。
注:「Create Library」コマンドはファイルパスのみをサポートしており、一度に 1 つのファイルをインポートできます。また、「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';
AnalyticDB 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;