"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/dsql/PackageNodes.epp" between
Firebird-3.0.2.32703-0.tar.bz2 and Firebird-3.0.4.33054-0.tar.bz2

About: Firebird is a relational database offering many ANSI SQL standard features.

PackageNodes.epp  (Firebird-3.0.2.32703-0.tar.bz2):PackageNodes.epp  (Firebird-3.0.4.33054-0.tar.bz2)
skipping to change at line 144 skipping to change at line 144
} }
bool operator !=(const ParameterInfo& o) const bool operator !=(const ParameterInfo& o) const
{ {
return !(*this == o); return !(*this == o);
} }
}; };
struct Signature struct Signature
{ {
const static unsigned FLAG_DETERMINISTIC = 0x01;
Signature(MemoryPool& p, const MetaName& aName) Signature(MemoryPool& p, const MetaName& aName)
: name(p, aName), : name(p, aName),
parameters(p), parameters(p),
flags(0),
defined(false) defined(false)
{ {
} }
explicit Signature(const MetaName& aName) explicit Signature(const MetaName& aName)
: name(aName), : name(aName),
parameters(*getDefaultMemoryPool()), parameters(*getDefaultMemoryPool()),
flags(0),
defined(false) defined(false)
{ {
} }
explicit Signature(MemoryPool& p) explicit Signature(MemoryPool& p)
: name(p), : name(p),
parameters(p), parameters(p),
flags(0),
defined(false) defined(false)
{ {
} }
Signature(MemoryPool& p, const Signature& o) Signature(MemoryPool& p, const Signature& o)
: name(p, o.name), : name(p, o.name),
parameters(p), parameters(p),
flags(o.flags),
defined(o.defined) defined(o.defined)
{ {
for (SortedObjectsArray<ParameterInfo>::const_iterator i = o.parameters.begin(); for (SortedObjectsArray<ParameterInfo>::const_iterator i = o.parameters.begin();
i != o.parameters.end(); ++i) i != o.parameters.end(); ++i)
{ {
parameters.add(*i); parameters.add(*i);
} }
} }
bool operator >(const Signature& o) const bool operator >(const Signature& o) const
{ {
return name > o.name; return name > o.name;
} }
bool operator ==(const Signature& o) const bool operator ==(const Signature& o) const
{ {
if (name != o.name || parameters.getCount() != o.paramete rs.getCount()) if (name != o.name || flags != o.flags || parameters.getC ount() != o.parameters.getCount())
return false; return false;
for (SortedObjectsArray<ParameterInfo>::const_iterator i = parameters.begin(), for (SortedObjectsArray<ParameterInfo>::const_iterator i = parameters.begin(),
j = o.parameters.begin(); j = o.parameters.begin();
i != parameters.end(); ++i, ++j) i != parameters.end(); ++i, ++j)
{ {
if (*i != *j) if (*i != *j)
return false; return false;
} }
return true; return true;
} }
bool operator !=(const Signature& o) const bool operator !=(const Signature& o) const
{ {
return !(*this == o); return !(*this == o);
} }
MetaName name; MetaName name;
SortedObjectsArray<ParameterInfo> parameters; SortedObjectsArray<ParameterInfo> parameters;
unsigned flags;
bool defined; bool defined;
}; };
// Return function and procedure names (in the user charset) and optional ly its details for a // Return function and procedure names (in the user charset) and optional ly its details for a
// given package. // given package.
void collectPackagedItems(thread_db* tdbb, jrd_tra* transaction, const Me taName& metaName, void collectPackagedItems(thread_db* tdbb, jrd_tra* transaction, const Me taName& metaName,
SortedObjectsArray<Signature>& functions, SortedObjectsArray<Signature>& functions,
SortedObjectsArray<Signature>& procedures, bool details) SortedObjectsArray<Signature>& procedures, bool details)
{ {
AutoCacheRequest requestHandle(tdbb, drq_l_pkg_funcs, DYN_REQUEST S); AutoCacheRequest requestHandle(tdbb, drq_l_pkg_funcs, DYN_REQUEST S);
AutoCacheRequest requestHandle2(tdbb, drq_l_pkg_func_args, DYN_RE QUESTS); AutoCacheRequest requestHandle2(tdbb, drq_l_pkg_func_args, DYN_RE QUESTS);
FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction) FOR (REQUEST_HANDLE requestHandle TRANSACTION_HANDLE transaction)
FUN IN RDB$FUNCTIONS FUN IN RDB$FUNCTIONS
WITH FUN.RDB$PACKAGE_NAME EQ metaName.c_str() WITH FUN.RDB$PACKAGE_NAME EQ metaName.c_str()
{ {
Signature function(FUN.RDB$FUNCTION_NAME); Signature function(FUN.RDB$FUNCTION_NAME);
function.defined = !FUN.RDB$FUNCTION_BLR.NULL || !FUN.RDB $ENTRYPOINT.NULL; function.defined = !FUN.RDB$FUNCTION_BLR.NULL || !FUN.RDB $ENTRYPOINT.NULL;
if (!FUN.RDB$DETERMINISTIC_FLAG.NULL && FUN.RDB$DETERMINI
STIC_FLAG != 0)
function.flags |= Signature::FLAG_DETERMINISTIC;
if (details) if (details)
{ {
FOR (REQUEST_HANDLE requestHandle2 TRANSACTION_HA NDLE transaction) FOR (REQUEST_HANDLE requestHandle2 TRANSACTION_HA NDLE transaction)
ARG IN RDB$FUNCTION_ARGUMENTS CROSS ARG IN RDB$FUNCTION_ARGUMENTS CROSS
FLD IN RDB$FIELDS FLD IN RDB$FIELDS
WITH ARG.RDB$PACKAGE_NAME EQ metaName.c_s tr() AND WITH ARG.RDB$PACKAGE_NAME EQ metaName.c_s tr() AND
ARG.RDB$FUNCTION_NAME EQ FUN.RDB $FUNCTION_NAME AND ARG.RDB$FUNCTION_NAME EQ FUN.RDB $FUNCTION_NAME AND
FLD.RDB$FIELD_NAME EQ ARG.RDB$FI ELD_SOURCE FLD.RDB$FIELD_NAME EQ ARG.RDB$FI ELD_SOURCE
{ {
ParameterInfo parameter(*getDefaultMemory Pool()); ParameterInfo parameter(*getDefaultMemory Pool());
 End of changes. 8 change blocks. 
1 lines changed or deleted 12 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)