Thread: more information for SRF function

more information for SRF function

From
Pavel Stehule
Date:
Hello,

this is questions for hackers. Is possible put SRF functions more
informations about context of calling SRF function? Not now. I know, but
in future. For example: I have heavy SRF function which returns more
thausand records, but returned set is filtered WHERE and limit clause. If
I have informations about context, I can use this filters inside
functions. Example dbilink, or other links based on perl DBI and SRF. If
I construct persistent links, I haven't easy posibility check some limits
for query and I have to return all result. Do You think about it? Or its
Posible. Without its isn't posible create efective solution for creating
persistent link to other databases, or other external sources. SRF don't
need knows complet parsed SQL, but only filters related to SRF function. I
can use params for SRF function, but its not too much usefull.

sample: srf returns email messages saved in some central archive.
create view mailitems as select * from srf_readmails();

std. using:
select * from mailitems where to like '%.test.cz';

I think this "implicit" parameters can be carry to function on demand
(similar triggers).

CREATE OR REPLACE FUNCTION srf_readmails() RETURNS SETOF RECORD AS $$
$filters = $_TD->{filters}
$$ LANGUAGE plperl WITH CONTEXT;

Regards
Pavel Stehule


Re: more information for SRF function

From
David Fetter
Date:
On Wed, Jan 26, 2005 at 10:42:07PM +0100, Pavel Stehule wrote:
> Hello,
>
> this is questions for hackers.  Is possible put SRF functions more
> informations about context of calling SRF function?  Not now.  I
> know, but in future.  For example: I have heavy SRF function which
> returns more thausand records, but returned set is filtered WHERE
> and limit clause.  If I have informations about context, I can use
> this filters inside functions.  Example dbilink, or other links
> based on perl DBI and SRF.

Are you using DBI-Link?  If so, how?  Have you found bugs or features
(apart from the ones you bring up here) that you would like to have?

> If I construct persistent links, I haven't easy posibility check
> some limits for query and I have to return all result.  Do You think
> about it?  Or its Posible.  Without its isn't posible create
> efective solution for creating persistent link to other databases,
> or other external sources.  SRF don't need knows complet parsed SQL,
> but only filters related to SRF function.  I can use params for SRF
> function, but its not too much usefull.
>
> sample: srf returns email messages saved in some central archive.
> create view mailitems as select * from srf_readmails();
>
> std. using: select * from mailitems where to like '%.test.cz';
>
> I think this "implicit" parameters can be carry to function on
> demand (similar triggers).
>
> CREATE OR REPLACE FUNCTION srf_readmails() RETURNS SETOF RECORD AS $$
> $filters = $_TD->{filters}
> $$ LANGUAGE plperl WITH CONTEXT;

This would be really great.  As I understand it, in the current
implementation, by the time a RULE kicks in, the WHERE clause is
unavailable.

Could it be made available?

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100   mobile: +1 415 235 3778

Remember to vote!