Vantageは、データベースまたはユーザーの作成時に、どのGLOP権限も自動的には付与しません。GLOP権限は、WITH GRANT OPTION権限を処理するユーザーが付与する場合でも、明示的に付与する必要があります。
- CREATE GLOPは、CREATE GLOP SET文を実行する権限が付与されたユーザーに対して、新しいGLOPセットを作成できるようにします。
- DROP GLOPは、DROP GLOP SET文を実行する権限が付与されたユーザーに対して、既存のGLOPセットを削除できるようにします。DROP GLOPは、GLOPセットの作成者および所有者に自動的に付与されます。
- GLOP MEMBERは、外部ルーチンが、その外部ルーチンを含むユーザーまたはデータベースに含まれていないGLOPセットにアクセスできるようにします。具体的には、GLOP MEMBERは、関数、メソッドまたはプロシージャの定義で参照するGLOPセットの句が、MEMBER OF GLOP SET句で指定したGLOPセットを使用できるようにします。
キーワードGLOPそのものを指定することで、CREATE GLOP権限とDROP GLOP権限の両方を表わすこともできます。単一のキーワードによる複数の権限を参照してください。
GLOP権限の付与
ある企業において、sales_bonus UDFによって特別なsales GLOPにアクセスしようと考えています。ユーザーJoeは、SYSLIBにUDFとGLOPの両方を作成します。これを実現するには、次のリクエストを実行する必要があります。
WITH GRANT OPTION付きのユーザーは、次に示すGRANTリクエストを実行する必要があります。
GRANT GLOP ON syslib TO Joe;
例えば、JoeがSYSLIBに関数を作成する権限をすでに所有しているとすると、Joeは次のリクエストを実行するでしょう。
Joeは、最初にGLOPセット オブジェクトを作成して、GLOPを追加できるようにします。
CREATE GLOP SET syslib.sales;
その後で、JoeはプロシージャGLOP_Addを呼び出してsales GLOPを追加し、それをSYSLIBに関連付けます。
CALL DBCExtension.GLOP_Add('syslib.sales',...);
最後に、Joeは関数sales_bonusをSYSLIBに作成します。
CREATE FUNCTION syslib.sales_bonus( … ) RETURNS DECIMAL(6,2) LANGUAGE C MEMBER OF GLOP SET syslib.sales PARAMETER STYLE SQL EXTERNAL;
SYSLIBは、パブリック データベースです。そのため、セキュリティ管理者はsales GLOPをfinanceデータベースに配置し、Finance部門にGLOPデータの作成責任を負わせることにしました。さらに、この管理者はUDFもfinanceデータベース内に格納しようと考えています。
これを実現するには、次のリクエストを実行する必要があります。
WITH GRANT OPTION付きのユーザーは、次に示すGRANTリクエストを実行する必要があります。
GRANT GLOP ON finance TO finance;
その後で、ユーザーfinanceは、次のリクエストを実行する必要があります。
CREATE GLOP SET sales; CALL DBCExtension.GLOP_Add('sales', … ); GRANT GLOP MEMBER ON finance.sales TO finance;
ユーザーJoeは、financeデータベースに関数を作成します。その前に、Joeには、financeデータベースにUDFを作成するための権限が(それを付与できる権限を持つ人物から)付与されている必要があります。
CREATE FUNCTION finance.sales_bonus( … ) RETURNS DECIMAL(6,2) LANGUAGE C MEMBER OF GLOP SET finance.sales PARAMETER STYLE SQL EXTERNAL;