2017-12-21 9 views
-2

実行されたPostgreSQL文のログを確認しています。私は完全に理解できません。そのようなクエリが実行されたときにPostgreSQLが実際に行うことを誰かが説明できますか? siq_queryとは何ですか?このselectステートメントは実際に何をしますか?

select * 
from siq_query('', '21:1', '', '("my search string")', False, True, 'http://siqfindex:8080/storediq/findex') 

Iは、PostgreSQL 9.2

+0

この文脈で 'siq_query'が何であるかわからない場合は、SQLの基礎について読んでみてください。 – Jules

+0

私はSQLの基本に精通しています。通常、表またはビューのFROM名の後、または別のSELECTステートメントが続きます。今回はこれとは別のものです。どのHTTP文字列がそこにいますか? –

+0

URLは単なる文字列です。 SQLには特別な意味はありません。理想的には、データベースのテーブルの列に存在するデータです。 'siq_query'は(コンテキストなしで)[ユーザ定義関数](https://www.postgresql.org/docs/current/static/sql-createfunction.html)であるように見え、パラメータに基づいてレコードのコレクションを返しますあなたはそれを渡す。より多くの文脈は、コミュニティがより深刻な回答を与えることを可能にする。 – Jules

答えて

1

siq_query(...)を実行している7つの入力パラメータ(またはそれ以上)を取るサーバ側の機能です。私が知っている標準のPostgresディストリビューションの一部ではありません(PostgreSQLメインラインではありません)ので、ユーザ定義であるか、インストールした拡張機能の一部でなければなりません。関数内で定義されているものは何でも行います。これには基本的に何かあなたのPostgresユーザーが行うことができます。それがSECURITY DEFINER functionでない限り、それは機能の所有者が何でもできるようになります。

呼び出される方法(SELECT * FROM)は、複数の行および/または列、おそらくは一連の行を返す場合にのみ意味を持ち、"set-returning function"になります。これはSQLクエリのテーブルとほとんど同じように使用できます。

関数名はスキーマ修飾されていないため、表示されるスキーマに存在する必要があります。参照:

かいつまんで、あなたは、関数の定義は、それが正確に何を知って確認する必要があります。 psql(\df+ siq_query)、pgAdmin(ブラウズして選択してSQLペインでその定義を表示する)、またはその他のクライアントツールを使用して検索することができます。または直接システムカタログpg_procを照会:

SELECT * FROM pg_proc WHERE proname = 'siq_query'; 

はplpgsqlがのようないくつかの言語の関数本体を保持しているコラムprosrc、に特別な注意を払ってください。

この名前には複数の亜種が存在する可能性がありますが、Postgresではfunction overloadingを使用できます。

関連する問題