summaryrefslogtreecommitdiff
path: root/storage/connect/cmgoconn.h
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2017-07-02 22:29:31 +0200
committerOlivier Bertrand <bertrandop@gmail.com>2017-07-02 22:41:11 +0200
commit94e5d7de85a2964e7dd9a02e91a71522ccc66f94 (patch)
tree45164d08bff5a905f88da27762fcf3c089299cd7 /storage/connect/cmgoconn.h
parentc51548d6b4234d1b9bf7548125f63c5975f37d35 (diff)
downloadmariadb-git-94e5d7de85a2964e7dd9a02e91a71522ccc66f94.tar.gz
- Add Support of the MongoDB Java Driver.
modified: storage/connect/CMakeLists.txt modified: storage/connect/JavaWrappers.jar modified: storage/connect/colblk.h modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h modified: storage/connect/jdbccat.h modified: storage/connect/jdbconn.cpp modified: storage/connect/jdbconn.h modified: storage/connect/mongofam.cpp modified: storage/connect/mongofam.h modified: storage/connect/mycat.cc modified: storage/connect/mycat.h modified: storage/connect/tabext.h modified: storage/connect/tabjdbc.cpp modified: storage/connect/tabjdbc.h modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h modified: storage/connect/tabmgo.cpp modified: storage/connect/tabmgo.h created: storage/connect/Mongo2Interface.java created: storage/connect/Mongo3Interface.java created: storage/connect/cmgoconn.cpp created: storage/connect/cmgoconn.h created: storage/connect/javaconn.cpp created: storage/connect/javaconn.h created: storage/connect/jmgfam.cpp created: storage/connect/jmgfam.h created: storage/connect/jmgoconn.cpp created: storage/connect/jmgoconn.h created: storage/connect/mongo.cpp created: storage/connect/mongo.h created: storage/connect/tabjmg.cpp created: storage/connect/tabjmg.h - tdbp not initialized when catched exception in CntGetTDB (connect.cc line 188) modified: storage/connect/connect.h - CheckCleanup should sometimes doing cleanup on pure info Sometimes MariaDB loops on info to get the size of all tables in a database. This can sometimes fail by exhausted memory. CheckCleanup now have a force boolean parameter (defaulting to false) modified: storage/connect/ha_connect.cc modified: storage/connect/user_connect.cc modified: storage/connect/user_connect.h Change the copyright of some source files modified: storage/connect/connect.cc modified: storage/connect/connect.h modified: storage/connect/engmsg.h modified: storage/connect/global.h modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h modified: storage/connect/msgid.h modified: storage/connect/mycat.cc modified: storage/connect/mycat.h modified: storage/connect/os.h modified: storage/connect/osutil.c modified: storage/connect/osutil.h modified: storage/connect/user_connect.cc modified: storage/connect/user_connect.h
Diffstat (limited to 'storage/connect/cmgoconn.h')
-rw-r--r--storage/connect/cmgoconn.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/storage/connect/cmgoconn.h b/storage/connect/cmgoconn.h
new file mode 100644
index 00000000000..9e1361039ab
--- /dev/null
+++ b/storage/connect/cmgoconn.h
@@ -0,0 +1,112 @@
+/***********************************************************************/
+/* CMgoConn.h : header file for the MongoDB connection classes. */
+/***********************************************************************/
+
+/***********************************************************************/
+/* Include MongoDB library header files. */
+/***********************************************************************/
+#include <bson.h>
+#include <bcon.h>
+#include <mongoc.h>
+
+// C connection to a MongoDB data source
+class TDBMGO;
+class MGOCOL;
+
+/***********************************************************************/
+/* Include MongoDB library header files. */
+/***********************************************************************/
+typedef class INCOL *PINCOL;
+typedef class MGODEF *PMGODEF;
+typedef class TDBMGO *PTDBMGO;
+typedef class MGOCOL *PMGOCOL;
+
+typedef struct mongo_parms {
+ PTDB Tdbp;
+ PCSZ Uristr; // Driver URI
+ PCSZ Db_name;
+ PCSZ Coll_name;
+ PCSZ Options;
+ PCSZ Filter;
+ bool Pipe;
+//PCSZ User; // User connect info
+//PCSZ Pwd; // Password connect info
+//int Fsize; // Fetch size
+//bool Scrollable; // Scrollable cursor
+} CMGOPARM, *PCPARM;
+
+typedef struct KEYCOL {
+ KEYCOL *Next;
+ PINCOL Incolp;
+ PCOL Colp;
+ char *Key;
+} *PKC;
+
+/***********************************************************************/
+/* Used when inserting values in a MongoDB collection. */
+/***********************************************************************/
+class INCOL : public BLOCK {
+public:
+ // Constructor
+ INCOL(bool ar) { Klist = NULL; Array = ar; }
+
+ // Methods
+ void AddCol(PGLOBAL g, PCOL colp, char *jp);
+
+ //Members
+ bson_t Child;
+ PKC Klist;
+ bool Array;
+}; // end of INCOL;
+
+/***********************************************************************/
+/* CMgoConn class. */
+/***********************************************************************/
+class CMgoConn : public BLOCK {
+ friend class TDBMGO;
+ friend class MGODISC;
+public:
+ // Constructor
+ CMgoConn(PGLOBAL g, PCPARM pcg);
+
+ //static void *mgo_alloc(size_t n);
+ //static void *mgo_calloc(size_t n, size_t sz);
+ //static void *mgo_realloc(void *m, size_t n);
+ //static void mgo_free(void *) {}
+
+ // Implementation
+ bool IsConnected(void) { return m_Connected; }
+ bool Connect(PGLOBAL g);
+ int CollSize(PGLOBAL g);
+ bool MakeCursor(PGLOBAL g);
+ int ReadNext(PGLOBAL g);
+ PSZ GetDocument(PGLOBAL g);
+ void ShowDocument(bson_iter_t *iter, const bson_t *doc, const char *k);
+ void MakeColumnGroups(PGLOBAL g);
+ bool DocWrite(PGLOBAL g, PINCOL icp);
+ int Write(PGLOBAL g);
+ bool DocDelete(PGLOBAL g);
+ void Rewind(void);
+ void Close(void);
+ PSZ Mini(PGLOBAL g, PCOL colp, const bson_t *bson, bool b);
+ void GetColumnValue(PGLOBAL g, PCOL colp);
+ bool AddValue(PGLOBAL g, PCOL colp, bson_t *doc, char *key, bool upd);
+
+protected:
+ // Members
+ PCPARM Pcg;
+ mongoc_uri_t *Uri;
+ mongoc_client_pool_t *Pool; // Thread safe client pool
+ mongoc_client_t *Client; // The MongoDB client
+ mongoc_database_t *Database; // The MongoDB database
+ mongoc_collection_t *Collection; // The MongoDB collection
+ mongoc_cursor_t *Cursor;
+ const bson_t *Document;
+ bson_t *Query; // MongoDB cursor filter
+ bson_t *Opts; // MongoDB cursor options
+ bson_error_t Error;
+ bson_iter_t Iter; // Used to retrieve column value
+ bson_iter_t Desc; // Descendant iter
+ PINCOL Fpc; // To insert INCOL classes
+ bool m_Connected;
+}; // end of class CMgoConn