diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2014-08-16 16:46:35 +0200 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2014-08-16 16:46:35 +0200 |
commit | 3a69c854c55025acc687e5852d7be5e38a38934e (patch) | |
tree | ea7ae3472aeae7f4f2a8052198373a988c97ff5a /storage/connect/filamap.h | |
parent | 78b1bdd2baec17eb02457214ebbc7602d0f455c3 (diff) | |
download | mariadb-git-3a69c854c55025acc687e5852d7be5e38a38934e.tar.gz |
- 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
Diffstat (limited to 'storage/connect/filamap.h')
-rw-r--r-- | storage/connect/filamap.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/storage/connect/filamap.h b/storage/connect/filamap.h index 7d3203d7ff2..1d85fa36155 100644 --- a/storage/connect/filamap.h +++ b/storage/connect/filamap.h @@ -47,7 +47,7 @@ class DllExport MAPFAM : public TXTFAM { virtual void Rewind(void); protected: - bool MakeDeletedFile(PGLOBAL g); + virtual int InitDelete(PGLOBAL g, int fpos, int spos); // Members char *Memory; // Pointer on file mapping view. @@ -104,11 +104,14 @@ class DllExport MPXFAM : public MBKFAM { virtual int MaxBlkSize(PGLOBAL g, int s) {return TXTFAM::MaxBlkSize(g, s);} virtual bool SetPos(PGLOBAL g, int recpos); + virtual int GetNextPos(void) {return (int)Fpos + Nrec;} virtual bool DeferReading(void) {return false;} virtual int ReadBuffer(PGLOBAL g); virtual int WriteBuffer(PGLOBAL g); protected: + virtual int InitDelete(PGLOBAL g, int fpos, int spos); + // No additional members }; // end of class MPXFAM |