8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 02:03:04 +01:00

Fixed CORE-4954 - The package procedure with value by default isn't called if this parameter isn't specified.

This commit is contained in:
asfernandes 2015-10-07 18:24:36 +00:00
parent 2a53f5c9c5
commit 96e6676163
14 changed files with 157 additions and 132 deletions

View File

@ -1860,8 +1860,8 @@ C --
PARAMETER (GDS__dyn_funcsignat_package = 336068873) PARAMETER (GDS__dyn_funcsignat_package = 336068873)
INTEGER*4 GDS__dyn_procsignat_package INTEGER*4 GDS__dyn_procsignat_package
PARAMETER (GDS__dyn_procsignat_package = 336068874) PARAMETER (GDS__dyn_procsignat_package = 336068874)
INTEGER*4 GDS__dyn_defvaldecl_package INTEGER*4 GDS__dyn_defvaldecl_package_proc
PARAMETER (GDS__dyn_defvaldecl_package = 336068875) PARAMETER (GDS__dyn_defvaldecl_package_proc = 336068875)
INTEGER*4 GDS__dyn_package_body_exists INTEGER*4 GDS__dyn_package_body_exists
PARAMETER (GDS__dyn_package_body_exists = 336068877) PARAMETER (GDS__dyn_package_body_exists = 336068877)
INTEGER*4 GDS__dyn_invalid_ddl_func INTEGER*4 GDS__dyn_invalid_ddl_func
@ -1888,6 +1888,8 @@ C --
PARAMETER (GDS__dyn_cant_use_zero_increment = 336068896) PARAMETER (GDS__dyn_cant_use_zero_increment = 336068896)
INTEGER*4 GDS__dyn_cant_use_in_foreignkey INTEGER*4 GDS__dyn_cant_use_in_foreignkey
PARAMETER (GDS__dyn_cant_use_in_foreignkey = 336068897) PARAMETER (GDS__dyn_cant_use_in_foreignkey = 336068897)
INTEGER*4 GDS__dyn_defvaldecl_package_func
PARAMETER (GDS__dyn_defvaldecl_package_func = 336068898)
INTEGER*4 GDS__gbak_unknown_switch INTEGER*4 GDS__gbak_unknown_switch
PARAMETER (GDS__gbak_unknown_switch = 336330753) PARAMETER (GDS__gbak_unknown_switch = 336330753)
INTEGER*4 GDS__gbak_page_size_missing INTEGER*4 GDS__gbak_page_size_missing

View File

@ -937,7 +937,7 @@ const
gds_dyn_procnotdef_package = 336068872; gds_dyn_procnotdef_package = 336068872;
gds_dyn_funcsignat_package = 336068873; gds_dyn_funcsignat_package = 336068873;
gds_dyn_procsignat_package = 336068874; gds_dyn_procsignat_package = 336068874;
gds_dyn_defvaldecl_package = 336068875; gds_dyn_defvaldecl_package_proc = 336068875;
gds_dyn_package_body_exists = 336068877; gds_dyn_package_body_exists = 336068877;
gds_dyn_invalid_ddl_func = 336068878; gds_dyn_invalid_ddl_func = 336068878;
gds_dyn_newfc_oldsyntax = 336068879; gds_dyn_newfc_oldsyntax = 336068879;
@ -951,6 +951,7 @@ const
gds_dyn_cant_modify_sysobj = 336068895; gds_dyn_cant_modify_sysobj = 336068895;
gds_dyn_cant_use_zero_increment = 336068896; gds_dyn_cant_use_zero_increment = 336068896;
gds_dyn_cant_use_in_foreignkey = 336068897; gds_dyn_cant_use_in_foreignkey = 336068897;
gds_dyn_defvaldecl_package_func = 336068898;
gds_gbak_unknown_switch = 336330753; gds_gbak_unknown_switch = 336330753;
gds_gbak_page_size_missing = 336330754; gds_gbak_page_size_missing = 336330754;
gds_gbak_page_size_toobig = 336330755; gds_gbak_page_size_toobig = 336330755;

View File

@ -1906,9 +1906,9 @@ bool CreateAlterFunctionNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch*
if (!secondPass && modified) if (!secondPass && modified)
{ {
// Get all comments from the old parameter list. // Get all comments and defaults from the old parameter list.
MetaNameBidMap comments; CollectedParameterMap collectedParameters;
collectParamComments(tdbb, transaction, comments); collectParameters(tdbb, transaction, collectedParameters);
// delete all old arguments // delete all old arguments
DropFunctionNode::dropArguments(tdbb, transaction, name, package); DropFunctionNode::dropArguments(tdbb, transaction, name, package);
@ -1921,13 +1921,13 @@ bool CreateAlterFunctionNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch*
for (FB_SIZE_T i = 0; i < parameters.getCount(); ++i) for (FB_SIZE_T i = 0; i < parameters.getCount(); ++i)
{ {
ParameterClause* parameter = parameters[i]; ParameterClause* parameter = parameters[i];
bid comment; CollectedParameter collectedParameter;
// Find the original comment to recreate in the new parameter. // Find the original parameter to recreate in the new parameter.
if (!comments.get(parameter->name, comment)) collectedParameters.get(parameter->name, collectedParameter);
comment.clear();
storeArgument(tdbb, dsqlScratch, transaction, i + 1, false, parameter, &comment); storeArgument(tdbb, dsqlScratch, transaction, i + 1, false,
parameter, &collectedParameter);
} }
} }
@ -1936,7 +1936,7 @@ bool CreateAlterFunctionNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch*
void CreateAlterFunctionNode::storeArgument(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, void CreateAlterFunctionNode::storeArgument(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
jrd_tra* transaction, unsigned pos, bool returnArg, ParameterClause* parameter, jrd_tra* transaction, unsigned pos, bool returnArg, ParameterClause* parameter,
const bid* comment) const CollectedParameter* collectedParameter)
{ {
Attachment* const attachment = transaction->getAttachment(); Attachment* const attachment = transaction->getAttachment();
TypeClause* type = parameter->type; TypeClause* type = parameter->type;
@ -2053,6 +2053,14 @@ void CreateAlterFunctionNode::storeArgument(thread_db* tdbb, DsqlCompilerScratch
if (parameter->defaultClause) if (parameter->defaultClause)
{ {
if (preserveDefaults)
{
status_exception::raise(
Arg::Gds(isc_dyn_defvaldecl_package_func) <<
package.c_str() <<
name.c_str());
}
ARG.RDB$DEFAULT_VALUE.NULL = FALSE; ARG.RDB$DEFAULT_VALUE.NULL = FALSE;
ARG.RDB$DEFAULT_SOURCE.NULL = FALSE; ARG.RDB$DEFAULT_SOURCE.NULL = FALSE;
@ -2073,6 +2081,16 @@ void CreateAlterFunctionNode::storeArgument(thread_db* tdbb, DsqlCompilerScratch
attachment->storeBinaryBlob(tdbb, transaction, &ARG.RDB$DEFAULT_VALUE, attachment->storeBinaryBlob(tdbb, transaction, &ARG.RDB$DEFAULT_VALUE,
dsqlScratch->getBlrData()); dsqlScratch->getBlrData());
} }
else if (preserveDefaults && collectedParameter)
{
ARG.RDB$DEFAULT_SOURCE.NULL = collectedParameter->defaultSource.isEmpty();
if (!ARG.RDB$DEFAULT_SOURCE.NULL)
ARG.RDB$DEFAULT_SOURCE = collectedParameter->defaultSource;
ARG.RDB$DEFAULT_VALUE.NULL = collectedParameter->defaultValue.isEmpty();
if (!ARG.RDB$DEFAULT_VALUE.NULL)
ARG.RDB$DEFAULT_VALUE = collectedParameter->defaultValue;
}
if (isUdf()) if (isUdf())
{ {
@ -2095,9 +2113,9 @@ void CreateAlterFunctionNode::storeArgument(thread_db* tdbb, DsqlCompilerScratch
ARG.RDB$MECHANISM = (SSHORT) FUN_reference; ARG.RDB$MECHANISM = (SSHORT) FUN_reference;
} }
ARG.RDB$DESCRIPTION.NULL = !comment || comment->isEmpty(); ARG.RDB$DESCRIPTION.NULL = !collectedParameter || collectedParameter->comment.isEmpty();
if (!ARG.RDB$DESCRIPTION.NULL) if (!ARG.RDB$DESCRIPTION.NULL)
ARG.RDB$DESCRIPTION = *comment; ARG.RDB$DESCRIPTION = collectedParameter->comment;
} }
END_STORE END_STORE
} }
@ -2189,18 +2207,21 @@ void CreateAlterFunctionNode::compile(thread_db* /*tdbb*/, DsqlCompilerScratch*
invalid = false; invalid = false;
} }
void CreateAlterFunctionNode::collectParamComments(thread_db* tdbb, jrd_tra* transaction, void CreateAlterFunctionNode::collectParameters(thread_db* tdbb, jrd_tra* transaction,
MetaNameBidMap& items) CollectedParameterMap& items)
{ {
AutoRequest requestHandle; AutoRequest requestHandle;
FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction) FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction)
ARG IN RDB$FUNCTION_ARGUMENTS ARG IN RDB$FUNCTION_ARGUMENTS
WITH ARG.RDB$FUNCTION_NAME EQ name.c_str() AND WITH ARG.RDB$FUNCTION_NAME EQ name.c_str() AND
ARG.RDB$PACKAGE_NAME EQUIV NULLIF(package.c_str(), '') AND ARG.RDB$PACKAGE_NAME EQUIV NULLIF(package.c_str(), '')
ARG.RDB$DESCRIPTION NOT MISSING
{ {
items.put(ARG.RDB$ARGUMENT_NAME, ARG.RDB$DESCRIPTION); CollectedParameter parameter;
parameter.comment = ARG.RDB$DESCRIPTION;
parameter.defaultSource = ARG.RDB$DEFAULT_SOURCE;
parameter.defaultValue = ARG.RDB$DEFAULT_VALUE;
items.put(ARG.RDB$ARGUMENT_NAME, parameter);
} }
END_FOR END_FOR
} }
@ -2792,9 +2813,9 @@ bool CreateAlterProcedureNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch
if (!secondPass && modified) if (!secondPass && modified)
{ {
// Get all comments from the old parameter list. // Get all comments and defaults from the old parameter list.
MetaNameBidMap comments; CollectedParameterMap collectedParameters;
collectParamComments(tdbb, transaction, comments); collectParameters(tdbb, transaction, collectedParameters);
// Delete all old input and output parameters. // Delete all old input and output parameters.
DropProcedureNode::dropParameters(tdbb, transaction, name, package); DropProcedureNode::dropParameters(tdbb, transaction, name, package);
@ -2804,25 +2825,23 @@ bool CreateAlterProcedureNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch
for (FB_SIZE_T i = 0; i < parameters.getCount(); ++i) for (FB_SIZE_T i = 0; i < parameters.getCount(); ++i)
{ {
ParameterClause* parameter = parameters[i]; ParameterClause* parameter = parameters[i];
bid comment; CollectedParameter collectedParameter;
// Find the original comment to recreate in the new parameter. // Find the original parameter to recreate in the new parameter.
if (!comments.get(parameter->name, comment)) collectedParameters.get(parameter->name, collectedParameter);
comment.clear();
storeParameter(tdbb, dsqlScratch, transaction, 0, i, parameter, &comment); storeParameter(tdbb, dsqlScratch, transaction, 0, i, parameter, &collectedParameter);
} }
for (FB_SIZE_T i = 0; i < returns.getCount(); ++i) for (FB_SIZE_T i = 0; i < returns.getCount(); ++i)
{ {
ParameterClause* parameter = returns[i]; ParameterClause* parameter = returns[i];
bid comment; CollectedParameter collectedParameter;
// Find the original comment to recreate in the new parameter. // Find the original parameter to recreate in the new parameter.
if (!comments.get(parameter->name, comment)) collectedParameters.get(parameter->name, collectedParameter);
comment.clear();
storeParameter(tdbb, dsqlScratch, transaction, 1, i, parameter, &comment); storeParameter(tdbb, dsqlScratch, transaction, 1, i, parameter, &collectedParameter);
} }
AutoCacheRequest requestHandle2(tdbb, drq_m_prm_view, DYN_REQUESTS); AutoCacheRequest requestHandle2(tdbb, drq_m_prm_view, DYN_REQUESTS);
@ -2854,7 +2873,7 @@ bool CreateAlterProcedureNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch
void CreateAlterProcedureNode::storeParameter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, void CreateAlterProcedureNode::storeParameter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
jrd_tra* transaction, USHORT parameterType, unsigned pos, ParameterClause* parameter, jrd_tra* transaction, USHORT parameterType, unsigned pos, ParameterClause* parameter,
const bid* comment) const CollectedParameter* collectedParameter)
{ {
Attachment* const attachment = transaction->getAttachment(); Attachment* const attachment = transaction->getAttachment();
TypeClause* type = parameter->type; TypeClause* type = parameter->type;
@ -2934,6 +2953,14 @@ void CreateAlterProcedureNode::storeParameter(thread_db* tdbb, DsqlCompilerScrat
if (parameter->defaultClause) if (parameter->defaultClause)
{ {
if (preserveDefaults)
{
status_exception::raise(
Arg::Gds(isc_dyn_defvaldecl_package_proc) <<
package.c_str() <<
name.c_str());
}
attachment->storeMetaDataBlob(tdbb, transaction, &PRM.RDB$DEFAULT_SOURCE, attachment->storeMetaDataBlob(tdbb, transaction, &PRM.RDB$DEFAULT_SOURCE,
parameter->defaultClause->source); parameter->defaultClause->source);
@ -2951,10 +2978,20 @@ void CreateAlterProcedureNode::storeParameter(thread_db* tdbb, DsqlCompilerScrat
attachment->storeBinaryBlob(tdbb, transaction, &PRM.RDB$DEFAULT_VALUE, attachment->storeBinaryBlob(tdbb, transaction, &PRM.RDB$DEFAULT_VALUE,
dsqlScratch->getBlrData()); dsqlScratch->getBlrData());
} }
else if (preserveDefaults && collectedParameter)
{
PRM.RDB$DEFAULT_SOURCE.NULL = collectedParameter->defaultSource.isEmpty();
if (!PRM.RDB$DEFAULT_SOURCE.NULL)
PRM.RDB$DEFAULT_SOURCE = collectedParameter->defaultSource;
PRM.RDB$DESCRIPTION.NULL = !comment || comment->isEmpty(); PRM.RDB$DEFAULT_VALUE.NULL = collectedParameter->defaultValue.isEmpty();
if (!PRM.RDB$DEFAULT_VALUE.NULL)
PRM.RDB$DEFAULT_VALUE = collectedParameter->defaultValue;
}
PRM.RDB$DESCRIPTION.NULL = !collectedParameter || collectedParameter->comment.isEmpty();
if (!PRM.RDB$DESCRIPTION.NULL) if (!PRM.RDB$DESCRIPTION.NULL)
PRM.RDB$DESCRIPTION = *comment; PRM.RDB$DESCRIPTION = collectedParameter->comment;
} }
END_STORE END_STORE
} }
@ -3049,18 +3086,21 @@ void CreateAlterProcedureNode::compile(thread_db* /*tdbb*/, DsqlCompilerScratch*
invalid = false; invalid = false;
} }
void CreateAlterProcedureNode::collectParamComments(thread_db* tdbb, jrd_tra* transaction, void CreateAlterProcedureNode::collectParameters(thread_db* tdbb, jrd_tra* transaction,
MetaNameBidMap& items) CollectedParameterMap& items)
{ {
AutoRequest requestHandle; AutoRequest requestHandle;
FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction) FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction)
PRM IN RDB$PROCEDURE_PARAMETERS PRM IN RDB$PROCEDURE_PARAMETERS
WITH PRM.RDB$PROCEDURE_NAME EQ name.c_str() AND WITH PRM.RDB$PROCEDURE_NAME EQ name.c_str() AND
PRM.RDB$PACKAGE_NAME EQUIV NULLIF(package.c_str(), '') AND PRM.RDB$PACKAGE_NAME EQUIV NULLIF(package.c_str(), '')
PRM.RDB$DESCRIPTION NOT MISSING
{ {
items.put(PRM.RDB$PARAMETER_NAME, PRM.RDB$DESCRIPTION); CollectedParameter parameter;
parameter.comment = PRM.RDB$DESCRIPTION;
parameter.defaultSource = PRM.RDB$DEFAULT_SOURCE;
parameter.defaultValue = PRM.RDB$DEFAULT_VALUE;
items.put(PRM.RDB$PARAMETER_NAME, parameter);
} }
END_FOR END_FOR
} }

