Subject isc_expand_dpb
Author Ann W. Harrison
The routine isc_expand_dpb was added to InterBase so that
a preprocessed program (gpre'd) could accept a user name
and password at runtime.


Gpre allocates a static dpb (database parameter block, the
thing which carries around useful information about database
connections). Gpre generates a call to isc_expand_dpb,
passing the address and length of the pre-allocated dpb
together with the user name and password. Isc_expand_dpb
allocates a new dpb from heap, copies the existing information
to the allocated dpb, and returns a pointer to the allocated
dpb. Gpre generates code to release the allocated dpb.

Not elegant, perhaps, but functional. However, someone (misguided
in my opinion) decided that isc_expand_dpb was the preferred way
to build a dpb. It ain't. The first and most obvious problem is
that it's a memory leak if called more than once. The second problem
is that it's more work to use from most programs than generating
the dpb on the fly. The third problem is that our Firebird Docs
people have declared war on it.

I recommend that for Firebird, we deprecated the call, documenting
it minimally (input & output parameters and a big warning that it
should not be used.

Regards,

Ann