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
3a50a130
Commit
3a50a130
authored
May 19, 2018
by
Vladislav Vaintroub
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/10.3' into bb-10.3-cc
parents
0d4df3cd
e4e0aea6
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
138 additions
and
15 deletions
+138
-15
mysql-test/main/custom_aggregate_functions.result
mysql-test/main/custom_aggregate_functions.result
+30
-0
mysql-test/main/custom_aggregate_functions.test
mysql-test/main/custom_aggregate_functions.test
+26
-0
mysql-test/main/sp-code.result
mysql-test/main/sp-code.result
+21
-0
mysql-test/main/sp-code.test
mysql-test/main/sp-code.test
+19
-0
mysql-test/suite/storage_engine/parts/repair_table.result
mysql-test/suite/storage_engine/parts/repair_table.result
+0
-4
sql/item.cc
sql/item.cc
+11
-0
sql/item.h
sql/item.h
+1
-0
sql/item_sum.cc
sql/item_sum.cc
+14
-0
sql/item_sum.h
sql/item_sum.h
+2
-0
sql/sp_head.cc
sql/sp_head.cc
+10
-1
sql/sp_head.h
sql/sp_head.h
+1
-1
storage/myisam/mysql-test/storage_engine/trx/xa_recovery.rdiff
...ge/myisam/mysql-test/storage_engine/trx/xa_recovery.rdiff
+1
-2
storage/myisammrg/mysql-test/storage_engine/parts/repair_table.rdiff
...sammrg/mysql-test/storage_engine/parts/repair_table.rdiff
+1
-5
storage/myisammrg/mysql-test/storage_engine/trx/xa_recovery.rdiff
...myisammrg/mysql-test/storage_engine/trx/xa_recovery.rdiff
+1
-2
No files found.
mysql-test/main/custom_aggregate_functions.result
View file @
3a50a130
...
@@ -1123,3 +1123,33 @@ t1 CREATE TABLE `t1` (
...
@@ -1123,3 +1123,33 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
DROP TABLE t1;
DROP FUNCTION f1;
DROP FUNCTION f1;
#
# MDEV-14520: Custom aggregate functions work incorrectly with WITH ROLLUP clause
#
create aggregate function agg_sum(x INT) returns INT
begin
declare z int default 0;
declare continue handler for not found return z;
loop
fetch group next row;
set z= z+x;
end loop;
end|
create table t1 (i int);
insert into t1 values (1),(2),(2),(3);
select i, agg_sum(i) from t1 group by i with rollup;
i agg_sum(i)
1 1
2 4
3 3
NULL 8
#
# Compare with
select i, sum(i) from t1 group by i with rollup;
i sum(i)
1 1
2 4
3 3
NULL 8
drop function agg_sum;
drop table t1;
mysql-test/main/custom_aggregate_functions.test
View file @
3a50a130
...
@@ -939,3 +939,29 @@ SHOW CREATE TABLE t1;
...
@@ -939,3 +939,29 @@ SHOW CREATE TABLE t1;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
DROP
FUNCTION
f1
;
DROP
FUNCTION
f1
;
--
echo
#
--
echo
# MDEV-14520: Custom aggregate functions work incorrectly with WITH ROLLUP clause
--
echo
#
--
delimiter
|
create
aggregate
function
agg_sum
(
x
INT
)
returns
INT
begin
declare
z
int
default
0
;
declare
continue
handler
for
not
found
return
z
;
loop
fetch
group
next
row
;
set
z
=
z
+
x
;
end
loop
;
end
|
--
delimiter
;
create
table
t1
(
i
int
);
insert
into
t1
values
(
1
),(
2
),(
2
),(
3
);
select
i
,
agg_sum
(
i
)
from
t1
group
by
i
with
rollup
;
--
echo
#
--
echo
# Compare with
select
i
,
sum
(
i
)
from
t1
group
by
i
with
rollup
;
# Cleanup
drop
function
agg_sum
;
drop
table
t1
;
mysql-test/main/sp-code.result
View file @
3a50a130
...
@@ -1301,3 +1301,24 @@ Pos Instruction
...
@@ -1301,3 +1301,24 @@ Pos Instruction
28 jump 4
28 jump 4
29 cpop 1
29 cpop 1
DROP PROCEDURE p1;
DROP PROCEDURE p1;
#
# MDEV-14623: Output of show function code does not show FETCH GROUP NEXT ROW
# for custom aggregates
#
create aggregate function f1(x INT) returns int
begin
declare continue handler for not found return 0;
loop
fetch group next row;
insert into t2 (sal) values (x);
end loop;
end|
show function code f1;
Pos Instruction
0 hpush_jump 2 1 CONTINUE
1 freturn int 0
2 agg_cfetch
3 stmt 5 "insert into t2 (sal) values (x)"
4 jump 2
5 hpop 1
drop function f1;
mysql-test/main/sp-code.test
View file @
3a50a130
...
@@ -927,3 +927,22 @@ $$
...
@@ -927,3 +927,22 @@ $$
DELIMITER
;
$$
DELIMITER
;
$$
SHOW
PROCEDURE
CODE
p1
;
SHOW
PROCEDURE
CODE
p1
;
DROP
PROCEDURE
p1
;
DROP
PROCEDURE
p1
;
--
echo
#
--
echo
# MDEV-14623: Output of show function code does not show FETCH GROUP NEXT ROW
--
echo
# for custom aggregates
--
echo
#
delimiter
|
;
create
aggregate
function
f1
(
x
INT
)
returns
int
begin
declare
continue
handler
for
not
found
return
0
;
loop
fetch
group
next
row
;
insert
into
t2
(
sal
)
values
(
x
);
end
loop
;
end
|
delimiter
;
|
show
function
code
f1
;
drop
function
f1
;
mysql-test/suite/storage_engine/parts/repair_table.result
View file @
3a50a130
...
@@ -126,7 +126,6 @@ a b
...
@@ -126,7 +126,6 @@ a b
15 o
15 o
Warnings:
Warnings:
Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
Error 1194 Table 't1' is marked as crashed and should be repaired
Error 1034 Number of rows changed from 3 to 2
Error 1034 Number of rows changed from 3 to 2
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# If you got a difference in error message, just add it to rdiff file
# If you got a difference in error message, just add it to rdiff file
...
@@ -152,7 +151,6 @@ a b
...
@@ -152,7 +151,6 @@ a b
15 o
15 o
Warnings:
Warnings:
Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
Error 1194 Table 't1' is marked as crashed and should be repaired
Error 1034 Number of rows changed from 2 to 3
Error 1034 Number of rows changed from 2 to 3
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# If you got a difference in error message, just add it to rdiff file
# If you got a difference in error message, just add it to rdiff file
...
@@ -177,7 +175,6 @@ a b
...
@@ -177,7 +175,6 @@ a b
15 o
15 o
Warnings:
Warnings:
Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
Error 1194 Table 't1' is marked as crashed and should be repaired
Error 1034 Number of rows changed from 4 to 3
Error 1034 Number of rows changed from 4 to 3
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# If you got a difference in error message, just add it to rdiff file
# If you got a difference in error message, just add it to rdiff file
...
@@ -206,7 +203,6 @@ a b
...
@@ -206,7 +203,6 @@ a b
15 o
15 o
Warnings:
Warnings:
Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
Error 1194 Table 't1' is marked as crashed and should be repaired
Error 1034 Number of rows changed from 3 to 4
Error 1034 Number of rows changed from 3 to 4
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
# If you got a difference in error message, just add it to rdiff file
# If you got a difference in error message, just add it to rdiff file
...
...
sql/item.cc
View file @
3a50a130
...
@@ -2802,6 +2802,17 @@ Item_sp::Item_sp(THD *thd, Name_resolution_context *context_arg,
...
@@ -2802,6 +2802,17 @@ Item_sp::Item_sp(THD *thd, Name_resolution_context *context_arg,
memset
(
&
sp_mem_root
,
0
,
sizeof
(
sp_mem_root
));
memset
(
&
sp_mem_root
,
0
,
sizeof
(
sp_mem_root
));
}
}
Item_sp
::
Item_sp
(
THD
*
thd
,
Item_sp
*
item
)
:
context
(
item
->
context
),
m_name
(
item
->
m_name
),
m_sp
(
item
->
m_sp
),
func_ctx
(
NULL
),
sp_result_field
(
NULL
)
{
dummy_table
=
(
TABLE
*
)
thd
->
calloc
(
sizeof
(
TABLE
)
+
sizeof
(
TABLE_SHARE
)
+
sizeof
(
Query_arena
));
dummy_table
->
s
=
(
TABLE_SHARE
*
)
(
dummy_table
+
1
);
sp_query_arena
=
(
Query_arena
*
)
(
dummy_table
->
s
+
1
);
memset
(
&
sp_mem_root
,
0
,
sizeof
(
sp_mem_root
));
}
const
char
*
const
char
*
Item_sp
::
func_name
(
THD
*
thd
)
const
Item_sp
::
func_name
(
THD
*
thd
)
const
{
{
...
...
sql/item.h
View file @
3a50a130
...
@@ -4658,6 +4658,7 @@ class Item_sp
...
@@ -4658,6 +4658,7 @@ class Item_sp
*/
*/
Field
*
sp_result_field
;
Field
*
sp_result_field
;
Item_sp
(
THD
*
thd
,
Name_resolution_context
*
context_arg
,
sp_name
*
name_arg
);
Item_sp
(
THD
*
thd
,
Name_resolution_context
*
context_arg
,
sp_name
*
name_arg
);
Item_sp
(
THD
*
thd
,
Item_sp
*
item
);
const
char
*
func_name
(
THD
*
thd
)
const
;
const
char
*
func_name
(
THD
*
thd
)
const
;
void
cleanup
();
void
cleanup
();
bool
sp_check_access
(
THD
*
thd
);
bool
sp_check_access
(
THD
*
thd
);
...
...
sql/item_sum.cc
View file @
3a50a130
...
@@ -1269,6 +1269,12 @@ Item_sum_sp::Item_sum_sp(THD *thd, Name_resolution_context *context_arg,
...
@@ -1269,6 +1269,12 @@ Item_sum_sp::Item_sum_sp(THD *thd, Name_resolution_context *context_arg,
m_sp
=
sp
;
m_sp
=
sp
;
}
}
Item_sum_sp
::
Item_sum_sp
(
THD
*
thd
,
Item_sum_sp
*
item
)
:
Item_sum
(
thd
,
item
),
Item_sp
(
thd
,
item
)
{
maybe_null
=
item
->
maybe_null
;
quick_group
=
item
->
quick_group
;
}
bool
bool
Item_sum_sp
::
fix_fields
(
THD
*
thd
,
Item
**
ref
)
Item_sum_sp
::
fix_fields
(
THD
*
thd
,
Item
**
ref
)
...
@@ -1400,6 +1406,14 @@ Item_sum_sp::func_name() const
...
@@ -1400,6 +1406,14 @@ Item_sum_sp::func_name() const
return
Item_sp
::
func_name
(
thd
);
return
Item_sp
::
func_name
(
thd
);
}
}
Item
*
Item_sum_sp
::
copy_or_same
(
THD
*
thd
)
{
Item_sum_sp
*
copy_item
=
new
(
thd
->
mem_root
)
Item_sum_sp
(
thd
,
this
);
copy_item
->
init_result_field
(
thd
,
max_length
,
maybe_null
,
&
copy_item
->
null_value
,
&
copy_item
->
name
);
return
copy_item
;
}
/***********************************************************************
/***********************************************************************
** reset and add of sum_func
** reset and add of sum_func
***********************************************************************/
***********************************************************************/
...
...
sql/item_sum.h
View file @
3a50a130
...
@@ -1292,6 +1292,7 @@ class Item_sum_sp :public Item_sum,
...
@@ -1292,6 +1292,7 @@ class Item_sum_sp :public Item_sum,
Item_sum_sp
(
THD
*
thd
,
Name_resolution_context
*
context_arg
,
sp_name
*
name
,
Item_sum_sp
(
THD
*
thd
,
Name_resolution_context
*
context_arg
,
sp_name
*
name
,
sp_head
*
sp
,
List
<
Item
>
&
list
);
sp_head
*
sp
,
List
<
Item
>
&
list
);
Item_sum_sp
(
THD
*
thd
,
Item_sum_sp
*
item
);
enum
Sumfunctype
sum_func
()
const
enum
Sumfunctype
sum_func
()
const
{
{
...
@@ -1361,6 +1362,7 @@ class Item_sum_sp :public Item_sum,
...
@@ -1361,6 +1362,7 @@ class Item_sum_sp :public Item_sum,
}
}
Item
*
get_copy
(
THD
*
thd
)
Item
*
get_copy
(
THD
*
thd
)
{
return
get_item_copy
<
Item_sum_sp
>
(
thd
,
this
);
}
{
return
get_item_copy
<
Item_sum_sp
>
(
thd
,
this
);
}
Item
*
copy_or_same
(
THD
*
thd
);
};
};
/* Items to get the value of a stored sum function */
/* Items to get the value of a stored sum function */
...
...
sql/sp_head.cc
View file @
3a50a130
...
@@ -4409,7 +4409,7 @@ sp_instr_cfetch::print(String *str)
...
@@ -4409,7 +4409,7 @@ sp_instr_cfetch::print(String *str)
int
int
sp_instr_agg_cfetch
::
execute
(
THD
*
thd
,
uint
*
nextp
)
sp_instr_agg_cfetch
::
execute
(
THD
*
thd
,
uint
*
nextp
)
{
{
DBUG_ENTER
(
"sp_instr_cfetch::execute"
);
DBUG_ENTER
(
"sp_instr_
agg_
cfetch::execute"
);
int
res
=
0
;
int
res
=
0
;
if
(
!
thd
->
spcont
->
instr_ptr
)
if
(
!
thd
->
spcont
->
instr_ptr
)
{
{
...
@@ -4434,7 +4434,16 @@ sp_instr_agg_cfetch::execute(THD *thd, uint *nextp)
...
@@ -4434,7 +4434,16 @@ sp_instr_agg_cfetch::execute(THD *thd, uint *nextp)
DBUG_RETURN
(
res
);
DBUG_RETURN
(
res
);
}
}
void
sp_instr_agg_cfetch
::
print
(
String
*
str
)
{
uint
rsrv
=
SP_INSTR_UINT_MAXLEN
+
11
;
if
(
str
->
reserve
(
rsrv
))
return
;
str
->
qs_append
(
STRING_WITH_LEN
(
"agg_cfetch"
));
}
/*
/*
sp_instr_cursor_copy_struct class functions
sp_instr_cursor_copy_struct class functions
...
...
sql/sp_head.h
View file @
3a50a130
...
@@ -1957,7 +1957,7 @@ class sp_instr_agg_cfetch : public sp_instr
...
@@ -1957,7 +1957,7 @@ class sp_instr_agg_cfetch : public sp_instr
virtual
int
execute
(
THD
*
thd
,
uint
*
nextp
);
virtual
int
execute
(
THD
*
thd
,
uint
*
nextp
);
virtual
void
print
(
String
*
str
)
{}
;
virtual
void
print
(
String
*
str
);
};
// class sp_instr_agg_cfetch : public sp_instr
};
// class sp_instr_agg_cfetch : public sp_instr
...
...
storage/myisam/mysql-test/storage_engine/trx/xa_recovery.rdiff
View file @
3a50a130
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
call mtr.add_suppression("Found 2 prepared XA transactions");
call mtr.add_suppression("Found 2 prepared XA transactions");
FLUSH TABLES;
FLUSH TABLES;
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t1;
@@ -18,12 +24,1
8
@@
@@ -18,12 +24,1
7
@@
connection default;
connection default;
XA RECOVER;
XA RECOVER;
formatID gtrid_length bqual_length data
formatID gtrid_length bqual_length data
...
@@ -28,6 +28,5 @@
...
@@ -28,6 +28,5 @@
4
4
+Warnings:
+Warnings:
+Error 145 Table './test/t1' is marked as crashed and should be repaired
+Error 145 Table './test/t1' is marked as crashed and should be repaired
+Error 1194 Table 't1' is marked as crashed and should be repaired
+Error 1034 1 client is using or hasn't closed the table properly
+Error 1034 1 client is using or hasn't closed the table properly
DROP TABLE t1;
DROP TABLE t1;
storage/myisammrg/mysql-test/storage_engine/parts/repair_table.rdiff
View file @
3a50a130
--- suite/storage_engine/parts/repair_table.result 2017-08-28 19:29:20.491633306 +0300
--- suite/storage_engine/parts/repair_table.result 2017-08-28 19:29:20.491633306 +0300
+++ suite/storage_engine/parts/repair_table.reject 2017-08-28 19:34:41.723633059 +0300
+++ suite/storage_engine/parts/repair_table.reject 2017-08-28 19:34:41.723633059 +0300
@@ -1,23
6
+1,116 @@
@@ -1,23
2
+1,116 @@
call mtr.add_suppression("Table '.*t1.*' is marked as crashed and should be repaired");
call mtr.add_suppression("Table '.*t1.*' is marked as crashed and should be repaired");
DROP TABLE IF EXISTS t1, t2;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS> PARTITION BY HASH(a) PARTITIONS 2;
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS> PARTITION BY HASH(a) PARTITIONS 2;
...
@@ -192,7 +192,6 @@
...
@@ -192,7 +192,6 @@
-15 o
-15 o
-Warnings:
-Warnings:
-Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
-Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
-Error 1194 Table 't1' is marked as crashed and should be repaired
-Error 1034 Number of rows changed from 3 to 2
-Error 1034 Number of rows changed from 3 to 2
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# If you got a difference in error message, just add it to rdiff file
-# If you got a difference in error message, just add it to rdiff file
...
@@ -218,7 +217,6 @@
...
@@ -218,7 +217,6 @@
-15 o
-15 o
-Warnings:
-Warnings:
-Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
-Error 145 Table './test/t1#P#p0' is marked as crashed and should be repaired
-Error 1194 Table 't1' is marked as crashed and should be repaired
-Error 1034 Number of rows changed from 2 to 3
-Error 1034 Number of rows changed from 2 to 3
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# If you got a difference in error message, just add it to rdiff file
-# If you got a difference in error message, just add it to rdiff file
...
@@ -243,7 +241,6 @@
...
@@ -243,7 +241,6 @@
-15 o
-15 o
-Warnings:
-Warnings:
-Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
-Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
-Error 1194 Table 't1' is marked as crashed and should be repaired
-Error 1034 Number of rows changed from 4 to 3
-Error 1034 Number of rows changed from 4 to 3
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# If you got a difference in error message, just add it to rdiff file
-# If you got a difference in error message, just add it to rdiff file
...
@@ -272,7 +269,6 @@
...
@@ -272,7 +269,6 @@
-15 o
-15 o
-Warnings:
-Warnings:
-Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
-Error 145 Table './test/t1#P#p1' is marked as crashed and should be repaired
-Error 1194 Table 't1' is marked as crashed and should be repaired
-Error 1034 Number of rows changed from 3 to 4
-Error 1034 Number of rows changed from 3 to 4
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# Statement ended with one of expected results (0,ER_NOT_KEYFILE,144).
-# If you got a difference in error message, just add it to rdiff file
-# If you got a difference in error message, just add it to rdiff file
...
...
storage/myisammrg/mysql-test/storage_engine/trx/xa_recovery.rdiff
View file @
3a50a130
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
call mtr.add_suppression("Found 2 prepared XA transactions");
call mtr.add_suppression("Found 2 prepared XA transactions");
FLUSH TABLES;
FLUSH TABLES;
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t1;
@@ -18,12 +24,1
8
@@
@@ -18,12 +24,1
7
@@
connection default;
connection default;
XA RECOVER;
XA RECOVER;
formatID gtrid_length bqual_length data
formatID gtrid_length bqual_length data
...
@@ -28,6 +28,5 @@
...
@@ -28,6 +28,5 @@
4
4
+Warnings:
+Warnings:
+Error 145 Table './mrg/t1' is marked as crashed and should be repaired
+Error 145 Table './mrg/t1' is marked as crashed and should be repaired
+Error 1194 Table 't1' is marked as crashed and should be repaired
+Error 1034 1 client is using or hasn't closed the table properly
+Error 1034 1 client is using or hasn't closed the table properly
DROP TABLE t1;
DROP TABLE t1;
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