関数AllPairsShortestPathの関数マッピング定義usr_AllPairsShortestPathは、指定された他のテーブルに対応していない任意の入力テーブルの代わりにverticesを使用できることを指定します。
CREATE FUNCTION MAPPING syslib.usr_AllPairsShortestPath
FOR AllPairsShortestPath SERVER coprocessor
USING
vertices(ANY) IN TABLE,
edges(edge) IN TABLE,
sources IN TABLE,
targets(dest) OUT TABLE,
TargetKey('col1'),MaxDistance(Distance),EdgeWeight('2'),
GroupCol('Col_'||GroupColumn||'_'||Distance),
Distance(SELECT distnum FROM ssqtbl WHERE username=CURRENT_USER),
Directed;
このSELECT文は、テーブルの相関名としてvertexとedgesを指定します。
SELECT * FROM usr_AllPairsShortestPath (
ON callers AS vertex PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
USING
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) as dt ORDER BY source, target;
クエリーは、関数の処理中に次のように書き換えられます。関数マッピング定義は、指定された他の入力テーブルのいずれにも対応しないテーブルの代わりにverticesを使用できることを指定するため、vertexの代わりにverticesが使用されます。
SELECT * FROM AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) ORDER BY source, target;
このSELECT文は、テーブルの相関名としてverticesとedgesを指定します。
SELECT * FROM usr_AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
USING
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) as dt ORDER BY source, target;
クエリーは、関数の処理中に次のように書き換えられ、verticesとedgesの入力テーブルを指定します。
SELECT * FROM AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) ORDER BY source, target;
このSELECT文は、テーブルcallersの相関を指定せず、edgesをcallsの相関として指定します。
SELECT * FROM usr_AllPairsShortestPath (
ON callers PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
USING
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) as dt ORDER BY source, target;
クエリーは、関数の処理中に次のように書き換えられます。関数マッピング定義は、相関を持たないテーブルの代わりにverticesを使用できることを指定するため、verticesがcallersに相関付けられます。
SELECT * FROM AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) ORDER BY source, target;