View File

@ -178,6 +178,25 @@ public:
}; };
struct CollectedParameter
{
CollectedParameter()
{
comment.clear();
defaultSource.clear();
defaultValue.clear();
}
bid comment;
bid defaultSource;
bid defaultValue;
};
typedef Firebird::GenericMap<
Firebird::Pair<Firebird::Left<Firebird::MetaName, CollectedParameter> > >
CollectedParameterMap;
class ExecInSecurityDb class ExecInSecurityDb
{ {
public: public:
@ -335,6 +354,7 @@ public:
package(pool), package(pool),
packageOwner(pool), packageOwner(pool),
privateScope(false), privateScope(false),
preserveDefaults(false),
udfReturnPos(0) udfReturnPos(0)
{ {
} }
@ -366,9 +386,10 @@ private:
bool secondPass, bool runTriggers); bool secondPass, bool runTriggers);
void storeArgument(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction, void storeArgument(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction,
unsigned pos, bool returnArg, ParameterClause* parameter, const bid* comment); unsigned pos, bool returnArg, ParameterClause* parameter,
const CollectedParameter* collectedParameter);
void compile(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch); void compile(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch);
void collectParamComments(thread_db* tdbb, jrd_tra* transaction, MetaNameBidMap& items); void collectParameters(thread_db* tdbb, jrd_tra* transaction, CollectedParameterMap& items);
public: public:
Firebird::MetaName name; Firebird::MetaName name;
@ -386,6 +407,7 @@ public:
Firebird::MetaName package; Firebird::MetaName package;
Firebird::string packageOwner; Firebird::string packageOwner;
bool privateScope; bool privateScope;
bool preserveDefaults;
SLONG udfReturnPos; SLONG udfReturnPos;
}; };
@ -473,7 +495,8 @@ public:
invalid(false), invalid(false),
package(pool), package(pool),
packageOwner(pool), packageOwner(pool),
privateScope(false) privateScope(false),
preserveDefaults(false)
{ {
} }
@ -498,9 +521,10 @@ private:
bool executeAlter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction, bool executeAlter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction,
bool secondPass, bool runTriggers); bool secondPass, bool runTriggers);
void storeParameter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction, void storeParameter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction,
USHORT parameterType, unsigned pos, ParameterClause* parameter, const bid* comment); USHORT parameterType, unsigned pos, ParameterClause* parameter,
const CollectedParameter* collectedParameter);
void compile(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch); void compile(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch);
void collectParamComments(thread_db* tdbb, jrd_tra* transaction, MetaNameBidMap& items); void collectParameters(thread_db* tdbb, jrd_tra* transaction, CollectedParameterMap& items);
public: public:
Firebird::MetaName name; Firebird::MetaName name;
@ -517,6 +541,7 @@ public:
Firebird::MetaName package; Firebird::MetaName package;
Firebird::string packageOwner; Firebird::string packageOwner;
bool privateScope; bool privateScope;
bool preserveDefaults;
}; };

