17.00 - 17.05 - FNC_TblControl - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

目的

テーブル関数を、他のAMP vproc上で実行するテーブル関数の他のすべてのコピーの制御コピーとして指定します。

構文

int
FNC_TblControl(void)

戻り値

呼び出し結果 FNC_TblControlが戻す値
成功。テーブル関数のコピーはテーブル関数の制御ロールを取得できます。 1
失敗。テーブル関数のコピーは制御コピーのロールを取得できません。 0

有効な呼び出しモード

このライブラリ関数は、FNC_GetPhaseの戻り値がTBL_MODE_CONSTである場合に使用します。これはSELECT文が定数式入力引数のあるテーブル関数を呼び出したことを示します。

例:

SELECT *
FROM TABLE (table_function_1('STRING_CONSTANT'))
AS table_1;

使用上の注意

テーブル関数の制御コピーのセットアップは、さまざまなAMP vproc上で実行するテーブル関数のさまざまなコピーに特定の外部制御データを配布する必要があるものの、その外部制御データが特定のノード上にあるためテーブル関数の1コピーしかアクセスできない場合に役立ちます。

正常にFNC_TblControlを呼び出せるのは、テーブル関数の1コピーだけです。

テーブル関数の制御コピーは、FNC_TblControlを呼び出した後に、FNC_TblAllocCtrlCtxを呼び出して制御スクラッチパッドを割り振ることによって、制御データを他のテーブル関数コピーに配布できます。

制限

この関数は、テーブル関数内からのみ呼び出すことができます。この関数をスカラー関数、集約関数、UDM、または外部ストアド プロシージャから呼び出すと、トランザクションで例外が発生します。

この関数は一度だけしか呼び出すことができません。

FNC_TblControlを呼び出すテーブル関数は、FNC_TblFirstParticipantを呼び出せません。

この関数の呼び出しは、テーブル関数がFNC_GetPhaseを呼び出して以下の戻り値を取得した場合にのみ有効です。
  • FNC_Mode結果としてTBL_MODE_CONST
  • FNC_Phase出力引数としてTBL_PRE_INIT

FNC_TblControlの使用例

typedef struct {
   unsigned short cntrl_fnc_AMP
   int            qfd;
   ...
} ctrl_ctx;

ctrl_ctx     *options;
AMP_Info_t   *LocalConfig;
FNC_Phase    Phase;

if (FNC_GetPhase(&Phase) == TBL_MODE_CONST)
{
   switch(Phase)
   {
      case TBL_PRE_INIT:
      {
         LocalConfig = FNC_AMPInfo();
         if ( FNC_TblControl() )             {
                options = FNC_TblAllocCtrlCtx(sizeof(ctrl_ctx));
            options->ctrl_fnc_AMP = LocalConfig->AMPId;
            ...
         }
      }
      ...
   }
}
...