mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
d8f99f165b
This to have automatic closing in case of thrown error. modified: storage/connect/cmgoconn.cpp modified: storage/connect/cmgoconn.h modified: storage/connect/filamzip.cpp modified: storage/connect/javaconn.cpp modified: storage/connect/javaconn.h modified: storage/connect/odbconn.cpp modified: storage/connect/odbconn.h modified: storage/connect/plgdbsem.h modified: storage/connect/plgdbutl.cpp - Fix INCOL bug when inserting several lines to MONGO tables modified: storage/connect/cmgoconn.cpp modified: storage/connect/tabcmg.cpp modified: storage/connect/tabjmg.cpp - MONGO_SUPPORT is set for both MongoDB drivers CMGO_SUPPORT is set only when the C driver is available modified: storage/connect/CMakeLists.txt modified: storage/connect/filter.h modified: storage/connect/filter.h modified: storage/connect/ha_connect.cc modified: storage/connect/mongo.cpp modified: storage/connect/mycat.cc modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h - Separate enums JCATINFO and modified: storage/connect/javaconn.h modified: storage/connect/jdbconn.cpp - Fix crash when executing JDBC catfunc=driver modified: storage/connect/jdbconn.cpp - Report an error when the Mongo driver if explicitly specified and not supported. modified: storage/connect/mongo.cpp - Fix bug causing catalog JSON tables to fail modified: storage/connect/tabjson.cpp - Protect by mutex the Ready variable of the TBLTBM table type modified: storage/connect/tabtbl.cpp - Put testing of Thread TBL tables in a separate test With added case and modified old case that could avoid the test to fail. modified: storage/connect/mysql-test/connect/r/tbl.result modified: storage/connect/mysql-test/connect/t/tbl.test new file: storage/connect/mysql-test/connect/r/tbl_thread.result new file: storage/connect/mysql-test/connect/t/tbl_thread.test - jmongo3.test no more exists deleted: storage/connect/mysql-test/connect/t/jmongo3.test - Add new tests for the MONGO feature (disabled) modified: storage/connect/mysql-test/connect/disabled.def new file: storage/connect/mysql-test/connect/r/json_java_2.result new file: storage/connect/mysql-test/connect/r/json_java_3.result new file: storage/connect/mysql-test/connect/r/json_mongo_c.result new file: storage/connect/mysql-test/connect/r/mongo_c.result new file: storage/connect/mysql-test/connect/r/mongo_java_2.result new file: storage/connect/mysql-test/connect/r/mongo_java_3.result new file: storage/connect/mysql-test/connect/std_data/Mongo2.jar new file: storage/connect/mysql-test/connect/std_data/cities.json new file: storage/connect/mysql-test/connect/t/json_java_2.test new file: storage/connect/mysql-test/connect/t/json_java_3.test new file: storage/connect/mysql-test/connect/t/json_mongo_c.test new file: storage/connect/mysql-test/connect/t/mongo.inc new file: storage/connect/mysql-test/connect/t/mongo_c.test new file: storage/connect/mysql-test/connect/t/mongo_java_2.test new file: storage/connect/mysql-test/connect/t/mongo_java_3.test new file: storage/connect/mysql-test/connect/t/mongo_test.inc
115 lines
3.7 KiB
C++
115 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;
|
|
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);
|
|
|
|
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;
|
|
}; // end of class CMgoConn
|