mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
- Fix memory leak for the JSON table type
(and continue BSON implementatio) modified: storage/connect/bson.cpp modified: storage/connect/bson.h modified: storage/connect/bsonudf.cpp modified: storage/connect/connect.cc modified: storage/connect/global.h modified: storage/connect/ha_connect.cc modified: storage/connect/jsonudf.cpp modified: storage/connect/mycat.cc modified: storage/connect/plgdbsem.h modified: storage/connect/plugutil.cpp modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h modified: storage/connect/user_connect.cc - Desesperatly trying to fix xml.test failure modified: storage/connect/mysql-test/connect/r/xml.result
This commit is contained in:
@@ -165,8 +165,9 @@ JSONDISC::JSONDISC(PGLOBAL g, uint *lg)
|
||||
|
||||
int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
|
||||
{
|
||||
char filename[_MAX_PATH];
|
||||
bool mgo = (GetTypeID(topt->type) == TAB_MONGO);
|
||||
char filename[_MAX_PATH];
|
||||
bool mgo = (GetTypeID(topt->type) == TAB_MONGO);
|
||||
PGLOBAL G = NULL;
|
||||
|
||||
lvl = GetIntegerTableOption(g, topt, "Level", GetDefaultDepth());
|
||||
lvl = GetIntegerTableOption(g, topt, "Depth", lvl);
|
||||
@@ -296,12 +297,15 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
|
||||
tjnp->SetMode(MODE_READ);
|
||||
|
||||
// Allocate the parse work memory
|
||||
#if 0
|
||||
PGLOBAL G = (PGLOBAL)PlugSubAlloc(g, NULL, sizeof(GLOBAL));
|
||||
memset(G, 0, sizeof(GLOBAL));
|
||||
G->Sarea_Size = (size_t)tdp->Lrecl * (tdp->Pretty >= 0 ? 10 : 2);
|
||||
G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size);
|
||||
PlugSubSet(G->Sarea, G->Sarea_Size);
|
||||
G->jump_level = 0;
|
||||
#endif // 0
|
||||
G = PlugInit(NULL, (size_t)tdp->Lrecl * (tdp->Pretty >= 0 ? 10 : 2));
|
||||
tjnp->SetG(G);
|
||||
|
||||
if (tjnp->OpenDB(g))
|
||||
@@ -738,6 +742,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
|
||||
|
||||
if (Lrecl) {
|
||||
// Allocate the parse work memory
|
||||
#if 0
|
||||
PGLOBAL G = (PGLOBAL)PlugSubAlloc(g, NULL, sizeof(GLOBAL));
|
||||
memset(G, 0, sizeof(GLOBAL));
|
||||
G->Sarea_Size = (size_t)Lrecl * 10;
|
||||
@@ -745,6 +750,8 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
|
||||
PlugSubSet(G->Sarea, G->Sarea_Size);
|
||||
G->jump_level = 0;
|
||||
((TDBJSN*)tdbp)->G = G;
|
||||
#endif // 0
|
||||
((TDBJSN*)tdbp)->G = PlugInit(NULL, (size_t)Lrecl * (Pretty >= 0 ? 10 : 2));
|
||||
} else {
|
||||
strcpy(g->Message, "LRECL is not defined");
|
||||
return NULL;
|
||||
@@ -1226,7 +1233,16 @@ int TDBJSN::WriteDB(PGLOBAL g)
|
||||
return rc;
|
||||
} // end of WriteDB
|
||||
|
||||
/* ---------------------------- JSONCOL ------------------------------ */
|
||||
/***********************************************************************/
|
||||
/* Data Base close routine for JSON access method. */
|
||||
/***********************************************************************/
|
||||
void TDBJSN::CloseDB(PGLOBAL g)
|
||||
{
|
||||
TDBDOS::CloseDB(g);
|
||||
G = PlugExit(G);
|
||||
} // end of CloseDB
|
||||
|
||||
/* ---------------------------- JSONCOL ------------------------------ */
|
||||
|
||||
/***********************************************************************/
|
||||
/* JSONCOL public constructor. */
|
||||
@@ -1608,7 +1624,7 @@ PVAL JSONCOL::MakeJson(PGLOBAL g, PJSON jsp)
|
||||
strcpy(g->Message, "Column size too small");
|
||||
Value->SetValue_char(NULL, 0);
|
||||
} // endif Clen
|
||||
#endif 0
|
||||
#endif // 0
|
||||
} else
|
||||
Value->SetValue_psz(Serialize(g, jsp, NULL, 0));
|
||||
|
||||
|
Reference in New Issue
Block a user