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()を使用して集約を終了します。このルーチンは集約コンテキストを入力として受け取り、集約結果値を返します。