RecordSource.h (Firebird-3.0.2.32703-0.tar.bz2) | : | RecordSource.h (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 837 | skipping to change at line 837 | |||
private: | private: | |||
NestConst<RecordSource> m_arg1; | NestConst<RecordSource> m_arg1; | |||
NestConst<RecordSource> m_arg2; | NestConst<RecordSource> m_arg2; | |||
}; | }; | |||
class HashJoin : public RecordSource | class HashJoin : public RecordSource | |||
{ | { | |||
class HashTable; | class HashTable; | |||
typedef Firebird::Array<USHORT> KeyLengthArray; | ||||
typedef Firebird::Array<UCHAR> KeyBuffer; | ||||
struct SubStream | struct SubStream | |||
{ | { | |||
union | union | |||
{ | { | |||
RecordSource* source; | RecordSource* source; | |||
BufferedStream* buffer; | BufferedStream* buffer; | |||
}; | }; | |||
NestValueArray* keys; | NestValueArray* keys; | |||
KeyLengthArray* keyLengths; | ULONG* keyLengths; | |||
ULONG totalKeyLength; | ULONG totalKeyLength; | |||
}; | }; | |||
struct Impure : public RecordSource::Impure | struct Impure : public RecordSource::Impure | |||
{ | { | |||
KeyBuffer* irsb_arg_buffer; | ||||
HashTable* irsb_hash_table; | HashTable* irsb_hash_table; | |||
UCHAR* irsb_leader_buffer; | UCHAR* irsb_leader_buffer; | |||
ULONG* irsb_record_counts; | ULONG irsb_leader_hash; | |||
}; | }; | |||
public: | public: | |||
HashJoin(thread_db* tdbb, CompilerScratch* csb, FB_SIZE_T count, | HashJoin(thread_db* tdbb, CompilerScratch* csb, FB_SIZE_T count, | |||
RecordSource* const* args, NestValueArray* const * keys); | RecordSource* const* args, NestValueArray* const * keys); | |||
void open(thread_db* tdbb) const; | void open(thread_db* tdbb) const; | |||
void close(thread_db* tdbb) const; | void close(thread_db* tdbb) const; | |||
bool getRecord(thread_db* tdbb) const; | bool getRecord(thread_db* tdbb) const; | |||
skipping to change at line 882 | skipping to change at line 878 | |||
void print(thread_db* tdbb, Firebird::string& plan, | void print(thread_db* tdbb, Firebird::string& plan, | |||
bool detailed, unsigned level) const; | bool detailed, unsigned level) const; | |||
void markRecursive(); | void markRecursive(); | |||
void invalidateRecords(jrd_req* request) const; | void invalidateRecords(jrd_req* request) const; | |||
void findUsedStreams(StreamList& streams, bool expandAll = false) const; | void findUsedStreams(StreamList& streams, bool expandAll = false) const; | |||
void nullRecords(thread_db* tdbb) const; | void nullRecords(thread_db* tdbb) const; | |||
private: | private: | |||
void computeKeys(thread_db* tdbb, jrd_req* request, | ULONG computeHash(thread_db* tdbb, jrd_req* request, | |||
const SubStream& sub, UCHAR* buf | const SubStream& sub, UCHAR* bu | |||
fer) const; | ffer) const; | |||
bool fetchRecord(thread_db* tdbb, Impure* impure, FB_SIZE_T strea m) const; | bool fetchRecord(thread_db* tdbb, Impure* impure, FB_SIZE_T strea m) const; | |||
SubStream m_leader; | SubStream m_leader; | |||
Firebird::Array<SubStream> m_args; | Firebird::Array<SubStream> m_args; | |||
}; | }; | |||
class MergeJoin : public RecordSource | class MergeJoin : public RecordSource | |||
{ | { | |||
struct MergeFile | struct MergeFile | |||
{ | { | |||
End of changes. 5 change blocks. | ||||
9 lines changed or deleted | 5 lines changed or added |