Subject Re: [Firebird-Architect] Re: External procedures: implementation
Author Vlad Horsun
> >>violation of layering. If Firebird 2.0 were refactored to make the
> >>y-valve and engine separate libraries, "execute statement" would have
> >>been unimplementable.
> >>
> >>
> >
> > Why? I can easily imagine separate engine library which exports the
> >same API, includes DSQL and NOT includes Y-valve. In such engine any
> >API call is statically linked and don't break layering because
> >everything is incapsulated inside one layer.


> Execute statement calls into DSQL, which is part of the Y-valve, to get
> the external handles to loop back through the client interface to the
> Y-valve. If DSQL were in the engine itself, as in Vulcan, that hack
> wouldn't work.

Because in that case that hack not needed anymore. Engine can call
himself with usual Attachment and Transaction pointers, not handles.
And engine already did it many times in tens of .epp files.