Subject Re: [Firebird-Architect] Re: External procedures: implementation proposal.
Author Adriano dos Santos Fernandes
My opinions about the specification.

Don't store RDB$MODULE_NAME in RDB$EXTERNAL_ENGINE. Use the config file.

Don't initialize RDB$EXTERNAL_ENGINE at CREATE DATABASE. It's
problematic for backup and restore.
Create a DDL statement: CREATE EXTERNAL ENGINE ...

A C++ API is okay for Java and .NET that the project will distribute the
engines.
But C++ programmers will need to use the same compiler vendor/version or
compile everything all the server.
The API is very small. Why not use C and distribute the C++ bridge for
external engine writers?

Could I consider that "virtual ExternalProcedure
getProcedure(ISC_STATUS* status, char* externalName) = 0;" mean "virtual
ExternalProcedure* getProcedure(ISC_STATUS* status, const char*
externalName) = 0;"? Note the ExternalProcedure*.

Why ExternalResource class exist? Why create a "close" method that we
know that will do "delete this"?
Use a virtual destructor.

I think ResultSet::getValue should be replaced with ResultSet::getValues
getting all the return values in one call.


Adriano