View File

@ -895,11 +895,17 @@ void CreatePackageBodyNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlSc
continue; continue;
if (arrays[i] == items) if (arrays[i] == items)
collectPackagedItems(tdbb, transaction, name, existingFuncs, existingProcs, true); {
existingFuncs.clear();
existingProcs.clear();
}
collectPackagedItems(tdbb, transaction, name, existingFuncs, existingProcs, true);
for (unsigned j = 0; j < arrays[i]->getCount(); ++j) for (unsigned j = 0; j < arrays[i]->getCount(); ++j)
{ {
CreateAlterPackageNode::Item& elem = (*arrays[i])[j]; CreateAlterPackageNode::Item& elem = (*arrays[i])[j];
switch (elem.type) switch (elem.type)
{ {
case CreateAlterPackageNode::Item::FUNCTION: case CreateAlterPackageNode::Item::FUNCTION:
@ -908,8 +914,17 @@ void CreatePackageBodyNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlSc
if (arrays[i] == items) if (arrays[i] == items)
func->privateScope = !headerFuncs.exist(Signature(func->name)); func->privateScope = !headerFuncs.exist(Signature(func->name));
else if (existingFuncs.exist(Signature(func->name)))
{
status_exception::raise(
Arg::Gds(isc_no_meta_update) <<
Arg::Gds(isc_dyn_duplicate_package_item) <<
Arg::Str("FUNCTION") << Arg::Str(func->name));
}
func->packageOwner = owner; func->packageOwner = owner;
func->preserveDefaults =
existingFuncs.exist(Signature(func->name)) && arrays[i] == items;
func->executeDdl(tdbb, elem.dsqlScratch, transaction); func->executeDdl(tdbb, elem.dsqlScratch, transaction);
break; break;
} }
@ -920,8 +935,17 @@ void CreatePackageBodyNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlSc
if (arrays[i] == items) if (arrays[i] == items)
proc->privateScope = !headerProcs.exist(Signature(proc->name)); proc->privateScope = !headerProcs.exist(Signature(proc->name));
else if (existingProcs.exist(Signature(proc->name)))
{
status_exception::raise(
Arg::Gds(isc_no_meta_update) <<
Arg::Gds(isc_dyn_duplicate_package_item) <<
Arg::Str("PROCEDURE") << Arg::Str(proc->name));
}
proc->packageOwner = owner; proc->packageOwner = owner;
proc->preserveDefaults =
existingProcs.exist(Signature(proc->name)) && arrays[i] == items;
proc->executeDdl(tdbb, elem.dsqlScratch, transaction); proc->executeDdl(tdbb, elem.dsqlScratch, transaction);
break; break;
} }
@ -967,81 +991,8 @@ void CreatePackageBodyNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlSc
status_exception::raise( status_exception::raise(
Arg::Gds(isc_dyn_procsignat_package) << i->name.c_str() << name.c_str()); Arg::Gds(isc_dyn_procsignat_package) << i->name.c_str() << name.c_str());
} }
for (SortedObjectsArray<ParameterInfo>::iterator j = newProcs[pos].parameters.begin();
j != newProcs[pos].parameters.end(); ++j)
{
if (!j->defaultSource.isEmpty() || !j->defaultValue.isEmpty())
{
status_exception::raise(
Arg::Gds(isc_dyn_defvaldecl_package) << name.c_str() << i->name.c_str());
}
}
} }
// Lets recreate default of public procedure/function parameters
requestHandle.reset(tdbb, drq_m_pkg_prm_defs, DYN_REQUESTS);
FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction)
PRM IN RDB$PROCEDURE_PARAMETERS
WITH PRM.RDB$PACKAGE_NAME EQ name.c_str()
{
FB_SIZE_T pos;
if (existingProcs.find(Signature(getPool(), MetaName(PRM.RDB$PROCEDURE_NAME)), pos))
{
const Signature& proc = existingProcs[pos];
ParameterInfo paramKey(getPool());
paramKey.type = PRM.RDB$PARAMETER_TYPE;
paramKey.number = PRM.RDB$PARAMETER_NUMBER;
if (proc.parameters.find(paramKey, pos))
{
const ParameterInfo& param = proc.parameters[pos];
MODIFY PRM
PRM.RDB$DEFAULT_SOURCE = param.defaultSource;
PRM.RDB$DEFAULT_SOURCE.NULL = param.defaultSource.isEmpty();
PRM.RDB$DEFAULT_VALUE = param.defaultValue;
PRM.RDB$DEFAULT_VALUE.NULL = param.defaultValue.isEmpty();
END_MODIFY
}
}
}
END_FOR
requestHandle.reset(tdbb, drq_m_pkg_arg_defs, DYN_REQUESTS);
FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction)
ARG IN RDB$FUNCTION_ARGUMENTS
WITH ARG.RDB$PACKAGE_NAME EQ name.c_str()
{
FB_SIZE_T pos;
if (existingFuncs.find(Signature(getPool(), MetaName(ARG.RDB$FUNCTION_NAME)), pos))
{
const Signature& func = existingFuncs[pos];
ParameterInfo paramKey(getPool());
paramKey.number = ARG.RDB$ARGUMENT_POSITION;
if (func.parameters.find(paramKey, pos))
{
const ParameterInfo& param = func.parameters[pos];
MODIFY ARG
ARG.RDB$DEFAULT_SOURCE = param.defaultSource;
ARG.RDB$DEFAULT_SOURCE.NULL = param.defaultSource.isEmpty();
ARG.RDB$DEFAULT_VALUE = param.defaultValue;
ARG.RDB$DEFAULT_VALUE.NULL = param.defaultValue.isEmpty();
END_MODIFY
}
}
}
END_FOR
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
DDL_TRIGGER_CREATE_PACKAGE_BODY, name, NULL); DDL_TRIGGER_CREATE_PACKAGE_BODY, name, NULL);

