From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: poc - possibility to write window function in PL languages |
Date: | 2020-08-28 06:14:27 |
Message-ID: | CAFj8pRAWcjPYu9QA7onR+QaYhnSxzOBZTrU3dkdgykV9HyDWCg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
st 26. 8. 2020 v 17:06 odesílatel Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
napsal:
> Hi
>
> I simplified access to results of winfuncargs functions by proxy type
> "typedvalue". This type can hold any Datum value, and allows fast cast to
> basic buildin types or it can use (slower) generic cast functions. It is
> used in cooperation with a plpgsql assign statement that can choose the
> correct cast implicitly. When the winfuncarg function returns a value of
> the same type, that is expected by the variable on the left side of the
> assign statement, then (for basic types), the value is just copied without
> casts. With this proxy type is not necessary to have special statement for
> assigning returned value from winfuncargs functions, so source code of
> window function in plpgsql looks intuitive to me.
>
> Example - implementation of "lag" function in plpgsql
>
> create or replace function pl_lag(numeric)
> returns numeric as $$
> declare v numeric;
> begin
> v := get_input_value_in_partition(windowobject, 1, -1, 'seek_current',
> false);
> return v;
> end;
> $$ language plpgsql window;
>
> I think this code is usable, and I assign this patch to commitfest.
>
> Regards
>
> Pavel
>
fix regress tests and some doc
Attachment | Content-Type | Size |
---|---|---|
plpgsql-window-function-20200828.patch | text/x-patch | 62.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2020-08-28 06:26:00 | Re: passwordcheck: Log cracklib diagnostics |
Previous Message | Noah Misch | 2020-08-28 06:04:17 | Re: Clang UndefinedBehaviorSanitize (Postgres14) Detected undefined-behavior |