mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
be7e41db96
modified: storage/connect/cmgoconn.cpp modified: storage/connect/cmgoconn.h - Change default array LIMIT from 10 to 50 modified: storage/connect/ha_connect.cc modified: storage/connect/tabbson.cpp modified: storage/connect/tabjson.cpp modified: storage/connect/tabxml.cpp
121 lines
3.7 KiB
C++
121 lines
3.7 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;
|
|
PCSZ Line;
|
|
bool Pipe;
|
|
} CMGOPARM, *PCPARM;
|
|
|
|
typedef struct KEYCOL {
|
|
KEYCOL *Next;
|
|
PINCOL Incolp;
|
|
PCOL Colp;
|
|
char *Key;
|
|
bool Array;
|
|
} *PKC;
|
|
|
|
typedef struct _path_list *PTHP;
|
|
|
|
typedef struct _path_list {
|
|
PSZ Path;
|
|
PSZ Name;
|
|
PTHP Next;
|
|
} PTH;
|
|
|
|
/***********************************************************************/
|
|
/* Used when inserting values in a MongoDB collection. */
|
|
/***********************************************************************/
|
|
class INCOL : public BLOCK {
|
|
public:
|
|
// Constructor
|
|
INCOL(void) { Child = bson_new(); Klist = NULL; }
|
|
|
|
// Methods
|
|
void AddCol(PGLOBAL g, PCOL colp, char *jp);
|
|
void Init(void);
|
|
void Destroy(void);
|
|
|
|
//Members
|
|
bson_t *Child;
|
|
PKC Klist;
|
|
}; // 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);
|
|
void CMgoConn::Project(PGLOBAL g, PSTRG s);
|
|
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;
|
|
PINCOL Fpc; // To insert INCOL classes
|
|
PFBLOCK fp;
|
|
bool m_Connected;
|
|
static bool IsInit;
|
|
}; // end of class CMgoConn
|