View File

@ -926,7 +926,7 @@ static const struct {
{"dyn_procnotdef_package", 336068872}, {"dyn_procnotdef_package", 336068872},
{"dyn_funcsignat_package", 336068873}, {"dyn_funcsignat_package", 336068873},
{"dyn_procsignat_package", 336068874}, {"dyn_procsignat_package", 336068874},
{"dyn_defvaldecl_package", 336068875}, {"dyn_defvaldecl_package_proc", 336068875},
{"dyn_package_body_exists", 336068877}, {"dyn_package_body_exists", 336068877},
{"dyn_invalid_ddl_func", 336068878}, {"dyn_invalid_ddl_func", 336068878},
{"dyn_newfc_oldsyntax", 336068879}, {"dyn_newfc_oldsyntax", 336068879},
@ -940,6 +940,7 @@ static const struct {
{"dyn_cant_modify_sysobj", 336068895}, {"dyn_cant_modify_sysobj", 336068895},
{"dyn_cant_use_zero_increment", 336068896}, {"dyn_cant_use_zero_increment", 336068896},
{"dyn_cant_use_in_foreignkey", 336068897}, {"dyn_cant_use_in_foreignkey", 336068897},
{"dyn_defvaldecl_package_func", 336068898},
{"gbak_unknown_switch", 336330753}, {"gbak_unknown_switch", 336330753},
{"gbak_page_size_missing", 336330754}, {"gbak_page_size_missing", 336330754},
{"gbak_page_size_toobig", 336330755}, {"gbak_page_size_toobig", 336330755},

View File

@ -960,7 +960,7 @@ const ISC_STATUS isc_dyn_funcnotdef_package = 336068871L;
const ISC_STATUS isc_dyn_procnotdef_package = 336068872L; const ISC_STATUS isc_dyn_procnotdef_package = 336068872L;
const ISC_STATUS isc_dyn_funcsignat_package = 336068873L; const ISC_STATUS isc_dyn_funcsignat_package = 336068873L;
const ISC_STATUS isc_dyn_procsignat_package = 336068874L; const ISC_STATUS isc_dyn_procsignat_package = 336068874L;
const ISC_STATUS isc_dyn_defvaldecl_package = 336068875L; const ISC_STATUS isc_dyn_defvaldecl_package_proc = 336068875L;
const ISC_STATUS isc_dyn_package_body_exists = 336068877L; const ISC_STATUS isc_dyn_package_body_exists = 336068877L;
const ISC_STATUS isc_dyn_invalid_ddl_func = 336068878L; const ISC_STATUS isc_dyn_invalid_ddl_func = 336068878L;
const ISC_STATUS isc_dyn_newfc_oldsyntax = 336068879L; const ISC_STATUS isc_dyn_newfc_oldsyntax = 336068879L;
@ -974,6 +974,7 @@ const ISC_STATUS isc_dyn_duplicate_package_item = 336068894L;
const ISC_STATUS isc_dyn_cant_modify_sysobj = 336068895L; const ISC_STATUS isc_dyn_cant_modify_sysobj = 336068895L;
const ISC_STATUS isc_dyn_cant_use_zero_increment = 336068896L; const ISC_STATUS isc_dyn_cant_use_zero_increment = 336068896L;
const ISC_STATUS isc_dyn_cant_use_in_foreignkey = 336068897L; const ISC_STATUS isc_dyn_cant_use_in_foreignkey = 336068897L;
const ISC_STATUS isc_dyn_defvaldecl_package_func = 336068898L;
const ISC_STATUS isc_gbak_unknown_switch = 336330753L; const ISC_STATUS isc_gbak_unknown_switch = 336330753L;
const ISC_STATUS isc_gbak_page_size_missing = 336330754L; const ISC_STATUS isc_gbak_page_size_missing = 336330754L;
const ISC_STATUS isc_gbak_page_size_toobig = 336330755L; const ISC_STATUS isc_gbak_page_size_toobig = 336330755L;
@ -1303,7 +1304,7 @@ const ISC_STATUS isc_trace_switch_user_only = 337182757L;
const ISC_STATUS isc_trace_switch_param_miss = 337182758L; const ISC_STATUS isc_trace_switch_param_miss = 337182758L;
const ISC_STATUS isc_trace_param_act_notcompat = 337182759L; const ISC_STATUS isc_trace_param_act_notcompat = 337182759L;
const ISC_STATUS isc_trace_mandatory_switch_miss = 337182760L; const ISC_STATUS isc_trace_mandatory_switch_miss = 337182760L;
const ISC_STATUS isc_err_max = 1247; const ISC_STATUS isc_err_max = 1248;
#else /* c definitions */ #else /* c definitions */
@ -2233,7 +2234,7 @@ const ISC_STATUS isc_err_max = 1247;
#define isc_dyn_procnotdef_package 336068872L #define isc_dyn_procnotdef_package 336068872L
#define isc_dyn_funcsignat_package 336068873L #define isc_dyn_funcsignat_package 336068873L
#define isc_dyn_procsignat_package 336068874L #define isc_dyn_procsignat_package 336068874L
#define isc_dyn_defvaldecl_package 336068875L #define isc_dyn_defvaldecl_package_proc 336068875L
#define isc_dyn_package_body_exists 336068877L #define isc_dyn_package_body_exists 336068877L
#define isc_dyn_invalid_ddl_func 336068878L #define isc_dyn_invalid_ddl_func 336068878L
#define isc_dyn_newfc_oldsyntax 336068879L #define isc_dyn_newfc_oldsyntax 336068879L
@ -2247,6 +2248,7 @@ const ISC_STATUS isc_err_max = 1247;
#define isc_dyn_cant_modify_sysobj 336068895L #define isc_dyn_cant_modify_sysobj 336068895L
#define isc_dyn_cant_use_zero_increment 336068896L #define isc_dyn_cant_use_zero_increment 336068896L
#define isc_dyn_cant_use_in_foreignkey 336068897L #define isc_dyn_cant_use_in_foreignkey 336068897L
#define isc_dyn_defvaldecl_package_func 336068898L
#define isc_gbak_unknown_switch 336330753L #define isc_gbak_unknown_switch 336330753L
#define isc_gbak_page_size_missing 336330754L #define isc_gbak_page_size_missing 336330754L
#define isc_gbak_page_size_toobig 336330755L #define isc_gbak_page_size_toobig 336330755L
@ -2576,7 +2578,7 @@ const ISC_STATUS isc_err_max = 1247;
#define isc_trace_switch_param_miss 337182758L #define isc_trace_switch_param_miss 337182758L
#define isc_trace_param_act_notcompat 337182759L #define isc_trace_param_act_notcompat 337182759L
#define isc_trace_mandatory_switch_miss 337182760L #define isc_trace_mandatory_switch_miss 337182760L
#define isc_err_max 1247 #define isc_err_max 1248
#endif #endif

View File

@ -929,7 +929,7 @@ Data source : @4"}, /* eds_statement */
{336068872, "Procedure @1 has not been defined on the package body @2"}, /* dyn_procnotdef_package */ {336068872, "Procedure @1 has not been defined on the package body @2"}, /* dyn_procnotdef_package */
{336068873, "Function @1 has a signature mismatch on package body @2"}, /* dyn_funcsignat_package */ {336068873, "Function @1 has a signature mismatch on package body @2"}, /* dyn_funcsignat_package */
{336068874, "Procedure @1 has a signature mismatch on package body @2"}, /* dyn_procsignat_package */ {336068874, "Procedure @1 has a signature mismatch on package body @2"}, /* dyn_procsignat_package */
{336068875, "Default values for parameters are allowed only in declaration of packaged procedure @1.@2"}, /* dyn_defvaldecl_package */ {336068875, "Default values for parameters are allowed only in declaration of packaged procedure @1.@2"}, /* dyn_defvaldecl_package_proc */
{336068877, "Package body @1 already exists"}, /* dyn_package_body_exists */ {336068877, "Package body @1 already exists"}, /* dyn_package_body_exists */
{336068878, "Invalid DDL statement for function @1"}, /* dyn_invalid_ddl_func */ {336068878, "Invalid DDL statement for function @1"}, /* dyn_invalid_ddl_func */
{336068879, "Cannot alter new style function @1 with ALTER EXTERNAL FUNCTION. Use ALTER FUNCTION instead."}, /* dyn_newfc_oldsyntax */ {336068879, "Cannot alter new style function @1 with ALTER EXTERNAL FUNCTION. Use ALTER FUNCTION instead."}, /* dyn_newfc_oldsyntax */
@ -943,6 +943,7 @@ Data source : @4"}, /* eds_statement */
{336068895, "System @1 @2 cannot be modified"}, /* dyn_cant_modify_sysobj */ {336068895, "System @1 @2 cannot be modified"}, /* dyn_cant_modify_sysobj */
{336068896, "INCREMENT BY 0 is an illegal option for sequence @1"}, /* dyn_cant_use_zero_increment */ {336068896, "INCREMENT BY 0 is an illegal option for sequence @1"}, /* dyn_cant_use_zero_increment */
{336068897, "Can't use @1 in FOREIGN KEY constraint"}, /* dyn_cant_use_in_foreignkey */ {336068897, "Can't use @1 in FOREIGN KEY constraint"}, /* dyn_cant_use_in_foreignkey */
{336068898, "Default values for parameters are allowed only in declaration of packaged function @1.@2"}, /* dyn_defvaldecl_package_func */
{336330753, "found unknown switch"}, /* gbak_unknown_switch */ {336330753, "found unknown switch"}, /* gbak_unknown_switch */
{336330754, "page size parameter missing"}, /* gbak_page_size_missing */ {336330754, "page size parameter missing"}, /* gbak_page_size_missing */
{336330755, "Page size specified (@1) greater than limit (16384 bytes)"}, /* gbak_page_size_toobig */ {336330755, "Page size specified (@1) greater than limit (16384 bytes)"}, /* gbak_page_size_toobig */

View File

@ -925,7 +925,7 @@ static const struct {
{336068872, -901}, /* 264 dyn_procnotdef_package */ {336068872, -901}, /* 264 dyn_procnotdef_package */
{336068873, -901}, /* 265 dyn_funcsignat_package */ {336068873, -901}, /* 265 dyn_funcsignat_package */
{336068874, -901}, /* 266 dyn_procsignat_package */ {336068874, -901}, /* 266 dyn_procsignat_package */
{336068875, -901}, /* 267 dyn_defvaldecl_package */ {336068875, -901}, /* 267 dyn_defvaldecl_package_proc */
{336068877, -901}, /* 269 dyn_package_body_exists */ {336068877, -901}, /* 269 dyn_package_body_exists */
{336068878, -607}, /* 270 dyn_invalid_ddl_func */ {336068878, -607}, /* 270 dyn_invalid_ddl_func */
{336068879, -901}, /* 271 dyn_newfc_oldsyntax */ {336068879, -901}, /* 271 dyn_newfc_oldsyntax */
@ -939,6 +939,7 @@ static const struct {
{336068895, -901}, /* 287 dyn_cant_modify_sysobj */ {336068895, -901}, /* 287 dyn_cant_modify_sysobj */
{336068896, -901}, /* 288 dyn_cant_use_zero_increment */ {336068896, -901}, /* 288 dyn_cant_use_zero_increment */
{336068897, -901}, /* 289 dyn_cant_use_in_foreignkey */ {336068897, -901}, /* 289 dyn_cant_use_in_foreignkey */
{336068898, -901}, /* 290 dyn_defvaldecl_package_func */
{336330753, -901}, /* 1 gbak_unknown_switch */ {336330753, -901}, /* 1 gbak_unknown_switch */
{336330754, -901}, /* 2 gbak_page_size_missing */ {336330754, -901}, /* 2 gbak_page_size_missing */
{336330755, -901}, /* 3 gbak_page_size_toobig */ {336330755, -901}, /* 3 gbak_page_size_toobig */

View File

@ -925,7 +925,7 @@ static const struct {
{336068872, "42000"}, // 264 dyn_procnotdef_package {336068872, "42000"}, // 264 dyn_procnotdef_package
{336068873, "42000"}, // 265 dyn_funcsignat_package {336068873, "42000"}, // 265 dyn_funcsignat_package
{336068874, "42000"}, // 266 dyn_procsignat_package {336068874, "42000"}, // 266 dyn_procsignat_package
{336068875, "42000"}, // 267 dyn_defvaldecl_package {336068875, "42000"}, // 267 dyn_defvaldecl_package_proc
{336068877, "42000"}, // 269 dyn_package_body_exists {336068877, "42000"}, // 269 dyn_package_body_exists
{336068878, "HY000"}, // 270 dyn_invalid_ddl_func {336068878, "HY000"}, // 270 dyn_invalid_ddl_func
{336068879, "42000"}, // 271 dyn_newfc_oldsyntax {336068879, "42000"}, // 271 dyn_newfc_oldsyntax
@ -939,6 +939,7 @@ static const struct {
{336068895, "42000"}, // 287 dyn_cant_modify_sysobj {336068895, "42000"}, // 287 dyn_cant_modify_sysobj
{336068896, "42000"}, // 288 dyn_cant_use_zero_increment {336068896, "42000"}, // 288 dyn_cant_use_zero_increment
{336068897, "42000"}, // 289 dyn_cant_use_in_foreignkey {336068897, "42000"}, // 289 dyn_cant_use_in_foreignkey
{336068898, "42000"}, // 290 dyn_defvaldecl_package_func
{336330753, "00000"}, // 1 gbak_unknown_switch {336330753, "00000"}, // 1 gbak_unknown_switch
{336330754, "00000"}, // 2 gbak_page_size_missing {336330754, "00000"}, // 2 gbak_page_size_missing
{336330755, "00000"}, // 3 gbak_page_size_toobig {336330755, "00000"}, // 3 gbak_page_size_toobig

View File

@ -205,8 +205,6 @@ enum drq_type_t
drq_l_pkg_procs, // lookup packaged procedures drq_l_pkg_procs, // lookup packaged procedures
drq_l_pkg_proc_args, // lookup packaged procedure arguments drq_l_pkg_proc_args, // lookup packaged procedure arguments
drq_e_pkg_prv, // erase package privileges drq_e_pkg_prv, // erase package privileges
drq_m_pkg_prm_defs, // modify packaged procedure parameters defaults
drq_m_pkg_arg_defs, // modify packaged function arguments defaults
drq_s2_difference, // Store backup difference file, DYN_mod's change_backup_mode drq_s2_difference, // Store backup difference file, DYN_mod's change_backup_mode
drq_l_relation, // lookup relation before erase drq_l_relation, // lookup relation before erase
drq_l_fun_name, // lookup function name drq_l_fun_name, // lookup function name

View File

@ -6,7 +6,7 @@ set bulk_insert INSERT INTO FACILITIES (LAST_CHANGE, FACILITY, FAC_CODE, MAX_NUM
('2015-01-07 18:01:51', 'GFIX', 3, 134) ('2015-01-07 18:01:51', 'GFIX', 3, 134)
('1996-11-07 13:39:40', 'GPRE', 4, 1) ('1996-11-07 13:39:40', 'GPRE', 4, 1)
('2012-08-27 21:26:00', 'DSQL', 7, 33) ('2012-08-27 21:26:00', 'DSQL', 7, 33)
('2014-04-22 16:39:03', 'DYN', 8, 290) ('2015-10-07 12:30:00', 'DYN', 8, 291)
('1996-11-07 13:39:40', 'INSTALL', 10, 1) ('1996-11-07 13:39:40', 'INSTALL', 10, 1)
('1996-11-07 13:38:41', 'TEST', 11, 4) ('1996-11-07 13:38:41', 'TEST', 11, 4)
('2015-07-23 14:20:00', 'GBAK', 12, 370) ('2015-07-23 14:20:00', 'GBAK', 12, 370)

View File

@ -1934,7 +1934,7 @@ COMMIT WORK;
('dyn_procnotdef_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 264, NULL, 'Procedure @1 has not been defined on the package body @2', NULL, NULL); ('dyn_procnotdef_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 264, NULL, 'Procedure @1 has not been defined on the package body @2', NULL, NULL);
('dyn_funcsignat_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 265, NULL, 'Function @1 has a signature mismatch on package body @2', NULL, NULL); ('dyn_funcsignat_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 265, NULL, 'Function @1 has a signature mismatch on package body @2', NULL, NULL);
('dyn_procsignat_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 266, NULL, 'Procedure @1 has a signature mismatch on package body @2', NULL, NULL); ('dyn_procsignat_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 266, NULL, 'Procedure @1 has a signature mismatch on package body @2', NULL, NULL);
('dyn_defvaldecl_package', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 267, NULL, 'Default values for parameters are allowed only in declaration of packaged procedure @1.@2', NULL, NULL); ('dyn_defvaldecl_package_proc', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 267, NULL, 'Default values for parameters are allowed only in declaration of packaged procedure @1.@2', NULL, NULL);
('dyn_dup_function', 'DYN_define_function', 'dyn_def.epp', NULL, 8, 268, NULL, 'Function @1 already exists', NULL, NULL); ('dyn_dup_function', 'DYN_define_function', 'dyn_def.epp', NULL, 8, 268, NULL, 'Function @1 already exists', NULL, NULL);
('dyn_package_body_exists', NULL, 'DdlNodes.epp/PackageNodes.epp', NULL, 8, 269, NULL, 'Package body @1 already exists', NULL, NULL); ('dyn_package_body_exists', NULL, 'DdlNodes.epp/PackageNodes.epp', NULL, 8, 269, NULL, 'Package body @1 already exists', NULL, NULL);
('dyn_invalid_ddl_func', 'CreateAlterFunctionNode::compile', 'DdlNodes.epp', NULL, 8, 270, NULL, 'Invalid DDL statement for function @1', NULL, NULL); ('dyn_invalid_ddl_func', 'CreateAlterFunctionNode::compile', 'DdlNodes.epp', NULL, 8, 270, NULL, 'Invalid DDL statement for function @1', NULL, NULL);
@ -1957,6 +1957,7 @@ COMMIT WORK;
('dyn_cant_modify_sysobj', NULL, 'DdlNodes.epp', NULL, 8, 287, NULL, 'System @1 @2 cannot be modified', NULL, 'Ex: System generator rdb$... cannot be modified'); ('dyn_cant_modify_sysobj', NULL, 'DdlNodes.epp', NULL, 8, 287, NULL, 'System @1 @2 cannot be modified', NULL, 'Ex: System generator rdb$... cannot be modified');
('dyn_cant_use_zero_increment', NULL, 'DdlNodes.epp', NULL, 8, 288, NULL, 'INCREMENT BY 0 is an illegal option for sequence @1', NULL, NULL); ('dyn_cant_use_zero_increment', NULL, 'DdlNodes.epp', NULL, 8, 288, NULL, 'INCREMENT BY 0 is an illegal option for sequence @1', NULL, NULL);
('dyn_cant_use_in_foreignkey', NULL, 'DdlNodes.epp', NULL, 8, 289, NULL, 'Can''t use @1 in FOREIGN KEY constraint', NULL, NULL); ('dyn_cant_use_in_foreignkey', NULL, 'DdlNodes.epp', NULL, 8, 289, NULL, 'Can''t use @1 in FOREIGN KEY constraint', NULL, NULL);
('dyn_defvaldecl_package_func', 'CreatePackageBodyNode::execute', 'PackageNodes.epp', NULL, 8, 290, NULL, 'Default values for parameters are allowed only in declaration of packaged function @1.@2', NULL, NULL);
COMMIT WORK; COMMIT WORK;
-- TEST -- TEST
(NULL, 'main', 'test.c', NULL, 11, 0, NULL, 'This is a modified text message', NULL, NULL); (NULL, 'main', 'test.c', NULL, 11, 0, NULL, 'This is a modified text message', NULL, NULL);

View File

@ -914,7 +914,7 @@ set bulk_insert INSERT INTO SYSTEM_ERRORS (SQL_CODE, SQL_CLASS, SQL_SUBCLASS, FA
(-901, '42', '000', 8, 264, 'dyn_procnotdef_package', NULL, NULL) (-901, '42', '000', 8, 264, 'dyn_procnotdef_package', NULL, NULL)
(-901, '42', '000', 8, 265, 'dyn_funcsignat_package', NULL, NULL) (-901, '42', '000', 8, 265, 'dyn_funcsignat_package', NULL, NULL)
(-901, '42', '000', 8, 266, 'dyn_procsignat_package', NULL, NULL) (-901, '42', '000', 8, 266, 'dyn_procsignat_package', NULL, NULL)
(-901, '42', '000', 8, 267, 'dyn_defvaldecl_package', NULL, NULL) (-901, '42', '000', 8, 267, 'dyn_defvaldecl_package_proc', NULL, NULL)
(-901, '42', '000', 8, 269, 'dyn_package_body_exists', NULL, NULL) (-901, '42', '000', 8, 269, 'dyn_package_body_exists', NULL, NULL)
(-607, 'HY', '000', 8, 270, 'dyn_invalid_ddl_func' NULL, NULL) (-607, 'HY', '000', 8, 270, 'dyn_invalid_ddl_func' NULL, NULL)
(-901, '42', '000', 8, 271, 'dyn_newfc_oldsyntax', NULL, NULL) (-901, '42', '000', 8, 271, 'dyn_newfc_oldsyntax', NULL, NULL)
@ -928,6 +928,7 @@ set bulk_insert INSERT INTO SYSTEM_ERRORS (SQL_CODE, SQL_CLASS, SQL_SUBCLASS, FA
(-901, '42', '000', 8, 287, 'dyn_cant_modify_sysobj', NULL, NULL) (-901, '42', '000', 8, 287, 'dyn_cant_modify_sysobj', NULL, NULL)
(-901, '42', '000', 8, 288, 'dyn_cant_use_zero_increment', NULL, NULL) (-901, '42', '000', 8, 288, 'dyn_cant_use_zero_increment', NULL, NULL)
(-901, '42', '000', 8, 289, 'dyn_cant_use_in_foreignkey', NULL, NULL) (-901, '42', '000', 8, 289, 'dyn_cant_use_in_foreignkey', NULL, NULL)
(-901, '42', '000', 8, 290, 'dyn_defvaldecl_package_func', NULL, NULL)
-- GBAK -- GBAK
(-901, '00', '000', 12, 1, 'gbak_unknown_switch', NULL, NULL) (-901, '00', '000', 12, 1, 'gbak_unknown_switch', NULL, NULL)
(-901, '00', '000', 12, 2, 'gbak_page_size_missing', NULL, NULL) (-901, '00', '000', 12, 2, 'gbak_page_size_missing', NULL, NULL)