summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2018-05-07 22:41:34 +0200
committerOlivier Bertrand <bertrandop@gmail.com>2018-05-07 22:41:34 +0200
commit546773fb78bf2d80309116b8632341955a0d54f7 (patch)
treec89cb24798664a6dda216ff0660afc4db026cf0d
parent3bd6e68a4235706caada20f944f656365ad8ce3e (diff)
parent762111ea3aeec8ef0d4f77b0cedbe97fa76d114f (diff)
downloadmariadb-git-546773fb78bf2d80309116b8632341955a0d54f7.tar.gz
Merge branch 'ob-10.1' into 10.1
-rw-r--r--storage/connect/domdoc.cpp4
-rw-r--r--storage/connect/filamtxt.cpp2
-rw-r--r--storage/connect/ha_connect.cc32
-rw-r--r--storage/connect/json.h3
-rw-r--r--storage/connect/jsonudf.cpp4
-rw-r--r--storage/connect/mycat.cc15
-rw-r--r--storage/connect/tabext.cpp2
-rw-r--r--storage/connect/tabjson.cpp14
-rw-r--r--storage/connect/tabjson.h1
-rw-r--r--storage/connect/user_connect.cc1
10 files changed, 33 insertions, 45 deletions
diff --git a/storage/connect/domdoc.cpp b/storage/connect/domdoc.cpp
index ba8eb829abd..9ae34a3b9ef 100644
--- a/storage/connect/domdoc.cpp
+++ b/storage/connect/domdoc.cpp
@@ -84,8 +84,8 @@ DOMDOC::DOMDOC(char *nsl, char *nsdf, char *enc, PFBLOCK fp)
: XMLDOCUMENT(nsl, nsdf, enc)
{
assert (!fp || fp->Type == TYPE_FB_XML);
- Docp = (fp) ? ((PXBLOCK)fp)->Docp : NULL;
- Nlist = NULL;
+ Docp = (fp) ? ((PXBLOCK)fp)->Docp : (MSXML2::IXMLDOMDocumentPtr)NULL;
+ Nlist = NULL;
Hr = 0;
} // end of DOMDOC constructor
diff --git a/storage/connect/filamtxt.cpp b/storage/connect/filamtxt.cpp
index 7c222eb3c80..490ca3a5fba 100644
--- a/storage/connect/filamtxt.cpp
+++ b/storage/connect/filamtxt.cpp
@@ -427,7 +427,7 @@ int TXTFAM::DeleteSortedRows(PGLOBAL g)
for (i = 0; i < Posar->GetNval(); i++) {
if ((irc = InitDelete(g, Posar->GetIntValue(ix[i]),
- Sosar->GetIntValue(ix[i])) == RC_FX))
+ Sosar->GetIntValue(ix[i]))) == RC_FX)
goto err;
// Now delete the sorted rows
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index c878bf2a7de..e09eddc4555 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -107,13 +107,9 @@
#define MYSQL_SERVER 1
#define DONT_DEFINE_VOID
-#include "sql_class.h"
-#include "create_options.h"
-#include "mysql_com.h"
-#include "field.h"
+#include <my_global.h>
#include "sql_parse.h"
#include "sql_base.h"
-#include <sys/stat.h>
#include "sql_partition.h"
#undef OFFSET
@@ -432,7 +428,7 @@ handlerton *connect_hton= NULL;
uint GetTraceValue(void)
{return (uint)(connect_hton ? THDVAR(current_thd, xtrace) : 0);}
bool ExactInfo(void) {return THDVAR(current_thd, exact_info);}
-bool CondPushEnabled(void) {return THDVAR(current_thd, cond_push);}
+static bool CondPushEnabled(void) {return THDVAR(current_thd, cond_push);}
USETEMP UseTemp(void) {return (USETEMP)THDVAR(current_thd, use_tempfile);}
int GetConvSize(void) {return THDVAR(current_thd, conv_size);}
TYPCONV GetTypeConv(void) {return (TYPCONV)THDVAR(current_thd, type_conv);}
@@ -1781,12 +1777,14 @@ bool ha_connect::CheckVirtualIndex(TABLE_SHARE *s)
bool ha_connect::IsPartitioned(void)
{
- if (tshp)
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ if (tshp)
return tshp->partition_info_str_len > 0;
else if (table && table->part_info)
return true;
else
- return false;
+#endif
+ return false;
} // end of IsPartitioned
@@ -2811,7 +2809,7 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond)
htrc("Cond type=%d\n", cond->type());
if (cond->type() == COND::COND_ITEM) {
- char *pb0, *pb1, *pb2, *ph0, *ph1, *ph2;
+ char *pb0, *pb1, *pb2, *ph0= 0, *ph1= 0, *ph2= 0;
bool bb = false, bh = false;
Item_cond *cond_item= (Item_cond *)cond;
@@ -5568,7 +5566,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
} // endif p
} else if (ttp != TAB_ODBC || !(fnc & (FNC_TABLE | FNC_COL)))
- tab = table_s->table_name.str; // Default value
+ tab = (char*)table_s->table_name.str; // Default value
} // endif tab
@@ -6200,7 +6198,9 @@ int ha_connect::create(const char *name, TABLE *table_arg,
LEX_STRING cnc = table_arg->s->connect_string;
#if defined(WITH_PARTITION_STORAGE_ENGINE)
partition_info *part_info= table_arg->part_info;
-#endif // WITH_PARTITION_STORAGE_ENGINE
+#else // !WITH_PARTITION_STORAGE_ENGINE
+#define part_info 0
+#endif // !WITH_PARTITION_STORAGE_ENGINE
xp= GetUser(thd, xp);
PGLOBAL g= xp->g;
@@ -6301,9 +6301,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
// fall through
case TAB_MYSQL:
-#if defined(WITH_PARTITION_STORAGE_ENGINE)
if (!part_info)
-#endif // WITH_PARTITION_STORAGE_ENGINE
{const char *src= options->srcdef;
PCSZ host, db, tab= options->tabname;
int port;
@@ -6567,7 +6565,6 @@ int ha_connect::create(const char *name, TABLE *table_arg,
} else
lwt[i]= tolower(options->type[i]);
-#if defined(WITH_PARTITION_STORAGE_ENGINE)
if (part_info) {
char *p;
@@ -6577,7 +6574,6 @@ int ha_connect::create(const char *name, TABLE *table_arg,
strcat(strcat(strcpy(buf, p), "."), lwt);
*p= 0;
} else {
-#endif // WITH_PARTITION_STORAGE_ENGINE
strcat(strcat(strcpy(buf, GetTableName()), "."), lwt);
sprintf(g->Message, "No file name. Table will use %s", buf);
@@ -6585,9 +6581,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
strcat(strcat(strcpy(dbpath, "./"), table->s->db.str), "/");
-#if defined(WITH_PARTITION_STORAGE_ENGINE)
} // endif part_info
-#endif // WITH_PARTITION_STORAGE_ENGINE
PlugSetPath(fn, buf, dbpath);
@@ -6652,11 +6646,9 @@ int ha_connect::create(const char *name, TABLE *table_arg,
push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0,
"Unexpected command in create, please contact CONNECT team");
-#if defined(WITH_PARTITION_STORAGE_ENGINE)
if (part_info && !inward)
strncpy(partname, decode(g, strrchr(name, '#') + 1), sizeof(partname) - 1);
// strcpy(partname, part_info->curr_part_elem->partition_name);
-#endif // WITH_PARTITION_STORAGE_ENGINE
if (g->Alchecked == 0 &&
(!IsFileType(type) || FileExists(options->filename, false))) {
@@ -6692,12 +6684,10 @@ int ha_connect::create(const char *name, TABLE *table_arg,
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
rc = HA_ERR_INTERNAL_ERROR;
} else if (cat) {
-#if defined(WITH_PARTITION_STORAGE_ENGINE)
if (part_info)
strncpy(partname,
decode(g, strrchr(name, (inward ? slash : '#')) + 1),
sizeof(partname) - 1);
-#endif // WITH_PARTITION_STORAGE_ENGINE
if ((rc= optimize(table->in_use, NULL))) {
htrc("Create rc=%d %s\n", rc, g->Message);
diff --git a/storage/connect/json.h b/storage/connect/json.h
index dcc97287420..cc394401cc3 100644
--- a/storage/connect/json.h
+++ b/storage/connect/json.h
@@ -44,6 +44,9 @@ typedef struct {
int len;
} STRG, *PSG;
+char *NextChr(PSZ s, char sep);
+char *GetJsonNull(void);
+
PJSON ParseJson(PGLOBAL g, char *s, int n, int *prty = NULL, bool *b = NULL);
PJAR ParseArray(PGLOBAL g, int& i, STRG& src, bool *pty);
PJOB ParseObject(PGLOBAL g, int& i, STRG& src, bool *pty);
diff --git a/storage/connect/jsonudf.cpp b/storage/connect/jsonudf.cpp
index e45846ea23b..6a3004f5c7a 100644
--- a/storage/connect/jsonudf.cpp
+++ b/storage/connect/jsonudf.cpp
@@ -1620,7 +1620,7 @@ static my_bool CheckMemory(PGLOBAL g, UDF_INIT *initid, UDF_ARGS *args, uint n,
if (AllocSarea(g, ml)) {
char errmsg[MAX_STR];
- sprintf(errmsg, MSG(WORK_AREA), g->Message);
+ snprintf(errmsg, sizeof(errmsg) - 1, MSG(WORK_AREA), g->Message);
strcpy(g->Message, errmsg);
return true;
} // endif SareaAlloc
@@ -1673,7 +1673,7 @@ static PCSZ MakeKey(PGLOBAL g, UDF_ARGS *args, int i)
n = strlen(s);
if (IsJson(args, i))
- j = strchr(s, '_') - s + 1;
+ j = (int)(strchr(s, '_') - s + 1);
if (j && n > j) {
s += j;
diff --git a/storage/connect/mycat.cc b/storage/connect/mycat.cc
index 230c0a4aa6f..5aef6d9c660 100644
--- a/storage/connect/mycat.cc
+++ b/storage/connect/mycat.cc
@@ -18,7 +18,7 @@
/* ------------- */
/* Version 1.6 */
/* */
-/* Author: Olivier Bertrand 2012 - 2017 */
+/* Author: Olivier Bertrand 2012 - 2018 */
/* */
/* WHAT THIS PROGRAM DOES: */
/* ----------------------- */
@@ -28,20 +28,13 @@
/***********************************************************************/
/* Include relevant MariaDB header file. */
/***********************************************************************/
-#include <my_config.h>
+#define DONT_DEFINE_VOID
+#include <my_global.h>
-#if defined(__WIN__)
-//#include <windows.h>
-//#include <sqlext.h>
-#elif defined(UNIX)
-#include <sys/types.h>
+#if defined(UNIX)
#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
#include <string.h>
#endif
-#define DONT_DEFINE_VOID
-//#include <mysql/plugin.h>
#include "handler.h"
#undef OFFSET
diff --git a/storage/connect/tabext.cpp b/storage/connect/tabext.cpp
index 64d401bef15..139e4199ed9 100644
--- a/storage/connect/tabext.cpp
+++ b/storage/connect/tabext.cpp
@@ -286,7 +286,7 @@ bool TDBEXT::MakeSrcdef(PGLOBAL g)
char *catp = strstr(Srcdef, "%s");
if (catp) {
- char *fil1, *fil2;
+ char *fil1 = 0, *fil2;
PCSZ ph = ((EXTDEF*)To_Def)->Phpos;
if (!ph)
diff --git a/storage/connect/tabjson.cpp b/storage/connect/tabjson.cpp
index b66682e0190..9e4f5ab987d 100644
--- a/storage/connect/tabjson.cpp
+++ b/storage/connect/tabjson.cpp
@@ -195,7 +195,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
tdp->Fn = GetStringTableOption(g, topt, "Filename", NULL);
if (!(tdp->Database = SetPath(g, db)))
- return NULL;
+ return 0;
tdp->Objname = GetStringTableOption(g, topt, "Object", NULL);
tdp->Base = GetIntegerTableOption(g, topt, "Base", 0) ? 1 : 0;
@@ -243,14 +243,14 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
tjsp = new(g) TDBJSON(tdp, new(g) MAPFAM(tdp));
if (tjsp->MakeDocument(g))
- return NULL;
+ return 0;
jsp = (tjsp->GetDoc()) ? tjsp->GetDoc()->GetValue(0) : NULL;
} else {
if (!(tdp->Lrecl = GetIntegerTableOption(g, topt, "Lrecl", 0)))
if (!mgo) {
sprintf(g->Message, "LRECL must be specified for pretty=%d", tdp->Pretty);
- return NULL;
+ return 0;
} else
tdp->Lrecl = 8192; // Should be enough
@@ -269,14 +269,14 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp));
#else
sprintf(g->Message, "Mongo %s Driver not available", "C");
- return NULL;
+ return 0;
#endif
} else if (tdp->Driver && toupper(*tdp->Driver) == 'J') {
#if defined(JAVA_SUPPORT)
tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp));
#else
sprintf(g->Message, "Mongo %s Driver not available", "Java");
- return NULL;
+ return 0;
#endif
} else { // Driver not specified
#if defined(CMGO_SUPPORT)
@@ -285,7 +285,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp));
#else
sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO");
- return NULL;
+ return 0;
#endif
} // endif Driver
@@ -304,7 +304,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
tjnp->SetG(G);
if (tjnp->OpenDB(g))
- return NULL;
+ return 0;
switch (tjnp->ReadDB(g)) {
case RC_EF:
diff --git a/storage/connect/tabjson.h b/storage/connect/tabjson.h
index 0341c0f8aa0..2ff72905e86 100644
--- a/storage/connect/tabjson.h
+++ b/storage/connect/tabjson.h
@@ -16,6 +16,7 @@ typedef class JSONDEF *PJDEF;
typedef class TDBJSON *PJTDB;
typedef class JSONCOL *PJCOL;
class TDBJSN;
+PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info);
/***********************************************************************/
/* The JSON tree node. Can be an Object or an Array. */
diff --git a/storage/connect/user_connect.cc b/storage/connect/user_connect.cc
index 9532d7c2a8d..e2d3b664aeb 100644
--- a/storage/connect/user_connect.cc
+++ b/storage/connect/user_connect.cc
@@ -36,6 +36,7 @@
#define DONT_DEFINE_VOID
#define MYSQL_SERVER
+#include <my_global.h>
#include "sql_class.h"
#undef OFFSET