summaryrefslogtreecommitdiff
path: root/storage/connect
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-04-21 09:01:01 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-04-21 09:01:01 +0300
commit80ed136e6dd4a021b1fc9b7bd7077bf989c3d247 (patch)
treecc24f0e4e9241920329865a1b66c1d086aaeaa9a /storage/connect
parent675c22c065110be03a5fab82442d2c3dc32aefff (diff)
parenta0588d54a20488b17a178244989e1abc5151a88a (diff)
downloadmariadb-git-80ed136e6dd4a021b1fc9b7bd7077bf989c3d247.tar.gz
Merge 10.4 into 10.5
Diffstat (limited to 'storage/connect')
-rw-r--r--storage/connect/colblk.h2
-rw-r--r--storage/connect/connect.cc6
-rw-r--r--storage/connect/filamvct.cpp3
-rw-r--r--storage/connect/ha_connect.cc13
-rw-r--r--storage/connect/tabutil.cpp2
5 files changed, 17 insertions, 9 deletions
diff --git a/storage/connect/colblk.h b/storage/connect/colblk.h
index b22933d9ebb..51ab32cfae2 100644
--- a/storage/connect/colblk.h
+++ b/storage/connect/colblk.h
@@ -62,7 +62,7 @@ class DllExport COLBLK : public XOBJECT {
bool IsVirtual(void) {return Cdp->IsVirtual();}
bool IsNullable(void) {return Nullable;}
void SetNullable(bool b) {Nullable = b;}
-
+ void SetName(PSZ name_var) { Name= name_var; }
// Methods
virtual void Reset(void);
virtual bool Compare(PXOB xp);
diff --git a/storage/connect/connect.cc b/storage/connect/connect.cc
index 484f75d6a04..ee62e0cd03e 100644
--- a/storage/connect/connect.cc
+++ b/storage/connect/connect.cc
@@ -294,9 +294,9 @@ bool CntOpenTable(PGLOBAL g, PTDB tdbp, MODE mode, char *c1, char *c2,
/* its column blocks in mode write (required by XML tables). */
/*******************************************************************/
if (mode == MODE_UPDATE) {
- PTDBASE utp;
+ PTDB utp;
- if (!(utp = (PTDBASE)tdbp->Duplicate(g))) {
+ if (!(utp = tdbp->Duplicate(g))) {
sprintf(g->Message, MSG(INV_UPDT_TABLE), tdbp->GetName());
throw 4;
} // endif tp
@@ -591,7 +591,7 @@ int CntCloseTable(PGLOBAL g, PTDB tdbp, bool nox, bool abort)
if (!tdbp->IsRemote()) {
// Make all the eventual indexes
- PTDBDOS tbxp = (PTDBDOS)tdbp;
+ PTDBASE tbxp = (PTDBASE)tdbp;
tbxp->ResetKindex(g, NULL);
tbxp->SetKey_Col(NULL);
rc = tbxp->ResetTableOpt(g, true, tbxp->GetDef()->Indexable() == 1);
diff --git a/storage/connect/filamvct.cpp b/storage/connect/filamvct.cpp
index 9b1e5d7689e..d2add16b31d 100644
--- a/storage/connect/filamvct.cpp
+++ b/storage/connect/filamvct.cpp
@@ -4117,7 +4117,8 @@ bool BGVFAM::CleanUnusedSpace(PGLOBAL g)
} else {
int req;
- memset(To_Buf, 0, Buflen);
+ if (To_Buf)
+ memset(To_Buf, 0, Buflen);
for (n = Fpos - Tpos; n > 0; n -= req) {
/*****************************************************************/
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index b1449af9636..95cbcd2b336 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -286,7 +286,12 @@ static char *strz(PGLOBAL g, LEX_CSTRING &ls)
{
char *str= (char*)PlugSubAlloc(g, NULL, ls.length + 1);
- memcpy(str, ls.str, ls.length);
+ /*
+ ls.str can be NULL, for example when called with
+ create_info->connect_string
+ */
+ if (ls.str)
+ memcpy(str, ls.str, ls.length);
str[ls.length]= 0;
return str;
} // end of strz
@@ -2829,7 +2834,6 @@ PFIL ha_connect::CondFilter(PGLOBAL g, Item *cond)
} else {
char buff[256];
String *res, tmp(buff, sizeof(buff), &my_charset_bin);
- Item_basic_constant *pval= (Item_basic_constant *)args[i];
PPARM pp= (PPARM)PlugSubAlloc(g, NULL, sizeof(PARM));
// IN and BETWEEN clauses should be col VOP list
@@ -2838,6 +2842,8 @@ PFIL ha_connect::CondFilter(PGLOBAL g, Item *cond)
switch (args[i]->real_type()) {
case COND::CONST_ITEM:
+ {
+ Item *pval= (Item *)args[i];
switch (args[i]->cmp_type()) {
case STRING_RESULT:
res= pval->val_str(&tmp);
@@ -2864,6 +2870,7 @@ PFIL ha_connect::CondFilter(PGLOBAL g, Item *cond)
DBUG_ASSERT(0);
return NULL;
}
+ }
break;
case COND::CACHE_ITEM: // Possible ???
case COND::NULL_ITEM: // TODO: handle this
@@ -3119,7 +3126,7 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond)
} else {
char buff[256];
String *res, tmp(buff, sizeof(buff), &my_charset_bin);
- Item_basic_constant *pval= (Item_basic_constant *)args[i];
+ Item *pval= (Item *)args[i];
Item::Type type= args[i]->real_type();
switch (type) {
diff --git a/storage/connect/tabutil.cpp b/storage/connect/tabutil.cpp
index 65361acfcd8..705f567f464 100644
--- a/storage/connect/tabutil.cpp
+++ b/storage/connect/tabutil.cpp
@@ -708,7 +708,7 @@ bool PRXCOL::Init(PGLOBAL g, PTDB tp)
MODE mode = To_Tdb->GetMode();
// Needed for MYSQL subtables
- ((XCOLBLK*)Colp)->Name = Decode(g, Colp->GetName());
+ ((COLBLK*)Colp)->SetName(Decode(g, Colp->GetName()));
// May not have been done elsewhere
Colp->InitValue(g);