mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.0 into 10.1
This commit is contained in:
@@ -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( -DHUGE_SUPPORT -DGZ_SUPPORT -DPIVOT_SUPPORT -DUSE_TRY )
|
add_definitions( -DHUGE_SUPPORT -DGZ_SUPPORT )
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -230,7 +230,7 @@ ENDIF(CONNECT_WITH_ODBC)
|
|||||||
#
|
#
|
||||||
# JDBC with MongoDB Java Driver included but disabled
|
# JDBC with MongoDB Java Driver included but disabled
|
||||||
#
|
#
|
||||||
#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)
|
||||||
|
|
||||||
IF(CONNECT_WITH_JDBC)
|
IF(CONNECT_WITH_JDBC)
|
||||||
@@ -243,17 +243,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 "")
|
||||||
@@ -296,10 +295,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)
|
||||||
|
@@ -520,7 +520,7 @@ bool ARRAY::FilTest(PGLOBAL g, PVAL valp, OPVAL opc, int opm)
|
|||||||
|
|
||||||
} else if (opc != OP_EXIST) {
|
} else if (opc != OP_EXIST) {
|
||||||
sprintf(g->Message, MSG(MISSING_ARG), opc);
|
sprintf(g->Message, MSG(MISSING_ARG), opc);
|
||||||
throw (int)TYPE_ARRAY;
|
throw (int)TYPE_ARRAY;
|
||||||
} else // OP_EXIST
|
} else // OP_EXIST
|
||||||
return Nval > 0;
|
return Nval > 0;
|
||||||
|
|
||||||
|
@@ -22,17 +22,10 @@
|
|||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
#include "cmgoconn.h"
|
#include "cmgoconn.h"
|
||||||
|
|
||||||
|
bool CMgoConn::IsInit = false;
|
||||||
|
|
||||||
bool IsNum(PSZ s);
|
bool IsNum(PSZ s);
|
||||||
|
bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s);
|
||||||
// Required to initialize libmongoc's internals
|
|
||||||
void mongo_init(bool init)
|
|
||||||
{
|
|
||||||
if (init)
|
|
||||||
mongoc_init();
|
|
||||||
else
|
|
||||||
mongoc_cleanup();
|
|
||||||
|
|
||||||
} // end of mongo_init
|
|
||||||
|
|
||||||
/* --------------------------- Class INCOL --------------------------- */
|
/* --------------------------- Class INCOL --------------------------- */
|
||||||
|
|
||||||
@@ -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) {
|
||||||
@@ -240,12 +258,13 @@ int CMgoConn::CollSize(PGLOBAL g)
|
|||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
bool CMgoConn::MakeCursor(PGLOBAL g)
|
bool CMgoConn::MakeCursor(PGLOBAL g)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *p;
|
||||||
bool id, b = false, all = false;
|
bool id, b = false, all = false;
|
||||||
PCSZ options = Pcg->Options;
|
PCSZ options = Pcg->Options;
|
||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
} // 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)
|
|||||||
|
|
||||||
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 @@ public:
|
|||||||
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 @@ protected:
|
|||||||
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 @@
|
|||||||
/* 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__)
|
||||||
|
@@ -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 @@
|
|||||||
#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 @@
|
|||||||
#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" {
|
|||||||
} // 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;
|
||||||
@@ -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);
|
|||||||
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,14 +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 0 // This is apparently not acceptable for a plugin
|
||||||
|
// Enabling MONGO table type
|
||||||
|
static MYSQL_THDVAR_BOOL(enable_mongo, PLUGIN_VAR_RQCMDARG,
|
||||||
|
"Enabling the MongoDB access",
|
||||||
|
NULL, NULL, MONGO_ENABLED);
|
||||||
|
#endif // 0
|
||||||
|
|
||||||
#if defined(MONGO_SUPPORT)
|
#if defined(MONGO_SUPPORT)
|
||||||
// Enabling MONGO table type
|
// Enabling MONGO table type
|
||||||
@@ -421,10 +433,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(JAVA_SUPPORT)
|
||||||
|
//bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); }
|
||||||
|
#endif // JAVA_SUPPORT
|
||||||
|
|
||||||
#if defined(MONGO_SUPPORT)
|
#if defined(MONGO_SUPPORT)
|
||||||
bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); }
|
bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); }
|
||||||
@@ -705,7 +721,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 +742,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 +764,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 +1774,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 +1837,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 +2197,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 +2340,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 +2533,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 +2902,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
|
||||||
@@ -4417,8 +4436,8 @@ bool ha_connect::IsSameIndex(PIXDEF xp1, PIXDEF xp2)
|
|||||||
return b;
|
return b;
|
||||||
} // end of IsSameIndex
|
} // end of IsSameIndex
|
||||||
|
|
||||||
MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
|
MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
|
||||||
MODE newmode, bool *chk, bool *cras)
|
MODE newmode, bool *chk, bool *cras)
|
||||||
{
|
{
|
||||||
#if defined(DEVELOPMENT)
|
#if defined(DEVELOPMENT)
|
||||||
if (true) {
|
if (true) {
|
||||||
@@ -5379,20 +5398,18 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
|
|||||||
#endif // __WIN__
|
#endif // __WIN__
|
||||||
//int hdr, mxe;
|
//int hdr, mxe;
|
||||||
int port = 0, mxr = 0, rc = 0, mul = 0, lrecl = 0;
|
int port = 0, mxr = 0, rc = 0, mul = 0, lrecl = 0;
|
||||||
PCSZ tabtyp = NULL;
|
|
||||||
#if defined(ODBC_SUPPORT)
|
#if defined(ODBC_SUPPORT)
|
||||||
POPARM sop= NULL;
|
POPARM sop= NULL;
|
||||||
PCSZ ucnc= NULL;
|
PCSZ ucnc= NULL;
|
||||||
|
PCSZ tabtyp = NULL;
|
||||||
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;
|
||||||
@@ -5453,9 +5470,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
|
||||||
@@ -5542,7 +5559,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;
|
||||||
@@ -5576,10 +5593,10 @@ 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;
|
||||||
// fall through
|
// Passthru
|
||||||
case TAB_CSV:
|
case TAB_CSV:
|
||||||
if (!fn && fnc != FNC_NO)
|
if (!fn && fnc != FNC_NO)
|
||||||
sprintf(g->Message, "Missing %s file name", topt->type);
|
sprintf(g->Message, "Missing %s file name", topt->type);
|
||||||
@@ -5633,10 +5650,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:
|
||||||
@@ -5667,14 +5682,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;
|
||||||
@@ -5747,7 +5762,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:
|
||||||
@@ -5776,7 +5791,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);
|
||||||
@@ -5806,11 +5821,9 @@ 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;
|
||||||
@@ -5819,9 +5832,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
|
|||||||
break;
|
break;
|
||||||
#if defined(MONGO_SUPPORT)
|
#if defined(MONGO_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 // MONGO_SUPPORT
|
||||||
@@ -5949,7 +5960,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,
|
||||||
@@ -5960,7 +5971,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
|
||||||
@@ -6008,7 +6019,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;
|
||||||
|
|
||||||
@@ -7151,7 +7162,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",
|
||||||
@@ -7163,7 +7174,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[]= {
|
||||||
@@ -7184,14 +7195,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
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -7208,7 +7219,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 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
#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 @@ public:
|
|||||||
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 @@ public:
|
|||||||
/** @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 @@
|
|||||||
/* 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
|
|||||||
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
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
@@ -453,7 +454,7 @@ bool JAVAConn::Open(PGLOBAL g)
|
|||||||
vm_args.options = options;
|
vm_args.options = options;
|
||||||
vm_args.ignoreUnrecognized = false; // invalid options make the JVM init fail
|
vm_args.ignoreUnrecognized = false; // invalid options make the JVM init fail
|
||||||
|
|
||||||
//=============== load and initialize Java VM and JNI interface =============
|
//=============== load and initialize Java VM and JNI interface =============
|
||||||
rc = CreateJavaVM(&jvm, (void**)&env, &vm_args); // YES !!
|
rc = CreateJavaVM(&jvm, (void**)&env, &vm_args); // YES !!
|
||||||
delete options; // we then no longer need the initialisation options.
|
delete options; // we then no longer need the initialisation options.
|
||||||
|
|
||||||
|
@@ -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:
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
#define DEFAULT_QUERY_TIMEOUT -1 // means do not set
|
#define DEFAULT_QUERY_TIMEOUT -1 // means do not set
|
||||||
|
|
||||||
typedef struct jdbc_parms {
|
typedef struct jdbc_parms {
|
||||||
int CheckSize(int rows);
|
int CheckSize(int rows);
|
||||||
PCSZ Driver; // JDBC driver
|
PCSZ Driver; // JDBC driver
|
||||||
PCSZ Url; // Driver URL
|
PCSZ Url; // Driver URL
|
||||||
PCSZ User; // User connect info
|
PCSZ User; // User connect info
|
||||||
|
@@ -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 @@
|
|||||||
#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)
|
|||||||
#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,
|
|||||||
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,
|
|||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
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,
|
|||||||
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);
|
|||||||
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,23 @@ 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;
|
||||||
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 op=%d\n", ars, op);
|
||||||
// htrc("CalculateArray size=%d\n", ars);
|
|
||||||
|
|
||||||
for (i = 0; i < arp->size(); i++) {
|
for (i = 0; i < arp->size(); 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 nv=%d\n", i, nv);
|
||||||
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()) {
|
||||||
@@ -530,6 +525,10 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
} else
|
} else
|
||||||
jvp = jvrp;
|
jvp = jvrp;
|
||||||
|
|
||||||
|
if (trace)
|
||||||
|
htrc("jvp=%s null=%d\n",
|
||||||
|
jvp->GetString(g), jvp->IsNull() ? 1 : 0);
|
||||||
|
|
||||||
if (!nv++) {
|
if (!nv++) {
|
||||||
SetJsonValue(g, vp, jvp, n);
|
SetJsonValue(g, vp, jvp, n);
|
||||||
continue;
|
continue;
|
||||||
@@ -562,6 +561,13 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
if (err)
|
if (err)
|
||||||
vp->Reset();
|
vp->Reset();
|
||||||
|
|
||||||
|
if (trace) {
|
||||||
|
char buf(32);
|
||||||
|
|
||||||
|
htrc("vp='%s' err=%d\n",
|
||||||
|
vp->GetCharString(&buf), err ? 1 : 0);
|
||||||
|
} // endif trace
|
||||||
|
|
||||||
} // endif Zero
|
} // endif Zero
|
||||||
|
|
||||||
} // endif jvrp
|
} // endif jvrp
|
||||||
@@ -579,7 +585,6 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
|
|
||||||
} // endif Op
|
} // endif Op
|
||||||
|
|
||||||
//Tjp->NextSame = nextsame;
|
|
||||||
return vp;
|
return vp;
|
||||||
} // end of CalculateArray
|
} // end of CalculateArray
|
||||||
|
|
||||||
|
@@ -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"
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
@@ -32,8 +33,89 @@
|
|||||||
#define MAXCOL 200 /* Default max column nb in result */
|
#define MAXCOL 200 /* Default max column nb in result */
|
||||||
#define TYPE_UNKNOWN 12 /* Must be greater than other types */
|
#define TYPE_UNKNOWN 12 /* Must be greater than other types */
|
||||||
|
|
||||||
|
bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s);
|
||||||
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. */
|
||||||
@@ -49,7 +131,7 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info)
|
|||||||
int i, n = 0;
|
int i, n = 0;
|
||||||
PCSZ drv;
|
PCSZ drv;
|
||||||
PBCOL bcp;
|
PBCOL bcp;
|
||||||
MGODISC *cmgd;
|
MGODISC *cmgd = NULL;
|
||||||
PQRYRES qrp;
|
PQRYRES qrp;
|
||||||
PCOLRES crp;
|
PCOLRES crp;
|
||||||
|
|
||||||
@@ -72,7 +154,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");
|
||||||
@@ -142,7 +224,7 @@ skipit:
|
|||||||
return qrp;
|
return qrp;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
if (cmgd->tmgp)
|
if (cmgd && cmgd->tmgp)
|
||||||
cmgd->tmgp->CloseDB(g);
|
cmgd->tmgp->CloseDB(g);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -181,7 +263,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 +428,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 */
|
|||||||
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 @@
|
|||||||
#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 @@
|
|||||||
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)
|
|||||||
#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)
|
|||||||
: (!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)
|
|||||||
#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)
|
|||||||
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
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
SET GLOBAL connect_class_path='C:/MariaDB-10.0/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar';
|
SET GLOBAL connect_class_path='C:/MariaDB-10.1/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',
|
|||||||
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
|
|||||||
postcard 23 5.75
|
postcard 23 5.75
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
true
|
true
|
||||||
set connect_enable_mongo=0;
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
SET GLOBAL connect_class_path='C:/MariaDB-10.0/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar';
|
SET GLOBAL connect_class_path='C:/MariaDB-10.1/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',
|
|||||||
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
|
|||||||
postcard 23 5.75
|
postcard 23 5.75
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
true
|
true
|
||||||
set connect_enable_mongo=0;
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
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',
|
|||||||
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
|
|||||||
postcard 23 5.75
|
postcard 23 5.75
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
true
|
true
|
||||||
set connect_enable_mongo=0;
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
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',
|
|||||||
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
|
|||||||
postcard 23 5.750000
|
postcard 23 5.750000
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
true
|
true
|
||||||
set connect_enable_mongo=0;
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
SET GLOBAL connect_class_path='C:/MariaDB-10.0/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar';
|
SET GLOBAL connect_class_path='C:/MariaDB-10.1/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',
|
|||||||
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
|
|||||||
postcard 23 5.75
|
postcard 23 5.75
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
true
|
true
|
||||||
set connect_enable_mongo=0;
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
SET GLOBAL connect_class_path='C:/MariaDB-10.0/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar';
|
SET GLOBAL connect_class_path='C:/MariaDB-10.1/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',
|
|||||||
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
|
|||||||
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` (
|
|||||||
) 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` (
|
|||||||
) 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
|
|||||||
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
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
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 (
|
|||||||
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;
|
|||||||
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 @@
|
|||||||
/* 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 @@
|
|||||||
#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)
|
|||||||
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
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
typedef struct _datpar {
|
typedef struct _datpar {
|
||||||
const char *Format; // Points to format to decode
|
const char *Format; // Points to format to decode
|
||||||
const char *Curp; // Points to current parsing position
|
char *Curp; // Points to current parsing position
|
||||||
char *InFmt; // Start of input format
|
char *InFmt; // Start of input format
|
||||||
char *OutFmt; // Start of output format
|
char *OutFmt; // Start of output format
|
||||||
int Index[8]; // Indexes of date values
|
int Index[8]; // Indexes of date values
|
||||||
|
@@ -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;
|
||||||
@@ -114,7 +114,7 @@ public:
|
|||||||
int Sort; /* Table already sorted ??? */
|
int Sort; /* Table already sorted ??? */
|
||||||
int Multiple; /* 0: No 1: DIR 2: Section 3: filelist */
|
int Multiple; /* 0: No 1: DIR 2: Section 3: filelist */
|
||||||
int Degree; /* Number of columns in the table */
|
int Degree; /* Number of columns in the table */
|
||||||
int Pseudo; /* Bit: 1 ROWID }Ok, 2 FILEID Ok */
|
int Pseudo; /* Bit: 1 ROWID }Ok, 2 FILEID Ok */
|
||||||
bool Read_Only; /* true for read only tables */
|
bool Read_Only; /* true for read only tables */
|
||||||
const CHARSET_INFO *m_data_charset;
|
const CHARSET_INFO *m_data_charset;
|
||||||
const char *csname; /* Table charset name */
|
const char *csname; /* Table charset name */
|
||||||
|
@@ -73,9 +73,10 @@ bool JMGDISC::ColDesc(PGLOBAL g, jobject obj, char *pcn, char *pfmt,
|
|||||||
int ncol, int k)
|
int ncol, int k)
|
||||||
{
|
{
|
||||||
const char *key;
|
const char *key;
|
||||||
char colname[65];
|
char colname[65];
|
||||||
char fmt[129];
|
char fmt[129];
|
||||||
bool rc = true;
|
bool rc = true;
|
||||||
|
size_t z;
|
||||||
jint *n = nullptr;
|
jint *n = nullptr;
|
||||||
jstring jkey;
|
jstring jkey;
|
||||||
jobject jres;
|
jobject jres;
|
||||||
@@ -105,14 +106,16 @@ bool JMGDISC::ColDesc(PGLOBAL g, jobject obj, char *pcn, char *pfmt,
|
|||||||
if (pcn) {
|
if (pcn) {
|
||||||
strncpy(colname, pcn, 64);
|
strncpy(colname, pcn, 64);
|
||||||
colname[64] = 0;
|
colname[64] = 0;
|
||||||
strncat(strncat(colname, "_", 65), key, 65);
|
z = 65 - strlen(colname);
|
||||||
|
strncat(strncat(colname, "_", z), key, z - 1);
|
||||||
} else
|
} else
|
||||||
strcpy(colname, key);
|
strcpy(colname, key);
|
||||||
|
|
||||||
if (pfmt) {
|
if (pfmt) {
|
||||||
strncpy(fmt, pfmt, 128);
|
strncpy(fmt, pfmt, 128);
|
||||||
fmt[128] = 0;
|
fmt[128] = 0;
|
||||||
strncat(strncat(fmt, ".", 129), key, 129);
|
z = 129 - strlen(fmt);
|
||||||
|
strncat(strncat(fmt, ".", z), key, z - 1);
|
||||||
} else
|
} else
|
||||||
strcpy(fmt, key);
|
strcpy(fmt, key);
|
||||||
|
|
||||||
@@ -178,7 +181,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 @@
|
|||||||
#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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
} 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));
|
||||||
|
#else
|
||||||
|
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
|
||||||
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
} // endif Driver
|
} // endif Driver
|
||||||
#else
|
|
||||||
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
|
|
||||||
return NULL;
|
|
||||||
#endif // MONGO_SUPPORT
|
|
||||||
} 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
(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)
|
|||||||
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)
|
|||||||
} 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
|
||||||
|
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
|
||||||
|
return NULL;
|
||||||
|
#endif // !MONGO_SUPPORT
|
||||||
} // endif Driver
|
} // endif Driver
|
||||||
#else
|
|
||||||
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
|
|
||||||
return NULL;
|
|
||||||
#endif // MONGO_SUPPORT
|
|
||||||
} 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)
|
|||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
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,18 @@ 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 op=%d nextsame=%d\n",
|
||||||
|
ars, op, nextsame);
|
||||||
|
|
||||||
|
for (i = 0; i < ars; i++) {
|
||||||
jvrp = arp->GetValue(i);
|
jvrp = arp->GetValue(i);
|
||||||
|
|
||||||
|
if (trace)
|
||||||
|
htrc("i=%d nv=%d\n", i, 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);
|
||||||
@@ -1617,13 +1612,16 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
} else
|
} else
|
||||||
jvp = jvrp;
|
jvp = jvrp;
|
||||||
|
|
||||||
if (!nv++) {
|
if (trace)
|
||||||
|
htrc("jvp=%s null=%d\n",
|
||||||
|
jvp->GetString(g), jvp->IsNull() ? 1 : 0);
|
||||||
|
|
||||||
|
if (!nv++) {
|
||||||
SetJsonValue(g, vp, jvp, n);
|
SetJsonValue(g, vp, jvp, n);
|
||||||
continue;
|
continue;
|
||||||
} 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:
|
||||||
@@ -1634,7 +1632,7 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
|
|
||||||
val[0] = MulVal;
|
val[0] = MulVal;
|
||||||
err = vp->Compute(g, val, 1, op);
|
err = vp->Compute(g, val, 1, op);
|
||||||
break;
|
break;
|
||||||
// case OP_NUM:
|
// case OP_NUM:
|
||||||
case OP_SEP:
|
case OP_SEP:
|
||||||
val[0] = Nodes[n].Valp;
|
val[0] = Nodes[n].Valp;
|
||||||
@@ -1650,7 +1648,15 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n)
|
|||||||
if (err)
|
if (err)
|
||||||
vp->Reset();
|
vp->Reset();
|
||||||
|
|
||||||
} // endif Null
|
if (trace) {
|
||||||
|
char buf(32);
|
||||||
|
|
||||||
|
htrc("vp='%s' err=%d\n",
|
||||||
|
vp->GetCharString(&buf), err ? 1 : 0);
|
||||||
|
|
||||||
|
} // endif trace
|
||||||
|
|
||||||
|
} // endif Null
|
||||||
|
|
||||||
} while (Tjp->NextSame > nextsame);
|
} while (Tjp->NextSame > nextsame);
|
||||||
|
|
||||||
|
@@ -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 @@ public:
|
|||||||
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 @@ public:
|
|||||||
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 @@ public:
|
|||||||
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);
|
||||||
|
@@ -650,7 +650,7 @@ bool TDBTBM::IsLocal(PTABLE tbp)
|
|||||||
|
|
||||||
return ((!stricmp(tdbp->Host, "localhost") ||
|
return ((!stricmp(tdbp->Host, "localhost") ||
|
||||||
!strcmp(tdbp->Host, "127.0.0.1")) &&
|
!strcmp(tdbp->Host, "127.0.0.1")) &&
|
||||||
tdbp->Port == GetDefaultPort());
|
tdbp->Port == (int)GetDefaultPort());
|
||||||
} // end of IsLocal
|
} // end of IsLocal
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
@@ -120,7 +120,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db,
|
|||||||
FLD_REM, FLD_NO, FLD_CHARSET};
|
FLD_REM, FLD_NO, FLD_CHARSET};
|
||||||
unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32};
|
unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32};
|
||||||
PCSZ fmt;
|
PCSZ fmt;
|
||||||
char *pn, *tn, *fld, *colname, v; //, *chset;
|
char *pn, *tn, *fld, *colname, v; // *chset
|
||||||
int i, n, ncol = sizeof(buftyp) / sizeof(int);
|
int i, n, ncol = sizeof(buftyp) / sizeof(int);
|
||||||
int prec, len, type, scale;
|
int prec, len, type, scale;
|
||||||
int zconv = GetConvSize();
|
int zconv = GetConvSize();
|
||||||
@@ -185,7 +185,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db,
|
|||||||
colname = (char *)fp->field_name;
|
colname = (char *)fp->field_name;
|
||||||
crp->Kdata->SetValue(colname, i);
|
crp->Kdata->SetValue(colname, i);
|
||||||
|
|
||||||
// chset = (char *)fp->charset()->name;
|
// chset = (char *)fp->charset()->name;
|
||||||
// v = (!strcmp(chset, "binary")) ? 'B' : 0;
|
// v = (!strcmp(chset, "binary")) ? 'B' : 0;
|
||||||
v = 0;
|
v = 0;
|
||||||
|
|
||||||
|
@@ -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 {
|
|||||||
// 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);
|
||||||
|
|
||||||
|
@@ -1656,38 +1656,48 @@ bool TYPVAL<PSZ>::Compute(PGLOBAL g, PVAL *vp, int np, OPVAL op)
|
|||||||
char *p[2], val[2][32];
|
char *p[2], val[2][32];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < np; i++)
|
if (trace)
|
||||||
p[i] = vp[i]->IsNull() ? NULL : vp[i]->GetCharString(val[i]);
|
htrc("Compute: np=%d op=%d\n", np, op);
|
||||||
|
|
||||||
if (p[i]) {
|
for (i = 0; i < np; i++)
|
||||||
switch (op) {
|
if (!vp[i]->IsNull()) {
|
||||||
case OP_CNC:
|
p[i] = vp[i]->GetCharString(val[i]);
|
||||||
assert(np == 1 || np == 2);
|
|
||||||
|
|
||||||
if (np == 2)
|
if (trace)
|
||||||
SetValue_psz(p[0]);
|
htrc("p[%d]=%s\n", i, p[i]);
|
||||||
|
|
||||||
if ((i = Len - (signed)strlen(Strp)) > 0)
|
} else
|
||||||
strncat(Strp, p[np - 1], i);
|
return false;
|
||||||
|
|
||||||
break;
|
switch (op) {
|
||||||
case OP_MIN:
|
case OP_CNC:
|
||||||
assert(np == 2);
|
assert(np == 1 || np == 2);
|
||||||
SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]);
|
|
||||||
break;
|
|
||||||
case OP_MAX:
|
|
||||||
assert(np == 2);
|
|
||||||
SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// sprintf(g->Message, MSG(BAD_EXP_OPER), op);
|
|
||||||
strcpy(g->Message, "Function not supported");
|
|
||||||
return true;
|
|
||||||
} // endswitch op
|
|
||||||
|
|
||||||
Null = false;
|
if (np == 2)
|
||||||
} // endif p[i]
|
SetValue_psz(p[0]);
|
||||||
|
|
||||||
|
if ((i = Len - (signed)strlen(Strp)) > 0)
|
||||||
|
strncat(Strp, p[np - 1], i);
|
||||||
|
|
||||||
|
if (trace)
|
||||||
|
htrc("Strp=%s\n", Strp);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case OP_MIN:
|
||||||
|
assert(np == 2);
|
||||||
|
SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]);
|
||||||
|
break;
|
||||||
|
case OP_MAX:
|
||||||
|
assert(np == 2);
|
||||||
|
SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// sprintf(g->Message, MSG(BAD_EXP_OPER), op);
|
||||||
|
strcpy(g->Message, "Function not supported");
|
||||||
|
return true;
|
||||||
|
} // endswitch op
|
||||||
|
|
||||||
|
Null = false;
|
||||||
return false;
|
return false;
|
||||||
} // end of Compute
|
} // end of Compute
|
||||||
|
|
||||||
|
@@ -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 @@
|
|||||||
#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;
|
||||||
|
@@ -2052,7 +2052,7 @@ btr_page_reorganize_low(
|
|||||||
"InnoDB: Error: page old max ins size %lu"
|
"InnoDB: Error: page old max ins size %lu"
|
||||||
" new max ins size %lu\n"
|
" new max ins size %lu\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned long) data_size1, (unsigned long) data_size2,
|
(unsigned long) data_size1, (unsigned long) data_size2,
|
||||||
(unsigned long) max_ins_size1,
|
(unsigned long) max_ins_size1,
|
||||||
(unsigned long) max_ins_size2);
|
(unsigned long) max_ins_size2);
|
||||||
|
@@ -336,7 +336,7 @@ dict_stats_wait_bg_to_stop_using_table(
|
|||||||
unlocking/locking the data dict */
|
unlocking/locking the data dict */
|
||||||
{
|
{
|
||||||
while (!dict_stats_stop_bg(table)) {
|
while (!dict_stats_stop_bg(table)) {
|
||||||
DICT_STATS_BG_YIELD(trx);
|
DICT_BG_YIELD(trx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2011, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2011, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2016, 2017, MariaDB Corporation.
|
Copyright (c) 2016, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -26,6 +26,7 @@ Full Text Search interface
|
|||||||
#include "row0mysql.h"
|
#include "row0mysql.h"
|
||||||
#include "row0upd.h"
|
#include "row0upd.h"
|
||||||
#include "dict0types.h"
|
#include "dict0types.h"
|
||||||
|
#include "dict0stats_bg.h"
|
||||||
#include "row0sel.h"
|
#include "row0sel.h"
|
||||||
|
|
||||||
#include "fts0fts.h"
|
#include "fts0fts.h"
|
||||||
@@ -868,18 +869,37 @@ fts_drop_index(
|
|||||||
|
|
||||||
err = fts_drop_index_tables(trx, index);
|
err = fts_drop_index_tables(trx, index);
|
||||||
|
|
||||||
fts_free(table);
|
for(;;) {
|
||||||
|
bool retry = false;
|
||||||
|
if (index->index_fts_syncing) {
|
||||||
|
retry = true;
|
||||||
|
}
|
||||||
|
if (!retry){
|
||||||
|
fts_free(table);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DICT_BG_YIELD(trx);
|
||||||
|
}
|
||||||
return(err);
|
return(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
current_doc_id = table->fts->cache->next_doc_id;
|
for(;;) {
|
||||||
first_doc_id = table->fts->cache->first_doc_id;
|
bool retry = false;
|
||||||
fts_cache_clear(table->fts->cache);
|
if (index->index_fts_syncing) {
|
||||||
fts_cache_destroy(table->fts->cache);
|
retry = true;
|
||||||
table->fts->cache = fts_cache_create(table);
|
}
|
||||||
table->fts->cache->next_doc_id = current_doc_id;
|
if (!retry){
|
||||||
table->fts->cache->first_doc_id = first_doc_id;
|
current_doc_id = table->fts->cache->next_doc_id;
|
||||||
|
first_doc_id = table->fts->cache->first_doc_id;
|
||||||
|
fts_cache_clear(table->fts->cache);
|
||||||
|
fts_cache_destroy(table->fts->cache);
|
||||||
|
table->fts->cache = fts_cache_create(table);
|
||||||
|
table->fts->cache->next_doc_id = current_doc_id;
|
||||||
|
table->fts->cache->first_doc_id = first_doc_id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DICT_BG_YIELD(trx);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
fts_cache_t* cache = table->fts->cache;
|
fts_cache_t* cache = table->fts->cache;
|
||||||
fts_index_cache_t* index_cache;
|
fts_index_cache_t* index_cache;
|
||||||
@@ -889,9 +909,17 @@ fts_drop_index(
|
|||||||
index_cache = fts_find_index_cache(cache, index);
|
index_cache = fts_find_index_cache(cache, index);
|
||||||
|
|
||||||
if (index_cache != NULL) {
|
if (index_cache != NULL) {
|
||||||
if (index_cache->words) {
|
for(;;) {
|
||||||
fts_words_free(index_cache->words);
|
bool retry = false;
|
||||||
rbt_free(index_cache->words);
|
if (index->index_fts_syncing) {
|
||||||
|
retry = true;
|
||||||
|
}
|
||||||
|
if (!retry && index_cache->words) {
|
||||||
|
fts_words_free(index_cache->words);
|
||||||
|
rbt_free(index_cache->words);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DICT_BG_YIELD(trx);
|
||||||
}
|
}
|
||||||
|
|
||||||
ib_vector_remove(cache->indexes, *(void**) index_cache);
|
ib_vector_remove(cache->indexes, *(void**) index_cache);
|
||||||
@@ -4569,10 +4597,16 @@ begin_sync:
|
|||||||
index_cache = static_cast<fts_index_cache_t*>(
|
index_cache = static_cast<fts_index_cache_t*>(
|
||||||
ib_vector_get(cache->indexes, i));
|
ib_vector_get(cache->indexes, i));
|
||||||
|
|
||||||
if (index_cache->index->to_be_dropped) {
|
if (index_cache->index->to_be_dropped
|
||||||
|
|| index_cache->index->table->to_be_dropped) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
index_cache->index->index_fts_syncing = true;
|
||||||
|
DBUG_EXECUTE_IF("fts_instrument_sync_sleep_drop_waits",
|
||||||
|
os_thread_sleep(10000000);
|
||||||
|
);
|
||||||
|
|
||||||
error = fts_sync_index(sync, index_cache);
|
error = fts_sync_index(sync, index_cache);
|
||||||
|
|
||||||
if (error != DB_SUCCESS && !sync->interrupted) {
|
if (error != DB_SUCCESS && !sync->interrupted) {
|
||||||
@@ -4605,11 +4639,33 @@ begin_sync:
|
|||||||
end_sync:
|
end_sync:
|
||||||
if (error == DB_SUCCESS && !sync->interrupted) {
|
if (error == DB_SUCCESS && !sync->interrupted) {
|
||||||
error = fts_sync_commit(sync);
|
error = fts_sync_commit(sync);
|
||||||
|
if (error == DB_SUCCESS) {
|
||||||
|
for (i = 0; i < ib_vector_size(cache->indexes); ++i) {
|
||||||
|
fts_index_cache_t* index_cache;
|
||||||
|
index_cache = static_cast<fts_index_cache_t*>(
|
||||||
|
ib_vector_get(cache->indexes, i));
|
||||||
|
if (index_cache->index->index_fts_syncing) {
|
||||||
|
index_cache->index->index_fts_syncing
|
||||||
|
= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
fts_sync_rollback(sync);
|
fts_sync_rollback(sync);
|
||||||
}
|
}
|
||||||
|
|
||||||
rw_lock_x_lock(&cache->lock);
|
rw_lock_x_lock(&cache->lock);
|
||||||
|
/* Clear fts syncing flags of any indexes incase sync is
|
||||||
|
interrupeted */
|
||||||
|
for (i = 0; i < ib_vector_size(cache->indexes); ++i) {
|
||||||
|
fts_index_cache_t* index_cache;
|
||||||
|
index_cache = static_cast<fts_index_cache_t*>(
|
||||||
|
ib_vector_get(cache->indexes, i));
|
||||||
|
if (index_cache->index->index_fts_syncing == true) {
|
||||||
|
index_cache->index->index_fts_syncing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sync->interrupted = false;
|
sync->interrupted = false;
|
||||||
sync->in_progress = false;
|
sync->in_progress = false;
|
||||||
os_event_set(sync->event);
|
os_event_set(sync->event);
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2007, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2016, MariaDB Corporation. All Rights reserved.
|
Copyright (c) 2016, MariaDB Corporation. All Rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -2971,13 +2971,6 @@ fts_optimize_sync_table(
|
|||||||
{
|
{
|
||||||
dict_table_t* table = NULL;
|
dict_table_t* table = NULL;
|
||||||
|
|
||||||
/* Prevent DROP INDEX etc. from running when we are syncing
|
|
||||||
cache in background. */
|
|
||||||
if (!rw_lock_s_lock_nowait(&dict_operation_lock, __FILE__, __LINE__)) {
|
|
||||||
/* Exit when fail to get dict operation lock. */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
table = dict_table_open_on_id(table_id, FALSE, DICT_TABLE_OP_NORMAL);
|
table = dict_table_open_on_id(table_id, FALSE, DICT_TABLE_OP_NORMAL);
|
||||||
|
|
||||||
if (table) {
|
if (table) {
|
||||||
@@ -2987,8 +2980,6 @@ fts_optimize_sync_table(
|
|||||||
|
|
||||||
dict_table_close(table, FALSE, FALSE);
|
dict_table_close(table, FALSE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
rw_lock_s_unlock(&dict_operation_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************//**
|
/**********************************************************************//**
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2007, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2017, MariaDB Corporation.
|
Copyright (c) 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -5895,7 +5895,47 @@ ha_innobase::commit_inplace_alter_table(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
DICT_STATS_BG_YIELD(trx);
|
DICT_BG_YIELD(trx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make a concurrent Drop fts Index to wait until sync of that
|
||||||
|
fts index is happening in the background */
|
||||||
|
for (;;) {
|
||||||
|
bool retry = false;
|
||||||
|
|
||||||
|
for (inplace_alter_handler_ctx** pctx = ctx_array;
|
||||||
|
*pctx; pctx++) {
|
||||||
|
int count =0;
|
||||||
|
ha_innobase_inplace_ctx* ctx
|
||||||
|
= static_cast<ha_innobase_inplace_ctx*>(*pctx);
|
||||||
|
DBUG_ASSERT(new_clustered == ctx->need_rebuild());
|
||||||
|
|
||||||
|
if (dict_fts_index_syncing(ctx->old_table)) {
|
||||||
|
count++;
|
||||||
|
if (count == 100) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"Drop index waiting for background sync"
|
||||||
|
"to finish\n");
|
||||||
|
}
|
||||||
|
retry = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new_clustered && dict_fts_index_syncing(ctx->new_table)) {
|
||||||
|
count++;
|
||||||
|
if (count == 100) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"Drop index waiting for background sync"
|
||||||
|
"to finish\n");
|
||||||
|
}
|
||||||
|
retry = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!retry) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DICT_BG_YIELD(trx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apply the changes to the data dictionary tables, for all
|
/* Apply the changes to the data dictionary tables, for all
|
||||||
@@ -6211,8 +6251,13 @@ foreign_fail:
|
|||||||
|
|
||||||
ut_d(dict_table_check_for_dup_indexes(
|
ut_d(dict_table_check_for_dup_indexes(
|
||||||
ctx->new_table, CHECK_ABORTED_OK));
|
ctx->new_table, CHECK_ABORTED_OK));
|
||||||
ut_a(fts_check_cached_index(ctx->new_table));
|
|
||||||
|
|
||||||
|
#ifdef UNIV_DEBUG
|
||||||
|
if (!(ctx->new_table->fts != NULL
|
||||||
|
&& ctx->new_table->fts->cache->sync->in_progress)) {
|
||||||
|
ut_a(fts_check_cached_index(ctx->new_table));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (new_clustered) {
|
if (new_clustered) {
|
||||||
/* Since the table has been rebuilt, we remove
|
/* Since the table has been rebuilt, we remove
|
||||||
all persistent statistics corresponding to the
|
all persistent statistics corresponding to the
|
||||||
|
@@ -4000,7 +4000,7 @@ ibuf_insert_to_index_page_low(
|
|||||||
(ulong) zip_size, (ulong) old_bits);
|
(ulong) zip_size, (ulong) old_bits);
|
||||||
|
|
||||||
fputs("InnoDB: Submit a detailed bug report"
|
fputs("InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
DBUG_RETURN(NULL);
|
DBUG_RETURN(NULL);
|
||||||
}
|
}
|
||||||
@@ -4073,7 +4073,7 @@ dump:
|
|||||||
" Please run CHECK TABLE on\n"
|
" Please run CHECK TABLE on\n"
|
||||||
"InnoDB: your tables.\n"
|
"InnoDB: your tables.\n"
|
||||||
"InnoDB: Submit a detailed bug report to"
|
"InnoDB: Submit a detailed bug report to"
|
||||||
" http://bugs.mysql.com!\n", stderr);
|
" https://jira.mariadb.org/\n", stderr);
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@@ -4249,7 +4249,7 @@ ibuf_set_del_mark(
|
|||||||
fprintf(stderr, "\nspace %u offset %u"
|
fprintf(stderr, "\nspace %u offset %u"
|
||||||
" (%u records, index id %llu)\n"
|
" (%u records, index id %llu)\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned) buf_block_get_space(block),
|
(unsigned) buf_block_get_space(block),
|
||||||
(unsigned) buf_block_get_page_no(block),
|
(unsigned) buf_block_get_page_no(block),
|
||||||
(unsigned) page_get_n_recs(page),
|
(unsigned) page_get_n_recs(page),
|
||||||
@@ -4313,7 +4313,7 @@ ibuf_delete(
|
|||||||
fprintf(stderr, "\nspace %u offset %u"
|
fprintf(stderr, "\nspace %u offset %u"
|
||||||
" (%u records, index id %llu)\n"
|
" (%u records, index id %llu)\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned) buf_block_get_space(block),
|
(unsigned) buf_block_get_space(block),
|
||||||
(unsigned) buf_block_get_page_no(block),
|
(unsigned) buf_block_get_page_no(block),
|
||||||
(unsigned) page_get_n_recs(page),
|
(unsigned) page_get_n_recs(page),
|
||||||
@@ -4384,7 +4384,7 @@ ibuf_restore_pos(
|
|||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: ERROR: Submit the output to"
|
"InnoDB: ERROR: Submit the output to"
|
||||||
" http://bugs.mysql.com\n"
|
" https://jira.mariadb.org/\n"
|
||||||
"InnoDB: ibuf cursor restoration fails!\n"
|
"InnoDB: ibuf cursor restoration fails!\n"
|
||||||
"InnoDB: ibuf record inserted to page %lu:%lu\n",
|
"InnoDB: ibuf record inserted to page %lu:%lu\n",
|
||||||
(ulong) space, (ulong) page_no);
|
(ulong) space, (ulong) page_no);
|
||||||
@@ -4703,7 +4703,7 @@ ibuf_merge_or_delete_for_page(
|
|||||||
"InnoDB: to determine if they are corrupt"
|
"InnoDB: to determine if they are corrupt"
|
||||||
" after this.\n\n"
|
" after this.\n\n"
|
||||||
"InnoDB: Please submit a detailed bug report"
|
"InnoDB: Please submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n\n",
|
" to https://jira.mariadb.org/\n\n",
|
||||||
(ulong) page_no,
|
(ulong) page_no,
|
||||||
(ulong)
|
(ulong)
|
||||||
fil_page_get_type(block->frame));
|
fil_page_get_type(block->frame));
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -1076,6 +1076,27 @@ dict_table_x_lock_indexes(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************//**
|
||||||
|
Returns true if the particular FTS index in the table is still syncing
|
||||||
|
in the background, false otherwise.
|
||||||
|
@param [in] table Table containing FTS index
|
||||||
|
@return True if sync of fts index is still going in the background */
|
||||||
|
UNIV_INLINE
|
||||||
|
bool
|
||||||
|
dict_fts_index_syncing(
|
||||||
|
dict_table_t* table)
|
||||||
|
{
|
||||||
|
dict_index_t* index;
|
||||||
|
|
||||||
|
for (index = dict_table_get_first_index(table);
|
||||||
|
index != NULL;
|
||||||
|
index = dict_table_get_next_index(index)) {
|
||||||
|
if (index->index_fts_syncing) {
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
/*********************************************************************//**
|
/*********************************************************************//**
|
||||||
Release the exclusive locks on all index tree. */
|
Release the exclusive locks on all index tree. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2012, Facebook Inc.
|
Copyright (c) 2012, Facebook Inc.
|
||||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
@@ -704,6 +704,8 @@ struct dict_index_t{
|
|||||||
dict_sys->mutex. Other changes are
|
dict_sys->mutex. Other changes are
|
||||||
protected by index->lock. */
|
protected by index->lock. */
|
||||||
dict_field_t* fields; /*!< array of field descriptions */
|
dict_field_t* fields; /*!< array of field descriptions */
|
||||||
|
bool index_fts_syncing;/*!< Whether the fts index is
|
||||||
|
still syncing in the background */
|
||||||
#ifndef UNIV_HOTBACKUP
|
#ifndef UNIV_HOTBACKUP
|
||||||
UT_LIST_NODE_T(dict_index_t)
|
UT_LIST_NODE_T(dict_index_t)
|
||||||
indexes;/*!< list of indexes of the table */
|
indexes;/*!< list of indexes of the table */
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2012, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2012, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2017, MariaDB Corporation.
|
Copyright (c) 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -83,7 +83,7 @@ dict_stats_defrag_pool_del(
|
|||||||
/** Yield the data dictionary latch when waiting
|
/** Yield the data dictionary latch when waiting
|
||||||
for the background thread to stop accessing a table.
|
for the background thread to stop accessing a table.
|
||||||
@param trx transaction holding the data dictionary locks */
|
@param trx transaction holding the data dictionary locks */
|
||||||
#define DICT_STATS_BG_YIELD(trx) do { \
|
#define DICT_BG_YIELD(trx) do { \
|
||||||
row_mysql_unlock_data_dictionary(trx); \
|
row_mysql_unlock_data_dictionary(trx); \
|
||||||
os_thread_sleep(250000); \
|
os_thread_sleep(250000); \
|
||||||
row_mysql_lock_data_dictionary(trx); \
|
row_mysql_lock_data_dictionary(trx); \
|
||||||
|
@@ -215,7 +215,7 @@ mlog_write_initial_log_record_fast(
|
|||||||
"%d on page %lu of space %lu in the "
|
"%d on page %lu of space %lu in the "
|
||||||
"doublewrite buffer, continuing anyway.\n"
|
"doublewrite buffer, continuing anyway.\n"
|
||||||
"Please post a bug report to "
|
"Please post a bug report to "
|
||||||
"bugs.mysql.com.\n",
|
"https://jira.mariadb.org/\n",
|
||||||
type, offset, space);
|
type, offset, space);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -2451,7 +2451,7 @@ lock_rec_enqueue_waiting(
|
|||||||
dict_index_name_print(stderr, trx, index);
|
dict_index_name_print(stderr, trx, index);
|
||||||
fputs(".\n"
|
fputs(".\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
stderr);
|
stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
@@ -5185,7 +5185,7 @@ lock_table_enqueue_waiting(
|
|||||||
ut_print_name(stderr, trx, TRUE, table->name);
|
ut_print_name(stderr, trx, TRUE, table->name);
|
||||||
fputs(".\n"
|
fputs(".\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
stderr);
|
stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -1137,7 +1137,7 @@ row_ins_foreign_check_on_constraint(
|
|||||||
rec_print(stderr, clust_rec, clust_index);
|
rec_print(stderr, clust_rec, clust_index);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report to"
|
"InnoDB: Submit a detailed bug report to"
|
||||||
" http://bugs.mysql.com\n", stderr);
|
" https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
err = DB_SUCCESS;
|
err = DB_SUCCESS;
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2015, 2017, MariaDB Corporation.
|
Copyright (c) 2015, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@@ -59,6 +59,7 @@ Created 9/17/2000 Heikki Tuuri
|
|||||||
#include "btr0defragment.h"
|
#include "btr0defragment.h"
|
||||||
#include "fil0fil.h"
|
#include "fil0fil.h"
|
||||||
#include "fil0crypt.h"
|
#include "fil0crypt.h"
|
||||||
|
#include "srv0srv.h"
|
||||||
#include "ibuf0ibuf.h"
|
#include "ibuf0ibuf.h"
|
||||||
#include "fts0fts.h"
|
#include "fts0fts.h"
|
||||||
#include "fts0types.h"
|
#include "fts0types.h"
|
||||||
@@ -4026,6 +4027,16 @@ row_drop_table_for_mysql(
|
|||||||
ut_ad(!table->fts->add_wq);
|
ut_ad(!table->fts->add_wq);
|
||||||
ut_ad(lock_trx_has_sys_table_locks(trx) == 0);
|
ut_ad(lock_trx_has_sys_table_locks(trx) == 0);
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
bool retry = false;
|
||||||
|
if (dict_fts_index_syncing(table)) {
|
||||||
|
retry = true;
|
||||||
|
}
|
||||||
|
if (!retry) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DICT_BG_YIELD(trx);
|
||||||
|
}
|
||||||
row_mysql_unlock_data_dictionary(trx);
|
row_mysql_unlock_data_dictionary(trx);
|
||||||
fts_optimize_remove_table(table);
|
fts_optimize_remove_table(table);
|
||||||
row_mysql_lock_data_dictionary(trx);
|
row_mysql_lock_data_dictionary(trx);
|
||||||
|
@@ -2759,8 +2759,6 @@ row_sel_field_store_in_mysql_format_func(
|
|||||||
@param[in] field_no templ->rec_field_no or
|
@param[in] field_no templ->rec_field_no or
|
||||||
templ->clust_rec_field_no
|
templ->clust_rec_field_no
|
||||||
or templ->icp_rec_field_no
|
or templ->icp_rec_field_no
|
||||||
or sec field no if clust_templ_for_sec
|
|
||||||
is TRUE
|
|
||||||
@param[in] templ row template
|
@param[in] templ row template
|
||||||
*/
|
*/
|
||||||
static MY_ATTRIBUTE((warn_unused_result))
|
static MY_ATTRIBUTE((warn_unused_result))
|
||||||
@@ -2913,10 +2911,6 @@ be needed in the query.
|
|||||||
@param[in] rec_clust TRUE if the rec in the clustered index
|
@param[in] rec_clust TRUE if the rec in the clustered index
|
||||||
@param[in] index index of rec
|
@param[in] index index of rec
|
||||||
@param[in] offsets array returned by rec_get_offsets(rec)
|
@param[in] offsets array returned by rec_get_offsets(rec)
|
||||||
@param[in] clust_templ_for_sec TRUE if rec belongs to secondary index
|
|
||||||
but the prebuilt->template is in
|
|
||||||
clustered index format and it is
|
|
||||||
used only for end range comparison
|
|
||||||
@return TRUE on success, FALSE if not all columns could be retrieved */
|
@return TRUE on success, FALSE if not all columns could be retrieved */
|
||||||
static MY_ATTRIBUTE((warn_unused_result))
|
static MY_ATTRIBUTE((warn_unused_result))
|
||||||
ibool
|
ibool
|
||||||
@@ -3099,7 +3093,7 @@ row_sel_get_clust_rec_for_mysql(
|
|||||||
trx_print(stderr, trx, 600);
|
trx_print(stderr, trx, 600);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -683,7 +683,7 @@ row_undo_mod_del_unmark_sec_and_undo_update(
|
|||||||
trx_print(stderr, trx, 0);
|
trx_print(stderr, trx, 0);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
|
|
||||||
ib_logf(IB_LOG_LEVEL_WARN,
|
ib_logf(IB_LOG_LEVEL_WARN,
|
||||||
"record in index %s was not found"
|
"record in index %s was not found"
|
||||||
|
@@ -1952,7 +1952,7 @@ row_upd_sec_index_entry(
|
|||||||
trx_print(stderr, trx, 0);
|
trx_print(stderr, trx, 0);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
break;
|
break;
|
||||||
case ROW_FOUND:
|
case ROW_FOUND:
|
||||||
|
@@ -1914,7 +1914,7 @@ loop:
|
|||||||
" was greater\n"
|
" was greater\n"
|
||||||
"InnoDB: than the new log sequence number " LSN_PF "!\n"
|
"InnoDB: than the new log sequence number " LSN_PF "!\n"
|
||||||
"InnoDB: Please submit a bug report"
|
"InnoDB: Please submit a bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org\n",
|
||||||
old_lsn, new_lsn);
|
old_lsn, new_lsn);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -603,7 +603,7 @@ trx_purge_rseg_get_next_history_log(
|
|||||||
"InnoDB: but its length is still"
|
"InnoDB: but its length is still"
|
||||||
" reported as %lu! Make a detailed bug\n"
|
" reported as %lu! Make a detailed bug\n"
|
||||||
"InnoDB: report, and submit it"
|
"InnoDB: report, and submit it"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(ulong) trx_sys->rseg_history_len);
|
(ulong) trx_sys->rseg_history_len);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -1022,7 +1022,7 @@ trx_undo_update_rec_get_update(
|
|||||||
fprintf(stderr, "\n"
|
fprintf(stderr, "\n"
|
||||||
"InnoDB: but index has only %lu fields\n"
|
"InnoDB: but index has only %lu fields\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n"
|
" to https://jira.mariadb.org/\n"
|
||||||
"InnoDB: Run also CHECK TABLE ",
|
"InnoDB: Run also CHECK TABLE ",
|
||||||
(ulong) dict_index_get_n_fields(index));
|
(ulong) dict_index_get_n_fields(index));
|
||||||
ut_print_name(stderr, trx, TRUE, index->table_name);
|
ut_print_name(stderr, trx, TRUE, index->table_name);
|
||||||
|
@@ -63,7 +63,7 @@ ut_dbg_assertion_failed(
|
|||||||
|
|
||||||
fputs("InnoDB: We intentionally generate a memory trap.\n"
|
fputs("InnoDB: We intentionally generate a memory trap.\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com.\n"
|
" to https://jira.mariadb.org/\n"
|
||||||
"InnoDB: If you get repeated assertion failures"
|
"InnoDB: If you get repeated assertion failures"
|
||||||
" or crashes, even\n"
|
" or crashes, even\n"
|
||||||
"InnoDB: immediately after the mysqld startup, there may be\n"
|
"InnoDB: immediately after the mysqld startup, there may be\n"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
|
/* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
#include "sp_head.h"
|
#include "sp_head.h"
|
||||||
#include "pfs_digest.h"
|
#include "pfs_digest.h"
|
||||||
|
|
||||||
|
using std::min;
|
||||||
/**
|
/**
|
||||||
@page PAGE_PERFORMANCE_SCHEMA The Performance Schema main page
|
@page PAGE_PERFORMANCE_SCHEMA The Performance Schema main page
|
||||||
MySQL PERFORMANCE_SCHEMA implementation.
|
MySQL PERFORMANCE_SCHEMA implementation.
|
||||||
@@ -2018,7 +2019,8 @@ static void set_thread_account_v1(const char *user, int user_len,
|
|||||||
DBUG_ASSERT((uint) user_len <= sizeof(pfs->m_username));
|
DBUG_ASSERT((uint) user_len <= sizeof(pfs->m_username));
|
||||||
DBUG_ASSERT((host != NULL) || (host_len == 0));
|
DBUG_ASSERT((host != NULL) || (host_len == 0));
|
||||||
DBUG_ASSERT(host_len >= 0);
|
DBUG_ASSERT(host_len >= 0);
|
||||||
DBUG_ASSERT((uint) host_len <= sizeof(pfs->m_hostname));
|
|
||||||
|
host_len= min<size_t>(host_len, sizeof(pfs->m_hostname));
|
||||||
|
|
||||||
if (unlikely(pfs == NULL))
|
if (unlikely(pfs == NULL))
|
||||||
return;
|
return;
|
||||||
|
@@ -2086,7 +2086,7 @@ btr_page_reorganize_low(
|
|||||||
"InnoDB: Error: page old max ins size %lu"
|
"InnoDB: Error: page old max ins size %lu"
|
||||||
" new max ins size %lu\n"
|
" new max ins size %lu\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned long) data_size1, (unsigned long) data_size2,
|
(unsigned long) data_size1, (unsigned long) data_size2,
|
||||||
(unsigned long) max_ins_size1,
|
(unsigned long) max_ins_size1,
|
||||||
(unsigned long) max_ins_size2);
|
(unsigned long) max_ins_size2);
|
||||||
|
@@ -4042,7 +4042,7 @@ ibuf_insert_to_index_page_low(
|
|||||||
(ulong) zip_size, (ulong) old_bits);
|
(ulong) zip_size, (ulong) old_bits);
|
||||||
|
|
||||||
fputs("InnoDB: Submit a detailed bug report"
|
fputs("InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
DBUG_RETURN(NULL);
|
DBUG_RETURN(NULL);
|
||||||
}
|
}
|
||||||
@@ -4115,7 +4115,7 @@ dump:
|
|||||||
" Please run CHECK TABLE on\n"
|
" Please run CHECK TABLE on\n"
|
||||||
"InnoDB: your tables.\n"
|
"InnoDB: your tables.\n"
|
||||||
"InnoDB: Submit a detailed bug report to"
|
"InnoDB: Submit a detailed bug report to"
|
||||||
" http://bugs.mysql.com!\n", stderr);
|
" https://jira.mariadb.org/\n", stderr);
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@@ -4291,7 +4291,7 @@ ibuf_set_del_mark(
|
|||||||
fprintf(stderr, "\nspace %u offset %u"
|
fprintf(stderr, "\nspace %u offset %u"
|
||||||
" (%u records, index id %llu)\n"
|
" (%u records, index id %llu)\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned) buf_block_get_space(block),
|
(unsigned) buf_block_get_space(block),
|
||||||
(unsigned) buf_block_get_page_no(block),
|
(unsigned) buf_block_get_page_no(block),
|
||||||
(unsigned) page_get_n_recs(page),
|
(unsigned) page_get_n_recs(page),
|
||||||
@@ -4355,7 +4355,7 @@ ibuf_delete(
|
|||||||
fprintf(stderr, "\nspace %u offset %u"
|
fprintf(stderr, "\nspace %u offset %u"
|
||||||
" (%u records, index id %llu)\n"
|
" (%u records, index id %llu)\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(unsigned) buf_block_get_space(block),
|
(unsigned) buf_block_get_space(block),
|
||||||
(unsigned) buf_block_get_page_no(block),
|
(unsigned) buf_block_get_page_no(block),
|
||||||
(unsigned) page_get_n_recs(page),
|
(unsigned) page_get_n_recs(page),
|
||||||
@@ -4426,7 +4426,7 @@ ibuf_restore_pos(
|
|||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: ERROR: Submit the output to"
|
"InnoDB: ERROR: Submit the output to"
|
||||||
" http://bugs.mysql.com\n"
|
" https://jira.mariadb.org/\n"
|
||||||
"InnoDB: ibuf cursor restoration fails!\n"
|
"InnoDB: ibuf cursor restoration fails!\n"
|
||||||
"InnoDB: ibuf record inserted to page %lu:%lu\n",
|
"InnoDB: ibuf record inserted to page %lu:%lu\n",
|
||||||
(ulong) space, (ulong) page_no);
|
(ulong) space, (ulong) page_no);
|
||||||
@@ -4745,7 +4745,7 @@ ibuf_merge_or_delete_for_page(
|
|||||||
"InnoDB: to determine if they are corrupt"
|
"InnoDB: to determine if they are corrupt"
|
||||||
" after this.\n\n"
|
" after this.\n\n"
|
||||||
"InnoDB: Please submit a detailed bug report"
|
"InnoDB: Please submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n\n",
|
" to https://jira.mariadb.org/\n\n",
|
||||||
(ulong) page_no,
|
(ulong) page_no,
|
||||||
(ulong)
|
(ulong)
|
||||||
fil_page_get_type(block->frame));
|
fil_page_get_type(block->frame));
|
||||||
|
@@ -216,7 +216,7 @@ mlog_write_initial_log_record_fast(
|
|||||||
"%d on page %lu of space %lu in the "
|
"%d on page %lu of space %lu in the "
|
||||||
"doublewrite buffer, continuing anyway.\n"
|
"doublewrite buffer, continuing anyway.\n"
|
||||||
"Please post a bug report to "
|
"Please post a bug report to "
|
||||||
"bugs.mysql.com.\n",
|
"https://jira.mariadb.org/\n",
|
||||||
type, offset, space);
|
type, offset, space);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -2478,7 +2478,7 @@ lock_rec_enqueue_waiting(
|
|||||||
dict_index_name_print(stderr, trx, index);
|
dict_index_name_print(stderr, trx, index);
|
||||||
fputs(".\n"
|
fputs(".\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
stderr);
|
stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
@@ -5226,7 +5226,7 @@ lock_table_enqueue_waiting(
|
|||||||
ut_print_name(stderr, trx, TRUE, table->name);
|
ut_print_name(stderr, trx, TRUE, table->name);
|
||||||
fputs(".\n"
|
fputs(".\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
stderr);
|
stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -1143,7 +1143,7 @@ row_ins_foreign_check_on_constraint(
|
|||||||
rec_print(stderr, clust_rec, clust_index);
|
rec_print(stderr, clust_rec, clust_index);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report to"
|
"InnoDB: Submit a detailed bug report to"
|
||||||
" http://bugs.mysql.com\n", stderr);
|
" https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
err = DB_SUCCESS;
|
err = DB_SUCCESS;
|
||||||
|
|
||||||
|
@@ -3111,7 +3111,7 @@ row_sel_get_clust_rec_for_mysql(
|
|||||||
trx_print(stderr, trx, 600);
|
trx_print(stderr, trx, 600);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -653,7 +653,7 @@ row_undo_mod_del_unmark_sec_and_undo_update(
|
|||||||
trx_print(stderr, trx, 0);
|
trx_print(stderr, trx, 0);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
|
|
||||||
ib_logf(IB_LOG_LEVEL_WARN,
|
ib_logf(IB_LOG_LEVEL_WARN,
|
||||||
"record in index %s was not found"
|
"record in index %s was not found"
|
||||||
|
@@ -1958,7 +1958,7 @@ row_upd_sec_index_entry(
|
|||||||
trx_print(stderr, trx, 0);
|
trx_print(stderr, trx, 0);
|
||||||
fputs("\n"
|
fputs("\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n", stderr);
|
" to https://jira.mariadb.org/\n", stderr);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
break;
|
break;
|
||||||
case ROW_FOUND:
|
case ROW_FOUND:
|
||||||
|
@@ -2361,7 +2361,7 @@ loop:
|
|||||||
" was greater\n"
|
" was greater\n"
|
||||||
"InnoDB: than the new log sequence number " LSN_PF "!\n"
|
"InnoDB: than the new log sequence number " LSN_PF "!\n"
|
||||||
"InnoDB: Please submit a bug report"
|
"InnoDB: Please submit a bug report"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org\n",
|
||||||
old_lsn, new_lsn);
|
old_lsn, new_lsn);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -603,7 +603,7 @@ trx_purge_rseg_get_next_history_log(
|
|||||||
"InnoDB: but its length is still"
|
"InnoDB: but its length is still"
|
||||||
" reported as %lu! Make a detailed bug\n"
|
" reported as %lu! Make a detailed bug\n"
|
||||||
"InnoDB: report, and submit it"
|
"InnoDB: report, and submit it"
|
||||||
" to http://bugs.mysql.com\n",
|
" to https://jira.mariadb.org/\n",
|
||||||
(ulong) trx_sys->rseg_history_len);
|
(ulong) trx_sys->rseg_history_len);
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
}
|
}
|
||||||
|
@@ -1022,7 +1022,7 @@ trx_undo_update_rec_get_update(
|
|||||||
fprintf(stderr, "\n"
|
fprintf(stderr, "\n"
|
||||||
"InnoDB: but index has only %lu fields\n"
|
"InnoDB: but index has only %lu fields\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com\n"
|
" to https://jira.mariadb.org/\n"
|
||||||
"InnoDB: Run also CHECK TABLE ",
|
"InnoDB: Run also CHECK TABLE ",
|
||||||
(ulong) dict_index_get_n_fields(index));
|
(ulong) dict_index_get_n_fields(index));
|
||||||
ut_print_name(stderr, trx, TRUE, index->table_name);
|
ut_print_name(stderr, trx, TRUE, index->table_name);
|
||||||
|
@@ -63,7 +63,7 @@ ut_dbg_assertion_failed(
|
|||||||
|
|
||||||
fputs("InnoDB: We intentionally generate a memory trap.\n"
|
fputs("InnoDB: We intentionally generate a memory trap.\n"
|
||||||
"InnoDB: Submit a detailed bug report"
|
"InnoDB: Submit a detailed bug report"
|
||||||
" to http://bugs.mysql.com.\n"
|
" to https://jira.mariadb.org/\n"
|
||||||
"InnoDB: If you get repeated assertion failures"
|
"InnoDB: If you get repeated assertion failures"
|
||||||
" or crashes, even\n"
|
" or crashes, even\n"
|
||||||
"InnoDB: immediately after the mysqld startup, there may be\n"
|
"InnoDB: immediately after the mysqld startup, there may be\n"
|
||||||
|
Reference in New Issue
Block a user