mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	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
 |