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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
48a77e61
Commit
48a77e61
authored
Apr 05, 2015
by
Olivier Bertrand
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make this repository aligned with 10.0 one
parent
464947e6
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
992 additions
and
687 deletions
+992
-687
.gitattributes
.gitattributes
+20
-0
storage/connect/ha_connect.cc
storage/connect/ha_connect.cc
+31
-14
storage/connect/ha_connect.h
storage/connect/ha_connect.h
+1
-1
storage/connect/mysql-test/connect/r/json.result
storage/connect/mysql-test/connect/r/json.result
+68
-24
storage/connect/mysql-test/connect/r/json_udf.result
storage/connect/mysql-test/connect/r/json_udf.result
+167
-0
storage/connect/mysql-test/connect/r/odbc_oracle.result
storage/connect/mysql-test/connect/r/odbc_oracle.result
+5
-5
storage/connect/mysql-test/connect/std_data/biblio.json
storage/connect/mysql-test/connect/std_data/biblio.json
+45
-45
storage/connect/mysql-test/connect/std_data/expense.json
storage/connect/mysql-test/connect/std_data/expense.json
+158
-158
storage/connect/mysql-test/connect/std_data/mulexp3.json
storage/connect/mysql-test/connect/std_data/mulexp3.json
+52
-52
storage/connect/mysql-test/connect/std_data/mulexp4.json
storage/connect/mysql-test/connect/std_data/mulexp4.json
+52
-52
storage/connect/mysql-test/connect/std_data/mulexp5.json
storage/connect/mysql-test/connect/std_data/mulexp5.json
+52
-52
storage/connect/mysql-test/connect/t/json.test
storage/connect/mysql-test/connect/t/json.test
+264
-247
storage/connect/tabmul.cpp
storage/connect/tabmul.cpp
+1
-1
storage/connect/tabmysql.cpp
storage/connect/tabmysql.cpp
+1
-2
storage/connect/value.cpp
storage/connect/value.cpp
+46
-34
storage/connect/xobject.cpp
storage/connect/xobject.cpp
+28
-0
storage/connect/xobject.h
storage/connect/xobject.h
+1
-0
No files found.
.gitattributes
View file @
48a77e61
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.cc text
*.cpp text
*.h text
*.test text
# Declare files that will always have LF line endings on checkout.
*.result text eol=lf
storage/connect/mysql-test/connect/std_data/*.txt text eol=lf
storage/connect/mysql-test/connect/std_data/*.dat text eol=lf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.c diff=cpp
*.c diff=cpp
*.h diff=cpp
*.h diff=cpp
*.cc diff=cpp
*.cc diff=cpp
...
...
storage/connect/ha_connect.cc
View file @
48a77e61
...
@@ -2173,12 +2173,12 @@ int ha_connect::CheckRecord(PGLOBAL g, const uchar *oldbuf, uchar *newbuf)
...
@@ -2173,12 +2173,12 @@ int ha_connect::CheckRecord(PGLOBAL g, const uchar *oldbuf, uchar *newbuf)
/***********************************************************************/
/***********************************************************************/
/* Return the where clause for remote indexed read. */
/* Return the where clause for remote indexed read. */
/***********************************************************************/
/***********************************************************************/
bool
ha_connect
::
MakeKeyWhere
(
PGLOBAL
g
,
char
*
qry
,
OPVAL
op
,
char
*
q
,
bool
ha_connect
::
MakeKeyWhere
(
PGLOBAL
g
,
PSTRG
qry
,
OPVAL
op
,
char
q
,
const
void
*
key
,
int
klen
)
const
void
*
key
,
int
klen
)
{
{
const
uchar
*
ptr
;
const
uchar
*
ptr
;
uint
rem
,
len
,
stlen
;
//, prtlen;
uint
rem
,
len
,
stlen
;
//, prtlen;
bool
nq
,
b
=
false
;
bool
nq
,
oom
,
b
=
false
;
Field
*
fp
;
Field
*
fp
;
KEY
*
kfp
;
KEY
*
kfp
;
KEY_PART_INFO
*
kpart
;
KEY_PART_INFO
*
kpart
;
...
@@ -2190,7 +2190,7 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
...
@@ -2190,7 +2190,7 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
return
true
;
return
true
;
}
// endif key
}
// endif key
strcat
(
qry
,
" WHERE ("
);
oom
=
qry
->
Append
(
" WHERE ("
);
kfp
=
&
table
->
key_info
[
active_index
];
kfp
=
&
table
->
key_info
[
active_index
];
rem
=
kfp
->
user_defined_key_parts
,
rem
=
kfp
->
user_defined_key_parts
,
len
=
klen
,
len
=
klen
,
...
@@ -2203,24 +2203,26 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
...
@@ -2203,24 +2203,26 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
nq
=
fp
->
str_needs_quotes
();
nq
=
fp
->
str_needs_quotes
();
if
(
b
)
if
(
b
)
strcat
(
qry
,
" AND "
);
oom
|=
qry
->
Append
(
" AND "
);
else
else
b
=
true
;
b
=
true
;
strcat
(
strncat
(
strcat
(
qry
,
q
),
fp
->
field_name
,
strlen
(
fp
->
field_name
)),
q
);
oom
|=
qry
->
Append
(
q
);
oom
|=
qry
->
Append
((
PSZ
)
fp
->
field_name
);
oom
|=
qry
->
Append
(
q
);
switch
(
op
)
{
switch
(
op
)
{
case
OP_EQ
:
case
OP_EQ
:
case
OP_GT
:
case
OP_GT
:
case
OP_GE
:
case
OP_GE
:
strcat
(
qry
,
GetValStr
(
op
,
false
));
oom
|=
qry
->
Append
((
PSZ
)
GetValStr
(
op
,
false
));
break
;
break
;
default:
default:
strcat
(
qry
,
" ??? "
);
oom
|=
qry
->
Append
(
" ??? "
);
}
// endwitch op
}
// endwitch op
if
(
nq
)
if
(
nq
)
strcat
(
qry
,
"'"
);
oom
|=
qry
->
Append
(
'\''
);
if
(
kpart
->
key_part_flag
&
HA_VAR_LENGTH_PART
)
{
if
(
kpart
->
key_part_flag
&
HA_VAR_LENGTH_PART
)
{
String
varchar
;
String
varchar
;
...
@@ -2228,17 +2230,17 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
...
@@ -2228,17 +2230,17 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
varchar
.
set_quick
((
char
*
)
ptr
+
HA_KEY_BLOB_LENGTH
,
varchar
.
set_quick
((
char
*
)
ptr
+
HA_KEY_BLOB_LENGTH
,
var_length
,
&
my_charset_bin
);
var_length
,
&
my_charset_bin
);
strncat
(
qry
,
varchar
.
ptr
(),
varchar
.
length
());
oom
|=
qry
->
Append
(
varchar
.
ptr
(),
varchar
.
length
());
}
else
{
}
else
{
char
strbuff
[
MAX_FIELD_WIDTH
];
char
strbuff
[
MAX_FIELD_WIDTH
];
String
str
(
strbuff
,
sizeof
(
strbuff
),
kpart
->
field
->
charset
()),
*
res
;
String
str
(
strbuff
,
sizeof
(
strbuff
),
kpart
->
field
->
charset
()),
*
res
;
res
=
fp
->
val_str
(
&
str
,
ptr
);
res
=
fp
->
val_str
(
&
str
,
ptr
);
strncat
(
qry
,
res
->
ptr
(),
res
->
length
());
oom
|=
qry
->
Append
(
res
->
ptr
(),
res
->
length
());
}
// endif flag
}
// endif flag
if
(
nq
)
if
(
nq
)
strcat
(
qry
,
"'"
);
oom
|=
qry
->
Append
(
'\''
);
if
(
stlen
>=
len
)
if
(
stlen
>=
len
)
break
;
break
;
...
@@ -2251,8 +2253,10 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
...
@@ -2251,8 +2253,10 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, char *qry, OPVAL op, char *q,
ptr
+=
stlen
-
MY_TEST
(
kpart
->
null_bit
);
ptr
+=
stlen
-
MY_TEST
(
kpart
->
null_bit
);
}
// endfor kpart
}
// endfor kpart
strcat
(
qry
,
")"
);
if
((
oom
|=
qry
->
Append
(
")"
)))
return
false
;
strcpy
(
g
->
Message
,
"Out of memory"
);
return
oom
;
}
// end of MakeKeyWhere
}
// end of MakeKeyWhere
...
@@ -2714,7 +2718,12 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, AMT tty, Item *cond)
...
@@ -2714,7 +2718,12 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, AMT tty, Item *cond)
case
MYSQL_TYPE_DATETIME
:
case
MYSQL_TYPE_DATETIME
:
if
(
tty
==
TYPE_AM_ODBC
)
{
if
(
tty
==
TYPE_AM_ODBC
)
{
strcat
(
body
,
"{ts '"
);
strcat
(
body
,
"{ts '"
);
strcat
(
strncat
(
body
,
res
->
ptr
(),
res
->
length
()),
"'}"
);
strncat
(
body
,
res
->
ptr
(),
res
->
length
());
if
(
res
->
length
()
<
19
)
strcat
(
body
,
"1970-01-01 00:00:00"
+
res
->
length
());
strcat
(
body
,
"'}"
);
break
;
break
;
}
// endif ODBC
}
// endif ODBC
...
@@ -2739,6 +2748,10 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, AMT tty, Item *cond)
...
@@ -2739,6 +2748,10 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, AMT tty, Item *cond)
case
MYSQL_TYPE_DATETIME
:
case
MYSQL_TYPE_DATETIME
:
strcat
(
body
,
"{ts '"
);
strcat
(
body
,
"{ts '"
);
strncat
(
body
,
res
->
ptr
(),
res
->
length
());
strncat
(
body
,
res
->
ptr
(),
res
->
length
());
if
(
res
->
length
()
<
19
)
strcat
(
body
,
"1970-01-01 00:00:00"
+
res
->
length
());
strcat
(
body
,
"'}"
);
strcat
(
body
,
"'}"
);
break
;
break
;
case
MYSQL_TYPE_DATE
:
case
MYSQL_TYPE_DATE
:
...
@@ -4134,6 +4147,10 @@ MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
...
@@ -4134,6 +4147,10 @@ MODE ha_connect::CheckMode(PGLOBAL g, THD *thd,
break
;
break
;
// } // endif partitioned
// } // endif partitioned
case
SQLCOM_END
:
// Met in procedures: IF(EXISTS(SELECT...
newmode
=
MODE_READ
;
break
;
default:
default:
htrc
(
"Unsupported sql_command=%d
\n
"
,
thd_sql_command
(
thd
));
htrc
(
"Unsupported sql_command=%d
\n
"
,
thd_sql_command
(
thd
));
strcpy
(
g
->
Message
,
"CONNECT Unsupported command"
);
strcpy
(
g
->
Message
,
"CONNECT Unsupported command"
);
...
...
storage/connect/ha_connect.h
View file @
48a77e61
...
@@ -235,7 +235,7 @@ public:
...
@@ -235,7 +235,7 @@ public:
int
CheckRecord
(
PGLOBAL
g
,
const
uchar
*
oldbuf
,
uchar
*
newbuf
);
int
CheckRecord
(
PGLOBAL
g
,
const
uchar
*
oldbuf
,
uchar
*
newbuf
);
int
ReadIndexed
(
uchar
*
buf
,
OPVAL
op
,
const
uchar
*
key
=
NULL
,
int
ReadIndexed
(
uchar
*
buf
,
OPVAL
op
,
const
uchar
*
key
=
NULL
,
uint
key_len
=
0
);
uint
key_len
=
0
);
bool
MakeKeyWhere
(
PGLOBAL
g
,
char
*
qry
,
OPVAL
op
,
char
*
q
,
bool
MakeKeyWhere
(
PGLOBAL
g
,
PSTRG
qry
,
OPVAL
op
,
char
q
,
const
void
*
key
,
int
klen
);
const
void
*
key
,
int
klen
);
inline
char
*
Strz
(
LEX_STRING
&
ls
);
inline
char
*
Strz
(
LEX_STRING
&
ls
);
...
...
storage/connect/mysql-test/connect/r/json.result
View file @
48a77e61
...
@@ -12,7 +12,7 @@ TRANSLATION CHAR(32),
...
@@ -12,7 +12,7 @@ TRANSLATION CHAR(32),
TRANSLATOR CHAR(80),
TRANSLATOR CHAR(80),
PUBLISHER CHAR(32),
PUBLISHER CHAR(32),
DATEPUB int(4)
DATEPUB int(4)
) ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.jsn';
) ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
ISBN LANG SUBJECT AUTHOR TITLE TRANSLATION TRANSLATOR PUBLISHER DATEPUB
ISBN LANG SUBJECT AUTHOR TITLE TRANSLATION TRANSLATOR PUBLISHER DATEPUB
9782212090819 fr applications Jean-Christophe Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications Jean-Christophe Bernadac Construire une application XML Eyrolles Paris 1999
...
@@ -34,7 +34,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
...
@@ -34,7 +34,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Year int(4) FIELD_FORMAT='DATEPUB'
Year int(4) FIELD_FORMAT='DATEPUB'
)
)
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
ISBN Language Subject Authors Title Translation Translator Publisher Location Year
ISBN Language Subject Authors Title Translation Translator Publisher Location Year
9782212090819 fr applications 2 Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications 2 Construire une application XML Eyrolles Paris 1999
...
@@ -57,7 +57,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
...
@@ -57,7 +57,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Year int(4) FIELD_FORMAT='DATEPUB'
Year int(4) FIELD_FORMAT='DATEPUB'
)
)
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
9782212090819 fr applications Jean-Christophe and Franois Bernadac and Knab Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications Jean-Christophe and Franois Bernadac and Knab Construire une application XML Eyrolles Paris 1999
...
@@ -80,7 +80,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
...
@@ -80,7 +80,7 @@ Publisher CHAR(20) FIELD_FORMAT='PUBLISHER:NAME',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Location CHAR(16) FIELD_FORMAT='PUBLISHER:PLACE',
Year int(4) FIELD_FORMAT='DATEPUB'
Year int(4) FIELD_FORMAT='DATEPUB'
)
)
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
9782212090819 fr applications Jean-Christophe Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications Jean-Christophe Bernadac Construire une application XML Eyrolles Paris 1999
...
@@ -89,23 +89,23 @@ ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher L
...
@@ -89,23 +89,23 @@ ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher L
UPDATE t1 SET AuthorFN = 'Philippe' WHERE AuthorLN = 'Knab';
UPDATE t1 SET AuthorFN = 'Philippe' WHERE AuthorLN = 'Knab';
SELECT * FROM t1 WHERE ISBN = '9782212090819';
SELECT * FROM t1 WHERE ISBN = '9782212090819';
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
9782212090819 fr applications
Jean-Christoph
e Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Philipp
e Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Philippe
Knab Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Franois
Knab Construire une application XML Eyrolles Paris 1999
#
#
# To add an author a new table must be created
# To add an author a new table must be created
#
#
CREATE TABLE t2 (
CREATE TABLE t2 (
FIRSTNAME CHAR(32),
FIRSTNAME CHAR(32),
LASTNAME CHAR(32))
LASTNAME CHAR(32))
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.jsn' OPTION_LIST='Object=[2]:AUTHOR';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='biblio.js
o
n' OPTION_LIST='Object=[2]:AUTHOR';
SELECT * FROM t2;
SELECT * FROM t2;
FIRSTNAME LASTNAME
FIRSTNAME LASTNAME
William J. Pardi
William J. Pardi
INSERT INTO t2 VALUES('Charles','Dickens');
INSERT INTO t2 VALUES('Charles','Dickens');
SELECT * FROM t1;
SELECT * FROM t1;
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
ISBN Language Subject AuthorFN AuthorLN Title Translation Translator Publisher Location Year
9782212090819 fr applications
Jean-Christoph
e Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Philipp
e Bernadac Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Philippe
Knab Construire une application XML Eyrolles Paris 1999
9782212090819 fr applications
Franois
Knab Construire une application XML Eyrolles Paris 1999
9782840825685 fr applications William J. Pardi XML en Action adapt de l'anglais par James Guerin Microsoft Press Paris 1999
9782840825685 fr applications William J. Pardi XML en Action adapt de l'anglais par James Guerin Microsoft Press Paris 1999
9782840825685 fr applications Charles Dickens XML en Action adapt de l'anglais par James Guerin Microsoft Press Paris 1999
9782840825685 fr applications Charles Dickens XML en Action adapt de l'anglais par James Guerin Microsoft Press Paris 1999
DROP TABLE t1;
DROP TABLE t1;
...
@@ -117,7 +117,7 @@ CREATE TABLE t1
...
@@ -117,7 +117,7 @@ CREATE TABLE t1
(
(
line char(255)
line char(255)
)
)
ENGINE=CONNECT TABLE_TYPE=DOS FILE_NAME='biblio.jsn';
ENGINE=CONNECT TABLE_TYPE=DOS FILE_NAME='biblio.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
line
line
[
[
...
@@ -127,11 +127,11 @@ line
...
@@ -127,11 +127,11 @@ line
"SUBJECT": "applications",
"SUBJECT": "applications",
"AUTHOR": [
"AUTHOR": [
{
{
"FIRSTNAME": "
Jean-Christoph
e",
"FIRSTNAME": "
Philipp
e",
"LASTNAME": "Bernadac"
"LASTNAME": "Bernadac"
},
},
{
{
"FIRSTNAME": "
Philippe
",
"FIRSTNAME": "
Franois
",
"LASTNAME": "Knab"
"LASTNAME": "Knab"
}
}
],
],
...
@@ -178,7 +178,7 @@ WHO CHAR(12),
...
@@ -178,7 +178,7 @@ WHO CHAR(12),
WEEK INT(2) FIELD_FORMAT='WEEK:[X]:NUMBER',
WEEK INT(2) FIELD_FORMAT='WEEK:[X]:NUMBER',
WHAT CHAR(32) FIELD_FORMAT='WEEK::EXPENSE:["+"]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='WEEK::EXPENSE:["+"]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK::EXPENSE:[+]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK::EXPENSE:[+]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.js
o
n';
SELECT * FROM t1;
SELECT * FROM t1;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 3 Beer+Food+Food+Car 69.00
Joe 3 Beer+Food+Food+Car 69.00
...
@@ -192,16 +192,60 @@ Janet 4 Car 17.00
...
@@ -192,16 +192,60 @@ Janet 4 Car 17.00
Janet 5 Beer+Car+Beer+Food 57.00
Janet 5 Beer+Car+Beer+Food 57.00
DROP TABLE t1;
DROP TABLE t1;
#
#
#
Cannot
be fully expanded
#
Now it can
be fully expanded
#
#
CREATE TABLE t1 (
CREATE TABLE t1 (
WHO CHAR(12),
WHO CHAR(12),
WEEK INT(2) FIELD_FORMAT='WEEK:[X]:NUMBER',
WEEK INT(2) FIELD_FORMAT='WEEK:[X]:NUMBER',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[X]:EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[X]:EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[X]:EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[X]:EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.json';
SELECT * FROM t1;
WHO WEEK WHAT AMOUNT
Joe 3 Beer 18.00
Joe 3 Food 12.00
Joe 3 Food 19.00
Joe 3 Car 20.00
Joe 4 Beer 19.00
Joe 4 Beer 16.00
Joe 4 Food 17.00
Joe 4 Food 17.00
Joe 4 Beer 14.00
Joe 5 Beer 14.00
Joe 5 Food 12.00
Beth 3 Beer 16.00
Beth 4 Food 17.00
Beth 4 Beer 15.00
Beth 5 Food 12.00
Beth 5 Beer 20.00
Janet 3 Car 19.00
Janet 3 Food 18.00
Janet 3 Beer 18.00
Janet 4 Car 17.00
Janet 5 Beer 14.00
Janet 5 Car 12.00
Janet 5 Beer 19.00
Janet 5 Food 12.00
DROP TABLE t1;
#
# A table showing many calculated results
#
CREATE TABLE t1 (
WHO CHAR(12) NOT NULL,
WEEKS CHAR(12) NOT NULL FIELD_FORMAT='WEEK:[", "]:NUMBER',
SUMS CHAR(64) NOT NULL FIELD_FORMAT='WEEK:["+"]:EXPENSE:[+]:AMOUNT',
SUM DOUBLE(8,2) NOT NULL FIELD_FORMAT='WEEK:[+]:EXPENSE:[+]:AMOUNT',
AVGS CHAR(64) NOT NULL FIELD_FORMAT='WEEK:["+"]:EXPENSE:[!]:AMOUNT',
SUMAVG DOUBLE(8,2) NOT NULL FIELD_FORMAT='WEEK:[+]:EXPENSE:[!]:AMOUNT',
AVGSUM DOUBLE(8,2) NOT NULL FIELD_FORMAT='WEEK:[!]:EXPENSE:[+]:AMOUNT',
AVGAVG DOUBLE(8,2) NOT NULL FIELD_FORMAT='WEEK:[!]:EXPENSE:[!]:AMOUNT',
AVERAGE DOUBLE(8,2) NOT NULL FIELD_FORMAT='WEEK:[!]:EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.json';
SELECT * FROM t1;
SELECT * FROM t1;
ERROR HY000: Got error 174 'Cannot expand more than one array' from CONNECT
WHO WEEKS SUMS SUM AVGS SUMAVG AVGSUM AVGAVG AVERAGE
Joe 3, 4, 5 69.00+83.00+26.00 178.00 17.25+16.60+13.00 46.85 59.33 15.62 16.18
Beth 3, 4, 5 16.00+32.00+32.00 80.00 16.00+16.00+16.00 48.00 26.67 16.00 16.00
Janet 3, 4, 5 55.00+17.00+57.00 129.00 18.33+17.00+14.25 49.58 43.00 16.53 16.12
DROP TABLE t1;
DROP TABLE t1;
#
#
# Expand expense in 3 one week tables
# Expand expense in 3 one week tables
...
@@ -211,7 +255,7 @@ WHO CHAR(12),
...
@@ -211,7 +255,7 @@ WHO CHAR(12),
WEEK INT(2) FIELD_FORMAT='WEEK:[1]:NUMBER',
WEEK INT(2) FIELD_FORMAT='WEEK:[1]:NUMBER',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[1]:EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[1]:EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[1]:EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[1]:EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.js
o
n';
SELECT * FROM t2;
SELECT * FROM t2;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 3 Beer 18.00
Joe 3 Beer 18.00
...
@@ -227,7 +271,7 @@ WHO CHAR(12),
...
@@ -227,7 +271,7 @@ WHO CHAR(12),
WEEK INT(2) FIELD_FORMAT='WEEK:[2]:NUMBER',
WEEK INT(2) FIELD_FORMAT='WEEK:[2]:NUMBER',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[2]:EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[2]:EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[2]:EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[2]:EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.js
o
n';
SELECT * FROM t3;
SELECT * FROM t3;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 4 Beer 19.00
Joe 4 Beer 19.00
...
@@ -243,7 +287,7 @@ WHO CHAR(12),
...
@@ -243,7 +287,7 @@ WHO CHAR(12),
WEEK INT(2) FIELD_FORMAT='WEEK:[3]:NUMBER',
WEEK INT(2) FIELD_FORMAT='WEEK:[3]:NUMBER',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[3]:EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='WEEK:[3]:EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[3]:EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='WEEK:[3]:EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='expense.js
o
n';
SELECT * FROM t4;
SELECT * FROM t4;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 5 Beer 14.00
Joe 5 Beer 14.00
...
@@ -298,7 +342,7 @@ WHO CHAR(12),
...
@@ -298,7 +342,7 @@ WHO CHAR(12),
WEEK INT(2),
WEEK INT(2),
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp3.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp3.js
o
n';
SELECT * FROM t2;
SELECT * FROM t2;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 3 Beer 18.00
Joe 3 Beer 18.00
...
@@ -314,7 +358,7 @@ WHO CHAR(12),
...
@@ -314,7 +358,7 @@ WHO CHAR(12),
WEEK INT(2),
WEEK INT(2),
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp4.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp4.js
o
n';
SELECT * FROM t3;
SELECT * FROM t3;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 4 Beer 19.00
Joe 4 Beer 19.00
...
@@ -330,7 +374,7 @@ WHO CHAR(12),
...
@@ -330,7 +374,7 @@ WHO CHAR(12),
WEEK INT(2),
WEEK INT(2),
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp5.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp5.js
o
n';
SELECT * FROM t4;
SELECT * FROM t4;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Joe 5 Beer 14.00
Joe 5 Beer 14.00
...
@@ -349,7 +393,7 @@ WHO CHAR(12),
...
@@ -349,7 +393,7 @@ WHO CHAR(12),
WEEK INT(2),
WEEK INT(2),
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp*.jsn' MULTIPLE=1;
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp*.js
o
n' MULTIPLE=1;
SELECT * FROM t1 ORDER BY WHO, WEEK, WHAT, AMOUNT;
SELECT * FROM t1 ORDER BY WHO, WEEK, WHAT, AMOUNT;
WHO WEEK WHAT AMOUNT
WHO WEEK WHAT AMOUNT
Beth 3 Beer 16.00
Beth 3 Beer 16.00
...
@@ -385,7 +429,7 @@ WHO CHAR(12),
...
@@ -385,7 +429,7 @@ WHO CHAR(12),
WEEK INT(2),
WEEK INT(2),
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
WHAT CHAR(32) FIELD_FORMAT='EXPENSE:[X]:WHAT',
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
AMOUNT DOUBLE(8,2) FIELD_FORMAT='EXPENSE:[X]:AMOUNT')
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp%s.jsn';
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='mulexp%s.js
o
n';
ALTER TABLE t1
ALTER TABLE t1
PARTITION BY LIST COLUMNS(WEEK) (
PARTITION BY LIST COLUMNS(WEEK) (
PARTITION `3` VALUES IN(3),
PARTITION `3` VALUES IN(3),
...
...
storage/connect/mysql-test/connect/r/json_udf.result
0 → 100644
View file @
48a77e61
This diff is collapsed.
Click to expand it.
storage/connect/mysql-test/connect/r/odbc_oracle.result
View file @
48a77e61
...
@@ -126,7 +126,7 @@ TABNAME='T1';
...
@@ -126,7 +126,7 @@ TABNAME='T1';
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`A` decimal(
38
,0) DEFAULT NULL,
`A` decimal(
40
,0) DEFAULT NULL,
`B` double(40,0) DEFAULT NULL
`B` double(40,0) DEFAULT NULL
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='T1'
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='T1'
SELECT * FROM t1 ORDER BY A;
SELECT * FROM t1 ORDER BY A;
...
@@ -138,7 +138,7 @@ CREATE TABLE t2 AS SELECT * FROM t1;
...
@@ -138,7 +138,7 @@ CREATE TABLE t2 AS SELECT * FROM t1;
SHOW CREATE TABLE t2;
SHOW CREATE TABLE t2;
Table Create Table
Table Create Table
t2 CREATE TABLE `t2` (
t2 CREATE TABLE `t2` (
`A` decimal(
38
,0) DEFAULT NULL,
`A` decimal(
40
,0) DEFAULT NULL,
`B` double(40,0) DEFAULT NULL
`B` double(40,0) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
SELECT * FROM t2;
...
@@ -162,7 +162,7 @@ TABNAME='MTR.T1';
...
@@ -162,7 +162,7 @@ TABNAME='MTR.T1';
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`A` decimal(
38
,0) DEFAULT NULL,
`A` decimal(
40
,0) DEFAULT NULL,
`B` double(40,0) DEFAULT NULL
`B` double(40,0) DEFAULT NULL
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='MTR.T1'
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='MTR.T1'
SELECT * FROM t1;
SELECT * FROM t1;
...
@@ -178,7 +178,7 @@ TABNAME='MTR.V1';
...
@@ -178,7 +178,7 @@ TABNAME='MTR.V1';
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`A` decimal(
38
,0) DEFAULT NULL,
`A` decimal(
40
,0) DEFAULT NULL,
`B` double(40,0) DEFAULT NULL
`B` double(40,0) DEFAULT NULL
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='MTR.V1'
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='DSN=ConnectEngineOracle;UID=mtr;PWD=mtr' `TABLE_TYPE`='ODBC' `TABNAME`='MTR.V1'
SELECT * FROM t1;
SELECT * FROM t1;
...
@@ -190,7 +190,7 @@ CREATE TABLE t2 AS SELECT * FROM t1;
...
@@ -190,7 +190,7 @@ CREATE TABLE t2 AS SELECT * FROM t1;
SHOW CREATE TABLE t2;
SHOW CREATE TABLE t2;
Table Create Table
Table Create Table
t2 CREATE TABLE `t2` (
t2 CREATE TABLE `t2` (
`A` decimal(
38
,0) DEFAULT NULL,
`A` decimal(
40
,0) DEFAULT NULL,
`B` double(40,0) DEFAULT NULL
`B` double(40,0) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT * FROM t2;
SELECT * FROM t2;
...
...
storage/connect/mysql-test/connect/std_data/biblio.jsn
→
storage/connect/mysql-test/connect/std_data/biblio.js
o
n
View file @
48a77e61
[
[
{
{
"ISBN": "9782212090819",
"ISBN"
:
"9782212090819"
,
"LANG": "fr",
"LANG"
:
"fr"
,
"SUBJECT": "applications",
"SUBJECT"
:
"applications"
,
"AUTHOR": [
"AUTHOR"
:
[
{
{
"FIRSTNAME": "Jean-Christophe",
"FIRSTNAME"
:
"Jean-Christophe"
,
"LASTNAME": "Bernadac"
"LASTNAME"
:
"Bernadac"
},
},
{
{
"FIRSTNAME": "François",
"FIRSTNAME"
:
"François"
,
"LASTNAME": "Knab"
"LASTNAME"
:
"Knab"
}
}
],
],
"TITLE": "Construire une application XML",
"TITLE"
:
"Construire une application XML"
,
"PUBLISHER": {
"PUBLISHER"
:
{
"NAME": "Eyrolles",
"NAME"
:
"Eyrolles"
,
"PLACE": "Paris"
"PLACE"
:
"Paris"
},
},
"DATEPUB": 1999
"DATEPUB"
:
1999
},
},
{
{
"ISBN": "9782840825685",
"ISBN"
:
"9782840825685"
,
"LANG": "fr",
"LANG"
:
"fr"
,
"SUBJECT": "applications",
"SUBJECT"
:
"applications"
,
"AUTHOR": [
"AUTHOR"
:
[
{
{
"FIRSTNAME": "William J.",
"FIRSTNAME"
:
"William J."
,
"LASTNAME": "Pardi"
"LASTNAME"
:
"Pardi"
}
}
],
],
"TITLE": "XML en Action",
"TITLE"
:
"XML en Action"
,
"TRANSLATION": "adapté de l'anglais par",
"TRANSLATION"
:
"adapté de l'anglais par"
,
"TRANSLATOR": {
"TRANSLATOR"
:
{
"FIRSTNAME": "James",
"FIRSTNAME"
:
"James"
,
"LASTNAME": "Guerin"
"LASTNAME"
:
"Guerin"
},
},
"PUBLISHER": {
"PUBLISHER"
:
{
"NAME": "Microsoft Press",
"NAME"
:
"Microsoft Press"
,
"PLACE": "Paris"
"PLACE"
:
"Paris"
},
},
"DATEPUB": 1999
"DATEPUB"
:
1999
}
}
]
]
storage/connect/mysql-test/connect/std_data/expense.jsn
→
storage/connect/mysql-test/connect/std_data/expense.js
o
n
View file @
48a77e61
[
[
{
{
"WHO": "Joe",
"WHO"
:
"Joe"
,
"WEEK": [
"WEEK"
:
[
{
{
"NUMBER": 3,
"NUMBER"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 20.00
"AMOUNT"
:
20.00
}
}
]
]
},
},
{
{
"NUMBER": 4,
"NUMBER"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 16.00
"AMOUNT"
:
16.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
}
}
]
]
},
},
{
{
"NUMBER": 5,
"NUMBER"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
}
}
]
]
}
}
]
]
},
},
{
{
"WHO": "Beth",
"WHO"
:
"Beth"
,
"WEEK": [
"WEEK"
:
[
{
{
"NUMBER": 3,
"NUMBER"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 16.00
"AMOUNT"
:
16.00
}
}
]
]
},
},
{
{
"NUMBER": 4,
"NUMBER"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 15.00
"AMOUNT"
:
15.00
}
}
]
]
},
},
{
{
"NUMBER": 5,
"NUMBER"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 20.00
"AMOUNT"
:
20.00
}
}
]
]
}
}
]
]
},
},
{
{
"WHO": "Janet",
"WHO"
:
"Janet"
,
"WEEK": [
"WEEK"
:
[
{
{
"NUMBER": 3,
"NUMBER"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
}
}
]
]
},
},
{
{
"NUMBER": 4,
"NUMBER"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
}
}
]
]
},
},
{
{
"NUMBER": 5,
"NUMBER"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
},
},
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
}
}
]
]
}
}
]
]
}
}
]
]
storage/connect/mysql-test/connect/std_data/mulexp3.jsn
→
storage/connect/mysql-test/connect/std_data/mulexp3.js
o
n
View file @
48a77e61
[
[
{
{
"WHO": "Joe",
"WHO"
:
"Joe"
,
"WEEK": 3,
"WEEK"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 20.00
"AMOUNT"
:
20.00
}
}
]
]
},
},
{
{
"WHO": "Beth",
"WHO"
:
"Beth"
,
"WEEK": 3,
"WEEK"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 16.00
"AMOUNT"
:
16.00
}
}
]
]
},
},
{
{
"WHO": "Janet",
"WHO"
:
"Janet"
,
"WEEK": 3,
"WEEK"
:
3
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 18.00
"AMOUNT"
:
18.00
}
}
]
]
}
}
]
]
storage/connect/mysql-test/connect/std_data/mulexp4.jsn
→
storage/connect/mysql-test/connect/std_data/mulexp4.js
o
n
View file @
48a77e61
[
[
{
{
"WHO": "Joe",
"WHO"
:
"Joe"
,
"WEEK": 4,
"WEEK"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 16.00
"AMOUNT"
:
16.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
}
}
]
]
},
},
{
{
"WHO": "Beth",
"WHO"
:
"Beth"
,
"WEEK": 4,
"WEEK"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 15.00
"AMOUNT"
:
15.00
}
}
]
]
},
},
{
{
"WHO": "Janet",
"WHO"
:
"Janet"
,
"WEEK": 4,
"WEEK"
:
4
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 17.00
"AMOUNT"
:
17.00
}
}
]
]
}
}
]
]
storage/connect/mysql-test/connect/std_data/mulexp5.jsn
→
storage/connect/mysql-test/connect/std_data/mulexp5.js
o
n
View file @
48a77e61
[
[
{
{
"WHO": "Joe",
"WHO"
:
"Joe"
,
"WEEK": 5,
"WEEK"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
}
}
]
]
},
},
{
{
"WHO": "Beth",
"WHO"
:
"Beth"
,
"WEEK": 5,
"WEEK"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 20.00
"AMOUNT"
:
20.00
}
}
]
]
},
},
{
{
"WHO": "Janet",
"WHO"
:
"Janet"
,
"WEEK": 5,
"WEEK"
:
5
,
"EXPENSE": [
"EXPENSE"
:
[
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 14.00
"AMOUNT"
:
14.00
},
},
{
{
"WHAT": "Car",
"WHAT"
:
"Car"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
},
},
{
{
"WHAT": "Beer",
"WHAT"
:
"Beer"
,
"AMOUNT": 19.00
"AMOUNT"
:
19.00
},
},
{
{
"WHAT": "Food",
"WHAT"
:
"Food"
,
"AMOUNT": 12.00
"AMOUNT"
:
12.00
}
}
]
]
}
}
]
]
storage/connect/mysql-test/connect/t/json.test
View file @
48a77e61
This diff is collapsed.
Click to expand it.
storage/connect/tabmul.cpp
View file @
48a77e61
...
@@ -238,7 +238,7 @@ bool TDBMUL::InitFileNames(PGLOBAL g)
...
@@ -238,7 +238,7 @@ bool TDBMUL::InitFileNames(PGLOBAL g)
continue
;
// Not a match
continue
;
// Not a match
strcat
(
strcpy
(
filename
,
direc
),
entry
->
d_name
);
strcat
(
strcpy
(
filename
,
direc
),
entry
->
d_name
);
pfn
[
n
]
=
PlugDup
(
g
,
filename
);
pfn
[
n
++
]
=
PlugDup
(
g
,
filename
);
if
(
trace
)
if
(
trace
)
htrc
(
"Adding pfn[%d] %s
\n
"
,
n
,
filename
);
htrc
(
"Adding pfn[%d] %s
\n
"
,
n
,
filename
);
...
...
storage/connect/tabmysql.cpp
View file @
48a77e61
...
@@ -1078,8 +1078,7 @@ bool TDBMYSQL::ReadKey(PGLOBAL g, OPVAL op, const void *key, int len)
...
@@ -1078,8 +1078,7 @@ bool TDBMYSQL::ReadKey(PGLOBAL g, OPVAL op, const void *key, int len)
if
(
Myc
.
m_Res
)
if
(
Myc
.
m_Res
)
Myc
.
FreeResult
();
Myc
.
FreeResult
();
To_Def
->
GetHandler
()
->
MakeKeyWhere
(
g
,
Query
->
GetStr
(),
To_Def
->
GetHandler
()
->
MakeKeyWhere
(
g
,
Query
,
op
,
'`'
,
key
,
len
);
op
,
"`"
,
key
,
len
);
if
(
To_CondFil
)
{
if
(
To_CondFil
)
{
oom
=
Query
->
Append
(
" AND ("
);
oom
=
Query
->
Append
(
" AND ("
);
...
...
storage/connect/value.cpp
View file @
48a77e61
...
@@ -627,13 +627,16 @@ int TYPVAL<double>::GetValLen(void)
...
@@ -627,13 +627,16 @@ int TYPVAL<double>::GetValLen(void)
template
<
class
TYPE
>
template
<
class
TYPE
>
bool
TYPVAL
<
TYPE
>::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
bool
TYPVAL
<
TYPE
>::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
{
{
if
(
chktype
&&
Type
!=
valp
->
GetType
())
if
(
valp
!=
this
)
{
return
true
;
if
(
chktype
&&
Type
!=
valp
->
GetType
())
return
true
;
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
Tval
=
GetTypedValue
(
valp
);
Tval
=
GetTypedValue
(
valp
);
else
else
Reset
();
Reset
();
}
// endif valp
return
false
;
return
false
;
}
// end of SetValue
}
// end of SetValue
...
@@ -1319,15 +1322,18 @@ ulonglong TYPVAL<PSZ>::GetUBigintValue(void)
...
@@ -1319,15 +1322,18 @@ ulonglong TYPVAL<PSZ>::GetUBigintValue(void)
/***********************************************************************/
/***********************************************************************/
bool
TYPVAL
<
PSZ
>::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
bool
TYPVAL
<
PSZ
>::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
{
{
if
(
chktype
&&
(
valp
->
GetType
()
!=
Type
||
valp
->
GetSize
()
>
Len
))
if
(
valp
!=
this
)
{
return
true
;
if
(
chktype
&&
(
valp
->
GetType
()
!=
Type
||
valp
->
GetSize
()
>
Len
))
return
true
;
char
buf
[
64
];
char
buf
[
64
];
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
strncpy
(
Strp
,
valp
->
GetCharString
(
buf
),
Len
);
strncpy
(
Strp
,
valp
->
GetCharString
(
buf
),
Len
);
else
else
Reset
();
Reset
();
}
// endif valp
return
false
;
return
false
;
}
// end of SetValue_pval
}
// end of SetValue_pval
...
@@ -2063,18 +2069,21 @@ double BINVAL::GetFloatValue(void)
...
@@ -2063,18 +2069,21 @@ double BINVAL::GetFloatValue(void)
/***********************************************************************/
/***********************************************************************/
bool
BINVAL
::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
bool
BINVAL
::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
{
{
if
(
chktype
&&
(
valp
->
GetType
()
!=
Type
||
valp
->
GetSize
()
>
Clen
))
return
true
;
bool
rc
=
false
;
bool
rc
=
false
;
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
)
)
{
if
(
valp
!=
this
)
{
if
(
(
rc
=
(
Len
=
valp
->
GetSize
()
)
>
Clen
))
if
(
chktype
&&
(
valp
->
GetType
()
!=
Type
||
valp
->
GetSize
(
)
>
Clen
))
Len
=
Clen
;
return
true
;
memcpy
(
Binp
,
valp
->
GetTo_Val
(),
Len
);
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
{
}
else
if
((
rc
=
(
Len
=
valp
->
GetSize
())
>
Clen
))
Reset
();
Len
=
Clen
;
memcpy
(
Binp
,
valp
->
GetTo_Val
(),
Len
);
}
else
Reset
();
}
// endif valp
return
rc
;
return
rc
;
}
// end of SetValue_pval
}
// end of SetValue_pval
...
@@ -2629,21 +2638,24 @@ bool DTVAL::MakeDate(PGLOBAL g, int *val, int nval)
...
@@ -2629,21 +2638,24 @@ bool DTVAL::MakeDate(PGLOBAL g, int *val, int nval)
/***********************************************************************/
/***********************************************************************/
bool
DTVAL
::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
bool
DTVAL
::
SetValue_pval
(
PVAL
valp
,
bool
chktype
)
{
{
if
(
chktype
&&
Type
!=
valp
->
GetType
())
if
(
valp
!=
this
)
{
return
true
;
if
(
chktype
&&
Type
!=
valp
->
GetType
())
return
true
;
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
{
if
(
!
(
Null
=
valp
->
IsNull
()
&&
Nullable
))
{
if
(
Pdtp
&&
!
valp
->
IsTypeNum
())
{
if
(
Pdtp
&&
!
valp
->
IsTypeNum
())
{
int
ndv
;
int
ndv
;
int
dval
[
6
];
int
dval
[
6
];
ndv
=
ExtractDate
(
valp
->
GetCharValue
(),
Pdtp
,
DefYear
,
dval
);
MakeDate
(
NULL
,
dval
,
ndv
);
}
else
Tval
=
valp
->
GetIntValue
();
ndv
=
ExtractDate
(
valp
->
GetCharValue
(),
Pdtp
,
DefYear
,
dval
);
MakeDate
(
NULL
,
dval
,
ndv
);
}
else
}
else
Tval
=
valp
->
GetIntValue
();
Reset
();
}
else
}
// endif valp
Reset
();
return
false
;
return
false
;
}
// end of SetValue
}
// end of SetValue
...
...
storage/connect/xobject.cpp
View file @
48a77e61
...
@@ -289,6 +289,34 @@ bool STRING::Set(char *s, uint n)
...
@@ -289,6 +289,34 @@ bool STRING::Set(char *s, uint n)
return
false
;
return
false
;
}
// end of Set
}
// end of Set
/***********************************************************************/
/* Append a char* to a STRING. */
/***********************************************************************/
bool
STRING
::
Append
(
const
char
*
s
,
uint
ln
)
{
if
(
!
s
)
return
false
;
uint
len
=
Length
+
ln
+
1
;
if
(
len
>
Size
)
{
char
*
p
=
Realloc
(
len
);
if
(
!
p
)
return
true
;
else
if
(
p
!=
Strp
)
{
strcpy
(
p
,
Strp
);
Strp
=
p
;
}
// endif p
}
// endif n
strncpy
(
Strp
+
Length
,
s
,
ln
);
Length
=
len
-
1
;
Strp
[
Length
]
=
0
;
return
false
;
}
// end of Append
/***********************************************************************/
/***********************************************************************/
/* Append a PSZ to a STRING. */
/* Append a PSZ to a STRING. */
/***********************************************************************/
/***********************************************************************/
...
...
storage/connect/xobject.h
View file @
48a77e61
...
@@ -134,6 +134,7 @@ class DllExport STRING : public BLOCK {
...
@@ -134,6 +134,7 @@ class DllExport STRING : public BLOCK {
inline
void
Reset
(
void
)
{
*
Strp
=
0
;}
inline
void
Reset
(
void
)
{
*
Strp
=
0
;}
bool
Set
(
PSZ
s
);
bool
Set
(
PSZ
s
);
bool
Set
(
char
*
s
,
uint
n
);
bool
Set
(
char
*
s
,
uint
n
);
bool
Append
(
const
char
*
s
,
uint
ln
);
bool
Append
(
PSZ
s
);
bool
Append
(
PSZ
s
);
bool
Append
(
STRING
&
str
);
bool
Append
(
STRING
&
str
);
bool
Append
(
char
c
);
bool
Append
(
char
c
);
...
...
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