2016-08-22 11 views
0

私はubuntuサーバー15.04にubuntuoneをインストールしようとしていますが、もう動作しないいくつかのものがあるようです。Postgres関数が間違ったデータ型を返しています

私が持っている主な問題は、失敗しているクエリです。ここではそれがどのように見えるかです:

CREATE FUNCTION activity() RETURNS SETOF pg_stat_activity 
    LANGUAGE sql SECURITY DEFINER 
    SET search_path TO public 
    AS $$ 
    SELECT 
     datid, datname, pid, usesysid, usename, 
     application_name, client_addr, client_hostname, client_port, 
     backend_start, xact_start, query_start, waiting, 
     CASE 
      WHEN query LIKE '<IDLE>%' 
       OR query LIKE 'autovacuum:%' 
       THEN query 
      ELSE 
       '<HIDDEN>' 
     END AS current_query 
    FROM pg_catalog.pg_stat_activity; 
$$; 

私はそれを実行すると、私はこのエラーを取得:

ERROR: return type mismatch in function declared to return pg_stat_activity 
DETAIL: Final statement returns boolean instead of timestamp with time zone at column 13. 
CONTEXT: SQL function "activity" 

私はエラーを理解し、私はそれがブール値を返しているのか分かりません。同じクエリを手動で実行しても、同じエラーが発生します。私はポストグルにあまり慣れていないので注意してください。

boolを返すクエリの部分は何ですか?またはクエリがまったく正しいですか?

注アプリケーションは、PostgreSQLの-9.1のために書かれましたが、私はあなたがpg_stat_activityのレイアウトと互換性のある行を返すされていない9.4

答えて

1

を実行しています。 pg_stat_activityのレイアウトは次のとおりです。

> \d pg_stat_activity ; 
      View "pg_catalog.pg_stat_activity" 
     Column  |   Type   | Modifiers 
------------------+--------------------------+----------- 
datid   | oid      | 
datname   | name      | 
pid    | integer     | 
usesysid   | oid      | 
usename   | name      | 
application_name | text      | 
client_addr  | inet      | 
client_hostname | text      | 
client_port  | integer     | 
backend_start | timestamp with time zone | 
xact_start  | timestamp with time zone | 
query_start  | timestamp with time zone | 
state_change  | timestamp with time zone | 
waiting   | boolean     | 
state   | text      | 
backend_xid  | xid      | 
backend_xmin  | xid      | 
query   | text      | 

あなたのクエリが正しくへとquery_startまでを含む列を生産しています。しかし、あなたはブール値(waiting)を列に返します。state_change、タイムゾーンです。

正しい順序で余分な列が含まれるようにクエリを修正して(すなわちstate_changewaitingstatebackend_xidbackend_xminquery

+0

はどうもありがとう、今私は最終的に、問題を明確に理解しています。あなたの応答をバグ修正コミットに追加します。 – Ibu

+0

バージョン9.2および9.3でビューが変更されました。 [ドキュメントv.9.4](https://www.postgresql.org/docs/9.4/static/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW)を参照してください。 – klin

関連する問題