mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
bcfb5b2de9
modified: storage/connect/ha_connect.cc - Include MONGO in all Java enabled distributions Mongo will be enabled only for 10.2 and 10.3 modified: storage/connect/CMakeLists.txt - Change JDBC_SUPPORT to JAVA_SUPPORT which also replaces MONGO_SUPPORT MONGO_SUPPORT is now just used to enable the MONGO table type modified: storage/connect/filter.cpp modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h modified: storage/connect/mongo.cpp modified: storage/connect/mycat.cc modified: storage/connect/plgdbutl.cpp modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h - Move MakeSelector function from FILTER to mongo.cpp modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/cmgoconn.cpp modified: storage/connect/jmgoconn.cpp modified: storage/connect/mongo.cpp - Do mongo_init only on first use of the MongoDB C Driver This will permit to delay load the mongo lib on Windows modified: storage/connect/cmgoconn.cpp modified: storage/connect/cmgoconn.h modified: storage/connect/ha_connect.cc - Replace NEW_VAR by a test on MYSQL_VERSION_ID modified: storage/connect/ha_connect.cc - Suppress enable_mongo session variable modified: storage/connect/ha_connect.cc modified: storage/connect/mycat.cc - Make some function headers identical in .h and .cc file (replacing const char* by PCSZ) modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h - Change a parameter type from uchar* to const uchar* (for ScanRecord and CheckRecord) modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h - Changes on LIKE and NOT LIKE does not fix a bug yet modified: storage/connect/ha_connect.cc - Suppress PIVOT_SUPPORT (PIVOT type is unconditionnal) modified: storage/connect/ha_connect.cc modified: storage/connect/mycat.cc - Change the strz function from inline to static modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h - export the JavaConn class and the MgoColumns and IsNum functions modified: storage/connect/javaconn.h modified: storage/connect/json.h modified: storage/connect/mongo.h - Fix MDEV-13924 modified: storage/connect/jdbconn.cpp - Make a temporary fix for the compiler bug in CalculateArray modified: storage/connect/jsonudf.cpp modified: storage/connect/tabjson.cpp - Typo modified: storage/connect/jdbccat.h modified: storage/connect/reldef.h modified: storage/connect/tabext.h modified: storage/connect/tabjmg.cpp modified: storage/connect/tabxml.h modified: storage/connect/valblk.h modified: storage/connect/value.h modified: storage/connect/xtable.h - Fix a bug in MONGO tests by changing 'MONGO' to $TYPE modified: storage/connect/mysql-test/connect/t/mongo_test.inc - Record test results to reflect all changes modified: storage/connect/mysql-test/connect/r/json_java_2.result modified: storage/connect/mysql-test/connect/r/json_java_3.result modified: storage/connect/mysql-test/connect/r/json_mongo_c.result modified: storage/connect/mysql-test/connect/r/mongo_c.result modified: storage/connect/mysql-test/connect/r/mongo_java_2.result modified: storage/connect/mysql-test/connect/r/mongo_java_3.result
117 lines
3.8 KiB
C++
117 lines
3.8 KiB
C++
/***********************************************************************/
|
|
/* 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 TDBCMG;
|
|
class MGOCOL;
|
|
|
|
/***********************************************************************/
|
|
/* Include MongoDB library header files. */
|
|
/***********************************************************************/
|
|
typedef class INCOL *PINCOL;
|
|
typedef class MGODEF *PMGODEF;
|
|
typedef class TDBCMG *PTDBCMG;
|
|
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) { Child = bson_new(); Klist = NULL; Array = ar; }
|
|
|
|
// Methods
|
|
void AddCol(PGLOBAL g, PCOL colp, char *jp);
|
|
void Init(void);
|
|
void Destroy(void);
|
|
|
|
//Members
|
|
bson_t *Child;
|
|
PKC Klist;
|
|
bool Array;
|
|
}; // end of INCOL;
|
|
|
|
/***********************************************************************/
|
|
/* CMgoConn class. */
|
|
/***********************************************************************/
|
|
class CMgoConn : public BLOCK {
|
|
friend class TDBCMG;
|
|
friend class CMGDISC;
|
|
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);
|
|
static void mongo_init(bool init);
|
|
|
|
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
|
|
PFBLOCK fp;
|
|
bool m_Connected;
|
|
static bool IsInit;
|
|
}; // end of class CMgoConn
|