mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
- Add FBLOCK when opening ODBC, JSON and MONGO tables.
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
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
#include "plgdbsem.h"
|
||||
#include "xtable.h"
|
||||
#include "tabext.h"
|
||||
#if defined(MONGO_SUPPORT)
|
||||
#if defined(CMGO_SUPPORT)
|
||||
#include "tabcmg.h"
|
||||
#endif // MONGO_SUPPORT
|
||||
#if defined(JDBC_SUPPORT)
|
||||
@@ -61,18 +61,29 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info)
|
||||
/*********************************************************************/
|
||||
/* Open MongoDB. */
|
||||
/*********************************************************************/
|
||||
# if !defined(JDBC_SUPPORT)
|
||||
cmgd = new(g) CMGDISC(g, (int*)length);
|
||||
#elif !defined(MONGO_SUPPORT)
|
||||
cmgd = new(g) JMGDISC(g, (int*)length);
|
||||
#else
|
||||
PCSZ drv = GetStringTableOption(g, topt, "Driver", "C");
|
||||
PCSZ drv = GetStringTableOption(g, topt, "Driver", NULL);
|
||||
|
||||
if (toupper(*drv) == 'C')
|
||||
if (drv && toupper(*drv) == 'C') {
|
||||
#if defined(CMGO_SUPPORT)
|
||||
cmgd = new(g) CMGDISC(g, (int*)length);
|
||||
else
|
||||
#else
|
||||
sprintf(g->Message, "Mongo %s Driver not available", "C");
|
||||
goto err;
|
||||
#endif
|
||||
} else if (drv && toupper(*drv) == 'J') {
|
||||
#if defined(JDBC_SUPPORT)
|
||||
cmgd = new(g) JMGDISC(g, (int*)length);
|
||||
#else
|
||||
sprintf(g->Message, "Mongo %s Driver not available", "Java");
|
||||
goto err;
|
||||
#endif
|
||||
} else { // Driver not specified
|
||||
#if defined(CMGO_SUPPORT)
|
||||
cmgd = new(g) CMGDISC(g, (int*)length);
|
||||
#else
|
||||
cmgd = new(g) JMGDISC(g, (int*)length);
|
||||
#endif
|
||||
} // endif drv
|
||||
|
||||
if ((n = cmgd->GetColumns(g, db, uri, topt)) < 0)
|
||||
goto err;
|
||||
@@ -302,13 +313,7 @@ bool MGODEF::DefineAM(PGLOBAL g, LPCSTR, int poff)
|
||||
else if (!Tabschema)
|
||||
Tabschema = GetStringCatInfo(g, "Dbname", "*");
|
||||
|
||||
# if !defined(JDBC_SUPPORT)
|
||||
Driver = "C";
|
||||
#elif !defined(MONGO_SUPPORT)
|
||||
Driver = "JAVA";
|
||||
#else
|
||||
Driver = GetStringCatInfo(g, "Driver", "C");
|
||||
#endif
|
||||
Driver = GetStringCatInfo(g, "Driver", NULL);
|
||||
Uri = GetStringCatInfo(g, "Connect", "mongodb://localhost:27017");
|
||||
Colist = GetStringCatInfo(g, "Colist", NULL);
|
||||
Filter = GetStringCatInfo(g, "Filter", NULL);
|
||||
@@ -329,27 +334,38 @@ bool MGODEF::DefineAM(PGLOBAL g, LPCSTR, int poff)
|
||||
/***********************************************************************/
|
||||
PTDB MGODEF::GetTable(PGLOBAL g, MODE m)
|
||||
{
|
||||
if (Catfunc == FNC_COL) {
|
||||
#if defined(MONGO_SUPPORT)
|
||||
if (Driver && toupper(*Driver) == 'C')
|
||||
return new(g)TDBGOL(this);
|
||||
#endif // MONGO_SUPPORT
|
||||
#if defined(JDBC_SUPPORT)
|
||||
return new(g)TDBJGL(this);
|
||||
#else // !JDBC_SUPPORT
|
||||
strcpy(g->Message, "No column find, no MONGO nor Java support");
|
||||
if (Driver && toupper(*Driver) == 'C') {
|
||||
#if defined(CMGO_SUPPORT)
|
||||
if (Catfunc == FNC_COL)
|
||||
return new(g) TDBGOL(this);
|
||||
else
|
||||
return new(g) TDBCMG(this);
|
||||
#else
|
||||
sprintf(g->Message, "Mongo %s Driver not available", "C");
|
||||
return NULL;
|
||||
#endif // !JDBC_SUPPORT
|
||||
} // endif Catfunc
|
||||
|
||||
#if defined(MONGO_SUPPORT)
|
||||
if (Driver && toupper(*Driver) == 'C')
|
||||
return new(g) TDBCMG(this);
|
||||
#endif // MONGO_SUPPORT
|
||||
#endif
|
||||
} else if (Driver && toupper(*Driver) == 'J') {
|
||||
#if defined(JDBC_SUPPORT)
|
||||
return new(g) TDBJMG(this);
|
||||
#else // !JDBC_SUPPORT
|
||||
strcpy(g->Message, "No MONGO nor Java support");
|
||||
return NULL;
|
||||
#endif // !JDBC_SUPPORT
|
||||
if (Catfunc == FNC_COL)
|
||||
return new(g) TDBJGL(this);
|
||||
else
|
||||
return new(g) TDBJMG(this);
|
||||
#else
|
||||
sprintf(g->Message, "Mongo %s Driver not available", "Java");
|
||||
return NULL;
|
||||
#endif
|
||||
} else { // Driver not specified
|
||||
#if defined(CMGO_SUPPORT)
|
||||
if (Catfunc == FNC_COL)
|
||||
return new(g) TDBGOL(this);
|
||||
else
|
||||
return new(g) TDBCMG(this);
|
||||
#else
|
||||
if (Catfunc == FNC_COL)
|
||||
return new(g) TDBJGL(this);
|
||||
else
|
||||
return new(g) TDBJMG(this);
|
||||
#endif
|
||||
} // endif Driver
|
||||
|
||||
} // end of GetTable
|
||||
|
Reference in New Issue
Block a user