Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1ed1b779
Commit
1ed1b779
authored
Feb 04, 2019
by
Oleksandr Byelkin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'connect/11.2' into 10.2
parents
564f63cc
a0e26599
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
188 additions
and
52 deletions
+188
-52
storage/connect/ha_connect.cc
storage/connect/ha_connect.cc
+34
-7
storage/connect/jsonudf.cpp
storage/connect/jsonudf.cpp
+48
-1
storage/connect/jsonudf.h
storage/connect/jsonudf.h
+5
-0
storage/connect/tabext.cpp
storage/connect/tabext.cpp
+41
-2
storage/connect/tabext.h
storage/connect/tabext.h
+3
-2
storage/connect/tabjdbc.cpp
storage/connect/tabjdbc.cpp
+53
-36
storage/connect/tabjson.cpp
storage/connect/tabjson.cpp
+4
-4
No files found.
storage/connect/ha_connect.cc
View file @
1ed1b779
...
@@ -170,9 +170,9 @@
...
@@ -170,9 +170,9 @@
#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.000
8 October 06, 2018
"
;
char
version
[]
=
"Version 1.06.000
9 January 27, 2019
"
;
#if defined(__WIN__)
#if defined(__WIN__)
char
compver
[]
=
"Version 1.06.000
8
"
__DATE__
" "
__TIME__
;
char
compver
[]
=
"Version 1.06.000
9
"
__DATE__
" "
__TIME__
;
char
slash
=
'\\'
;
char
slash
=
'\\'
;
#else // !__WIN__
#else // !__WIN__
char
slash
=
'/'
;
char
slash
=
'/'
;
...
@@ -204,6 +204,26 @@ pthread_mutex_t parmut;
...
@@ -204,6 +204,26 @@ pthread_mutex_t parmut;
pthread_mutex_t
usrmut
;
pthread_mutex_t
usrmut
;
pthread_mutex_t
tblmut
;
pthread_mutex_t
tblmut
;
#if defined(DEVELOPMENT)
char
*
GetUserVariable
(
PGLOBAL
g
,
const
uchar
*
varname
);
char
*
GetUserVariable
(
PGLOBAL
g
,
const
uchar
*
varname
)
{
char
buf
[
1024
];
bool
b
;
THD
*
thd
=
current_thd
;
CHARSET_INFO
*
cs
=
system_charset_info
;
String
*
str
=
NULL
,
tmp
(
buf
,
sizeof
(
buf
),
cs
);
HASH
uvars
=
thd
->
user_vars
;
user_var_entry
*
uvar
=
(
user_var_entry
*
)
my_hash_search
(
&
uvars
,
varname
,
0
);
if
(
uvar
)
str
=
uvar
->
val_str
(
&
b
,
&
tmp
,
NOT_FIXED_DEC
);
return
str
?
PlugDup
(
g
,
str
->
ptr
())
:
NULL
;
};
// end of GetUserVariable
#endif // DEVELOPMENT
/***********************************************************************/
/***********************************************************************/
/* Utility functions. */
/* Utility functions. */
/***********************************************************************/
/***********************************************************************/
...
@@ -1914,9 +1934,11 @@ int ha_connect::OpenTable(PGLOBAL g, bool del)
...
@@ -1914,9 +1934,11 @@ int ha_connect::OpenTable(PGLOBAL g, bool del)
break
;
break
;
}
// endswitch xmode
}
// endswitch xmode
if
(
xmod
!=
MODE_INSERT
||
tdbp
->
GetAmType
()
==
TYPE_AM_MYSQL
// g->More is 1 when executing commands from triggers
if
(
!
g
->
More
&&
(
xmod
!=
MODE_INSERT
||
tdbp
->
GetAmType
()
==
TYPE_AM_MYSQL
||
tdbp
->
GetAmType
()
==
TYPE_AM_ODBC
||
tdbp
->
GetAmType
()
==
TYPE_AM_ODBC
||
tdbp
->
GetAmType
()
==
TYPE_AM_JDBC
)
{
||
tdbp
->
GetAmType
()
==
TYPE_AM_JDBC
)
)
{
// Get the list of used fields (columns)
// Get the list of used fields (columns)
char
*
p
;
char
*
p
;
unsigned
int
k1
,
k2
,
n1
,
n2
;
unsigned
int
k1
,
k2
,
n1
,
n2
;
...
@@ -4631,6 +4653,8 @@ MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
...
@@ -4631,6 +4653,8 @@ MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
break
;
break
;
case
SQLCOM_CREATE_VIEW
:
case
SQLCOM_CREATE_VIEW
:
case
SQLCOM_DROP_VIEW
:
case
SQLCOM_DROP_VIEW
:
case
SQLCOM_CREATE_TRIGGER
:
case
SQLCOM_DROP_TRIGGER
:
newmode
=
MODE_ANY
;
newmode
=
MODE_ANY
;
break
;
break
;
case
SQLCOM_ALTER_TABLE
:
case
SQLCOM_ALTER_TABLE
:
...
@@ -4674,6 +4698,9 @@ int ha_connect::start_stmt(THD *thd, thr_lock_type lock_type)
...
@@ -4674,6 +4698,9 @@ int ha_connect::start_stmt(THD *thd, thr_lock_type lock_type)
PGLOBAL
g
=
GetPlug
(
thd
,
xp
);
PGLOBAL
g
=
GetPlug
(
thd
,
xp
);
DBUG_ENTER
(
"ha_connect::start_stmt"
);
DBUG_ENTER
(
"ha_connect::start_stmt"
);
if
(
table
->
triggers
)
g
->
More
=
1
;
// We don't know which columns are used by the trigger
if
(
check_privileges
(
thd
,
GetTableOptionStruct
(),
table
->
s
->
db
.
str
,
true
))
if
(
check_privileges
(
thd
,
GetTableOptionStruct
(),
table
->
s
->
db
.
str
,
true
))
DBUG_RETURN
(
HA_ERR_INTERNAL_ERROR
);
DBUG_RETURN
(
HA_ERR_INTERNAL_ERROR
);
...
@@ -7310,7 +7337,7 @@ maria_declare_plugin(connect)
...
@@ -7310,7 +7337,7 @@ maria_declare_plugin(connect)
0x0106
,
/* version number (1.06) */
0x0106
,
/* version number (1.06) */
NULL
,
/* status variables */
NULL
,
/* status variables */
connect_system_variables
,
/* system variables */
connect_system_variables
,
/* system variables */
"1.06.000
8
"
,
/* string version */
"1.06.000
9
"
,
/* string version */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
MariaDB_PLUGIN_MATURITY_STABLE
/* maturity */
}
}
maria_declare_plugin_end
;
maria_declare_plugin_end
;
storage/connect/jsonudf.cpp
View file @
1ed1b779
...
@@ -1666,7 +1666,8 @@ static PCSZ MakeKey(PGLOBAL g, UDF_ARGS *args, int i)
...
@@ -1666,7 +1666,8 @@ static PCSZ MakeKey(PGLOBAL g, UDF_ARGS *args, int i)
if
(
args
->
arg_count
>
(
unsigned
)
i
)
{
if
(
args
->
arg_count
>
(
unsigned
)
i
)
{
int
j
=
0
,
n
=
args
->
attribute_lengths
[
i
];
int
j
=
0
,
n
=
args
->
attribute_lengths
[
i
];
my_bool
b
;
// true if attribute is zero terminated
my_bool
b
;
// true if attribute is zero terminated
PSZ
p
,
s
=
args
->
attributes
[
i
];
PSZ
p
;
PCSZ
s
=
args
->
attributes
[
i
];
if
(
s
&&
*
s
&&
(
n
||
*
s
==
'\''
))
{
if
(
s
&&
*
s
&&
(
n
||
*
s
==
'\''
))
{
if
((
b
=
(
!
n
||
!
s
[
n
])))
if
((
b
=
(
!
n
||
!
s
[
n
])))
...
@@ -5805,6 +5806,52 @@ char *envar(UDF_INIT *initid, UDF_ARGS *args, char *result,
...
@@ -5805,6 +5806,52 @@ char *envar(UDF_INIT *initid, UDF_ARGS *args, char *result,
return
str
;
return
str
;
}
// end of envar
}
// end of envar
#if defined(DEVELOPMENT)
extern
char
*
GetUserVariable
(
PGLOBAL
g
,
const
uchar
*
varname
);
/*********************************************************************************/
/* Utility function returning a user variable value. */
/*********************************************************************************/
my_bool
uvar_init
(
UDF_INIT
*
initid
,
UDF_ARGS
*
args
,
char
*
message
)
{
unsigned
long
reslen
,
memlen
;
if
(
args
->
arg_count
!=
1
)
{
strcpy
(
message
,
"Unique argument must be a user variable name"
);
return
true
;
}
else
CalcLen
(
args
,
false
,
reslen
,
memlen
,
true
);
initid
->
maybe_null
=
true
;
return
JsonInit
(
initid
,
args
,
message
,
true
,
reslen
,
memlen
,
2048
);
}
// end of uvar_init
char
*
uvar
(
UDF_INIT
*
initid
,
UDF_ARGS
*
args
,
char
*
result
,
unsigned
long
*
res_length
,
char
*
is_null
,
char
*
)
{
char
*
str
,
varname
[
256
];
PGLOBAL
g
=
(
PGLOBAL
)
initid
->
ptr
;
int
n
=
MY_MIN
(
args
->
lengths
[
0
],
sizeof
(
varname
)
-
1
);
PlugSubSet
(
g
->
Sarea
,
g
->
Sarea_Size
);
memcpy
(
varname
,
args
->
args
[
0
],
n
);
varname
[
n
]
=
0
;
if
(
!
(
str
=
GetUserVariable
(
g
,
(
const
uchar
*
)
&
varname
)))
{
*
res_length
=
0
;
*
is_null
=
1
;
}
else
*
res_length
=
strlen
(
str
);
return
str
;
}
// end of uvar
void
uvar_deinit
(
UDF_INIT
*
initid
)
{
JsonFreeMem
((
PGLOBAL
)
initid
->
ptr
);
}
// end of uvar_deinit
#endif // DEVELOPMENT
/*********************************************************************************/
/*********************************************************************************/
/* Returns the distinct number of B occurences in A. */
/* Returns the distinct number of B occurences in A. */
/*********************************************************************************/
/*********************************************************************************/
...
...
storage/connect/jsonudf.h
View file @
1ed1b779
...
@@ -238,6 +238,11 @@ extern "C" {
...
@@ -238,6 +238,11 @@ extern "C" {
DllExport
my_bool
envar_init
(
UDF_INIT
*
,
UDF_ARGS
*
,
char
*
);
DllExport
my_bool
envar_init
(
UDF_INIT
*
,
UDF_ARGS
*
,
char
*
);
DllExport
char
*
envar
(
UDF_EXEC_ARGS
);
DllExport
char
*
envar
(
UDF_EXEC_ARGS
);
#if defined(DEVELOPMENT)
DllExport
my_bool
uvar_init
(
UDF_INIT
*
,
UDF_ARGS
*
,
char
*
);
DllExport
char
*
uvar
(
UDF_EXEC_ARGS
);
#endif // DEVELOPMENT
DllExport
my_bool
countin_init
(
UDF_INIT
*
,
UDF_ARGS
*
,
char
*
);
DllExport
my_bool
countin_init
(
UDF_INIT
*
,
UDF_ARGS
*
,
char
*
);
DllExport
long
long
countin
(
UDF_EXEC_ARGS
);
DllExport
long
long
countin
(
UDF_EXEC_ARGS
);
}
// extern "C"
}
// extern "C"
...
...
storage/connect/tabext.cpp
View file @
1ed1b779
/************* Tabext C++ Functions Source Code File (.CPP) ************/
/************* Tabext C++ Functions Source Code File (.CPP) ************/
/* Name: TABEXT.CPP Version 1.
0
*/
/* Name: TABEXT.CPP Version 1.
1
*/
/* */
/* */
/* (C) Copyright to the author Olivier BERTRAND 2017
*/
/* (C) Copyright to the author Olivier BERTRAND 2017
- 2019
*/
/* */
/* */
/* This file contains the TBX, TDB and OPJOIN classes functions. */
/* This file contains the TBX, TDB and OPJOIN classes functions. */
/***********************************************************************/
/***********************************************************************/
...
@@ -445,6 +445,43 @@ bool TDBEXT::MakeSQL(PGLOBAL g, bool cnt)
...
@@ -445,6 +445,43 @@ bool TDBEXT::MakeSQL(PGLOBAL g, bool cnt)
return
false
;
return
false
;
}
// end of MakeSQL
}
// end of MakeSQL
/***********************************************************************/
/* Remove the NAME_CONST functions that are added by procedures. */
/***********************************************************************/
void
TDBEXT
::
RemoveConst
(
PGLOBAL
g
,
char
*
stmt
)
{
char
*
p
,
*
p2
;
char
val
[
1025
],
nval
[
1025
];
int
n
,
nc
;
while
((
p
=
strstr
(
stmt
,
"NAME_CONST"
)))
if
((
n
=
sscanf
(
p
,
"%*[^,],%1024[^)])%n"
,
val
,
&
nc
)))
{
if
(
trace
(
33
))
htrc
(
"p=%s
\n
n=%d val=%s nc=%d
\n
"
,
p
,
n
,
val
,
nc
);
*
p
=
0
;
if
((
p2
=
strstr
(
val
,
"'"
)))
{
if
((
n
=
sscanf
(
p2
,
"%*['
\\
]%1024[^'
\\
]"
,
nval
)))
{
if
(
trace
(
33
))
htrc
(
"p2=%s
\n
n=%d nval=%s
\n
"
,
p2
,
n
,
nval
);
strcat
(
strcat
(
strcat
(
strcat
(
stmt
,
"'"
),
nval
),
"'"
),
p
+
nc
);
}
else
break
;
}
else
strcat
(
strcat
(
strcat
(
strcat
(
stmt
,
"("
),
val
),
")"
),
p
+
nc
);
if
(
trace
(
33
))
htrc
(
"stmt=%s
\n
"
,
stmt
);
}
else
break
;
return
;
}
// end of RemoveConst
/***********************************************************************/
/***********************************************************************/
/* MakeCommand: make the Update or Delete statement to send to the */
/* MakeCommand: make the Update or Delete statement to send to the */
/* MySQL server. Limited to remote values and filtering. */
/* MySQL server. Limited to remote values and filtering. */
...
@@ -524,6 +561,8 @@ bool TDBEXT::MakeCommand(PGLOBAL g)
...
@@ -524,6 +561,8 @@ bool TDBEXT::MakeCommand(PGLOBAL g)
stmt
[
i
++
]
=
(
Qrystr
[
k
]
==
'`'
)
?
q
:
Qrystr
[
k
];
stmt
[
i
++
]
=
(
Qrystr
[
k
]
==
'`'
)
?
q
:
Qrystr
[
k
];
}
while
(
Qrystr
[
k
++
]);
}
while
(
Qrystr
[
k
++
]);
RemoveConst
(
g
,
stmt
);
if
(
body
)
if
(
body
)
strcat
(
stmt
,
body
);
strcat
(
stmt
,
body
);
...
...
storage/connect/tabext.h
View file @
1ed1b779
/*************** Tabext H Declares Source Code File (.H) ***************/
/*************** Tabext H Declares Source Code File (.H) ***************/
/* Name: TABEXT.H Version 1.
0
*/
/* Name: TABEXT.H Version 1.
1
*/
/* */
/* */
/* (C) Copyright to the author Olivier BERTRAND 2017
*/
/* (C) Copyright to the author Olivier BERTRAND 2017
- 2019
*/
/* */
/* */
/* This is the EXTDEF, TABEXT and EXTCOL classes definitions. */
/* This is the EXTDEF, TABEXT and EXTCOL classes definitions. */
/***********************************************************************/
/***********************************************************************/
...
@@ -130,6 +130,7 @@ class DllExport TDBEXT : public TDB {
...
@@ -130,6 +130,7 @@ class DllExport TDBEXT : public TDB {
virtual
bool
MakeSQL
(
PGLOBAL
g
,
bool
cnt
);
virtual
bool
MakeSQL
(
PGLOBAL
g
,
bool
cnt
);
//virtual bool MakeInsert(PGLOBAL g);
//virtual bool MakeInsert(PGLOBAL g);
virtual
bool
MakeCommand
(
PGLOBAL
g
);
virtual
bool
MakeCommand
(
PGLOBAL
g
);
void
RemoveConst
(
PGLOBAL
g
,
char
*
stmt
);
int
Decode
(
PCSZ
utf
,
char
*
buf
,
size_t
n
);
int
Decode
(
PCSZ
utf
,
char
*
buf
,
size_t
n
);
// Members
// Members
...
...
storage/connect/tabjdbc.cpp
View file @
1ed1b779
/************* TabJDBC C++ Program Source Code File (.CPP) *************/
/************* TabJDBC C++ Program Source Code File (.CPP) *************/
/* PROGRAM NAME: TABJDBC */
/* PROGRAM NAME: TABJDBC */
/* ------------- */
/* ------------- */
/* Version 1.
2
*/
/* Version 1.
3
*/
/* */
/* */
/* COPYRIGHT: */
/* COPYRIGHT: */
/* ---------- */
/* ---------- */
/* (C) Copyright to the author Olivier BERTRAND 2016-201
7
*/
/* (C) Copyright to the author Olivier BERTRAND 2016-201
9
*/
/* */
/* */
/* WHAT THIS PROGRAM DOES: */
/* WHAT THIS PROGRAM DOES: */
/* ----------------------- */
/* ----------------------- */
...
@@ -72,7 +72,6 @@
...
@@ -72,7 +72,6 @@
#include "tabext.h"
#include "tabext.h"
#include "tabjdbc.h"
#include "tabjdbc.h"
#include "tabmul.h"
#include "tabmul.h"
//#include "reldef.h"
#include "tabcol.h"
#include "tabcol.h"
#include "valblk.h"
#include "valblk.h"
#include "ha_connect.h"
#include "ha_connect.h"
...
@@ -89,6 +88,9 @@ extern int num_read, num_there, num_eq[2]; // Statistics
...
@@ -89,6 +88,9 @@ extern int num_read, num_there, num_eq[2]; // Statistics
/* External function. */
/* External function. */
/***********************************************************************/
/***********************************************************************/
bool
ExactInfo
(
void
);
bool
ExactInfo
(
void
);
#if defined(DEVELOPMENT)
extern
char
*
GetUserVariable
(
PGLOBAL
g
,
const
uchar
*
varname
);
#endif // DEVELOPMENT
/* -------------------------- Class JDBCDEF -------------------------- */
/* -------------------------- Class JDBCDEF -------------------------- */
...
@@ -147,10 +149,6 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
...
@@ -147,10 +149,6 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
return
RC_FX
;
return
RC_FX
;
Tabname
=
p
;
Tabname
=
p
;
// } else if (b) {
// // Otherwise, straight server name,
// Tabname = GetStringCatInfo(g, "Name", NULL);
// Tabname = GetStringCatInfo(g, "Tabname", Tabname);
}
// endif
}
// endif
if
(
trace
(
1
))
if
(
trace
(
1
))
...
@@ -165,6 +163,11 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
...
@@ -165,6 +163,11 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
return
RC_FX
;
return
RC_FX
;
}
// endif server
}
// endif server
#if defined(DEVELOPMENT)
if
(
*
server
->
host
==
'@'
)
{
Url
=
GetUserVariable
(
g
,
(
const
uchar
*
)
&
server
->
host
[
1
]);
}
else
#endif // 0
if
(
strncmp
(
server
->
host
,
"jdbc:"
,
5
))
{
if
(
strncmp
(
server
->
host
,
"jdbc:"
,
5
))
{
// Now make the required URL
// Now make the required URL
Url
=
(
PSZ
)
PlugSubAlloc
(
g
,
NULL
,
0
);
Url
=
(
PSZ
)
PlugSubAlloc
(
g
,
NULL
,
0
);
...
@@ -185,12 +188,15 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
...
@@ -185,12 +188,15 @@ int JDBCDEF::ParseURL(PGLOBAL g, char *url, bool b)
}
else
// host is a URL
}
else
// host is a URL
Url
=
PlugDup
(
g
,
server
->
host
);
Url
=
PlugDup
(
g
,
server
->
host
);
if
(
server
->
username
)
if
(
!
Username
&&
server
->
username
)
Username
=
PlugDup
(
g
,
server
->
username
);
Username
=
PlugDup
(
g
,
server
->
username
);
if
(
server
->
password
)
if
(
!
Password
&&
server
->
password
)
Password
=
PlugDup
(
g
,
server
->
password
);
Password
=
PlugDup
(
g
,
server
->
password
);
Driver
=
PlugDup
(
g
,
GetListOption
(
g
,
"Driver"
,
server
->
owner
,
NULL
));
Wrapname
=
PlugDup
(
g
,
GetListOption
(
g
,
"Wrapper"
,
server
->
owner
,
NULL
));
Memory
=
atoi
(
GetListOption
(
g
,
"Memory"
,
server
->
owner
,
"0"
));
return
RC_NF
;
return
RC_NF
;
}
// endif
}
// endif
...
@@ -208,7 +214,6 @@ bool JDBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
...
@@ -208,7 +214,6 @@ bool JDBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
if
(
EXTDEF
::
DefineAM
(
g
,
am
,
poff
))
if
(
EXTDEF
::
DefineAM
(
g
,
am
,
poff
))
return
true
;
return
true
;
Driver
=
GetStringCatInfo
(
g
,
"Driver"
,
NULL
);
Desc
=
Url
=
GetStringCatInfo
(
g
,
"Connect"
,
NULL
);
Desc
=
Url
=
GetStringCatInfo
(
g
,
"Connect"
,
NULL
);
if
(
!
Url
&&
!
Catfunc
)
{
if
(
!
Url
&&
!
Catfunc
)
{
...
@@ -228,7 +233,10 @@ bool JDBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
...
@@ -228,7 +233,10 @@ bool JDBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff)
return
true
;
return
true
;
}
// endif rc
}
// endif rc
Wrapname
=
GetStringCatInfo
(
g
,
"Wrapper"
,
NULL
);
// Default values may have been set in ParseURL
Memory
=
GetIntCatInfo
(
"Memory"
,
Memory
);
Driver
=
GetStringCatInfo
(
g
,
"Driver"
,
Driver
);
Wrapname
=
GetStringCatInfo
(
g
,
"Wrapper"
,
Wrapname
);
return
false
;
return
false
;
}
// end of DefineAM
}
// end of DefineAM
...
@@ -558,9 +566,10 @@ bool TDBJDBC::OpenDB(PGLOBAL g)
...
@@ -558,9 +566,10 @@ bool TDBJDBC::OpenDB(PGLOBAL g)
this
,
Tdb_No
,
Use
,
Mode
);
this
,
Tdb_No
,
Use
,
Mode
);
if
(
Use
==
USE_OPEN
)
{
if
(
Use
==
USE_OPEN
)
{
/*******************************************************************/
if
(
Mode
==
MODE_READ
||
Mode
==
MODE_READX
)
{
/*****************************************************************/
/* Table already open, just replace it at its beginning. */
/* Table already open, just replace it at its beginning. */
/**
*****************************************************************/
/
*****************************************************************/
if
(
Memory
==
1
)
{
if
(
Memory
==
1
)
{
if
((
Qrp
=
Jcp
->
AllocateResult
(
g
,
this
)))
if
((
Qrp
=
Jcp
->
AllocateResult
(
g
,
this
)))
Memory
=
2
;
// Must be filled
Memory
=
2
;
// Must be filled
...
@@ -585,6 +594,14 @@ bool TDBJDBC::OpenDB(PGLOBAL g)
...
@@ -585,6 +594,14 @@ bool TDBJDBC::OpenDB(PGLOBAL g)
CurNum
=
0
;
CurNum
=
0
;
Fpos
=
0
;
Fpos
=
0
;
Curpos
=
1
;
Curpos
=
1
;
}
else
if
(
Mode
==
MODE_UPDATE
||
Mode
==
MODE_DELETE
)
{
// new update coming from a trigger or procedure
Query
=
NULL
;
SetCondFil
(
NULL
);
Qrystr
=
To_Def
->
GetStringCatInfo
(
g
,
"Query_String"
,
"?"
);
}
else
{
//if (Mode == MODE_INSERT)
}
// endif Mode
return
false
;
return
false
;
}
// endif use
}
// endif use
...
...
storage/connect/tabjson.cpp
View file @
1ed1b779
/************* tabjson C++ Program Source Code File (.CPP) *************/
/************* tabjson C++ Program Source Code File (.CPP) *************/
/* PROGRAM NAME: tabjson Version 1.
6
*/
/* PROGRAM NAME: tabjson Version 1.
7
*/
/* (C) Copyright to the author Olivier BERTRAND 2014 - 201
8
*/
/* (C) Copyright to the author Olivier BERTRAND 2014 - 201
9
*/
/* This program are the JSON class DB execution routines. */
/* This program are the JSON class DB execution routines. */
/***********************************************************************/
/***********************************************************************/
...
@@ -110,8 +110,8 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
...
@@ -110,8 +110,8 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info)
buftyp
,
fldtyp
,
length
,
false
,
false
);
buftyp
,
fldtyp
,
length
,
false
,
false
);
crp
=
qrp
->
Colresp
->
Next
->
Next
->
Next
->
Next
->
Next
->
Next
;
crp
=
qrp
->
Colresp
->
Next
->
Next
->
Next
->
Next
->
Next
->
Next
;
crp
->
Name
=
"Nullable"
;
crp
->
Name
=
PlugDup
(
g
,
"Nullable"
)
;
crp
->
Next
->
Name
=
"Jpath"
;
crp
->
Next
->
Name
=
PlugDup
(
g
,
"Jpath"
)
;
if
(
info
||
!
qrp
)
if
(
info
||
!
qrp
)
return
qrp
;
return
qrp
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment