Subject Re: [Firebird-Architect] Cross database queries: Requirements
Author Fred Polizo
On 08/09/2007 12:08 PM, Adriano dos Santos Fernandes wrote:
> AFAIR, Oracle stores only a timestamp of the original object, and the
> timestamp is also in the original database.
>
> If timestamp of object (in "client" and "server" databases of dblink)
> are different, the procedure/trigger are compiled again when executed,
> and if necessary invalidated.
>
> Adriano

That's the general idea, but Oracle uses different mechanisms
to manage local-to-remote dependencies, depending on the
schema objects involved. Oracle's distributed database
functionality extends beyond just remote tables. It also
supports remote views, remote sequences, remote
functions/procedures/packages, and more. For example, a local
trigger (or stored procedure) can call a remote stored procedure.

The timestamp checking dependency model is the default for
stored procedures/functions/packages. But, the user has the
option of using the "signature" checking dependency model
where the referenced remote procedure/function/package's
signature (name, parameter info [number, type, mode], return
type, etc.) is checked instead of its timestamp. The timestamp
model is more strict than the signature model. The signature
model avoids unnecessary local invalidations and recompiles at
runtime, after a referenced remote procedure's implementation
has changed, but its signature has not.

Basically, when a "procedure" is compiled, its timestamp and
its signature become part of its compiled state in the local
dictionary. If the local procedure references a remote
procedure, then the referenced remote procedure's signature
and timestamp are retrieved and recorded in the compiled state
of the local procedure. Either value may be used later, since
different user sessions can chose different dependency
checking models.

Fred P.