summaryrefslogtreecommitdiff
path: root/storage/connect/tabzip.h
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2016-12-12 10:57:19 +0100
committerOlivier Bertrand <bertrandop@gmail.com>2016-12-12 10:57:19 +0100
commitd44723e62153d9fb4165d038e9448c20a3ad890b (patch)
treefe764d4d757d7d6153df918046fcefbda9f72210 /storage/connect/tabzip.h
parent599d8cc2deee615526838ddc962778e51cd3a15a (diff)
downloadmariadb-git-d44723e62153d9fb4165d038e9448c20a3ad890b.tar.gz
- MDEV-11295: developing handling files contained in ZIP file.
A first experimental and limited implementation. modified: storage/connect/CMakeLists.txt modified: storage/connect/filamap.cpp new file: storage/connect/filamzip.cpp new file: storage/connect/filamzip.h modified: storage/connect/ha_connect.cc new file: storage/connect/ioapi.c new file: storage/connect/ioapi.h modified: storage/connect/mycat.cc modified: storage/connect/plgdbsem.h modified: storage/connect/plgdbutl.cpp modified: storage/connect/tabdos.cpp modified: storage/connect/tabdos.h modified: storage/connect/tabfmt.cpp modified: storage/connect/tabfmt.h modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h new file: storage/connect/tabzip.cpp new file: storage/connect/tabzip.h new file: storage/connect/unzip.c new file: storage/connect/unzip.h new file: storage/connect/zip.c
Diffstat (limited to 'storage/connect/tabzip.h')
-rw-r--r--storage/connect/tabzip.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/storage/connect/tabzip.h b/storage/connect/tabzip.h
new file mode 100644
index 00000000000..6f1735258e7
--- /dev/null
+++ b/storage/connect/tabzip.h
@@ -0,0 +1,100 @@
+/*************** tabzip H Declares Source Code File (.H) ***************/
+/* Name: tabzip.h Version 1.0 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 2016 */
+/* */
+/* This file contains the ZIP classe declares. */
+/***********************************************************************/
+#include "osutil.h"
+#include "block.h"
+#include "colblk.h"
+#include "xtable.h"
+#include "unzip.h"
+
+typedef class ZIPDEF *PZIPDEF;
+typedef class TDBZIP *PTDBZIP;
+typedef class ZIPCOL *PZIPCOL;
+
+/***********************************************************************/
+/* ZIP table: display info about a ZIP file. */
+/***********************************************************************/
+class DllExport ZIPDEF : public DOSDEF { /* Table description */
+ friend class TDBZIP;
+ friend class ZIPFAM;
+public:
+ // Constructor
+ ZIPDEF(void) {}
+
+ // Implementation
+ virtual const char *GetType(void) {return "ZIP";}
+
+ // Methods
+ virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
+ virtual PTDB GetTable(PGLOBAL g, MODE m);
+
+protected:
+ // Members
+ PSZ target; // The inside file to query
+}; // end of ZIPDEF
+
+/***********************************************************************/
+/* This is the ZIP Access Method class declaration. */
+/***********************************************************************/
+class DllExport TDBZIP : public TDBASE {
+ friend class ZIPCOL;
+public:
+ // Constructor
+ TDBZIP(PZIPDEF tdp);
+
+ // Implementation
+ virtual AMT GetAmType(void) {return TYPE_AM_ZIP;}
+
+ // Methods
+ virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
+ virtual int Cardinality(PGLOBAL g);
+ virtual int GetMaxSize(PGLOBAL g);
+ virtual int GetRecpos(void) {return 0;}
+
+ // Database routines
+ virtual bool OpenDB(PGLOBAL g);
+ virtual int ReadDB(PGLOBAL g);
+ virtual int WriteDB(PGLOBAL g);
+ virtual int DeleteDB(PGLOBAL g, int irc);
+ virtual void CloseDB(PGLOBAL g);
+
+protected:
+ bool open(PGLOBAL g, const char *filename);
+ void close(void);
+
+ // Members
+ unzFile zipfile; // The ZIP container file
+ PSZ zfn; // The ZIP file name
+//PSZ target;
+ unz_file_info64 finfo; // The current file info
+ char fn[FILENAME_MAX]; // The current file name
+ int nexterr; // Next file error
+}; // end of class TDBZIP
+
+/***********************************************************************/
+/* Class ZIPCOL: ZIP access method column descriptor. */
+/***********************************************************************/
+class DllExport ZIPCOL : public COLBLK {
+ friend class TDBZIP;
+public:
+ // Constructors
+ ZIPCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PSZ am = "ZIP");
+
+ // Implementation
+ virtual int GetAmType(void) { return TYPE_AM_ZIP; }
+
+ // Methods
+ virtual void ReadColumn(PGLOBAL g);
+
+protected:
+ // Default constructor not to be used
+ ZIPCOL(void) {}
+
+ // Members
+ TDBZIP *Tdbz;
+ int flag;
+}; // end of class ZIPCOL