- Fix MDEV-22571 and MDEV-22572. Allow multiple ZIP table
and enable using special column in them. modified: storage/connect/tabzip.cpp modified: storage/connect/tabzip.h
This commit is contained in:
parent
674197e2ff
commit
e3163524ea
@ -23,6 +23,7 @@
|
||||
#include "filamzip.h"
|
||||
#include "resource.h" // for IDS_COLUMNS
|
||||
#include "tabdos.h"
|
||||
#include "tabmul.h"
|
||||
#include "tabzip.h"
|
||||
|
||||
/* -------------------------- Class ZIPDEF --------------------------- */
|
||||
@ -41,7 +42,14 @@ bool ZIPDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
|
||||
/***********************************************************************/
|
||||
PTDB ZIPDEF::GetTable(PGLOBAL g, MODE m)
|
||||
{
|
||||
return new(g) TDBZIP(this);
|
||||
PTDB tdbp = NULL;
|
||||
|
||||
tdbp = new(g) TDBZIP(this);
|
||||
|
||||
if (Multiple)
|
||||
tdbp = new(g) TDBMUL(tdbp);
|
||||
|
||||
return tdbp;
|
||||
} // end of GetTable
|
||||
|
||||
/* ------------------------------------------------------------------- */
|
||||
@ -108,7 +116,7 @@ int TDBZIP::Cardinality(PGLOBAL g)
|
||||
|
||||
Cardinal = (err == UNZ_OK) ? (int)ginfo.number_entry : 0;
|
||||
} else
|
||||
Cardinal = 0;
|
||||
Cardinal = 10; // Dummy for multiple tables
|
||||
|
||||
} // endif Cardinal
|
||||
|
||||
@ -187,6 +195,7 @@ int TDBZIP::DeleteDB(PGLOBAL g, int irc)
|
||||
void TDBZIP::CloseDB(PGLOBAL g)
|
||||
{
|
||||
close();
|
||||
nexterr = UNZ_OK; // For multiple tables
|
||||
Use = USE_READY; // Just to be clean
|
||||
} // end of CloseDB
|
||||
|
||||
|
@ -48,6 +48,8 @@ public:
|
||||
|
||||
// Implementation
|
||||
virtual AMT GetAmType(void) {return TYPE_AM_ZIP;}
|
||||
virtual PCSZ GetFile(PGLOBAL) {return zfn;}
|
||||
virtual void SetFile(PGLOBAL, PCSZ fn) {zfn = fn;}
|
||||
|
||||
// Methods
|
||||
virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
|
||||
|
Loading…
x
Reference in New Issue
Block a user