PostgreSQL データベースのカスタム基本型が非線形データの処理に非常に役立つユース ケースがあります。この例には、C 関数への入出力関数の使用の定義が含まれます。私の場合、SQL を使用して inp 関数と out 関数を定義し、「LIKE」を使用して倍精度から他のすべてを継承したいと考えています。誰かがこれをしましたか?それは可能ですか?
考えられる例:
-- sample linear to logrithmic functions
CREATE FUNCTION to_linear(anyelement) RETURNS double precision
LANGUAGE SQL
AS
$$
SELECT CASE WHEN $1 > 0 THEN 30 / log($1::double precision) ELSE 0 END
$$;
create function to_log(anyelement) returns double precision
language sql
as $$
select 10^($1::double precision/30.0);
$$;
-- create the base type
create type mylogdata
(
INPUT = to_linear,
OUTPUT = to_log,
LIKE = double precision
) ;
-- sample use in a table definition
CREATE TABLE test_table(
mydata mylogdata
);
私が本当に求めているのは、「sudo」または「部分的な」基本型であり、既存の関数 (合計、平均など) が継承された型 (この場合、倍精度); 基本的に、Cで関数を書いたり書き直したりすることを避けています。
考え?アイデア?コメント? ありえない?:)
どうもありがとう!
余談ですが、「C」ルートをたどった場合、Char、Varchar、または Arbitrary Precision Number のような、より一般的な対数スカラー/ベース型を作成する機会があると思います。非線形データの対数底とスケールの動的宣言。
このようなものは、科学コミュニティと、音、振動、地震、光、放射線などの「波」ベースのデータを扱う私たちにとって大きな勝利になる可能性があります。ベースのサンプル定義は次のとおりです。
対数(底、目盛)
-- Below my idea for use in a table definition
-- Obviously the IN/OUT functions would have to be modified to use the base and scaling
-- as defined ( most likely in C ?? )
CREATE TABLE test_table
(
mydata logarithmic(10, 30)
);
このようなものを作成するために提携することに誰かが興味を持っている場合は、私に知らせてください.