mirror of
https://github.com/MariaDB/server.git
synced 2026-05-10 17:14:30 +02:00
- Modifies the way indexed UPDATE/DELETE are sorted in order to execute
them sorted by file position. Firstly a new value is stored in indexes to know if they are sorted, preventing to do the sorting when it is not needed. Secondly, almost all in now done in connect instead of being done by the different file access method classes. This pepares the future use of temporary files for all table types and also fix the bug that was occuring when partially using a multi-column index because of false MRR like call of position followed by unsorted rnd_pos no more using indexing. modified: storage/connect/connect.cc storage/connect/filamap.cpp storage/connect/filamap.h storage/connect/filamdbf.cpp storage/connect/filamdbf.h storage/connect/filamfix.cpp storage/connect/filamfix.h storage/connect/filamtxt.cpp storage/connect/filamtxt.h storage/connect/filamvct.cpp storage/connect/filamvct.h storage/connect/tabdos.cpp storage/connect/tabdos.h storage/connect/tabfix.h storage/connect/tabfmt.cpp storage/connect/tabfmt.h storage/connect/xindex.cpp storage/connect/xindex.h storage/connect/xtable.h
This commit is contained in:
parent
78b1bdd2ba
commit
3a69c854c5
19 changed files with 591 additions and 913 deletions
|
|
@ -136,6 +136,7 @@ class DllExport TDBDOS : public TDBASE {
|
|||
virtual PTDB CopyOne(PTABS t);
|
||||
virtual void ResetDB(void) {Txfp->Reset();}
|
||||
virtual bool IsUsingTemp(PGLOBAL g);
|
||||
virtual bool IsIndexed(void) {return Indxd;}
|
||||
virtual void ResetSize(void) {MaxSize = Cardinal = -1;}
|
||||
virtual int ResetTableOpt(PGLOBAL g, bool dop, bool dox);
|
||||
virtual int MakeBlockValues(PGLOBAL g);
|
||||
|
|
@ -176,6 +177,7 @@ class DllExport TDBDOS : public TDBASE {
|
|||
bool GetDistinctColumnValues(PGLOBAL g, int nrec);
|
||||
|
||||
protected:
|
||||
virtual bool PrepareWriting(PGLOBAL g);
|
||||
PBF CheckBlockFilari(PGLOBAL g, PXOB *arg, int op, bool *cnv);
|
||||
|
||||
// Members
|
||||
|
|
@ -185,6 +187,7 @@ class DllExport TDBDOS : public TDBASE {
|
|||
PFIL SavFil; // Saved hidden filter
|
||||
char *To_Line; // Points to current processed line
|
||||
bool Abort; // TRUE when aborting UPDATE/DELETE
|
||||
bool Indxd; // TRUE for indexed UPDATE/DELETE
|
||||
int Lrecl; // Logical Record Length
|
||||
int AvgLen; // Logical Record Average Length
|
||||
//int Xeval; // BlockTest return value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue