OceanBaseデータベースは、ユーザー定義の集約関数をサポートしており、複雑なデータに適用できます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供します。
OceanBaseデータベースは、MAX、MIN、SUM などの事前定義済み集約関数をサポートしており、複数行に対する操作を実行するために使用できます。これらの事前定義済み集約関数はスカラーデータにのみ使用でき、マルチメディアデータ、不透明型、LOB などの複雑なデータ型には使用できません。上記の問題を解決するには、ユーザー定義の集約関数を使用できます。
ユーザー定義の集約関数は、SQL DML文で組み込み集約関数と同じように使用でき、スカラーデータとも連携できます。
ユーザー定義の集約関数は拡張機能に属し、ODCIAggregate インターフェースの一連の ODCIAggregate ルーチンを使用して作成できます。
各ユーザー定義の集約関数は、初期化、反復処理、マージ、終了の最大4つの ODCIAggregate ルーチンまたは手順を使用します。
初期化は
ODCIAggregateInitialize()で完了します。OceanBaseデータベースはこのルーチンを呼び出してユーザー定義の集約を初期化し、初期化された集約コンテキストをオブジェクト型インスタンスとして返します。反復処理は
ODCIAggregateIterate()で実行されます。このルーチンは繰り返し呼び出すことができます。呼び出すたびに、1つまたは複数の新しい値と現在の集約コンテキストが渡されます。ルーチンは新しい値を処理し、更新後の集約コンテキストを返します。NULL値は集約中無視され、ルーチンには渡されません。マージは
ODCIAggregateMerge()で実行されます。このルーチンを呼び出すことで、2つの集約コンテキストをマージできます。このルーチンは2つのコンテキストを入力として受け取り、それらを単一の集約コンテキストに統合して返します。ODCIAggregateTerminate()を使用して集約を終了します。このルーチンは集約コンテキストを入力として受け取り、集約結果値を返します。