Subject | Re: [Firebird-Architect] Packages |
---|---|
Author | Vlad Khorsun |
Post date | 2008-07-11T12:11:42Z |
> So far, I propose the creation of PACKAGEs. My spec. is based on OracleThis is really great feature. I like it very much. Implemented correctly it will
> packages, a feature widely used by its users. Initial implementation
> will have only procedures and functions. Some others features like
> package cursors and variables may be added later. Packages are also
> similar to Delphi Units (that have interface and implementation parts).
attract users to Firebird, i believe. Lets make it better than Oracle ;)
...
> It makes things much more simple and elegant. There is no reason to notAgree ;)
> have them. :-)
...
> Dumb example:Isn't implementation details (ENTRY_POINT etc) must be in package body instead ?
>
> SET TERM !;
>
> CREATE PACKAGE UTIL
> AS
> BEGIN
> FUNCTION SUBSTRLEN CSTRING(255) NULL, SMALLINT, SMALLINT
> RETURNS CSTRING(255) FREE_IT
> ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';
...
> Security should act on the entire package and not in individual items,Not sure about it, but lets think more on it...
> i.e. we should have GRANT EXECUTE ON PACKAGE <name> ...
> CREATE PACKAGE creates all procedures with NULL BLR. ALTER PACKAGE andThis is Oracle-like behavior, iirc. Imagine package with tens or hundreds objects.
> DROP PACKAGE BODY removes all private items and set BLR of all public
> procedures to NULL. These procedures doesn't run but others could still
> reference them at compilation time.
>
> DROP PACKAGE drops the header and the body.
>
> CREATE/ALTER PACKAGE BODY should correctly implement all package
> procedures declared or will fail completely.
Oracle recompiles it at every little change. I think we can make it better.
> Sources of individual procedures will not be stored. The package headerIt will not work without changes in remote protocol and API. Remember USHORT's
> and body sources will be stored in RDB$PACKAGES.
used for statement text length and BLR length ?
Ability to manage individual items in package is good thing and worth implementing,
i believe.
Explain, please, more - how do you going to deal with dependencies ?
Regards,
Vlad