本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
領導節點上所支援的 SQL 函數
某些 Amazon Redshift 查詢會在運算節點上分散並執行,而其他查詢則只在領導節點上執行。
每當查詢參考使用者建立的資料表或系統資料表 (具有 STL 或 STV 字首的資料表,以及具有 SVL 或 SVV 字首的系統畫面) 時,領導節點就會將 SQL 分送到運算節點。查詢如果只參考目錄資料表 (具有 PG 字首的資料表,例如 PG_TABLE_DEF,儲存於領導節點上),或是未參考任何資料表,就只會在領導節點上執行。
某些 Amazon Redshift SQL 函數僅在領導節點上受支援,運算節點不受支援。使用潛在客戶節點函數的查詢必須專門在領導節點上運行,而不是在計算節點上運行,否則它將返回錯誤。
必須在領導節點上專門執行的每個函數的文件都包含一個附註,說明如果函數參考使用者定義的資料表或 Amazon Redshift 系統資料表,該函數將傳回錯誤。關於只在領導節點上執行的功能,如需功能清單,請參閱 引線節點-僅限函數。
範例
CURRENT_SCHEMA 是只限領導節點的函式。在此範例中,查詢並未參考資料表,因此只會在領導節點上執行。
select current_schema();
結果如下所示。
current_schema --------------- public (1 row)
在下一個範例中,查詢參考了系統目錄資料表,因此只會在領導節點上執行。
select * from pg_table_def where schemaname = current_schema() limit 1; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+--------+----------+----------+---------+---------+--------- public | category | catid | smallint | none | t | 1 | t (1 row)
在下一個範例中,查詢參考了位於運算節點上的 Amazon Redshift 系統資料表,因此會傳回錯誤。
select current_schema(), userid from users; INFO: Function "current_schema()" not supported. ERROR: Specified types or functions (one per INFO message) not supported on Amazon Redshift tables.