mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
e6b563f8be
- in DOMNODELIST::DropItem if (Listp == NULL || Listp->length <= n) return true; is wrong, should be: if (Listp == NULL || Listp->length < n) return true; - Crash in discovery with libxml2 in XMLColumns because: if (!tdp->Usedom) // nl was destroyed vp->nl = vp->pn->GetChildElements(g); is executed with vp->pn uninitialized. Fixed by adding: vp->pn = node; line 264. -In discovery with libxml2 some columns are not found. Because list was not recovered properly, nodes being modified and not reallocated. Fixed lines 214 and 277. modified: storage/connect/domdoc.cpp modified: storage/connect/tabxml.cpp Add support for zipped table files modified: storage/connect/domdoc.cpp modified: storage/connect/domdoc.h modified: storage/connect/filamap.cpp modified: storage/connect/filamap.h modified: storage/connect/filamzip.cpp modified: storage/connect/filamzip.h modified: storage/connect/ha_connect.cc modified: storage/connect/libdoc.cpp modified: storage/connect/plgdbutl.cpp modified: storage/connect/plgxml.cpp modified: storage/connect/plgxml.h modified: storage/connect/tabdos.cpp modified: storage/connect/tabdos.h modified: storage/connect/tabfmt.cpp modified: storage/connect/tabjson.cpp modified: storage/connect/tabxml.cpp
120 lines
4.3 KiB
C++
120 lines
4.3 KiB
C++
/*************** FilAMap H Declares Source Code File (.H) **************/
|
|
/* Name: FILAMAP.H Version 1.3 */
|
|
/* */
|
|
/* (C) Copyright to the author Olivier BERTRAND 2005-2014 */
|
|
/* */
|
|
/* This file contains the MAP file access method classes declares. */
|
|
/***********************************************************************/
|
|
#ifndef __FILAMAP_H
|
|
#define __FILAMAP_H
|
|
|
|
#include "block.h"
|
|
#include "filamtxt.h"
|
|
|
|
typedef class MAPFAM *PMAPFAM;
|
|
|
|
/***********************************************************************/
|
|
/* This is the variable file access method using file mapping. */
|
|
/***********************************************************************/
|
|
class DllExport MAPFAM : public TXTFAM {
|
|
friend class TDBJSON;
|
|
public:
|
|
// Constructor
|
|
MAPFAM(PDOSDEF tdp);
|
|
MAPFAM(PMAPFAM tmfp);
|
|
|
|
// Implementation
|
|
virtual AMT GetAmType(void) {return TYPE_AM_MAP;}
|
|
virtual int GetPos(void);
|
|
virtual int GetNextPos(void);
|
|
virtual PTXF Duplicate(PGLOBAL g)
|
|
{return (PTXF)new(g) MAPFAM(this);}
|
|
|
|
// Methods
|
|
virtual void Reset(void);
|
|
virtual int GetFileLength(PGLOBAL g);
|
|
virtual int Cardinality(PGLOBAL g) {return (g) ? -1 : 0;}
|
|
virtual int MaxBlkSize(PGLOBAL g, int s) {return s;}
|
|
virtual int GetRowID(void);
|
|
virtual bool RecordPos(PGLOBAL g);
|
|
virtual bool SetPos(PGLOBAL g, int recpos);
|
|
virtual int SkipRecord(PGLOBAL g, bool header);
|
|
virtual bool OpenTableFile(PGLOBAL g);
|
|
virtual bool DeferReading(void) {return false;}
|
|
virtual int GetNext(PGLOBAL g) {return RC_EF;}
|
|
virtual int ReadBuffer(PGLOBAL g);
|
|
virtual int WriteBuffer(PGLOBAL g);
|
|
virtual int DeleteRecords(PGLOBAL g, int irc);
|
|
virtual void CloseTableFile(PGLOBAL g, bool abort);
|
|
virtual void Rewind(void);
|
|
|
|
protected:
|
|
virtual int InitDelete(PGLOBAL g, int fpos, int spos);
|
|
|
|
// Members
|
|
char *Memory; // Pointer on file mapping view.
|
|
char *Mempos; // Position of next data to read
|
|
char *Fpos; // Position of last read record
|
|
char *Tpos; // Target Position for delete move
|
|
char *Spos; // Start position for delete move
|
|
char *Top; // Mark end of file mapping view
|
|
}; // end of class MAPFAM
|
|
|
|
/***********************************************************************/
|
|
/* This is the blocked file access method using file mapping. */
|
|
/***********************************************************************/
|
|
class DllExport MBKFAM : public MAPFAM {
|
|
public:
|
|
// Constructor
|
|
MBKFAM(PDOSDEF tdp);
|
|
MBKFAM(PMAPFAM tmfp) : MAPFAM(tmfp) {}
|
|
|
|
// Implementation
|
|
virtual PTXF Duplicate(PGLOBAL g)
|
|
{return (PTXF)new(g) MBKFAM(this);}
|
|
|
|
// Methods
|
|
virtual void Reset(void);
|
|
virtual int Cardinality(PGLOBAL g);
|
|
virtual int MaxBlkSize(PGLOBAL g, int s)
|
|
{return TXTFAM::MaxBlkSize(g, s);}
|
|
virtual int GetRowID(void);
|
|
virtual int SkipRecord(PGLOBAL g, bool header);
|
|
virtual int ReadBuffer(PGLOBAL g);
|
|
virtual void Rewind(void);
|
|
|
|
protected:
|
|
// No additional members
|
|
}; // end of class MBKFAM
|
|
|
|
/***********************************************************************/
|
|
/* This is the fixed file access method using file mapping. */
|
|
/***********************************************************************/
|
|
class DllExport MPXFAM : public MBKFAM {
|
|
public:
|
|
// Constructor
|
|
MPXFAM(PDOSDEF tdp);
|
|
MPXFAM(PMAPFAM tmfp) : MBKFAM(tmfp) {}
|
|
|
|
// Implementation
|
|
virtual int GetPos(void);
|
|
virtual PTXF Duplicate(PGLOBAL g)
|
|
{return (PTXF)new(g) MPXFAM(this);}
|
|
|
|
// Methods
|
|
virtual int Cardinality(PGLOBAL g) {return TXTFAM::Cardinality(g);}
|
|
virtual int MaxBlkSize(PGLOBAL g, int s)
|
|
{return TXTFAM::MaxBlkSize(g, s);}
|
|
virtual bool SetPos(PGLOBAL g, int recpos);
|
|
virtual int GetNextPos(void) {return GetPos() + 1;}
|
|
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
|
|
|
|
#endif // __FILAMAP_H
|