summaryrefslogtreecommitdiffstats
path: root/storage/connect/tabcmg.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/tabcmg.h')
-rw-r--r--storage/connect/tabcmg.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/storage/connect/tabcmg.h b/storage/connect/tabcmg.h
new file mode 100644
index 00000000..9effe714
--- /dev/null
+++ b/storage/connect/tabcmg.h
@@ -0,0 +1,133 @@
+/**************** tabcmg H Declares Source Code File (.H) **************/
+/* Name: tabcmg.h Version 1.3 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 2017 - 2021 */
+/* */
+/* This file contains the MongoDB classes declares. */
+/***********************************************************************/
+#include "mongo.h"
+#include "cmgoconn.h"
+
+/***********************************************************************/
+/* Class used to get the columns of a mongo collection. */
+/***********************************************************************/
+class CMGDISC : public MGODISC {
+public:
+ // Constructor
+ CMGDISC(PGLOBAL g, int *lg) : MGODISC(g, lg) { drv = "C"; }
+
+ // Methods
+ virtual void GetDoc(void);
+//virtual bool Find(PGLOBAL g, int i, int k, bool b);
+ virtual bool Find(PGLOBAL g);
+
+ // BSON Function
+//bool FindInDoc(PGLOBAL g, bson_iter_t *iter, const bson_t *doc,
+// char *pcn, char *pfmt, int i, int k, bool b);
+ bool FindInDoc(PGLOBAL g, bson_iter_t *iter, const bson_t *doc,
+ char *pcn, char *pfmt, int k, bool b);
+
+ // Members
+ bson_iter_t iter;
+ const bson_t *doc;
+}; // end of CMGDISC
+
+/* -------------------------- TDBCMG class --------------------------- */
+
+/***********************************************************************/
+/* This is the MongoDB Table Type class declaration. */
+/* The table is a collection, each record being a document. */
+/***********************************************************************/
+class DllExport TDBCMG : public TDBEXT {
+ friend class MGOCOL;
+ friend class MGODEF;
+ friend class CMGDISC;
+ friend PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool);
+public:
+ // Constructor
+ TDBCMG(MGODEF *tdp);
+ TDBCMG(TDBCMG *tdbp);
+
+ // Implementation
+ virtual AMT GetAmType(void) {return TYPE_AM_MGO;}
+ virtual PTDB Duplicate(PGLOBAL g) {return (PTDB)new(g) TDBCMG(this);}
+
+ // Methods
+ virtual PTDB Clone(PTABS t);
+ virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
+ virtual PCOL InsertSpecialColumn(PCOL colp);
+ virtual int RowNumber(PGLOBAL g, bool b = FALSE) {return N;}
+
+ // Database routines
+ virtual int Cardinality(PGLOBAL g);
+ virtual int GetMaxSize(PGLOBAL g);
+ 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);
+ virtual bool ReadKey(PGLOBAL g, OPVAL op, const key_range *kr);
+
+protected:
+ bool Init(PGLOBAL g);
+
+ // Members
+ CMgoConn *Cmgp; // Points to a C Mongo connection class
+ CMGOPARM Pcg; // Parms passed to Cmgp
+ const Item *Cnd; // The first condition
+ PCSZ Strfy; // The stringified columns
+ int Fpos; // The current row index
+ int N; // The current Rownum
+ int B; // Array index base
+ bool Done; // Init done
+}; // end of class TDBCMG
+
+/* --------------------------- MGOCOL class -------------------------- */
+
+/***********************************************************************/
+/* Class MGOCOL: MongoDB access method column descriptor. */
+/***********************************************************************/
+class DllExport MGOCOL : public EXTCOL {
+ friend class TDBCMG;
+ friend class FILTER;
+public:
+ // Constructors
+ MGOCOL(PGLOBAL g, PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i);
+ MGOCOL(MGOCOL *colp, PTDB tdbp); // Constructor used in copy process
+
+ // Implementation
+ virtual int GetAmType(void) { return Tmgp->GetAmType(); }
+ virtual bool Stringify(void) { return Sgfy; }
+
+ // Methods
+ virtual PSZ GetJpath(PGLOBAL g, bool proj);
+ virtual void ReadColumn(PGLOBAL g);
+ virtual void WriteColumn(PGLOBAL g);
+
+protected:
+ // Default constructor not to be used
+ MGOCOL(void) {}
+
+ // Members
+ TDBCMG *Tmgp; // To the MGO table block
+ char *Jpath; // The json path
+ bool Sgfy; // True if stringified
+}; // end of class MGOCOL
+
+/***********************************************************************/
+/* This is the class declaration for the MONGO catalog table. */
+/***********************************************************************/
+class DllExport TDBGOL : public TDBCAT {
+public:
+ // Constructor
+ TDBGOL(PMGODEF tdp);
+
+protected:
+ // Specific routines
+ virtual PQRYRES GetResult(PGLOBAL g);
+
+ // Members
+ PTOS Topt;
+ PCSZ Uri;
+ PCSZ Db;
+}; // end of class TDBGOL