web-dev-qa-db-ja.com

エラー:ROWSは正でなければなりません

PgAdmin 4クエリエディターで以下を実行するとエラーが発生するのはなぜですか? createステートメントを1つのデータベースにコピーし、新しいサーバーに移動しようとしました。

そこで、pgAdminで関数を右クリックし、[スクリプト]メニューから[スクリプトの作成]を選択して、以下のコードを生成します。新しいデータベースにコピーして実行しました。

-- FUNCTION: public.osmtrip_format(bigint, numeric, numeric)

-- DROP FUNCTION public.osmtrip_format(bigint, numeric, numeric);

CREATE OR REPLACE FUNCTION public.osmtrip_format(
    num bigint,
    length numeric,
    tolerance numeric)
RETURNS bigint
    LANGUAGE 'sql'
    COST 100
    IMMUTABLE 
    ROWS 0
AS $BODY$

    SELECT
        CASE WHEN $1=0 OR $2<=0.7*$3 THEN NULL ELSE $1 END;

$BODY$;

ALTER FUNCTION public.osmtrip_format(bigint, numeric, numeric)
    OWNER TO gis;

ERROR:  ROWS must be positive
SQL state: 22023
1
Tampa

CREATE FUNCTION に関するドキュメントから:

result_rows
positive数値は、プランナが関数が返すと予想される行の推定数を示します。 これは、関数がセットを返すように宣言されている場合にのみ許可されます。デフォルトの想定は1000行です。

ROWS 0は、これらの関数でも許可されていません(正の数でなければなりません)。

関数はセットを返さないため、そのROWS nを削除する必要があります。

2
ypercubeᵀᴹ