関数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;