I propose a schema private functions as analogy to Oracle package functions.
My target of this proposal is better isolation generally available top
level callable functions from other auxiliary functions. A execution of
functions can be little bit more robust due less dependency on SEARCH_PATH.
The other significant benefit can come with schema session variables.
We can different between three kinds of functions:
1. stored in schema - current implementation - the function has not any
special relation to schema, where it is stored. The most important is
2. global in schema - top level callable functions where access to objects
in schema (functions, tables, variables) is preferred - first searching is
in schema, second in SEARCH_PATH. This property is related to visibility
(search-ability) of database objects only. The access rights are
3. private in schema - second level callable functions where access to
objects in schema is preferred. These functions can be called from any
private in schema, global in schema or stored in schema functions. These
functions can use stored in schema and global in schema functions from
other schema. These functions cannot be called from top-level where schema
is not locked. The access rights are independent feature - so access can be
restricted to some roles for this kind of functions too.
1. relation to SEARCH_PATH
2. relation to access rights
I propose this feature as orthogonal to access rights.
I have not a plan to implement it immediately - (any volunteer?). I would
to start a discussion and collect requests - and I would to create more
complete image of two joined features: schema pinned functions (private,
global) and schema session variables.