すべてのプロダクト
Search
ドキュメントセンター

:PL_Java UDF を使用する

最終更新日:Mar 19, 2020

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」もご参照ください。

手順

  1. AnalyticDB for PostgreSQL で次のコマンドを実行し、PL/Java プラグインを作成します。このコマンドは、データベースに対して一度だけ実行する必要があります。

    1. create extension pljava;
  2. ビジネス要件に基づいて UDF をコンパイルします。たとえば、次のコードを使用して Test.java ファイルをコンパイルできます。

    1. public class Test
    2. {
    3. public static String substring(String text, int beginIndex,
    4. int endIndex)
    5. {
    6. try {
    7. Process process = null;
    8. process = Runtime.getRuntime().exec("echo Test running");
    9. } catch (Exception e) {
    10. return "" + e;
    11. }
    12. return text.substring(beginIndex, endIndex);
    13. }
    14. }
  3. manifest.txt ファイルをコンパイルします。

    1. Manifest-Version: 1.0
    2. Main-Class: Test
    3. Specification-Title: "Test"
    4. Specification-Version: "1.0"
    5. Created-By: 1.7.0_99
    6. Build-Date: 01/20/2016 21:00 AM
  4. 次のコマンドを実行してプログラムをコンパイルし、パッケージ化します。

    1. javac Test.java
    2. jar cfm analytics.jar manifest.txt Test.class
  5. 次の OSS コンソールコマンドを使用して、ステップ 4 で生成された analytics.jar ファイルを OSS にアップロードします。

    1. osscmd put analytics.jar oss://zzz
  6. HAnalyticDB for PostgreSQL で「Create Library」コマンドを実行して、ファイルを AnalyticDB for PostgreSQL にインポートします。

    :「Create Library」コマンドはファイルパスのみをサポートしており、一度に 1 つのファイルをインポートできます。また、「Create Library」コマンドは、バイトストリームをサポートしており、OSS を使用せずにファイルを直接インポートします。詳細については、「Create Library コマンドの使用」をご参照ください。

    1. create library example language java from 'oss://oss-cn-hangzhou.aliyuncs.com filepath=analytics.jar id=xxx key=yyy bucket=zzz';
  7. AnalyticDB for PostgreSQL で次のコマンドを実行し、UDF を作成して使用します。

    1. create table temp (a varchar) distributed randomly;
    2. insert into temp values ('my string');
    3. create or replace function java_substring(varchar, int, int) returns varchar as 'Test.substring' language java;
    4. select java_substring(a, 1, 5) from temp;