Subject Re: [ib-support] Re: Database grows rapidly (3 to 770MB) when using BLOB views/UDFs
Author Ivan Prenosil
> From: Claudio Valderrama C.
> > > DECLARE EXTERNAL FUNCTION PROPXMAKEBITMAP
> > > BLOB, DOUBLE PRECISION
> > > RETURNS BLOB
> > > ENTRY_POINT 'ProPXMakeBitmap' MODULE_NAME 'ProPXUDF.dll';
> > ...
> > > I think your true declaration is:
> > > DECLARE EXTERNAL FUNCTION PROPXMAKEBITMAP
> > > BLOB, DOUBLE PRECISION,
> > > BLOB returns parameter 3
> > > ENTRY_POINT 'ProPXMakeBitmap' MODULE_NAME 'ProPXUDF.dll';
> >
> > It seems to me that both styles of declaration creates identical entries
> in system tables.
>
> This only depends on how smart is the DSQL layer. Probably it does its own
> protection, I haven't checked (transforming A into B). But in the general
> case, rest assured that both notations DO NOT produce the same effect (and
> they aren't designed to produce the same effect, of course).

Both DECLARE statements will create identical entries in
rdb$functions and rdb$function_arguments tables.
(the only difference is that arguments are _physically_ stored
in different order). How can they produce different effects ?
Are there more system tables involved ?

If I backup/restore database with these declarations,
(to eliminate a possibility that some informations are held in memory)
how can the engine tell what kind of declaration was used ?

Ivan
http://www.volny.cz/iprenosil/interbase