Commit bcfb5b2d authored by Olivier Bertrand's avatar Olivier Bertrand

- Update version number

  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
parent bf34e9db
...@@ -38,7 +38,7 @@ user_connect.h valblk.h value.h xindex.h xobject.h xtable.h) ...@@ -38,7 +38,7 @@ user_connect.h valblk.h value.h xindex.h xobject.h xtable.h)
# Definitions that are shared for all OSes # Definitions that are shared for all OSes
# #
add_definitions( -DMARIADB -DFORCE_INIT_OF_VARS -Dconnect_EXPORTS) add_definitions( -DMARIADB -DFORCE_INIT_OF_VARS -Dconnect_EXPORTS)
add_definitions( -DNEW_MAR -DHUGE_SUPPORT -DGZ_SUPPORT -DPIVOT_SUPPORT ) add_definitions( -DHUGE_SUPPORT -DGZ_SUPPORT )
# #
...@@ -245,7 +245,7 @@ int main() { ...@@ -245,7 +245,7 @@ int main() {
ENDIF(CONNECT_WITH_ODBC) ENDIF(CONNECT_WITH_ODBC)
# #
# JDBC with MongoDB Java Driver included but disabled # JDBC with MongoDB Java Driver included but disabled if without MONGO
# #
OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON) OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON)
OPTION(CONNECT_WITH_JDBC "Compile CONNECT storage engine with JDBC support" ON) OPTION(CONNECT_WITH_JDBC "Compile CONNECT storage engine with JDBC support" ON)
...@@ -260,17 +260,16 @@ IF(CONNECT_WITH_JDBC) ...@@ -260,17 +260,16 @@ IF(CONNECT_WITH_JDBC)
# SET(JDBC_LIBRARY ${JAVA_JVM_LIBRARY}) will be dynamically linked # SET(JDBC_LIBRARY ${JAVA_JVM_LIBRARY}) will be dynamically linked
SET(CONNECT_SOURCES ${CONNECT_SOURCES} SET(CONNECT_SOURCES ${CONNECT_SOURCES}
javaconn.cpp jdbconn.cpp tabjdbc.cpp javaconn.cpp jdbconn.cpp tabjdbc.cpp
jmgfam.cpp jmgoconn.cpp mongo.cpp tabjmg.cpp
jdbccat.h javaconn.h jdbconn.h tabjdbc.h jdbccat.h javaconn.h jdbconn.h tabjdbc.h
jmgfam.h jmgoconn.h mongo.h tabjmg.h
JdbcInterface.java ApacheInterface.java MariadbInterface.java JdbcInterface.java ApacheInterface.java MariadbInterface.java
MysqlInterface.java OracleInterface.java PostgresqlInterface.java MysqlInterface.java OracleInterface.java PostgresqlInterface.java
Mongo2Interface.java Mongo3Interface.java
JavaWrappers.jar) JavaWrappers.jar)
add_definitions(-DJDBC_SUPPORT) add_definitions(-DJAVA_SUPPORT)
IF(CONNECT_WITH_MONGO) IF(CONNECT_WITH_MONGO)
SET(CONNECT_SOURCES ${CONNECT_SOURCES} add_definitions(-DMONGO_SUPPORT)
jmgfam.cpp jmgoconn.cpp mongo.cpp tabjmg.cpp
jmgfam.h jmgoconn.h mongo.h tabjmg.h
Mongo2Interface.java Mongo3Interface.java)
add_definitions(-DMONGO_SUPPORT -DMONGO_ENABLED=0)
ENDIF() ENDIF()
ELSE() ELSE()
SET(JDBC_LIBRARY "") SET(JDBC_LIBRARY "")
...@@ -313,10 +312,7 @@ IF(CONNECT_WITH_MONGO) ...@@ -313,10 +312,7 @@ IF(CONNECT_WITH_MONGO)
add_definitions(-DCMGO_SUPPORT) add_definitions(-DCMGO_SUPPORT)
IF (NOT JAVA_FOUND AND JNI_FOUND) IF (NOT JAVA_FOUND AND JNI_FOUND)
SET(CONNECT_SOURCES ${CONNECT_SOURCES} mongo.cpp mongo.h) SET(CONNECT_SOURCES ${CONNECT_SOURCES} mongo.cpp mongo.h)
add_definitions(-DMONGO_SUPPORT -DMONGO_ENABLED=1) add_definitions(-DMONGO_SUPPORT)
ELSE ()
remove_definitions(-DMONGO_ENABLED=0)
add_definitions(-DMONGO_ENABLED=1)
ENDIF (NOT JAVA_FOUND AND JNI_FOUND) ENDIF (NOT JAVA_FOUND AND JNI_FOUND)
ENDIF(libmongoc-1.0_FOUND) ENDIF(libmongoc-1.0_FOUND)
ENDIF(CONNECT_WITH_MONGO) ENDIF(CONNECT_WITH_MONGO)
......
...@@ -22,17 +22,10 @@ ...@@ -22,17 +22,10 @@
#include "filter.h" #include "filter.h"
#include "cmgoconn.h" #include "cmgoconn.h"
bool IsNum(PSZ s); bool CMgoConn::IsInit = false;
// Required to initialize libmongoc's internals
void mongo_init(bool init)
{
if (init)
mongoc_init();
else
mongoc_cleanup();
} // end of mongo_init bool IsNum(PSZ s);
bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s);
/* --------------------------- Class INCOL --------------------------- */ /* --------------------------- Class INCOL --------------------------- */
...@@ -139,11 +132,36 @@ CMgoConn::CMgoConn(PGLOBAL g, PCPARM pcg) ...@@ -139,11 +132,36 @@ CMgoConn::CMgoConn(PGLOBAL g, PCPARM pcg)
m_Connected = false; m_Connected = false;
} // end of CMgoConn standard constructor } // end of CMgoConn standard constructor
/***********************************************************************/
/* Required to initialize libmongoc's internals. */
/***********************************************************************/
void CMgoConn::mongo_init(bool init)
{
if (init)
mongoc_init();
else if (IsInit)
mongoc_cleanup();
IsInit = init;
} // end of mongo_init
/***********************************************************************/ /***********************************************************************/
/* Connect to the MongoDB server and get the collection. */ /* Connect to the MongoDB server and get the collection. */
/***********************************************************************/ /***********************************************************************/
bool CMgoConn::Connect(PGLOBAL g) bool CMgoConn::Connect(PGLOBAL g)
{ {
if (!IsInit)
#if defined(__WIN__)
__try {
mongo_init(true);
} __except (EXCEPTION_EXECUTE_HANDLER) {
strcpy(g->Message, "Cannot load MongoDB C driver");
return true;
} // end try/except
#else // !__WIN__
mongo_init(true);
#endif // !__WIN__
Uri = mongoc_uri_new(Pcg->Uristr); Uri = mongoc_uri_new(Pcg->Uristr);
if (!Uri) { if (!Uri) {
...@@ -246,6 +264,7 @@ bool CMgoConn::MakeCursor(PGLOBAL g) ...@@ -246,6 +264,7 @@ bool CMgoConn::MakeCursor(PGLOBAL g)
PTDB tp = Pcg->Tdbp; PTDB tp = Pcg->Tdbp;
PCOL cp; PCOL cp;
PSTRG s = NULL; PSTRG s = NULL;
PFIL filp = tp->GetFilter();
id = (tp->GetMode() != MODE_READ); id = (tp->GetMode() != MODE_READ);
...@@ -274,10 +293,10 @@ bool CMgoConn::MakeCursor(PGLOBAL g) ...@@ -274,10 +293,10 @@ bool CMgoConn::MakeCursor(PGLOBAL g)
s = new(g) STRING(g, 1023, (PSZ)options); s = new(g) STRING(g, 1023, (PSZ)options);
if (tp->GetFilter()) { if (filp) {
s->Append(",{\"$match\":"); s->Append(",{\"$match\":");
if (tp->GetFilter()->MakeSelector(g, s)) { if (MakeSelector(g, filp, s)) {
strcpy(g->Message, "Failed making selector"); strcpy(g->Message, "Failed making selector");
return true; return true;
} else } else
...@@ -330,15 +349,15 @@ bool CMgoConn::MakeCursor(PGLOBAL g) ...@@ -330,15 +349,15 @@ bool CMgoConn::MakeCursor(PGLOBAL g)
} // endif error } // endif error
} else { } else {
if (Pcg->Filter || tp->GetFilter()) { if (Pcg->Filter || filp) {
if (trace) { if (trace) {
if (Pcg->Filter) if (Pcg->Filter)
htrc("Filter: %s\n", Pcg->Filter); htrc("Filter: %s\n", Pcg->Filter);
if (tp->GetFilter()) { if (filp) {
char buf[512]; char buf[512];
tp->GetFilter()->Prints(g, buf, 511); filp->Prints(g, buf, 511);
htrc("To_Filter: %s\n", buf); htrc("To_Filter: %s\n", buf);
} // endif To_Filter } // endif To_Filter
...@@ -346,11 +365,11 @@ bool CMgoConn::MakeCursor(PGLOBAL g) ...@@ -346,11 +365,11 @@ bool CMgoConn::MakeCursor(PGLOBAL g)
s = new(g) STRING(g, 1023, (PSZ)Pcg->Filter); s = new(g) STRING(g, 1023, (PSZ)Pcg->Filter);
if (tp->GetFilter()) { if (filp) {
if (Pcg->Filter) if (Pcg->Filter)
s->Append(','); s->Append(',');
if (tp->GetFilter()->MakeSelector(g, s)) { if (MakeSelector(g, filp, s)) {
strcpy(g->Message, "Failed making selector"); strcpy(g->Message, "Failed making selector");
return NULL; return NULL;
} // endif Selector } // endif Selector
......
...@@ -93,6 +93,7 @@ class CMgoConn : public BLOCK { ...@@ -93,6 +93,7 @@ class CMgoConn : public BLOCK {
PSZ Mini(PGLOBAL g, PCOL colp, const bson_t *bson, bool b); PSZ Mini(PGLOBAL g, PCOL colp, const bson_t *bson, bool b);
void GetColumnValue(PGLOBAL g, PCOL colp); void GetColumnValue(PGLOBAL g, PCOL colp);
bool AddValue(PGLOBAL g, PCOL colp, bson_t *doc, char *key, bool upd); bool AddValue(PGLOBAL g, PCOL colp, bson_t *doc, char *key, bool upd);
static void mongo_init(bool init);
protected: protected:
// Members // Members
...@@ -112,4 +113,5 @@ class CMgoConn : public BLOCK { ...@@ -112,4 +113,5 @@ class CMgoConn : public BLOCK {
PINCOL Fpc; // To insert INCOL classes PINCOL Fpc; // To insert INCOL classes
PFBLOCK fp; PFBLOCK fp;
bool m_Connected; bool m_Connected;
static bool IsInit;
}; // end of class CMgoConn }; // end of class CMgoConn
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
/* Include relevant MariaDB header file. */ /* Include relevant MariaDB header file. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "sql_class.h" //#include "sql_class.h"
//#include "sql_time.h" //#include "sql_time.h"
#if defined(__WIN__) #if defined(__WIN__)
...@@ -35,9 +35,6 @@ ...@@ -35,9 +35,6 @@
#include "array.h" #include "array.h"
#include "filter.h" #include "filter.h"
#include "xindex.h" #include "xindex.h"
#if defined(MONGO_SUPPORT) || defined(JDBC_SUPPORT)
#include "tabext.h"
#endif // MONGO_SUPPORT || JDBC_SUPPORT
/***********************************************************************/ /***********************************************************************/
/* Utility routines. */ /* Utility routines. */
...@@ -1406,86 +1403,6 @@ PFIL FILTER::Copy(PTABS t) ...@@ -1406,86 +1403,6 @@ PFIL FILTER::Copy(PTABS t)
} // end of Copy } // end of Copy
#endif // 0 #endif // 0
#if defined(MONGO_SUPPORT)
/***********************************************************************/
/* Make selector json representation for Mongo tables. */
/***********************************************************************/
bool FILTER::MakeSelector(PGLOBAL g, PSTRG s)
{
s->Append('{');
if (Opc == OP_AND || Opc == OP_OR) {
if (GetArgType(0) != TYPE_FILTER || GetArgType(1) != TYPE_FILTER)
return true;
s->Append("\"$");
s->Append(Opc == OP_AND ? "and" : "or");
s->Append("\":[");
if (((PFIL)Arg(0))->MakeSelector(g, s))
return true;
s->Append(',');
if (((PFIL)Arg(1))->MakeSelector(g, s))
return true;
s->Append(']');
} else {
if (GetArgType(0) != TYPE_COLBLK)
return true;
s->Append('"');
s->Append(((PCOL)Arg(0))->GetJpath(g, false));
s->Append("\":{\"$");
switch (Opc) {
case OP_EQ:
s->Append("eq");
break;
case OP_NE:
s->Append("ne");
break;
case OP_GT:
s->Append("gt");
break;
case OP_GE:
s->Append("gte");
break;
case OP_LT:
s->Append("lt");
break;
case OP_LE:
s->Append("lte");
break;
case OP_NULL:
case OP_LIKE:
case OP_EXIST:
default:
return true;
} // endswitch Opc
s->Append("\":");
if (GetArgType(1) == TYPE_COLBLK) {
s->Append("\"$");
s->Append(((PEXTCOL)Arg(1))->GetJpath(g, false));
s->Append('"');
} else {
char buf[501];
Arg(1)->Prints(g, buf, 500);
s->Append(buf);
} // endif Type
s->Append('}');
} // endif Opc
s->Append('}');
return false;
} // end of MakeSelector
#endif // MONGO_SUPPORT
/*********************************************************************/ /*********************************************************************/
/* Make file output of FILTER contents. */ /* Make file output of FILTER contents. */
/*********************************************************************/ /*********************************************************************/
......
...@@ -61,9 +61,6 @@ class DllExport FILTER : public XOBJECT { /* Filter description block */ ...@@ -61,9 +61,6 @@ class DllExport FILTER : public XOBJECT { /* Filter description block */
//virtual PXOB CheckSubQuery(PGLOBAL, PSQL); //virtual PXOB CheckSubQuery(PGLOBAL, PSQL);
//virtual bool CheckLocal(PTDB); //virtual bool CheckLocal(PTDB);
//virtual int CheckSpcCol(PTDB tdbp, int n); //virtual int CheckSpcCol(PTDB tdbp, int n);
#if defined(MONGO_SUPPORT)
bool MakeSelector(PGLOBAL g, PSTRG s);
#endif // MONGO_SUPPORT
virtual void Printf(PGLOBAL g, FILE *f, uint n); virtual void Printf(PGLOBAL g, FILE *f, uint n);
virtual void Prints(PGLOBAL g, char *ps, uint z); virtual void Prints(PGLOBAL g, char *ps, uint z);
// PFIL Linearize(bool nosep); // PFIL Linearize(bool nosep);
......
...@@ -129,10 +129,13 @@ ...@@ -129,10 +129,13 @@
#if defined(ODBC_SUPPORT) #if defined(ODBC_SUPPORT)
#include "odbccat.h" #include "odbccat.h"
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
#include "tabjdbc.h" #include "tabjdbc.h"
#include "jdbconn.h" #include "jdbconn.h"
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(CMGO_SUPPORT)
#include "cmgoconn.h"
#endif // CMGO_SUPPORT
#include "tabmysql.h" #include "tabmysql.h"
#include "filamdbf.h" #include "filamdbf.h"
#include "tabxcl.h" #include "tabxcl.h"
...@@ -171,18 +174,18 @@ ...@@ -171,18 +174,18 @@
#define JSONMAX 10 // JSON Default max grp size #define JSONMAX 10 // JSON Default max grp size
extern "C" { extern "C" {
char version[]= "Version 1.06.0004 September 03, 2017"; char version[]= "Version 1.06.0005 October 14, 2017";
#if defined(__WIN__) #if defined(__WIN__)
char compver[]= "Version 1.06.0004 " __DATE__ " " __TIME__; char compver[]= "Version 1.06.0005 " __DATE__ " " __TIME__;
char slash= '\\'; char slash= '\\';
#else // !__WIN__ #else // !__WIN__
char slash= '/'; char slash= '/';
#endif // !__WIN__ #endif // !__WIN__
} // extern "C" } // extern "C"
#if defined(NEW_MAR) #if MYSQL_VERSION_ID > 100200
#define stored_in_db stored_in_db() #define stored_in_db stored_in_db()
#endif // NEW_MAR) #endif // MYSQL_VERSION_ID
#if defined(XMAP) #if defined(XMAP)
my_bool xmap= false; my_bool xmap= false;
...@@ -196,10 +199,10 @@ extern "C" { ...@@ -196,10 +199,10 @@ extern "C" {
} // extern "C" } // extern "C"
#endif // XMSG #endif // XMSG
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
char *JvmPath; char *JvmPath;
char *ClassPath; char *ClassPath;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
pthread_mutex_t parmut; pthread_mutex_t parmut;
pthread_mutex_t usrmut; pthread_mutex_t usrmut;
...@@ -212,9 +215,9 @@ PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info); ...@@ -212,9 +215,9 @@ PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info);
PQRYRES VirColumns(PGLOBAL g, bool info); PQRYRES VirColumns(PGLOBAL g, bool info);
PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info); PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info);
PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info); PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info);
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ url, PTOS topt, bool info); PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ url, PTOS topt, bool info);
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v); int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v);
void PushWarning(PGLOBAL g, THD *thd, int level); void PushWarning(PGLOBAL g, THD *thd, int level);
bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db, bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db,
...@@ -222,7 +225,7 @@ bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db, ...@@ -222,7 +225,7 @@ bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db,
bool ZipLoadFile(PGLOBAL, PCSZ, PCSZ, PCSZ, bool, bool); bool ZipLoadFile(PGLOBAL, PCSZ, PCSZ, PCSZ, bool, bool);
bool ExactInfo(void); bool ExactInfo(void);
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
void mongo_init(bool); //void mongo_init(bool);
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
USETEMP UseTemp(void); USETEMP UseTemp(void);
int GetConvSize(void); int GetConvSize(void);
...@@ -234,6 +237,8 @@ uint GetWorkSize(void); ...@@ -234,6 +237,8 @@ uint GetWorkSize(void);
void SetWorkSize(uint); void SetWorkSize(uint);
extern "C" const char *msglang(void); extern "C" const char *msglang(void);
static char *strz(PGLOBAL g, LEX_STRING &ls);
static void PopUser(PCONNECT xp); static void PopUser(PCONNECT xp);
static PCONNECT GetUser(THD *thd, PCONNECT xp); static PCONNECT GetUser(THD *thd, PCONNECT xp);
static PGLOBAL GetPlug(THD *thd, PCONNECT& lxp); static PGLOBAL GetPlug(THD *thd, PCONNECT& lxp);
...@@ -350,21 +355,21 @@ static MYSQL_THDVAR_UINT(json_grp_size, ...@@ -350,21 +355,21 @@ static MYSQL_THDVAR_UINT(json_grp_size,
"max number of rows for JSON aggregate functions.", "max number of rows for JSON aggregate functions.",
NULL, NULL, JSONMAX, 1, INT_MAX, 1); NULL, NULL, JSONMAX, 1, INT_MAX, 1);
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
// Default java wrapper to use with JDBC tables // Default java wrapper to use with JDBC tables
static MYSQL_THDVAR_STR(java_wrapper, static MYSQL_THDVAR_STR(java_wrapper,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC,
"Java wrapper class name", "Java wrapper class name",
// check_java_wrapper, update_java_wrapper, // check_java_wrapper, update_java_wrapper,
NULL, NULL, "wrappers/JdbcInterface"); NULL, NULL, "wrappers/JdbcInterface");
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(MONGO_SUPPORT) #if 0 // This is apparently not acceptable for a plugin
// Enabling MONGO table type // Enabling MONGO table type
static MYSQL_THDVAR_BOOL(enable_mongo, PLUGIN_VAR_RQCMDARG, static MYSQL_THDVAR_BOOL(enable_mongo, PLUGIN_VAR_RQCMDARG,
"Enabling the MongoDB access", "Enabling the MongoDB access",
NULL, NULL, MONGO_ENABLED); NULL, NULL, MONGO_ENABLED);
#endif // MONGO_SUPPORT #endif // 0
#if defined(XMSG) || defined(NEWMSG) #if defined(XMSG) || defined(NEWMSG)
const char *language_names[]= const char *language_names[]=
...@@ -421,14 +426,14 @@ extern "C" const char *msglang(void) ...@@ -421,14 +426,14 @@ extern "C" const char *msglang(void)
} // end of msglang } // end of msglang
#else // !XMSG && !NEWMSG #else // !XMSG && !NEWMSG
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
char *GetJavaWrapper(void) char *GetJavaWrapper(void)
{return connect_hton ? THDVAR(current_thd, java_wrapper) : (char*)"wrappers/JdbcInterface";} {return connect_hton ? THDVAR(current_thd, java_wrapper) : (char*)"wrappers/JdbcInterface";}
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); } //bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); }
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
extern "C" const char *msglang(void) extern "C" const char *msglang(void)
{ {
...@@ -705,7 +710,7 @@ static int connect_init_func(void *p) ...@@ -705,7 +710,7 @@ static int connect_init_func(void *p)
XmlInitParserLib(); XmlInitParserLib();
#endif // LIBXML2_SUPPORT #endif // LIBXML2_SUPPORT
#if defined(CMGO_SUPPORT) #if 0 //defined(CMGO_SUPPORT)
mongo_init(true); mongo_init(true);
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
...@@ -726,9 +731,9 @@ static int connect_init_func(void *p) ...@@ -726,9 +731,9 @@ static int connect_init_func(void *p)
DTVAL::SetTimeShift(); // Initialize time zone shift once for all DTVAL::SetTimeShift(); // Initialize time zone shift once for all
BINCOL::SetEndian(); // Initialize host endian setting BINCOL::SetEndian(); // Initialize host endian setting
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
JAVAConn::SetJVM(); JAVAConn::SetJVM();
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
DBUG_RETURN(0); DBUG_RETURN(0);
} // end of connect_init_func } // end of connect_init_func
...@@ -748,12 +753,12 @@ static int connect_done_func(void *) ...@@ -748,12 +753,12 @@ static int connect_done_func(void *)
#endif // LIBXML2_SUPPORT #endif // LIBXML2_SUPPORT
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
mongo_init(false); CMgoConn::mongo_init(false);
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
#ifdef JDBC_SUPPORT #ifdef JAVA_SUPPORT
JAVAConn::ResetJVM(); JAVAConn::ResetJVM();
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if !defined(__WIN__) #if !defined(__WIN__)
PROFILE_End(); PROFILE_End();
...@@ -1758,7 +1763,7 @@ bool ha_connect::IsPartitioned(void) ...@@ -1758,7 +1763,7 @@ bool ha_connect::IsPartitioned(void)
} // end of IsPartitioned } // end of IsPartitioned
const char *ha_connect::GetDBName(const char* name) PCSZ ha_connect::GetDBName(PCSZ name)
{ {
return (name) ? name : table->s->db.str; return (name) ? name : table->s->db.str;
} // end of GetDBName } // end of GetDBName
...@@ -1821,7 +1826,7 @@ void ha_connect::AddColName(char *cp, Field *fp) ...@@ -1821,7 +1826,7 @@ void ha_connect::AddColName(char *cp, Field *fp)
/***********************************************************************/ /***********************************************************************/
/* This function sets the current database path. */ /* This function sets the current database path. */
/***********************************************************************/ /***********************************************************************/
bool ha_connect::SetDataPath(PGLOBAL g, const char *path) bool ha_connect::SetDataPath(PGLOBAL g, PCSZ path)
{ {
return (!(datapath= SetPath(g, path))); return (!(datapath= SetPath(g, path)));
} // end of SetDataPath } // end of SetDataPath
...@@ -2181,7 +2186,7 @@ int ha_connect::MakeRecord(char *buf) ...@@ -2181,7 +2186,7 @@ int ha_connect::MakeRecord(char *buf)
/***********************************************************************/ /***********************************************************************/
/* Set row values from a MySQL pseudo record. Specific to MySQL. */ /* Set row values from a MySQL pseudo record. Specific to MySQL. */
/***********************************************************************/ /***********************************************************************/
int ha_connect::ScanRecord(PGLOBAL g, uchar *) int ha_connect::ScanRecord(PGLOBAL g, const uchar *)
{ {
char attr_buffer[1024]; char attr_buffer[1024];
char data_buffer[1024]; char data_buffer[1024];
...@@ -2324,7 +2329,7 @@ int ha_connect::ScanRecord(PGLOBAL g, uchar *) ...@@ -2324,7 +2329,7 @@ int ha_connect::ScanRecord(PGLOBAL g, uchar *)
/* Check change in index column. Specific to MySQL. */ /* Check change in index column. Specific to MySQL. */
/* Should be elaborated to check for real changes. */ /* Should be elaborated to check for real changes. */
/***********************************************************************/ /***********************************************************************/
int ha_connect::CheckRecord(PGLOBAL g, const uchar *, uchar *newbuf) int ha_connect::CheckRecord(PGLOBAL g, const uchar *, const uchar *newbuf)
{ {
return ScanRecord(g, newbuf); return ScanRecord(g, newbuf);
} // end of dummy CheckRecord } // end of dummy CheckRecord
...@@ -2517,7 +2522,7 @@ const char *ha_connect::GetValStr(OPVAL vop, bool neg) ...@@ -2517,7 +2522,7 @@ const char *ha_connect::GetValStr(OPVAL vop, bool neg)
val= (neg) ? " IS NOT NULL" : " IS NULL"; val= (neg) ? " IS NOT NULL" : " IS NULL";
break; break;
case OP_LIKE: case OP_LIKE:
val= " LIKE "; val= (neg) ? " NOT LIKE " : " LIKE ";
break; break;
case OP_XX: case OP_XX:
val= (neg) ? " NOT BETWEEN " : " BETWEEN "; val= (neg) ? " NOT BETWEEN " : " BETWEEN ";
...@@ -2886,7 +2891,10 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond) ...@@ -2886,7 +2891,10 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond)
case Item_func::LE_FUNC: vop= OP_LE; break; case Item_func::LE_FUNC: vop= OP_LE; break;
case Item_func::GE_FUNC: vop= OP_GE; break; case Item_func::GE_FUNC: vop= OP_GE; break;
case Item_func::GT_FUNC: vop= OP_GT; break; case Item_func::GT_FUNC: vop= OP_GT; break;
case Item_func::LIKE_FUNC: vop= OP_LIKE; break; case Item_func::LIKE_FUNC:
vop= OP_LIKE;
neg = ((Item_func_opt_neg *)condf)->negated;
break;
case Item_func::ISNOTNULL_FUNC: case Item_func::ISNOTNULL_FUNC:
neg = true; neg = true;
// fall through // fall through
...@@ -5385,13 +5393,11 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5385,13 +5393,11 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
bool cnc= false; bool cnc= false;
int cto= -1, qto= -1; int cto= -1, qto= -1;
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) || defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
#if defined(JDBC_SUPPORT)
PJPARM sjp= NULL; PJPARM sjp= NULL;
#endif // JDBC_SUPPORT
PCSZ driver= NULL; PCSZ driver= NULL;
char *url= NULL; char *url= NULL;
#endif // JDBC_SUPPORT || MONGO_SUPPORT #endif // JAVA_SUPPORT
uint tm, fnc= FNC_NO, supfnc= (FNC_NO | FNC_COL); uint tm, fnc= FNC_NO, supfnc= (FNC_NO | FNC_COL);
bool bif, ok= false, dbf= false; bool bif, ok= false, dbf= false;
TABTYPE ttp= TAB_UNDEF; TABTYPE ttp= TAB_UNDEF;
...@@ -5452,9 +5458,9 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5452,9 +5458,9 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
if ((ucnc= GetListOption(g, "UseDSN", topt->oplist))) if ((ucnc= GetListOption(g, "UseDSN", topt->oplist)))
cnc= (!*ucnc || *ucnc == 'y' || *ucnc == 'Y' || atoi(ucnc) != 0); cnc= (!*ucnc || *ucnc == 'y' || *ucnc == 'Y' || atoi(ucnc) != 0);
#endif #endif
#if defined(JDBC_SUPPORT) || defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
driver= GetListOption(g, "Driver", topt->oplist, NULL); driver= GetListOption(g, "Driver", topt->oplist, NULL);
#endif // JDBC_SUPPORT || MONGO_SUPPORT #endif // JAVA_SUPPORT
#if defined(PROMPT_OK) #if defined(PROMPT_OK)
cop= atoi(GetListOption(g, "checkdsn", topt->oplist, "0")); cop= atoi(GetListOption(g, "checkdsn", topt->oplist, "0"));
#endif // PROMPT_OK #endif // PROMPT_OK
...@@ -5541,7 +5547,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5541,7 +5547,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
supfnc |= (FNC_TABLE | FNC_DSN | FNC_DRIVER); supfnc |= (FNC_TABLE | FNC_DSN | FNC_DRIVER);
break; break;
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
case TAB_JDBC: case TAB_JDBC:
if (fnc & FNC_DRIVER) { if (fnc & FNC_DRIVER) {
ok = true; ok = true;
...@@ -5575,7 +5581,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5575,7 +5581,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
supfnc |= (FNC_DRIVER | FNC_TABLE); supfnc |= (FNC_DRIVER | FNC_TABLE);
break; break;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
case TAB_DBF: case TAB_DBF:
dbf = true; dbf = true;
// Passthru // Passthru
...@@ -5632,10 +5638,8 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5632,10 +5638,8 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
ok = true; ok = true;
break; break;
#endif // __WIN__ #endif // __WIN__
#if defined(PIVOT_SUPPORT)
case TAB_PIVOT: case TAB_PIVOT:
supfnc = FNC_NO; supfnc = FNC_NO;
#endif // PIVOT_SUPPORT
case TAB_PRX: case TAB_PRX:
case TAB_TBL: case TAB_TBL:
case TAB_XCL: case TAB_XCL:
...@@ -5666,14 +5670,14 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5666,14 +5670,14 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
ok = true; ok = true;
break; break;
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
case TAB_MONGO: case TAB_MONGO:
if (!topt->tabname) if (!topt->tabname)
topt->tabname = tab; topt->tabname = tab;
ok = true; ok = true;
break; break;
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
case TAB_VIR: case TAB_VIR:
ok = true; ok = true;
break; break;
...@@ -5746,7 +5750,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5746,7 +5750,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
break; break;
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
case TAB_JDBC: case TAB_JDBC:
switch (fnc) { switch (fnc) {
case FNC_NO: case FNC_NO:
...@@ -5775,7 +5779,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5775,7 +5779,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
} // endswitch info } // endswitch info
break; break;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
case TAB_MYSQL: case TAB_MYSQL:
qrp = MyColumns(g, thd, host, db, user, pwd, tab, qrp = MyColumns(g, thd, host, db, user, pwd, tab,
NULL, port, fnc == FNC_COL); NULL, port, fnc == FNC_COL);
...@@ -5805,25 +5809,21 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5805,25 +5809,21 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
} // endif OcrColumns } // endif OcrColumns
break; break;
#if defined(PIVOT_SUPPORT)
case TAB_PIVOT: case TAB_PIVOT:
qrp = PivotColumns(g, tab, src, pic, fcl, skc, host, db, user, pwd, port); qrp = PivotColumns(g, tab, src, pic, fcl, skc, host, db, user, pwd, port);
break; break;
#endif // PIVOT_SUPPORT
case TAB_VIR: case TAB_VIR:
qrp = VirColumns(g, fnc == FNC_COL); qrp = VirColumns(g, fnc == FNC_COL);
break; break;
case TAB_JSON: case TAB_JSON:
qrp = JSONColumns(g, db, dsn, topt, fnc == FNC_COL); qrp = JSONColumns(g, db, dsn, topt, fnc == FNC_COL);
break; break;
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
case TAB_MONGO: case TAB_MONGO:
if (!(url = strz(g, create_info->connect_string)) || !*url) url = strz(g, create_info->connect_string);
url = "mongodb://localhost:27017";
qrp = MGOColumns(g, db, url, topt, fnc == FNC_COL); qrp = MGOColumns(g, db, url, topt, fnc == FNC_COL);
break; break;
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
#if defined(LIBXML2_SUPPORT) || defined(DOMDOC_SUPPORT) #if defined(LIBXML2_SUPPORT) || defined(DOMDOC_SUPPORT)
case TAB_XML: case TAB_XML:
qrp = XMLColumns(g, (char*)db, tab, topt, fnc == FNC_COL); qrp = XMLColumns(g, (char*)db, tab, topt, fnc == FNC_COL);
...@@ -5948,7 +5948,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5948,7 +5948,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
break; break;
case FLD_SCHEM: case FLD_SCHEM:
#if defined(ODBC_SUPPORT) || defined(JDBC_SUPPORT) #if defined(ODBC_SUPPORT) || defined(JAVA_SUPPORT)
if ((ttp == TAB_ODBC || ttp == TAB_JDBC) && crp->Kdata) { if ((ttp == TAB_ODBC || ttp == TAB_JDBC) && crp->Kdata) {
if (schem && stricmp(schem, crp->Kdata->GetCharValue(i))) { if (schem && stricmp(schem, crp->Kdata->GetCharValue(i))) {
sprintf(g->Message, sprintf(g->Message,
...@@ -5959,7 +5959,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -5959,7 +5959,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
schem = crp->Kdata->GetCharValue(i); schem = crp->Kdata->GetCharValue(i);
} // endif ttp } // endif ttp
#endif // ODBC_SUPPORT || JDBC_SUPPORT #endif // ODBC_SUPPORT || JAVA_SUPPORT
default: default:
break; // Ignore break; // Ignore
} // endswitch Fld } // endswitch Fld
...@@ -6007,7 +6007,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ...@@ -6007,7 +6007,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
} else } else
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
if (ttp == TAB_JDBC) { if (ttp == TAB_JDBC) {
int plgtyp; int plgtyp;
...@@ -7150,7 +7150,7 @@ static MYSQL_SYSVAR_STR(errmsg_dir_path, msg_path, ...@@ -7150,7 +7150,7 @@ static MYSQL_SYSVAR_STR(errmsg_dir_path, msg_path,
"../../../../storage/connect/"); // for testing "../../../../storage/connect/"); // for testing
#endif // XMSG #endif // XMSG
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
static MYSQL_SYSVAR_STR(jvm_path, JvmPath, static MYSQL_SYSVAR_STR(jvm_path, JvmPath,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC,
"Path to the directory where is the JVM lib", "Path to the directory where is the JVM lib",
...@@ -7162,7 +7162,7 @@ static MYSQL_SYSVAR_STR(class_path, ClassPath, ...@@ -7162,7 +7162,7 @@ static MYSQL_SYSVAR_STR(class_path, ClassPath,
"Java class path", "Java class path",
// check_class_path, update_class_path, // check_class_path, update_class_path,
NULL, NULL, NULL); NULL, NULL, NULL);
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
static struct st_mysql_sys_var* connect_system_variables[]= { static struct st_mysql_sys_var* connect_system_variables[]= {
...@@ -7183,14 +7183,14 @@ static struct st_mysql_sys_var* connect_system_variables[]= { ...@@ -7183,14 +7183,14 @@ static struct st_mysql_sys_var* connect_system_variables[]= {
#endif // XMSG #endif // XMSG
MYSQL_SYSVAR(json_null), MYSQL_SYSVAR(json_null),
MYSQL_SYSVAR(json_grp_size), MYSQL_SYSVAR(json_grp_size),
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
MYSQL_SYSVAR(jvm_path), MYSQL_SYSVAR(jvm_path),
MYSQL_SYSVAR(class_path), MYSQL_SYSVAR(class_path),
MYSQL_SYSVAR(java_wrapper), MYSQL_SYSVAR(java_wrapper),
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
MYSQL_SYSVAR(enable_mongo), //MYSQL_SYSVAR(enable_mongo),
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
NULL NULL
}; };
...@@ -7207,7 +7207,7 @@ maria_declare_plugin(connect) ...@@ -7207,7 +7207,7 @@ maria_declare_plugin(connect)
0x0106, /* version number (1.05) */ 0x0106, /* version number (1.05) */
NULL, /* status variables */ NULL, /* status variables */
connect_system_variables, /* system variables */ connect_system_variables, /* system variables */
"1.06.0004", /* string version */ "1.06.0005", /* string version */
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */ MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
} }
maria_declare_plugin_end; maria_declare_plugin_end;
...@@ -32,8 +32,6 @@ ...@@ -32,8 +32,6 @@
/****************************************************************************/ /****************************************************************************/
#include "mycat.h" #include "mycat.h"
static char *strz(PGLOBAL g, LEX_STRING &ls);
/****************************************************************************/ /****************************************************************************/
/* Structures used to pass info between CONNECT and ha_connect. */ /* Structures used to pass info between CONNECT and ha_connect. */
/****************************************************************************/ /****************************************************************************/
...@@ -207,13 +205,13 @@ class ha_connect: public handler ...@@ -207,13 +205,13 @@ class ha_connect: public handler
bool IsOpened(void); bool IsOpened(void);
int CloseTable(PGLOBAL g); int CloseTable(PGLOBAL g);
int MakeRecord(char *buf); int MakeRecord(char *buf);
int ScanRecord(PGLOBAL g, uchar *buf); int ScanRecord(PGLOBAL g, const uchar *buf);
int CheckRecord(PGLOBAL g, const uchar *oldbuf, uchar *newbuf); int CheckRecord(PGLOBAL g, const uchar *oldbuf, const uchar *newbuf);
int ReadIndexed(uchar *buf, OPVAL op, const key_range *kr= NULL); int ReadIndexed(uchar *buf, OPVAL op, const key_range *kr= NULL);
bool IsIndexed(Field *fp); bool IsIndexed(Field *fp);
bool MakeKeyWhere(PGLOBAL g, PSTRG qry, OPVAL op, char q, bool MakeKeyWhere(PGLOBAL g, PSTRG qry, OPVAL op, char q,
const key_range *kr); const key_range *kr);
inline char *Strz(LEX_STRING &ls); //inline char *Strz(LEX_STRING &ls);
key_range start_key; key_range start_key;
...@@ -231,7 +229,7 @@ class ha_connect: public handler ...@@ -231,7 +229,7 @@ class ha_connect: public handler
/** @brief /** @brief
The file extensions. The file extensions.
*/ */
const char **bas_ext() const; //const char **bas_ext() const;
/** /**
Check if a storage engine supports a particular alter table in-place Check if a storage engine supports a particular alter table in-place
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
/* Include relevant MariaDB header file. */ /* Include relevant MariaDB header file. */
/***********************************************************************/ /***********************************************************************/
#include <my_global.h> #include <my_global.h>
#include <m_string.h> //#include <m_string.h>
#if defined(__WIN__) #if defined(__WIN__)
#include <direct.h> // for getcwd #include <direct.h> // for getcwd
#if defined(__BORLANDC__) #if defined(__BORLANDC__)
...@@ -57,6 +57,7 @@ extern "C" HINSTANCE s_hModule; // Saved module handle ...@@ -57,6 +57,7 @@ extern "C" HINSTANCE s_hModule; // Saved module handle
extern char *JvmPath; // The connect_jvm_path global variable value extern char *JvmPath; // The connect_jvm_path global variable value
extern char *ClassPath; // The connect_class_path global variable value extern char *ClassPath; // The connect_class_path global variable value
char *GetPluginDir(void);
char *GetJavaWrapper(void); // The connect_java_wrapper variable value char *GetJavaWrapper(void); // The connect_java_wrapper variable value
/***********************************************************************/ /***********************************************************************/
......
...@@ -54,12 +54,12 @@ typedef jint(JNICALL *GETJVM) (JavaVM **, jsize, jsize *); ...@@ -54,12 +54,12 @@ typedef jint(JNICALL *GETJVM) (JavaVM **, jsize, jsize *);
typedef jint(JNICALL *GETDEF) (void *); typedef jint(JNICALL *GETDEF) (void *);
#endif // _DEBUG #endif // _DEBUG
class JAVAConn; //class JAVAConn;
/***********************************************************************/ /***********************************************************************/
/* JAVAConn class. */ /* JAVAConn class. */
/***********************************************************************/ /***********************************************************************/
class JAVAConn : public BLOCK { class DllExport JAVAConn : public BLOCK {
friend class TDBJMG; friend class TDBJMG;
friend class JMGDISC; friend class JMGDISC;
private: private:
......
...@@ -654,7 +654,7 @@ bool JDBConn::Connect(PJPARM sop) ...@@ -654,7 +654,7 @@ bool JDBConn::Connect(PJPARM sop)
if (gmID(g, typid, "ColumnType", "(ILjava/lang/String;)I")) if (gmID(g, typid, "ColumnType", "(ILjava/lang/String;)I"))
return true; return true;
else else
m_Opened = true; m_Connected = true;
return false; return false;
} // end of Connect } // end of Connect
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#define nullptr 0 #define nullptr 0
bool IsNum(PSZ s); bool IsNum(PSZ s);
bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s);
/* --------------------------- Class JNCOL --------------------------- */ /* --------------------------- Class JNCOL --------------------------- */
...@@ -123,12 +124,13 @@ void JMgoConn::AddJars(PSTRG jpop, char sep) ...@@ -123,12 +124,13 @@ void JMgoConn::AddJars(PSTRG jpop, char sep)
#if defined(DEVELOPMENT) #if defined(DEVELOPMENT)
if (m_Version == 2) { if (m_Version == 2) {
jpop->Append(sep); jpop->Append(sep);
jpop->Append("C:/Eclipse/workspace/MongoWrap2/bin"); // jpop->Append("C:/Eclipse/workspace/MongoWrap2/bin");
jpop->Append(sep); jpop->Append(sep);
jpop->Append("C:/mongo-java-driver/mongo-java-driver-2.13.3.jar"); jpop->Append("C:/mongo-java-driver/mongo-java-driver-2.13.3.jar");
} else { } else {
jpop->Append(sep); jpop->Append(sep);
jpop->Append("C:/Eclipse/workspace/MongoWrap3/bin"); // jpop->Append("C:/Eclipse/workspace/MongoWrap3/bin");
// jpop->Append("C:/Program Files/MariaDB 10.1/lib/plugin/JavaWrappers.jar");
jpop->Append(sep); jpop->Append(sep);
jpop->Append("C:/mongo-java-driver/mongo-java-driver-3.4.2.jar"); jpop->Append("C:/mongo-java-driver/mongo-java-driver-3.4.2.jar");
} // endif m_Version } // endif m_Version
...@@ -238,6 +240,7 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, ...@@ -238,6 +240,7 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options,
PSZ jp; PSZ jp;
PCSZ op = NULL, sf = NULL, Options = options; PCSZ op = NULL, sf = NULL, Options = options;
PSTRG s = NULL; PSTRG s = NULL;
PFIL filp = tdbp->GetFilter();
if (Options && !stricmp(Options, "all")) { if (Options && !stricmp(Options, "all")) {
Options = NULL; Options = NULL;
...@@ -264,10 +267,10 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, ...@@ -264,10 +267,10 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options,
s = new(g) STRING(g, 1023, (PSZ)Options); s = new(g) STRING(g, 1023, (PSZ)Options);
if (tdbp->GetFilter()) { if (filp) {
s->Append(",{\"$match\":"); s->Append(",{\"$match\":");
if (tdbp->GetFilter()->MakeSelector(g, s)) { if (MakeSelector(g, filp, s)) {
strcpy(g->Message, "Failed making selector"); strcpy(g->Message, "Failed making selector");
return NULL; return NULL;
} else } else
...@@ -314,15 +317,15 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, ...@@ -314,15 +317,15 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options,
return AggregateCollection(p); return AggregateCollection(p);
} else { } else {
if (filter || tdbp->GetFilter()) { if (filter || filp) {
if (trace) { if (trace) {
if (filter) if (filter)
htrc("Filter: %s\n", filter); htrc("Filter: %s\n", filter);
if (tdbp->GetFilter()) { if (filp) {
char buf[512]; char buf[512];
tdbp->GetFilter()->Prints(g, buf, 511); filp->Prints(g, buf, 511);
htrc("To_Filter: %s\n", buf); htrc("To_Filter: %s\n", buf);
} // endif To_Filter } // endif To_Filter
...@@ -331,11 +334,11 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, ...@@ -331,11 +334,11 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options,
s = new(g) STRING(g, 1023, (PSZ)filter); s = new(g) STRING(g, 1023, (PSZ)filter);
len = s->GetLength(); len = s->GetLength();
if (tdbp->GetFilter()) { if (filp) {
if (filter) if (filter)
s->Append(','); s->Append(',');
if (tdbp->GetFilter()->MakeSelector(g, s)) { if (MakeSelector(g, filp, s)) {
strcpy(g->Message, "Failed making selector"); strcpy(g->Message, "Failed making selector");
return NULL; return NULL;
} // endif Selector } // endif Selector
......
...@@ -53,8 +53,8 @@ PSZ Serialize(PGLOBAL g, PJSON jsp, char *fn, int pretty); ...@@ -53,8 +53,8 @@ PSZ Serialize(PGLOBAL g, PJSON jsp, char *fn, int pretty);
bool SerializeArray(JOUT *js, PJAR jarp, bool b); bool SerializeArray(JOUT *js, PJAR jarp, bool b);
bool SerializeObject(JOUT *js, PJOB jobp); bool SerializeObject(JOUT *js, PJOB jobp);
bool SerializeValue(JOUT *js, PJVAL jvp); bool SerializeValue(JOUT *js, PJVAL jvp);
bool IsNum(PSZ s);
char *NextChr(PSZ s, char sep); char *NextChr(PSZ s, char sep);
DllExport bool IsNum(PSZ s);
/***********************************************************************/ /***********************************************************************/
/* Class JOUT. Used by Serialize. */ /* Class JOUT. Used by Serialize. */
......
...@@ -497,28 +497,26 @@ PVAL JSNX::ExpandArray(PGLOBAL g, PJAR arp, int n) ...@@ -497,28 +497,26 @@ PVAL JSNX::ExpandArray(PGLOBAL g, PJAR arp, int n)
/*********************************************************************************/ /*********************************************************************************/
PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n)
{ {
//int i, ars, nv = 0, nextsame = Tjp->NextSame; int i, ars = arp->size(), nv = 0, nextsame = 0;
int i, nv = 0, nextsame = 0; bool err;
my_bool err;
OPVAL op = Nodes[n].Op; OPVAL op = Nodes[n].Op;
PVAL val[2], vp = Nodes[n].Valp; PVAL val[2], vp = Nodes[n].Valp;
PJVAL jvrp, jvp; PJVAL jvrp, jvp;
JVALUE jval; JVALUE jval;
vp->Reset(); vp->Reset();
//ars = arp->size();
if (trace) if (trace)
htrc("CalculateArray size=%d\n", arp->size()); htrc("CalculateArray size=%d\n", ars);
// htrc("CalculateArray size=%d\n", ars); else // This is temporary until we find a better way to fix the compiler
htrc(""); // bug sometime causing the next loop to be executed only once.
for (i = 0; i < arp->size(); i++) { for (i = 0; i < ars; i++) {
//for (i = 0; i < ars; i++) { because compiler bug
jvrp = arp->GetValue(i); jvrp = arp->GetValue(i);
if (trace) if (trace)
htrc("Value %s null=%d nv=%d\n", htrc("i=%d Value %s null=%d nv=%d\n",
jvrp->GetString(g), jvrp->IsNull() ? 1 : 0, nv); i, jvrp->GetString(g), jvrp->IsNull() ? 1 : 0, nv);
if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) { if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) {
if (jvrp->IsNull()) { if (jvrp->IsNull()) {
......
...@@ -18,12 +18,13 @@ ...@@ -18,12 +18,13 @@
#include "plgdbsem.h" #include "plgdbsem.h"
#include "xtable.h" #include "xtable.h"
#include "tabext.h" #include "tabext.h"
#include "filter.h"
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
#include "tabcmg.h" #include "tabcmg.h"
#endif // MONGO_SUPPORT #endif // CMGO_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
#include "tabjmg.h" #include "tabjmg.h"
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#include "resource.h" #include "resource.h"
/***********************************************************************/ /***********************************************************************/
...@@ -34,6 +35,86 @@ ...@@ -34,6 +35,86 @@
bool IsNum(PSZ s); bool IsNum(PSZ s);
/***********************************************************************/
/* Make selector json representation for Mongo tables. */
/***********************************************************************/
bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s)
{
OPVAL opc = fp->GetOpc();
s->Append('{');
if (opc == OP_AND || opc == OP_OR) {
if (fp->GetArgType(0) != TYPE_FILTER || fp->GetArgType(1) != TYPE_FILTER)
return true;
s->Append("\"$");
s->Append(opc == OP_AND ? "and" : "or");
s->Append("\":[");
if (MakeSelector(g, (PFIL)fp->Arg(0), s))
return true;
s->Append(',');
if (MakeSelector(g, (PFIL)fp->Arg(1), s))
return true;
s->Append(']');
} else {
if (fp->GetArgType(0) != TYPE_COLBLK)
return true;
s->Append('"');
s->Append(((PCOL)fp->Arg(0))->GetJpath(g, false));
s->Append("\":{\"$");
switch (opc) {
case OP_EQ:
s->Append("eq");
break;
case OP_NE:
s->Append("ne");
break;
case OP_GT:
s->Append("gt");
break;
case OP_GE:
s->Append("gte");
break;
case OP_LT:
s->Append("lt");
break;
case OP_LE:
s->Append("lte");
break;
case OP_NULL:
case OP_LIKE:
case OP_EXIST:
default:
return true;
} // endswitch Opc
s->Append("\":");
if (fp->GetArgType(1) == TYPE_COLBLK) {
s->Append("\"$");
s->Append(((PEXTCOL)fp->Arg(1))->GetJpath(g, false));
s->Append('"');
} else {
char buf[501];
fp->Arg(1)->Prints(g, buf, 500);
s->Append(buf);
} // endif Type
s->Append('}');
} // endif opc
s->Append('}');
return false;
} // end of MakeSelector
/***********************************************************************/ /***********************************************************************/
/* MGOColumns: construct the result blocks containing the description */ /* MGOColumns: construct the result blocks containing the description */
/* of all the columns of a document contained inside MongoDB. */ /* of all the columns of a document contained inside MongoDB. */
...@@ -72,7 +153,7 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info) ...@@ -72,7 +153,7 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info)
goto err; goto err;
#endif #endif
} else if (drv && toupper(*drv) == 'J') { } else if (drv && toupper(*drv) == 'J') {
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
cmgd = new(g) JMGDISC(g, (int*)length); cmgd = new(g) JMGDISC(g, (int*)length);
#else #else
sprintf(g->Message, "Mongo %s Driver not available", "Java"); sprintf(g->Message, "Mongo %s Driver not available", "Java");
...@@ -181,7 +262,7 @@ int MGODISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt) ...@@ -181,7 +262,7 @@ int MGODISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt)
/* Open the MongoDB collection. */ /* Open the MongoDB collection. */
/*********************************************************************/ /*********************************************************************/
tdp = new(g) MGODEF; tdp = new(g) MGODEF;
tdp->Uri = uri; tdp->Uri = (uri && *uri) ? uri : "mongodb://localhost:27017";
tdp->Driver = drv; tdp->Driver = drv;
tdp->Tabname = GetStringTableOption(g, topt, "Name", NULL); tdp->Tabname = GetStringTableOption(g, topt, "Name", NULL);
tdp->Tabname = GetStringTableOption(g, topt, "Tabname", tdp->Tabname); tdp->Tabname = GetStringTableOption(g, topt, "Tabname", tdp->Tabname);
...@@ -346,7 +427,7 @@ PTDB MGODEF::GetTable(PGLOBAL g, MODE m) ...@@ -346,7 +427,7 @@ PTDB MGODEF::GetTable(PGLOBAL g, MODE m)
return NULL; return NULL;
#endif #endif
} else if (Driver && toupper(*Driver) == 'J') { } else if (Driver && toupper(*Driver) == 'J') {
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
if (Catfunc == FNC_COL) if (Catfunc == FNC_COL)
return new(g) TDBJGL(this); return new(g) TDBJGL(this);
else else
......
...@@ -63,7 +63,7 @@ class DllExport MGODEF : public EXTDEF { /* Table description */ ...@@ -63,7 +63,7 @@ class DllExport MGODEF : public EXTDEF { /* Table description */
friend class TDBJGL; friend class TDBJGL;
friend class CMGFAM; friend class CMGFAM;
friend class MGODISC; friend class MGODISC;
friend PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); friend DllExport PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool);
public: public:
// Constructor // Constructor
MGODEF(void); MGODEF(void);
......
...@@ -83,22 +83,20 @@ ...@@ -83,22 +83,20 @@
#define NODBC #define NODBC
#include "tabodbc.h" #include "tabodbc.h"
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
#define NJDBC #define NJDBC
#include "tabjdbc.h" #include "tabjdbc.h"
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(PIVOT_SUPPORT)
#include "tabpivot.h" #include "tabpivot.h"
#endif // PIVOT_SUPPORT
#include "tabvir.h" #include "tabvir.h"
#include "tabjson.h" #include "tabjson.h"
#include "ha_connect.h" #include "ha_connect.h"
#if defined(XML_SUPPORT) #if defined(XML_SUPPORT)
#include "tabxml.h" #include "tabxml.h"
#endif // XML_SUPPORT #endif // XML_SUPPORT
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
#include "mongo.h" #include "mongo.h"
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
#if defined(ZIP_SUPPORT) #if defined(ZIP_SUPPORT)
#include "tabzip.h" #include "tabzip.h"
#endif // ZIP_SUPPORT #endif // ZIP_SUPPORT
...@@ -111,9 +109,9 @@ ...@@ -111,9 +109,9 @@
extern "C" HINSTANCE s_hModule; // Saved module handle extern "C" HINSTANCE s_hModule; // Saved module handle
#endif // !__WIN__ #endif // !__WIN__
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
bool MongoEnabled(void); //bool MongoEnabled(void);
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info); PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info);
/***********************************************************************/ /***********************************************************************/
...@@ -144,8 +142,9 @@ TABTYPE GetTypeID(const char *type) ...@@ -144,8 +142,9 @@ TABTYPE GetTypeID(const char *type)
#if defined(ODBC_SUPPORT) #if defined(ODBC_SUPPORT)
: (!stricmp(type, "ODBC")) ? TAB_ODBC : (!stricmp(type, "ODBC")) ? TAB_ODBC
#endif #endif
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
: (!stricmp(type, "JDBC")) ? TAB_JDBC : (!stricmp(type, "JDBC")) ? TAB_JDBC
: (!stricmp(type, "MONGO")) ? TAB_MONGO
#endif #endif
: (!stricmp(type, "MYSQL")) ? TAB_MYSQL : (!stricmp(type, "MYSQL")) ? TAB_MYSQL
: (!stricmp(type, "MYPRX")) ? TAB_MYSQL : (!stricmp(type, "MYPRX")) ? TAB_MYSQL
...@@ -159,16 +158,11 @@ TABTYPE GetTypeID(const char *type) ...@@ -159,16 +158,11 @@ TABTYPE GetTypeID(const char *type)
: (!stricmp(type, "OCCUR")) ? TAB_OCCUR : (!stricmp(type, "OCCUR")) ? TAB_OCCUR
: (!stricmp(type, "CATLG")) ? TAB_PRX // Legacy : (!stricmp(type, "CATLG")) ? TAB_PRX // Legacy
: (!stricmp(type, "PROXY")) ? TAB_PRX : (!stricmp(type, "PROXY")) ? TAB_PRX
#if defined(PIVOT_SUPPORT)
: (!stricmp(type, "PIVOT")) ? TAB_PIVOT : (!stricmp(type, "PIVOT")) ? TAB_PIVOT
#endif
: (!stricmp(type, "VIR")) ? TAB_VIR : (!stricmp(type, "VIR")) ? TAB_VIR
: (!stricmp(type, "JSON")) ? TAB_JSON : (!stricmp(type, "JSON")) ? TAB_JSON
#if defined(ZIP_SUPPORT) #if defined(ZIP_SUPPORT)
: (!stricmp(type, "ZIP")) ? TAB_ZIP : (!stricmp(type, "ZIP")) ? TAB_ZIP
#endif
#if defined(MONGO_SUPPORT)
: (!stricmp(type, "MONGO")) ? TAB_MONGO
#endif #endif
: (!stricmp(type, "OEM")) ? TAB_OEM : TAB_NIY; : (!stricmp(type, "OEM")) ? TAB_OEM : TAB_NIY;
} // end of GetTypeID } // end of GetTypeID
...@@ -542,9 +536,9 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am) ...@@ -542,9 +536,9 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am)
#if defined(ODBC_SUPPORT) #if defined(ODBC_SUPPORT)
case TAB_ODBC: tdp= new(g) ODBCDEF; break; case TAB_ODBC: tdp= new(g) ODBCDEF; break;
#endif // ODBC_SUPPORT #endif // ODBC_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
case TAB_JDBC: tdp= new(g) JDBCDEF; break; case TAB_JDBC: tdp= new(g) JDBCDEF; break;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(__WIN__) #if defined(__WIN__)
case TAB_MAC: tdp= new(g) MACDEF; break; case TAB_MAC: tdp= new(g) MACDEF; break;
case TAB_WMI: tdp= new(g) WMIDEF; break; case TAB_WMI: tdp= new(g) WMIDEF; break;
...@@ -555,17 +549,15 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am) ...@@ -555,17 +549,15 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am)
case TAB_PRX: tdp= new(g) PRXDEF; break; case TAB_PRX: tdp= new(g) PRXDEF; break;
case TAB_OCCUR: tdp= new(g) OCCURDEF; break; case TAB_OCCUR: tdp= new(g) OCCURDEF; break;
case TAB_MYSQL: tdp= new(g) MYSQLDEF; break; case TAB_MYSQL: tdp= new(g) MYSQLDEF; break;
#if defined(PIVOT_SUPPORT)
case TAB_PIVOT: tdp= new(g) PIVOTDEF; break; case TAB_PIVOT: tdp= new(g) PIVOTDEF; break;
#endif // PIVOT_SUPPORT
case TAB_VIR: tdp= new(g) VIRDEF; break; case TAB_VIR: tdp= new(g) VIRDEF; break;
case TAB_JSON: tdp= new(g) JSONDEF; break; case TAB_JSON: tdp= new(g) JSONDEF; break;
#if defined(MONGO_SUPPORT) #if defined(MONGO_SUPPORT)
case TAB_MONGO: case TAB_MONGO:
if (MongoEnabled()) // if (MongoEnabled())
tdp = new(g) MGODEF; tdp = new(g) MGODEF;
else // else
strcpy(g->Message, "MONGO type not enabled"); // strcpy(g->Message, "MONGO type not enabled");
break; break;
#endif // MONGO_SUPPORT #endif // MONGO_SUPPORT
......
SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar'; SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar';
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities'
OPTION_LIST='Driver=Java,Version=2' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8'; OPTION_LIST='Driver=Java,Version=2' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -382,4 +381,3 @@ planner 167 41.75 ...@@ -382,4 +381,3 @@ planner 167 41.75
postcard 23 5.75 postcard 23 5.75
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar'; SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar';
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities'
OPTION_LIST='Driver=Java,Version=3' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8'; OPTION_LIST='Driver=Java,Version=3' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -382,4 +381,3 @@ planner 167 41.75 ...@@ -382,4 +381,3 @@ planner 167 41.75
postcard 23 5.75 postcard 23 5.75
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -309,7 +308,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -309,7 +308,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities'
OPTION_LIST='Driver=C,Version=0' CONNECTION='mongodb://localhost:27017' LRECL=1024 DATA_CHARSET='utf8'; OPTION_LIST='Driver=C,Version=0' CONNECTION='mongodb://localhost:27017' LRECL=1024 DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -381,4 +380,3 @@ planner 167 41.75 ...@@ -381,4 +380,3 @@ planner 167 41.75
postcard 23 5.75 postcard 23 5.75
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -305,7 +304,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -305,7 +304,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities'
OPTION_LIST='Driver=C,Version=0' DATA_CHARSET='utf8'; OPTION_LIST='Driver=C,Version=0' DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -377,4 +376,3 @@ planner 167 41.750000 ...@@ -377,4 +376,3 @@ planner 167 41.750000
postcard 23 5.750000 postcard 23 5.750000
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar'; SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar';
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities'
OPTION_LIST='Driver=Java,Version=2' DATA_CHARSET='utf8'; OPTION_LIST='Driver=Java,Version=2' DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -378,4 +377,3 @@ planner 167 41.75 ...@@ -378,4 +377,3 @@ planner 167 41.75
postcard 23 5.75 postcard 23 5.75
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar'; SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar';
set connect_enable_mongo=1;
# #
# Test the MONGO table type # Test the MONGO table type
# #
...@@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', ...@@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0',
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities'
OPTION_LIST='Driver=Java,Version=3' DATA_CHARSET='utf8'; OPTION_LIST='Driver=Java,Version=3' DATA_CHARSET='utf8';
# Using SQL for grouping # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -378,4 +377,3 @@ planner 167 41.75 ...@@ -378,4 +377,3 @@ planner 167 41.75
postcard 23 5.75 postcard 23 5.75
DROP TABLE t1; DROP TABLE t1;
true true
set connect_enable_mongo=0;
...@@ -9,29 +9,13 @@ t1 CREATE TABLE `t1` ( ...@@ -9,29 +9,13 @@ t1 CREATE TABLE `t1` (
) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Sources' ) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Sources'
SELECT * FROM t1; SELECT * FROM t1;
Name Description Name Description
dBASE Files Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
PLUGDB_DEBUG PLUGODBC_Driver
PLUGDB_ODBC PLUGODBC_Driver
SafeDB_ODBC SDB_ODBC_Driver
Firebird Firebird/InterBase(r) driver
ConnectEngineXLS Microsoft Excel Driver (*.xls)
Excel Files Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) Excel Files Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
MariaODBC MySQL ODBC 5.2a Driver
MariaODBCbeta MariaDB ODBC 1.0 Driver
MyODBC MySQL ODBC 5.2a Driver
MS Access Database Microsoft Access Driver (*.mdb, *.accdb) MS Access Database Microsoft Access Driver (*.mdb, *.accdb)
MS Access Db1 Microsoft Access Driver (*.mdb)
MySQL-ANSI MySQL ODBC 5.3 ANSI Driver
MySQL-Unicode MySQL ODBC 5.3 Unicode Driver
Xtreme Sample Database 2008 Microsoft Access Driver (*.mdb)
PlugDB test PLUGODBC_Driver
SQLite3 Datasource SQLite3 ODBC Driver
SQLite Datasource SQLite ODBC Driver
SQLite UTF-8 Datasource SQLite ODBC (UTF-8) Driver
ORACLE_TEST Oracle in XE ORACLE_TEST Oracle in XE
ConnectEnginePostgresql PostgreSQL ODBC Driver(ANSI) SQLServer_Test SQL Server Native Client 11.0
Firebird Firebird/InterBase(r) driver
ConnectEngineOracle Oracle in XE ConnectEngineOracle Oracle in XE
ConnectEngineSQLServer SQL Server ConnectEngineSQLServer SQL Server Native Client 11.0
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Drivers; CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Drivers;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
...@@ -42,51 +26,12 @@ t1 CREATE TABLE `t1` ( ...@@ -42,51 +26,12 @@ t1 CREATE TABLE `t1` (
) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Drivers' ) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Drivers'
SELECT * FROM t1; SELECT * FROM t1;
Description Attributes Description Attributes
SQL Server UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=03.50;ConnectFunctions=YYY;APILevel=2;CPTimeout=60; SQL Server APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.50;FileUsage=0;SQLLevel=1;UsageCount=1;
Microsoft ODBC for Oracle UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=02.50;ConnectFunctions=YYY;APILevel=1;CPTimeout=120;
Microsoft Access Driver (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0;
Microsoft Access-Treiber (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0;
Driver do Microsoft Access (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0;
Microsoft dBase Driver (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0;
Microsoft dBase-Treiber (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0;
Driver do Microsoft dBase (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0;
Microsoft Excel Driver (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0;
Microsoft Excel-Treiber (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0;
Driver do Microsoft Excel(*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0;
Microsoft Paradox Driver (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0;
Microsoft Paradox-Treiber (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0;
Driver do Microsoft Paradox (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0;
Microsoft Text Driver (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0;
Microsoft Text-Treiber (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0;
Driver da Microsoft para arquivos texto (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0;
Microsoft Visual FoxPro Driver UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0;
Microsoft FoxPro VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0;
Microsoft dBase VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0;
Microsoft Visual FoxPro-Treiber UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0;
Driver para o Microsoft Visual FoxPro UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0;
SQL Native Client UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=09.00;FileUsage=0;SQLLevel=1;
CR Sybase Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help;
CR SQL Server Native Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help;
CR SQL Server Classic Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help;
CR TextFile ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=1;FileExtns=*.*;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help;
PLUGODBC_Driver UsageCount=1;
SDB_ODBC_Driver UsageCount=2;
Microsoft Access Text Driver (*.txt, *.csv) SQLLevel=0;FileExtns=*.txt, *.csv;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3;
Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) SQLLevel=0;FileExtns=*.dbf, *.ndx, *.mdx;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3;
Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) SQLLevel=0;FileExtns=*.xls,*.xlsx, *.xlsb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3;
Microsoft Access Driver (*.mdb, *.accdb) SQLLevel=0;FileExtns=*.mdb,*.accdb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3;
SQLite3 ODBC Driver UsageCount=1;
SQLite ODBC Driver UsageCount=1;
SQLite ODBC (UTF-8) Driver UsageCount=1;
Oracle in XE ConnectionFunctions=YYY;DriverODBCVer=03.51;CPTimeout=60;FileUsage=0;APILevel=1;SQLLevel=1; Oracle in XE ConnectionFunctions=YYY;DriverODBCVer=03.51;CPTimeout=60;FileUsage=0;APILevel=1;SQLLevel=1;
Oracle in instantclient_12_1 APILevel=1;ConnectionFunctions=YYY;CPTimeout=60;DriverODBCVer=03.51;FileUsage=0;SQLLevel=1;
PostgreSQL ODBC Driver(ANSI) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1;
PostgreSQL ODBC Driver(UNICODE) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1;
SQL Server Native Client 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1; SQL Server Native Client 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1;
MariaDB ODBC 1.0 Driver UsageCount=1; ODBC Driver 13 for SQL Server UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1;
SQL Server Native Client RDA 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1;
Firebird/InterBase(r) driver UsageCount=1;FileExtns=*.fdb,*.gdb;APILevel=1;ConnectFunctions=YYY;FileUsage=0;DriverODBCVer=03.51;SQLLevel=1; Firebird/InterBase(r) driver UsageCount=1;FileExtns=*.fdb,*.gdb;APILevel=1;ConnectFunctions=YYY;FileUsage=0;DriverODBCVer=03.51;SQLLevel=1;
MySQL ODBC 5.3 ANSI Driver UsageCount=1;
MySQL ODBC 5.3 Unicode Driver UsageCount=1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Tables CONNECTION='Not important'; CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Tables CONNECTION='Not important';
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
...@@ -154,9 +99,9 @@ EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_C ...@@ -154,9 +99,9 @@ EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_C
113 Mary Page 845 1993-04-12 00:00:00 671 Eng 4 USA 48000.00 Page, Mary 113 Mary Page 845 1993-04-12 00:00:00 671 Eng 4 USA 48000.00 Page, Mary
114 Bill Parker 247 1993-06-01 00:00:00 623 Eng 5 USA 35000.00 Parker, Bill 114 Bill Parker 247 1993-06-01 00:00:00 623 Eng 5 USA 35000.00 Parker, Bill
118 Takashi Yamamoto 23 1993-07-01 00:00:00 115 SRep 4 Japan 7480000.00 Yamamoto, Takashi 118 Takashi Yamamoto 23 1993-07-01 00:00:00 115 SRep 4 Japan 7480000.00 Yamamoto, Takashi
121 Roberto Ferrari 1 1993-07-12 00:00:00 125 SRep 4 Italy 99000000.00 Ferrari, Roberto 121 Roberto Ferrari 1 1993-07-12 00:00:00 125 SRep 4 Italy 33000.00 Ferrari, Roberto
127 Michael Yanowski 492 1993-08-09 00:00:00 100 SRep 4 USA 44000.00 Yanowski, Michael 127 Michael Yanowski 492 1993-08-09 00:00:00 100 SRep 4 USA 44000.00 Yanowski, Michael
134 Jacques Glon NULL 1993-08-23 00:00:00 123 SRep 4 France 390500.00 Glon, Jacques 134 Jacques Glon NULL 1993-08-23 00:00:00 123 SRep 4 France 38500.00 Glon, Jacques
136 Scott Johnson 265 1993-09-13 00:00:00 623 Doc 3 USA 60000.00 Johnson, Scott 136 Scott Johnson 265 1993-09-13 00:00:00 623 Doc 3 USA 60000.00 Johnson, Scott
138 T.J. Green 218 1993-11-01 00:00:00 621 Eng 4 USA 36000.00 Green, T.J. 138 T.J. Green 218 1993-11-01 00:00:00 621 Eng 4 USA 36000.00 Green, T.J.
141 Pierre Osborne NULL 1994-01-03 00:00:00 121 SRep 4 Switzerland 110000.00 Osborne, Pierre 141 Pierre Osborne NULL 1994-01-03 00:00:00 121 SRep 4 Switzerland 110000.00 Osborne, Pierre
......
set connect_enable_mongo=1; #set connect_enable_mongo=1;
--echo # --echo #
--echo # Test the MONGO table type --echo # Test the MONGO table type
...@@ -156,7 +156,7 @@ eval CREATE TABLE t1 ( ...@@ -156,7 +156,7 @@ eval CREATE TABLE t1 (
loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1',
pop int(11) NOT NULL, pop int(11) NOT NULL,
state char(2) NOT NULL) state char(2) NOT NULL)
ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=$TYPE TABNAME='cities'
OPTION_LIST='Driver=$DRV,Version=$VERS' $CONN DATA_CHARSET='utf8'; OPTION_LIST='Driver=$DRV,Version=$VERS' $CONN DATA_CHARSET='utf8';
--echo # Using SQL for grouping --echo # Using SQL for grouping
SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC;
...@@ -204,4 +204,4 @@ SELECT * FROM t1; ...@@ -204,4 +204,4 @@ SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
--exec $MONGO --eval "db.testcoll.drop()" --quiet --exec $MONGO --eval "db.testcoll.drop()" --quiet
set connect_enable_mongo=0; #set connect_enable_mongo=0;
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
/* Include relevant MariaDB header file. */ /* Include relevant MariaDB header file. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "my_pthread.h"
#if defined(__WIN__) #if defined(__WIN__)
#include <io.h> #include <io.h>
#include <fcntl.h> #include <fcntl.h>
...@@ -71,12 +72,12 @@ ...@@ -71,12 +72,12 @@
#ifdef ZIP_SUPPORT #ifdef ZIP_SUPPORT
#include "filamzip.h" #include "filamzip.h"
#endif // ZIP_SUPPORT #endif // ZIP_SUPPORT
#ifdef JDBC_SUPPORT #ifdef JAVA_SUPPORT
#include "javaconn.h" #include "javaconn.h"
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#ifdef CMGO_SUPPORT #ifdef CMGO_SUPPORT
#include "cmgoconn.h" #include "cmgoconn.h"
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
/***********************************************************************/ /***********************************************************************/
/* DB static variables. */ /* DB static variables. */
...@@ -952,20 +953,20 @@ int PlugCloseFile(PGLOBAL g, PFBLOCK fp, bool all) ...@@ -952,20 +953,20 @@ int PlugCloseFile(PGLOBAL g, PFBLOCK fp, bool all)
fp->File = NULL; fp->File = NULL;
break; break;
#endif // ZIP_SUPPORT #endif // ZIP_SUPPORT
#ifdef JDBC_SUPPORT #ifdef JAVA_SUPPORT
case TYPE_FB_JAVA: case TYPE_FB_JAVA:
((JAVAConn*)fp->File)->Close(); ((JAVAConn*)fp->File)->Close();
fp->Count = 0; fp->Count = 0;
fp->File = NULL; fp->File = NULL;
break; break;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#ifdef CMGO_SUPPORT #ifdef CMGO_SUPPORT
case TYPE_FB_MONGO: case TYPE_FB_MONGO:
((CMgoConn*)fp->File)->Close(); ((CMgoConn*)fp->File)->Close();
fp->Count = 0; fp->Count = 0;
fp->File = NULL; fp->File = NULL;
break; break;
#endif // MONGO_SUPPORT #endif // JAVA_SUPPORT
default: default:
rc = RC_FX; rc = RC_FX;
} // endswitch Type } // endswitch Type
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "block.h" #include "block.h"
#include "catalog.h" #include "catalog.h"
#include "my_sys.h" //#include "my_sys.h"
#include "mycat.h" #include "mycat.h"
typedef class INDEXDEF *PIXDEF; typedef class INDEXDEF *PIXDEF;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
/***********************************************************************/ /***********************************************************************/
#ifndef __TABEXT_H #ifndef __TABEXT_H
#define __TABEXTF_H #define __TABEXT_H
#include "reldef.h" #include "reldef.h"
......
...@@ -178,7 +178,7 @@ TDBJMG::TDBJMG(PMGODEF tdp) : TDBEXT(tdp) ...@@ -178,7 +178,7 @@ TDBJMG::TDBJMG(PMGODEF tdp) : TDBEXT(tdp)
Ops.User = NULL; Ops.User = NULL;
Ops.Pwd = NULL; Ops.Pwd = NULL;
Ops.Scrollable = false; Ops.Scrollable = false;
Ops.Fsize = Ops.CheckSize(Rows); Ops.Fsize = 0;
Fpos = -1; Fpos = -1;
N = 0; N = 0;
Done = false; Done = false;
......
...@@ -31,14 +31,12 @@ ...@@ -31,14 +31,12 @@
#if defined(ZIP_SUPPORT) #if defined(ZIP_SUPPORT)
#include "filamzip.h" #include "filamzip.h"
#endif // ZIP_SUPPORT #endif // ZIP_SUPPORT
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT)
#if defined(JDBC_SUPPORT)
#include "jmgfam.h" #include "jmgfam.h"
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
#include "cmgfam.h" #include "cmgfam.h"
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
#endif // MONGO_SUPPORT
#include "tabmul.h" #include "tabmul.h"
#include "checklvl.h" #include "checklvl.h"
#include "resource.h" #include "resource.h"
...@@ -149,7 +147,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) ...@@ -149,7 +147,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
tdp->Fn, tdp->Objname, tdp->Pretty, lvl); tdp->Fn, tdp->Objname, tdp->Pretty, lvl);
if (tdp->Uri) { if (tdp->Uri) {
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT)
tdp->Collname = GetStringTableOption(g, topt, "Name", NULL); tdp->Collname = GetStringTableOption(g, topt, "Name", NULL);
tdp->Collname = GetStringTableOption(g, topt, "Tabname", tdp->Collname); tdp->Collname = GetStringTableOption(g, topt, "Tabname", tdp->Collname);
tdp->Schema = GetStringTableOption(g, topt, "Dbname", "test"); tdp->Schema = GetStringTableOption(g, topt, "Dbname", "test");
...@@ -157,10 +155,8 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) ...@@ -157,10 +155,8 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
tdp->Pipe = GetBooleanTableOption(g, topt, "Pipeline", false); tdp->Pipe = GetBooleanTableOption(g, topt, "Pipeline", false);
tdp->Driver = (PSZ)GetStringTableOption(g, topt, "Driver", NULL); tdp->Driver = (PSZ)GetStringTableOption(g, topt, "Driver", NULL);
tdp->Version = GetIntegerTableOption(g, topt, "Version", 3); tdp->Version = GetIntegerTableOption(g, topt, "Version", 3);
#if defined(JDBC_SUPPORT)
tdp->Wrapname = (PSZ)GetStringTableOption(g, topt, "Wrapper", tdp->Wrapname = (PSZ)GetStringTableOption(g, topt, "Wrapper",
(tdp->Version == 2) ? "Mongo2Interface" : "Mongo3Interface"); (tdp->Version == 2) ? "Mongo2Interface" : "Mongo3Interface");
#endif // JDBC_SUPPORT
tdp->Pretty = 0; tdp->Pretty = 0;
#else // !MONGO_SUPPORT #else // !MONGO_SUPPORT
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
...@@ -201,7 +197,6 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) ...@@ -201,7 +197,6 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
return NULL; return NULL;
#endif // !ZIP_SUPPORT #endif // !ZIP_SUPPORT
} else if (tdp->Uri) { } else if (tdp->Uri) {
#if defined(MONGO_SUPPORT)
if (tdp->Driver && toupper(*tdp->Driver) == 'C') { if (tdp->Driver && toupper(*tdp->Driver) == 'C') {
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp)); tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp));
...@@ -210,7 +205,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) ...@@ -210,7 +205,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
return NULL; return NULL;
#endif #endif
} else if (tdp->Driver && toupper(*tdp->Driver) == 'J') { } else if (tdp->Driver && toupper(*tdp->Driver) == 'J') {
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp)); tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp));
#else #else
sprintf(g->Message, "Mongo %s Driver not available", "Java"); sprintf(g->Message, "Mongo %s Driver not available", "Java");
...@@ -219,14 +214,14 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) ...@@ -219,14 +214,14 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
} else { // Driver not specified } else { // Driver not specified
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp)); tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp));
#else #elif defined(JAVA_SUPPORT)
tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp)); tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp));
#endif
} // endif Driver
#else #else
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
return NULL; return NULL;
#endif // MONGO_SUPPORT #endif
} // endif Driver
} else } else
tjnp = new(g) TDBJSN(tdp, new(g) DOSFAM(tdp)); tjnp = new(g) TDBJSN(tdp, new(g) DOSFAM(tdp));
...@@ -497,16 +492,12 @@ JSONDEF::JSONDEF(void) ...@@ -497,16 +492,12 @@ JSONDEF::JSONDEF(void)
Base = 0; Base = 0;
Strict = false; Strict = false;
Sep = '.'; Sep = '.';
#if defined(MONGO_SUPPORT)
Uri = NULL; Uri = NULL;
Collname = Options = Filter = NULL; Collname = Options = Filter = NULL;
Pipe = false; Pipe = false;
Driver = NULL; Driver = NULL;
Version = 0; Version = 0;
#if defined(JDBC_SUPPORT)
Wrapname = NULL; Wrapname = NULL;
#endif // JDBC_SUPPORT
#endif // MONGO_SUPPORT
} // end of JSONDEF constructor } // end of JSONDEF constructor
/***********************************************************************/ /***********************************************************************/
...@@ -524,7 +515,7 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) ...@@ -524,7 +515,7 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff)
Sep = *GetStringCatInfo(g, "Separator", "."); Sep = *GetStringCatInfo(g, "Separator", ".");
if (Uri = GetStringCatInfo(g, "Connect", NULL)) { if (Uri = GetStringCatInfo(g, "Connect", NULL)) {
#if defined(MONGO_SUPPORT) #if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT)
Collname = GetStringCatInfo(g, "Name", Collname = GetStringCatInfo(g, "Name",
(Catfunc & (FNC_TABLE | FNC_COL)) ? NULL : Name); (Catfunc & (FNC_TABLE | FNC_COL)) ? NULL : Name);
Collname = GetStringCatInfo(g, "Tabname", Collname); Collname = GetStringCatInfo(g, "Tabname", Collname);
...@@ -534,12 +525,12 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) ...@@ -534,12 +525,12 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff)
Driver = GetStringCatInfo(g, "Driver", NULL); Driver = GetStringCatInfo(g, "Driver", NULL);
Version = GetIntCatInfo("Version", 3); Version = GetIntCatInfo("Version", 3);
Pretty = 0; Pretty = 0;
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
if (Version == 2) if (Version == 2)
Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo2Interface"); Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo2Interface");
else else
Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo3Interface"); Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo3Interface");
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#else // !MONGO_SUPPORT #else // !MONGO_SUPPORT
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
return true; return true;
...@@ -569,7 +560,6 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) ...@@ -569,7 +560,6 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
(m == MODE_UPDATE || m == MODE_DELETE)); (m == MODE_UPDATE || m == MODE_DELETE));
if (Uri) { if (Uri) {
#if defined(MONGO_SUPPORT)
if (Driver && toupper(*Driver) == 'C') { if (Driver && toupper(*Driver) == 'C') {
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
txfp = new(g) CMGFAM(this); txfp = new(g) CMGFAM(this);
...@@ -578,7 +568,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) ...@@ -578,7 +568,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
return NULL; return NULL;
#endif #endif
} else if (Driver && toupper(*Driver) == 'J') { } else if (Driver && toupper(*Driver) == 'J') {
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
txfp = new(g) JMGFAM(this); txfp = new(g) JMGFAM(this);
#else #else
sprintf(g->Message, "Mongo %s Driver not available", "Java"); sprintf(g->Message, "Mongo %s Driver not available", "Java");
...@@ -587,14 +577,14 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) ...@@ -587,14 +577,14 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
} else { // Driver not specified } else { // Driver not specified
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
txfp = new(g) CMGFAM(this); txfp = new(g) CMGFAM(this);
#else #elif defined(JAVA_SUPPORT)
txfp = new(g) JMGFAM(this); txfp = new(g) JMGFAM(this);
#endif #else // !MONGO_SUPPORT
} // endif Driver
#else
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
return NULL; return NULL;
#endif // MONGO_SUPPORT #endif // !MONGO_SUPPORT
} // endif Driver
} else if (Zipped) { } else if (Zipped) {
#if defined(ZIP_SUPPORT) #if defined(ZIP_SUPPORT)
if (m == MODE_READ || m == MODE_ANY || m == MODE_ALTER) { if (m == MODE_READ || m == MODE_ANY || m == MODE_ALTER) {
...@@ -1591,8 +1581,7 @@ PVAL JSONCOL::ExpandArray(PGLOBAL g, PJAR arp, int n) ...@@ -1591,8 +1581,7 @@ PVAL JSONCOL::ExpandArray(PGLOBAL g, PJAR arp, int n)
/***********************************************************************/ /***********************************************************************/
PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
{ {
//int i, ars, nv = 0, nextsame = Tjp->NextSame; int i, ars, nv = 0, nextsame = Tjp->NextSame;
int i, nv = 0, nextsame = Tjp->NextSame;
bool err; bool err;
OPVAL op = Nodes[n].Op; OPVAL op = Nodes[n].Op;
PVAL val[2], vp = Nodes[n].Valp; PVAL val[2], vp = Nodes[n].Valp;
...@@ -1600,12 +1589,20 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) ...@@ -1600,12 +1589,20 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
JVALUE jval; JVALUE jval;
vp->Reset(); vp->Reset();
//ars = MY_MIN(Tjp->Limit, arp->size()); ars = MY_MIN(Tjp->Limit, arp->size());
//for (i = 0; i < ars; i++) { if (trace)
for (i = 0; i < arp->size(); i++) { htrc("CalculateArray size=%d\n", ars);
else // This is temporary until we find a better way to fix the compiler
htrc(""); // bug sometime causing the next loop to be executed only once.
for (i = 0; i < ars; i++) {
jvrp = arp->GetValue(i); jvrp = arp->GetValue(i);
if (trace)
htrc("i=%d Value %s null=%d nv=%d\n",
i, jvrp->GetString(g), jvrp->IsNull() ? 1 : 0, nv);
if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) do { if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) do {
if (jvrp->IsNull()) { if (jvrp->IsNull()) {
jvrp->Value = AllocateValue(g, GetJsonNull(), TYPE_STRING); jvrp->Value = AllocateValue(g, GetJsonNull(), TYPE_STRING);
...@@ -1623,7 +1620,6 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) ...@@ -1623,7 +1620,6 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
} else } else
SetJsonValue(g, MulVal, jvp, n); SetJsonValue(g, MulVal, jvp, n);
// if (!MulVal->IsZero()) {
if (!MulVal->IsNull()) { if (!MulVal->IsNull()) {
switch (op) { switch (op) {
case OP_CNC: case OP_CNC:
......
...@@ -36,14 +36,12 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */ ...@@ -36,14 +36,12 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */
friend class TDBJSON; friend class TDBJSON;
friend class TDBJSN; friend class TDBJSN;
friend class TDBJCL; friend class TDBJCL;
#if defined(MONGO_SUPPORT)
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
friend class CMGFAM; friend class CMGFAM;
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
friend class JMGFAM; friend class JMGFAM;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#endif // MONGO_SUPPORT
friend PQRYRES JSONColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); friend PQRYRES JSONColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool);
public: public:
// Constructor // Constructor
...@@ -68,17 +66,13 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */ ...@@ -68,17 +66,13 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */
bool Strict; /* Strict syntax checking */ bool Strict; /* Strict syntax checking */
char Sep; /* The Jpath separator */ char Sep; /* The Jpath separator */
const char *Uri; /* MongoDB connection URI */ const char *Uri; /* MongoDB connection URI */
#if defined(MONGO_SUPPORT)
PCSZ Collname; /* External collection name */ PCSZ Collname; /* External collection name */
PSZ Options; /* Colist ; Pipe */ PSZ Options; /* Colist ; Pipe */
PSZ Filter; /* Filter */ PSZ Filter; /* Filter */
PSZ Driver; /* MongoDB Driver (C or JAVA) */ PSZ Driver; /* MongoDB Driver (C or JAVA) */
bool Pipe; /* True if Colist is a pipeline */ bool Pipe; /* True if Colist is a pipeline */
int Version; /* Driver version */ int Version; /* Driver version */
#if defined(JDBC_SUPPORT)
PSZ Wrapname; /* MongoDB java wrapper name */ PSZ Wrapname; /* MongoDB java wrapper name */
#endif // JDBC_SUPPORT
#endif // MONGO_SUPPORT
}; // end of JSONDEF }; // end of JSONDEF
/* -------------------------- TDBJSN class --------------------------- */ /* -------------------------- TDBJSN class --------------------------- */
...@@ -90,14 +84,12 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */ ...@@ -90,14 +84,12 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */
class DllExport TDBJSN : public TDBDOS { class DllExport TDBJSN : public TDBDOS {
friend class JSONCOL; friend class JSONCOL;
friend class JSONDEF; friend class JSONDEF;
#if defined(MONGO_SUPPORT)
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
friend class CMGFAM; friend class CMGFAM;
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
friend class JMGFAM; friend class JMGFAM;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#endif // MONGO_SUPPORT
public: public:
// Constructor // Constructor
TDBJSN(PJDEF tdp, PTXF txfp); TDBJSN(PJDEF tdp, PTXF txfp);
...@@ -162,14 +154,12 @@ class DllExport TDBJSN : public TDBDOS { ...@@ -162,14 +154,12 @@ class DllExport TDBJSN : public TDBDOS {
class DllExport JSONCOL : public DOSCOL { class DllExport JSONCOL : public DOSCOL {
friend class TDBJSN; friend class TDBJSN;
friend class TDBJSON; friend class TDBJSON;
#if defined(MONGO_SUPPORT)
#if defined(CMGO_SUPPORT) #if defined(CMGO_SUPPORT)
friend class CMGFAM; friend class CMGFAM;
#endif // CMGO_SUPPORT #endif // CMGO_SUPPORT
#if defined(JDBC_SUPPORT) #if defined(JAVA_SUPPORT)
friend class JMGFAM; friend class JMGFAM;
#endif // JDBC_SUPPORT #endif // JAVA_SUPPORT
#endif // MONGO_SUPPORT
public: public:
// Constructors // Constructors
JSONCOL(PGLOBAL g, PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i); JSONCOL(PGLOBAL g, PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i);
......
...@@ -53,6 +53,8 @@ class DllExport XMLDEF : public TABDEF { /* Logical table description */ ...@@ -53,6 +53,8 @@ class DllExport XMLDEF : public TABDEF { /* Logical table description */
}; // end of XMLDEF }; // end of XMLDEF
#if defined(INCLUDE_TDBXML) #if defined(INCLUDE_TDBXML)
#include "m_ctype.h"
/***********************************************************************/ /***********************************************************************/
/* This is the class declaration for the simple XML tables. */ /* This is the class declaration for the simple XML tables. */
/***********************************************************************/ /***********************************************************************/
......
...@@ -40,7 +40,7 @@ class MBVALS : public BLOCK { ...@@ -40,7 +40,7 @@ class MBVALS : public BLOCK {
// Methods // Methods
void *GetMemp(void) {return Mblk.Memp;} void *GetMemp(void) {return Mblk.Memp;}
PVBLK Allocate(PGLOBAL g, int type, int len, int prec, PVBLK Allocate(PGLOBAL g, int type, int len, int prec,
int n, bool sub = FALSE); int n, bool sub = false);
bool ReAllocate(PGLOBAL g, int n); bool ReAllocate(PGLOBAL g, int n);
void Free(void); void Free(void);
......
...@@ -102,7 +102,7 @@ class DllExport VALUE : public BLOCK { ...@@ -102,7 +102,7 @@ class DllExport VALUE : public BLOCK {
virtual bool SetValue_pval(PVAL valp, bool chktype = false) = 0; virtual bool SetValue_pval(PVAL valp, bool chktype = false) = 0;
virtual bool SetValue_char(const char *p, int n) = 0; virtual bool SetValue_char(const char *p, int n) = 0;
virtual void SetValue_psz(PCSZ s) = 0; virtual void SetValue_psz(PCSZ s) = 0;
virtual void SetValue_bool(bool) {assert(FALSE);} virtual void SetValue_bool(bool) {assert(false);}
virtual int CompareValue(PVAL vp) = 0; virtual int CompareValue(PVAL vp) = 0;
virtual BYTE TestValue(PVAL vp); virtual BYTE TestValue(PVAL vp);
virtual void SetValue(char) {assert(false);} virtual void SetValue(char) {assert(false);}
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include "assert.h" #include "assert.h"
#include "block.h" #include "block.h"
#include "colblk.h" #include "colblk.h"
#include "m_ctype.h" //#include "m_ctype.h"
#include "reldef.h" #include "reldef.h"
typedef class CMD *PCMD; typedef class CMD *PCMD;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment