Commit 048f814e authored by Olivier Bertrand's avatar Olivier Bertrand

- Make PlugSubAlloc to be exportable

  Suppress unused parameter from PlugSubSet
  modified:   storage/connect/global.h
  modified:   storage/connect/plugutil.cpp
  modified:   storage/connect/jsonudf.cpp
  modified:   storage/connect/tabjson.cpp
  modified:   storage/connect/user_connect.cc

- Fix a bug making column catalog XML tables fail
  modified:   storage/connect/tabxml.cpp

- Comment out wrong message
  modified:   storage/connect/ha_connect.cc

- Update error message when sorting an ODBC table fails
  modified:   storage/connect/tabodbc.cpp

- Add error message when gettting an address
  from an OEM fails.
  modified:   storage/connect/reldef.cpp

- Make some modifications useful for OEM module writting
  Export discovery functions for CSV, JDBC and XML
  Remove unuseful include from tabjson.h
  Move TDBXML::data_charset function from header file to source
  modified:   storage/connect/tabfmt.h
  modified:   storage/connect/tabjson.h
  modified:   storage/connect/tabxml.cpp
  modified:   storage/connect/tabxml.h

- Update test result
  modified:   storage/connect/mysql-test/connect/r/jdbc_oracle.result
parent 67567f5c
...@@ -219,11 +219,11 @@ DllExport LPCSTR PlugSetPath(LPSTR to, LPCSTR prefix, LPCSTR name, LPCSTR dir); ...@@ -219,11 +219,11 @@ DllExport LPCSTR PlugSetPath(LPSTR to, LPCSTR prefix, LPCSTR name, LPCSTR dir);
DllExport BOOL PlugIsAbsolutePath(LPCSTR path); DllExport BOOL PlugIsAbsolutePath(LPCSTR path);
DllExport bool AllocSarea(PGLOBAL, uint); DllExport bool AllocSarea(PGLOBAL, uint);
DllExport void FreeSarea(PGLOBAL); DllExport void FreeSarea(PGLOBAL);
DllExport BOOL PlugSubSet(PGLOBAL, void *, uint); DllExport BOOL PlugSubSet(void *, uint);
DllExport void *PlugSubAlloc(PGLOBAL, void *, size_t);
DllExport char *PlugDup(PGLOBAL g, const char *str); DllExport char *PlugDup(PGLOBAL g, const char *str);
DllExport void *MakePtr(void *, OFFSET); DllExport void *MakePtr(void *, OFFSET);
DllExport void htrc(char const *fmt, ...); DllExport void htrc(char const *fmt, ...);
//DllExport int GetTraceValue(void);
DllExport uint GetTraceValue(void); DllExport uint GetTraceValue(void);
#if defined(__cplusplus) #if defined(__cplusplus)
...@@ -233,6 +233,6 @@ DllExport uint GetTraceValue(void); ...@@ -233,6 +233,6 @@ DllExport uint GetTraceValue(void);
/***********************************************************************/ /***********************************************************************/
/* Non exported routine declarations. */ /* Non exported routine declarations. */
/***********************************************************************/ /***********************************************************************/
void *PlugSubAlloc(PGLOBAL, void *, size_t); // Does throw //void *PlugSubAlloc(PGLOBAL, void *, size_t); // Does throw
/*-------------------------- End of Global.H --------------------------*/ /*-------------------------- End of Global.H --------------------------*/
...@@ -4191,7 +4191,7 @@ int ha_connect::rnd_pos(uchar *buf, uchar *pos) ...@@ -4191,7 +4191,7 @@ int ha_connect::rnd_pos(uchar *buf, uchar *pos)
rc= rnd_next(buf); rc= rnd_next(buf);
} else { } else {
PGLOBAL g = GetPlug((table) ? table->in_use : NULL, xp); PGLOBAL g = GetPlug((table) ? table->in_use : NULL, xp);
strcpy(g->Message, "Not supported by this table type"); // strcpy(g->Message, "Not supported by this table type");
my_message(ER_ILLEGAL_HA, g->Message, MYF(0)); my_message(ER_ILLEGAL_HA, g->Message, MYF(0));
rc= HA_ERR_INTERNAL_ERROR; rc= HA_ERR_INTERNAL_ERROR;
} // endif SetRecpos } // endif SetRecpos
......
...@@ -3055,7 +3055,7 @@ my_bool json_array_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message) ...@@ -3055,7 +3055,7 @@ my_bool json_array_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
PGLOBAL g = (PGLOBAL)initid->ptr; PGLOBAL g = (PGLOBAL)initid->ptr;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR);
g->N = (int)n; g->N = (int)n;
return false; return false;
...@@ -3098,7 +3098,7 @@ void json_array_grp_clear(UDF_INIT *initid, char*, char*) ...@@ -3098,7 +3098,7 @@ void json_array_grp_clear(UDF_INIT *initid, char*, char*)
{ {
PGLOBAL g = (PGLOBAL)initid->ptr; PGLOBAL g = (PGLOBAL)initid->ptr;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR);
g->N = GetJsonGroupSize(); g->N = GetJsonGroupSize();
} // end of json_array_grp_clear } // end of json_array_grp_clear
...@@ -3132,7 +3132,7 @@ my_bool json_object_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message) ...@@ -3132,7 +3132,7 @@ my_bool json_object_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
PGLOBAL g = (PGLOBAL)initid->ptr; PGLOBAL g = (PGLOBAL)initid->ptr;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB);
g->N = (int)n; g->N = (int)n;
return false; return false;
...@@ -3169,7 +3169,7 @@ void json_object_grp_clear(UDF_INIT *initid, char*, char*) ...@@ -3169,7 +3169,7 @@ void json_object_grp_clear(UDF_INIT *initid, char*, char*)
{ {
PGLOBAL g = (PGLOBAL)initid->ptr; PGLOBAL g = (PGLOBAL)initid->ptr;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB);
g->N = GetJsonGroupSize(); g->N = GetJsonGroupSize();
} // end of json_object_grp_clear } // end of json_object_grp_clear
...@@ -4418,7 +4418,7 @@ char *json_file(UDF_INIT *initid, UDF_ARGS *args, char *result, ...@@ -4418,7 +4418,7 @@ char *json_file(UDF_INIT *initid, UDF_ARGS *args, char *result,
} else if (initid->const_item) } else if (initid->const_item)
g->N = 1; g->N = 1;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
fn = MakePSZ(g, args, 0); fn = MakePSZ(g, args, 0);
if (args->arg_count > 1) { if (args->arg_count > 1) {
...@@ -5662,7 +5662,7 @@ char *jbin_file(UDF_INIT *initid, UDF_ARGS *args, char *result, ...@@ -5662,7 +5662,7 @@ char *jbin_file(UDF_INIT *initid, UDF_ARGS *args, char *result,
if (bsp && !bsp->Changed) if (bsp && !bsp->Changed)
goto fin; goto fin;
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Xchk = NULL; g->Xchk = NULL;
fn = MakePSZ(g, args, 0); fn = MakePSZ(g, args, 0);
pretty = (args->arg_count > 2 && args->args[2]) ? (int)*(longlong*)args->args[2] : 3; pretty = (args->arg_count > 2 && args->args[2]) ? (int)*(longlong*)args->args[2] : 3;
......
...@@ -8,12 +8,19 @@ SELECT * FROM t2 WHERE command = 'drop table employee'; ...@@ -8,12 +8,19 @@ SELECT * FROM t2 WHERE command = 'drop table employee';
command number message command number message
drop table employee 0 Execute: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist drop table employee 0 Execute: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
Warnings:
Warning 1105 Execute: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
SELECT * FROM t2 WHERE command = 'create table employee (id int not null, name varchar(32), title char(16), salary number(8,2))'; SELECT * FROM t2 WHERE command = 'create table employee (id int not null, name varchar(32), title char(16), salary number(8,2))';
command number message command number message
create table employee (id int not null, name varchar(32), title char(16), salary number(8,2)) 0 Affected rows create table employee (id int not null, name varchar(32), title char(16), salary number(8,2)) 0 Affected rows
Warnings:
Warning 1105 Affected rows
SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'Engineer', 12560.50)"; SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'Engineer', 12560.50)";
command number message command number message
insert into employee values(4567,'Johnson', 'Engineer', 12560.50) 1 Affected rows insert into employee values(4567,'Johnson', 'Engineer', 12560.50) 1 Affected rows
Warnings:
Warning 1105 Affected rows
CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables
CONNECTION='jdbc:oracle:thin:@localhost:1521:xe' CONNECTION='jdbc:oracle:thin:@localhost:1521:xe'
OPTION_LIST='User=system,Password=manager'; OPTION_LIST='User=system,Password=manager';
...@@ -27,8 +34,8 @@ OPTION_LIST='User=system,Password=manager'; ...@@ -27,8 +34,8 @@ OPTION_LIST='User=system,Password=manager';
SELECT * FROM t1; SELECT * FROM t1;
Table_Cat Table_Schema Table_Name Column_Name Data_Type Type_Name Column_Size Buffer_Length Decimal_Digits Radix Nullable Remarks Table_Cat Table_Schema Table_Name Column_Name Data_Type Type_Name Column_Size Buffer_Length Decimal_Digits Radix Nullable Remarks
NULL SYSTEM EMPLOYEE ID 3 NUMBER 38 0 0 10 0 NULL NULL SYSTEM EMPLOYEE ID 3 NUMBER 38 0 0 10 0 NULL
NULL SYSTEM EMPLOYEE NAME 12 VARCHAR2 32 0 0 10 1 NULL NULL SYSTEM EMPLOYEE NAME 12 VARCHAR2 32 0 NULL 10 1 NULL
NULL SYSTEM EMPLOYEE TITLE 1 CHAR 16 0 0 10 1 NULL NULL SYSTEM EMPLOYEE TITLE 1 CHAR 16 0 NULL 10 1 NULL
NULL SYSTEM EMPLOYEE SALARY 3 NUMBER 8 0 2 10 1 NULL NULL SYSTEM EMPLOYEE SALARY 3 NUMBER 8 0 2 10 1 NULL
DROP TABLE t1; DROP TABLE t1;
CREATE SERVER 'oracle' FOREIGN DATA WRAPPER 'oracle.jdbc.driver.OracleDriver' OPTIONS ( CREATE SERVER 'oracle' FOREIGN DATA WRAPPER 'oracle.jdbc.driver.OracleDriver' OPTIONS (
...@@ -52,7 +59,7 @@ Note 1105 EMPLOYEE: 1 affected rows ...@@ -52,7 +59,7 @@ Note 1105 EMPLOYEE: 1 affected rows
SELECT * FROM t1; SELECT * FROM t1;
ID NAME TITLE SALARY ID NAME TITLE SALARY
4567 Trump Engineer 12560.50 4567 Trump Engineer 12560.50
6214 Clinton Retired 0.00 6214 Clinton Retired NULL
DELETE FROM t1 WHERE id = 6214; DELETE FROM t1 WHERE id = 6214;
Warnings: Warnings:
Note 1105 EMPLOYEE: 1 affected rows Note 1105 EMPLOYEE: 1 affected rows
...@@ -63,8 +70,7 @@ DROP TABLE t1; ...@@ -63,8 +70,7 @@ DROP TABLE t1;
SELECT * FROM t2 WHERE command = 'drop table employee'; SELECT * FROM t2 WHERE command = 'drop table employee';
command number message command number message
drop table employee 0 Affected rows drop table employee 0 Affected rows
Warnings:
Warning 1105 Affected rows
DROP TABLE t2; DROP TABLE t2;
DROP SERVER 'oracle'; DROP SERVER 'oracle';
SET GLOBAL connect_jvm_path=NULL;
SET GLOBAL connect_class_path=NULL;
SET GLOBAL time_zone = SYSTEM;
...@@ -514,27 +514,31 @@ void FreeSarea(PGLOBAL g) ...@@ -514,27 +514,31 @@ void FreeSarea(PGLOBAL g)
/* Here there should be some verification done such as validity of */ /* Here there should be some verification done such as validity of */
/* the address and size not larger than memory size. */ /* the address and size not larger than memory size. */
/***********************************************************************/ /***********************************************************************/
BOOL PlugSubSet(PGLOBAL g __attribute__((unused)), void *memp, uint size) BOOL PlugSubSet(void *memp, uint size)
{ {
PPOOLHEADER pph = (PPOOLHEADER)memp; PPOOLHEADER pph = (PPOOLHEADER)memp;
pph->To_Free = (OFFSET)sizeof(POOLHEADER); pph->To_Free = (OFFSET)sizeof(POOLHEADER);
pph->FreeBlk = size - pph->To_Free; pph->FreeBlk = size - pph->To_Free;
return FALSE; return FALSE;
} /* end of PlugSubSet */ } /* end of PlugSubSet */
/***********************************************************************/
/* Use it to export a function that do throwing. */
/***********************************************************************/
void *DoThrow(int n)
{
throw n;
} /* end of DoThrow */
/***********************************************************************/ /***********************************************************************/
/* Program for sub-allocating one item in a storage area. */ /* Program for sub-allocating one item in a storage area. */
/* Note: SubAlloc routines of OS/2 are no more used to increase the */ /* The simple way things are done here is based on the fact */
/* code portability and avoid problems when a grammar compiled under */ /* that no freeing of suballocated blocks is permitted in CONNECT. */
/* one version of OS/2 is used under another version. */
/* The simple way things are done here is also based on the fact */
/* that no freeing of suballocated blocks is permitted in Plug. */
/***********************************************************************/ /***********************************************************************/
void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size)
{ {
PPOOLHEADER pph; /* Points on area header. */ PPOOLHEADER pph; /* Points on area header. */
if (!memp) if (!memp)
/*******************************************************************/ /*******************************************************************/
...@@ -559,8 +563,8 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) ...@@ -559,8 +563,8 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size)
if (trace(1)) if (trace(1))
htrc("PlugSubAlloc: %s\n", g->Message); htrc("PlugSubAlloc: %s\n", g->Message);
throw 1234; DoThrow(1234);
} /* endif size OS32 code */ } /* endif size OS32 code */
/*********************************************************************/ /*********************************************************************/
/* Do the suballocation the simplest way. */ /* Do the suballocation the simplest way. */
...@@ -574,7 +578,7 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) ...@@ -574,7 +578,7 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size)
memp, pph->To_Free, pph->FreeBlk); memp, pph->To_Free, pph->FreeBlk);
return (memp); return (memp);
} /* end of PlugSubAlloc */ } /* end of PlugSubAlloc */
/***********************************************************************/ /***********************************************************************/
/* Program for sub-allocating and copying a string in a storage area. */ /* Program for sub-allocating and copying a string in a storage area. */
......
...@@ -522,8 +522,15 @@ PTABDEF OEMDEF::GetXdef(PGLOBAL g) ...@@ -522,8 +522,15 @@ PTABDEF OEMDEF::GetXdef(PGLOBAL g)
// Get the function returning an instance of the external DEF class // Get the function returning an instance of the external DEF class
if (!(getdef = (XGETDEF)GetProcAddress((HINSTANCE)Hdll, getname))) { if (!(getdef = (XGETDEF)GetProcAddress((HINSTANCE)Hdll, getname))) {
sprintf(g->Message, MSG(PROCADD_ERROR), GetLastError(), getname); char buf[256];
FreeLibrary((HMODULE)Hdll); DWORD rc = GetLastError();
sprintf(g->Message, MSG(PROCADD_ERROR), rc, getname);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, rc, 0,
(LPTSTR)buf, sizeof(buf), NULL);
strcat(strcat(g->Message, ": "), buf);
FreeLibrary((HMODULE)Hdll);
return NULL; return NULL;
} // endif getdef } // endif getdef
#else // !__WIN__ #else // !__WIN__
......
...@@ -13,7 +13,7 @@ typedef class TDBFMT *PTDBFMT; ...@@ -13,7 +13,7 @@ typedef class TDBFMT *PTDBFMT;
/***********************************************************************/ /***********************************************************************/
/* Functions used externally. */ /* Functions used externally. */
/***********************************************************************/ /***********************************************************************/
PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info); DllExport PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info);
/***********************************************************************/ /***********************************************************************/
/* CSV table. */ /* CSV table. */
......
...@@ -299,7 +299,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) ...@@ -299,7 +299,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt)
memset(G, 0, sizeof(GLOBAL)); memset(G, 0, sizeof(GLOBAL));
G->Sarea_Size = tdp->Lrecl * 10; G->Sarea_Size = tdp->Lrecl * 10;
G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size); G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size);
PlugSubSet(G, G->Sarea, G->Sarea_Size); PlugSubSet(G->Sarea, G->Sarea_Size);
G->jump_level = 0; G->jump_level = 0;
tjnp->SetG(G); tjnp->SetG(G);
...@@ -670,7 +670,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) ...@@ -670,7 +670,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m)
memset(G, 0, sizeof(GLOBAL)); memset(G, 0, sizeof(GLOBAL));
G->Sarea_Size = Lrecl * 10; G->Sarea_Size = Lrecl * 10;
G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size); G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size);
PlugSubSet(G, G->Sarea, G->Sarea_Size); PlugSubSet(G->Sarea, G->Sarea_Size);
G->jump_level = 0; G->jump_level = 0;
((TDBJSN*)tdbp)->G = G; ((TDBJSN*)tdbp)->G = G;
} else { } else {
...@@ -963,7 +963,7 @@ int TDBJSN::ReadDB(PGLOBAL g) ...@@ -963,7 +963,7 @@ int TDBJSN::ReadDB(PGLOBAL g)
return rc; return rc;
// Recover the memory used for parsing // Recover the memory used for parsing
PlugSubSet(G, G->Sarea, G->Sarea_Size); PlugSubSet(G->Sarea, G->Sarea_Size);
if ((Row = ParseJson(G, To_Line, strlen(To_Line), &Pretty, &Comma))) { if ((Row = ParseJson(G, To_Line, strlen(To_Line), &Pretty, &Comma))) {
Row = FindRow(g); Row = FindRow(g);
...@@ -1079,13 +1079,13 @@ int TDBJSN::MakeTopTree(PGLOBAL g, PJSON jsp) ...@@ -1079,13 +1079,13 @@ int TDBJSN::MakeTopTree(PGLOBAL g, PJSON jsp)
} // end of PrepareWriting } // end of PrepareWriting
/***********************************************************************/ /***********************************************************************/
/* WriteDB: Data Base write routine for DOS access method. */ /* WriteDB: Data Base write routine for JSON access method. */
/***********************************************************************/ /***********************************************************************/
int TDBJSN::WriteDB(PGLOBAL g) int TDBJSN::WriteDB(PGLOBAL g)
{ {
int rc = TDBDOS::WriteDB(g); int rc = TDBDOS::WriteDB(g);
PlugSubSet(G, G->Sarea, G->Sarea_Size); PlugSubSet(G->Sarea, G->Sarea_Size);
Row->Clear(); Row->Clear();
return rc; return rc;
} // end of WriteDB } // end of WriteDB
......
/*************** tabjson H Declares Source Code File (.H) **************/ /*************** tabjson H Declares Source Code File (.H) **************/
/* Name: tabjson.h Version 1.3 */ /* Name: tabjson.h Version 1.3 */
/* */ /* */
/* (C) Copyright to the author Olivier BERTRAND 2014 - 2017 */ /* (C) Copyright to the author Olivier BERTRAND 2014 - 2018 */
/* */ /* */
/* This file contains the JSON classes declares. */ /* This file contains the JSON classes declares. */
/***********************************************************************/ /***********************************************************************/
#include "osutil.h" //#include "osutil.h" // Unuseful and bad for OEM
#include "block.h" #include "block.h"
#include "colblk.h" #include "colblk.h"
#include "json.h" #include "json.h"
...@@ -16,7 +16,7 @@ typedef class JSONDEF *PJDEF; ...@@ -16,7 +16,7 @@ typedef class JSONDEF *PJDEF;
typedef class TDBJSON *PJTDB; typedef class TDBJSON *PJTDB;
typedef class JSONCOL *PJCOL; typedef class JSONCOL *PJCOL;
class TDBJSN; class TDBJSN;
PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info); DllExport PQRYRES JSONColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool);
/***********************************************************************/ /***********************************************************************/
/* The JSON tree node. Can be an Object or an Array. */ /* The JSON tree node. Can be an Object or an Array. */
......
This diff is collapsed.
...@@ -681,6 +681,14 @@ PTDB TDBXML::Clone(PTABS t) ...@@ -681,6 +681,14 @@ PTDB TDBXML::Clone(PTABS t)
return tp; return tp;
} // end of Clone } // end of Clone
/***********************************************************************/
/* Must not be in tabxml.h because of OEM tables */
/***********************************************************************/
const CHARSET_INFO *TDBXML::data_charset()
{
return &my_charset_utf8_general_ci;
} // end of data_charset
/***********************************************************************/ /***********************************************************************/
/* Allocate XML column description block. */ /* Allocate XML column description block. */
/***********************************************************************/ /***********************************************************************/
...@@ -2209,8 +2217,9 @@ void XPOSCOL::WriteColumn(PGLOBAL g) ...@@ -2209,8 +2217,9 @@ void XPOSCOL::WriteColumn(PGLOBAL g)
TDBXCT::TDBXCT(PXMLDEF tdp) : TDBCAT(tdp) TDBXCT::TDBXCT(PXMLDEF tdp) : TDBCAT(tdp)
{ {
Topt = tdp->GetTopt(); Topt = tdp->GetTopt();
Db = (char*)tdp->GetDB(); //Db = (char*)tdp->GetDB();
Tabn = tdp->Tabname; Db = (char*)tdp->Schema;
Tabn = tdp->Tabname;
} // end of TDBXCT constructor } // end of TDBXCT constructor
/***********************************************************************/ /***********************************************************************/
......
...@@ -9,6 +9,8 @@ typedef class XMLDEF *PXMLDEF; ...@@ -9,6 +9,8 @@ typedef class XMLDEF *PXMLDEF;
typedef class TDBXML *PTDBXML; typedef class TDBXML *PTDBXML;
typedef class XMLCOL *PXMLCOL; typedef class XMLCOL *PXMLCOL;
DllExport PQRYRES XMLColumns(PGLOBAL, char *, char *, PTOS, bool);
/* --------------------------- XML classes --------------------------- */ /* --------------------------- XML classes --------------------------- */
/***********************************************************************/ /***********************************************************************/
...@@ -100,8 +102,7 @@ class DllExport TDBXML : public TDBASE { ...@@ -100,8 +102,7 @@ class DllExport TDBXML : public TDBASE {
virtual int DeleteDB(PGLOBAL g, int irc); virtual int DeleteDB(PGLOBAL g, int irc);
virtual void CloseDB(PGLOBAL g); virtual void CloseDB(PGLOBAL g);
virtual int CheckWrite(PGLOBAL g) {Checked = true; return 0;} virtual int CheckWrite(PGLOBAL g) {Checked = true; return 0;}
virtual const CHARSET_INFO *data_charset() virtual const CHARSET_INFO *data_charset();
{return &my_charset_utf8_general_ci;}
protected: protected:
// Members // Members
......
...@@ -107,7 +107,7 @@ bool user_connect::user_init() ...@@ -107,7 +107,7 @@ bool user_connect::user_init()
g= PlugInit(NULL, worksize); g= PlugInit(NULL, worksize);
// Check whether the initialization is complete // Check whether the initialization is complete
if (!g || !g->Sarea || PlugSubSet(g, g->Sarea, g->Sarea_Size) if (!g || !g->Sarea || PlugSubSet(g->Sarea, g->Sarea_Size)
|| !(dup= PlgMakeUser(g))) { || !(dup= PlgMakeUser(g))) {
if (g) if (g)
printf("%s\n", g->Message); printf("%s\n", g->Message);
...@@ -172,7 +172,7 @@ bool user_connect::CheckCleanup(bool force) ...@@ -172,7 +172,7 @@ bool user_connect::CheckCleanup(bool force)
} // endif worksize } // endif worksize
PlugSubSet(g, g->Sarea, g->Sarea_Size); PlugSubSet(g->Sarea, g->Sarea_Size);
g->Xchk = NULL; g->Xchk = NULL;
g->Createas = 0; g->Createas = 0;
g->Alchecked = 0; g->Alchecked = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment