mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
f930f4eda9
a temporary file should be used for UPDATE/DELETE of file tables. Also use the "sorted" argument of index_init to help decide if sorting of positions must be done. modified: storage/connect/checklvl.h storage/connect/connect.cc storage/connect/connect.h storage/connect/filamdbf.cpp storage/connect/filamfix.cpp storage/connect/filamfix.h storage/connect/filamtxt.cpp storage/connect/ha_connect.cc storage/connect/mysql-test/connect/r/part_table.result storage/connect/plgdbsem.h storage/connect/plgdbutl.cpp storage/connect/reldef.cpp storage/connect/tabdos.cpp storage/connect/tabdos.h storage/connect/tabfix.cpp storage/connect/tabfmt.cpp storage/connect/tabvct.cpp storage/connect/tabvct.h storage/connect/xindex.cpp - Fix a bug in TDBASE::ColDB that caused some special columns not to be found in the column list and reallocated without their Value causing a crash of some queries. modified: storage/connect/table.cpp - Fix a bug causing RestoreNrec to be called before closing a table causing a wrong value given to Spos modified: storage/connect/tabdos.cpp storage/connect/xindex.cpp - Add a new CONNECT global variable connect_exact_info. Set to ON, it tells CONNECT to return exact record numbers on info queries. If OFF it just gives an estimate. In version 10.0.13 this was unconditionally ON and caused info queries on remote tables to be extremely long and was the subject of MDEV-6612. modified: storage/connect/ha_connect.cc storage/connect/tabdos.cpp storage/connect/tabmysql.cpp storage/connect/tabodbc.cpp
93 lines
3.5 KiB
C++
93 lines
3.5 KiB
C++
/************** FilAMFix H Declares Source Code File (.H) **************/
|
|
/* Name: FILAMFIX.H Version 1.3 */
|
|
/* */
|
|
/* (C) Copyright to the author Olivier BERTRAND 2005 - 2014 */
|
|
/* */
|
|
/* This file contains the FIX file access method classes declares. */
|
|
/***********************************************************************/
|
|
|
|
#ifndef __FILAMFIX_H
|
|
#define __FILAMFIX_H
|
|
|
|
#include "filamtxt.h"
|
|
|
|
typedef class FIXFAM *PFIXFAM;
|
|
typedef class BGXFAM *PBGXFAM;
|
|
|
|
/***********************************************************************/
|
|
/* This is the DOS/UNIX Access Method class declaration for standard */
|
|
/* files with fixed record format (FIX, BIN) */
|
|
/***********************************************************************/
|
|
class DllExport FIXFAM : public BLKFAM {
|
|
public:
|
|
// Constructor
|
|
FIXFAM(PDOSDEF tdp);
|
|
FIXFAM(PFIXFAM txfp);
|
|
|
|
// Implementation
|
|
virtual AMT GetAmType(void) {return TYPE_AM_FIX;}
|
|
virtual PTXF Duplicate(PGLOBAL g)
|
|
{return (PTXF)new(g) FIXFAM(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 Fpos + 1;}
|
|
virtual bool AllocateBuffer(PGLOBAL g);
|
|
virtual void ResetBuffer(PGLOBAL g);
|
|
virtual int WriteModifiedBlock(PGLOBAL g);
|
|
virtual int ReadBuffer(PGLOBAL g);
|
|
virtual int WriteBuffer(PGLOBAL g);
|
|
virtual int DeleteRecords(PGLOBAL g, int irc);
|
|
virtual void CloseTableFile(PGLOBAL g, bool abort);
|
|
|
|
protected:
|
|
virtual bool CopyHeader(PGLOBAL g) {return false;}
|
|
virtual bool MoveIntermediateLines(PGLOBAL g, bool *b);
|
|
virtual int InitDelete(PGLOBAL g, int fpos, int spos);
|
|
|
|
// No additional members
|
|
}; // end of class FIXFAM
|
|
|
|
|
|
/***********************************************************************/
|
|
/* This is the DOS/UNIX Access Method class declaration for files */
|
|
/* that are standard files with columns starting at fixed offset */
|
|
/* This class is for fixed formatted files of more than 2 gigabytes. */
|
|
/***********************************************************************/
|
|
class BGXFAM : public FIXFAM {
|
|
public:
|
|
// Constructor
|
|
BGXFAM(PDOSDEF tdp);
|
|
BGXFAM(PBGXFAM txfp);
|
|
|
|
// Implementation
|
|
virtual PTXF Duplicate(PGLOBAL g)
|
|
{return (PTXF)new(g) BGXFAM(this);}
|
|
|
|
// Methods
|
|
virtual int Cardinality(PGLOBAL g);
|
|
virtual bool OpenTableFile(PGLOBAL g);
|
|
virtual int WriteModifiedBlock(PGLOBAL g);
|
|
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 bool OpenTempFile(PGLOBAL g);
|
|
virtual bool MoveIntermediateLines(PGLOBAL g, bool *b = NULL);
|
|
int BigRead(PGLOBAL g, HANDLE h, void *inbuf, int req);
|
|
bool BigWrite(PGLOBAL g, HANDLE h, void *inbuf, int req);
|
|
bool BigSeek(PGLOBAL g, HANDLE h, BIGINT pos
|
|
, int org = FILE_BEGIN);
|
|
|
|
// Members
|
|
HANDLE Hfile; // Handle(descriptor) to big file
|
|
HANDLE Tfile; // Handle(descriptor) to big temp file
|
|
}; // end of class BGXFAM
|
|
|
|
#endif // __FILAMFIX_H
|