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
016caa3d
Commit
016caa3d
authored
Jan 02, 2018
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.0 into 10.1
parents
7e4c185c
51e4650e
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
318 additions
and
25 deletions
+318
-25
man/mysqladmin.1
man/mysqladmin.1
+184
-2
mysql-test/include/truncate_file.inc
mysql-test/include/truncate_file.inc
+3
-8
mysql-test/r/ps.result
mysql-test/r/ps.result
+18
-0
mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
+1
-1
mysql-test/t/ps.test
mysql-test/t/ps.test
+15
-0
sql/sql_class.cc
sql/sql_class.cc
+8
-1
sql/sql_derived.cc
sql/sql_derived.cc
+46
-5
sql/table.cc
sql/table.cc
+3
-0
sql/table.h
sql/table.h
+6
-0
storage/innobase/include/trx0rec.h
storage/innobase/include/trx0rec.h
+2
-1
storage/innobase/row/row0purge.cc
storage/innobase/row/row0purge.cc
+2
-2
storage/innobase/trx/trx0rec.cc
storage/innobase/trx/trx0rec.cc
+13
-1
storage/xtradb/include/trx0rec.h
storage/xtradb/include/trx0rec.h
+2
-1
storage/xtradb/row/row0purge.cc
storage/xtradb/row/row0purge.cc
+2
-2
storage/xtradb/trx/trx0rec.cc
storage/xtradb/trx/trx0rec.cc
+13
-1
No files found.
man/mysqladmin.1
View file @
016caa3d
'\" t
.\"
.TH "\FBMYSQLADMIN\FR" "1" "
14/12/2015
" "MariaDB 10\&.1" "MariaDB Database System"
.TH "\FBMYSQLADMIN\FR" "1" "
28 December 2017
" "MariaDB 10\&.1" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
...
...
@@ -106,6 +106,97 @@ Display the server status variables and their values\&.
.sp -1
.IP \(bu 2.3
.\}
flush\-all\-statistics
.sp
Flush all statistics tables\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-all\-status
.sp
Flush all status and statistics\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-binary\-log
.sp
Flush the binary log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-client\-statistics
.sp
Flush client statistics\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-engine\-log
.sp
Flush engine log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-error\-log
.sp
Flush error log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-general\-log
.sp
Flush general query log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-hosts
.sp
Flush all information in the host cache\&.
...
...
@@ -119,6 +210,19 @@ Flush all information in the host cache\&.
.sp -1
.IP \(bu 2.3
.\}
flush\-index\-statistics
.sp
Flush index statistics\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-logs
.sp
Flush all logs\&.
...
...
@@ -146,6 +250,32 @@ reload)\&.
.sp -1
.IP \(bu 2.3
.\}
flush\-relay\-log
.sp
Flush relay log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-slow\-log
.sp
Flush slow query log\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-status
.sp
Clear status variables\&.
...
...
@@ -159,6 +289,19 @@ Clear status variables\&.
.sp -1
.IP \(bu 2.3
.\}
flush\-table\-statistics
.sp
Flush table statistics\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush\-tables
.sp
Flush all tables\&.
...
...
@@ -185,6 +328,19 @@ Flush the thread cache\&.
.sp -1
.IP \(bu 2.3
.\}
flush\-user\-resources
.sp
Flush user resources\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
kill \fIid\fR,\fIid\fR,\&.\&.\&.
.sp
Kill server threads\&. If multiple thread ID values are given, there must be no spaces in the list\&.
...
...
@@ -344,6 +500,19 @@ Stop the server\&.
.sp -1
.IP \(bu 2.3
.\}
start\-all\-slaves
.sp
Start all slaves\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
start\-slave
.sp
Start replication on a slave server\&.
...
...
@@ -370,6 +539,19 @@ Display a short server status message\&.
.sp -1
.IP \(bu 2.3
.\}
stop\-all\-slaves
.sp
Stop all slaves\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
stop\-slave
.sp
Stop replication on a slave server\&.
...
...
@@ -821,7 +1003,7 @@ Connect to the MariaDB server on the given host\&.
\fB\-\-local\fR,
\fB\-l\fR
.sp
Suppress the SQL command(s) from being written to the binary log by enabling sql_log_bin=0 for the session\&.
Suppress the SQL command(s) from being written to the binary log by
using FLUSH LOCAL or
enabling sql_log_bin=0 for the session\&.
.RE
.sp
.RS 4
...
...
mysql-test/include/truncate_file.inc
View file @
016caa3d
# truncate a giving file, all contents of the file are be cleared
if
(
!
$
file
)
if
(
!
$
TRUNCATE_FILE
)
{
--
echo
Please
assign
a
file
name
to
$file
!!
exit
;
die
TRUNCATE_FILE
is
not
set
;
}
let
TRUNCATE_FILE
=
$file
;
perl
;
use
Env
;
Env
::
import
(
'TRUNCATE_FILE'
);
open
FILE
,
'>'
,
$TRUNCATE_FILE
||
die
"Can not open file
$file
"
;
open
FILE
,
'>'
,
$ENV
{
TRUNCATE_FILE
}
or
die
"open(>
$ENV
{
TRUNCATE_FILE
}
): $!"
;
close
FILE
;
EOF
mysql-test/r/ps.result
View file @
016caa3d
...
...
@@ -4332,4 +4332,22 @@ set join_cache_level=@join_cache_level_save;
deallocate prepare stmt;
drop view v1,v2,v3;
drop table t1,t2,t3;
#
# MDEV-10657: incorrect result returned with binary protocol
# (prepared statements)
#
create table t1 (code varchar(10) primary key);
INSERT INTO t1(code) VALUES ('LINE1'), ('LINE2'), ('LINE3');
SELECT X.*
FROM
(SELECT CODE, RN
FROM
(SELECT A.CODE, @cnt := @cnt + 1 AS RN
FROM t1 A, (SELECT @cnt := 0) C) T
) X;
CODE RN
LINE1 1
LINE2 2
LINE3 3
drop table t1;
# End of 5.5 tests
mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
View file @
016caa3d
...
...
@@ -25,7 +25,7 @@ sync_slave_with_master;
connection
master
;
# Delete './master-bin.000001' from index file.
let
$MYSQLD_DATADIR
=
`SELECT @@DATADIR`
;
let
$file
=
$MYSQLD_DATADIR
/
master
-
bin
.
index
;
let
TRUNCATE_FILE
=
$MYSQLD_DATADIR
/
master
-
bin
.
index
;
source
include
/
truncate_file
.
inc
;
if
(
`SELECT CONVERT(@@VERSION_COMPILE_OS USING latin1) NOT IN ('Win32', 'Win64', 'Windows')`
)
...
...
mysql-test/t/ps.test
View file @
016caa3d
...
...
@@ -3860,4 +3860,19 @@ deallocate prepare stmt;
drop
view
v1
,
v2
,
v3
;
drop
table
t1
,
t2
,
t3
;
--
echo
#
--
echo
# MDEV-10657: incorrect result returned with binary protocol
--
echo
# (prepared statements)
--
echo
#
create
table
t1
(
code
varchar
(
10
)
primary
key
);
INSERT
INTO
t1
(
code
)
VALUES
(
'LINE1'
),
(
'LINE2'
),
(
'LINE3'
);
SELECT
X
.*
FROM
(
SELECT
CODE
,
RN
FROM
(
SELECT
A
.
CODE
,
@
cnt
:=
@
cnt
+
1
AS
RN
FROM
t1
A
,
(
SELECT
@
cnt
:=
0
)
C
)
T
)
X
;
drop
table
t1
;
--
echo
# End of 5.5 tests
sql/sql_class.cc
View file @
016caa3d
...
...
@@ -2657,6 +2657,8 @@ void THD::nocheck_register_item_tree_change(Item **place, Item *old_value,
MEM_ROOT
*
runtime_memroot
)
{
Item_change_record
*
change
;
DBUG_ENTER
(
"THD::nocheck_register_item_tree_change"
);
DBUG_PRINT
(
"enter"
,
(
"Register %p <- %p"
,
old_value
,
(
*
place
)));
/*
Now we use one node per change, which adds some memory overhead,
but still is rather fast as we use alloc_root for allocations.
...
...
@@ -2669,12 +2671,13 @@ void THD::nocheck_register_item_tree_change(Item **place, Item *old_value,
OOM, thd->fatal_error() is called by the error handler of the
memroot. Just return.
*/
return
;
DBUG_VOID_RETURN
;
}
change
=
new
(
change_mem
)
Item_change_record
;
change
->
place
=
place
;
change
->
old_value
=
old_value
;
change_list
.
append
(
change
);
DBUG_VOID_RETURN
;
}
/**
...
...
@@ -2715,7 +2718,11 @@ void THD::rollback_item_tree_changes()
DBUG_ENTER
(
"rollback_item_tree_changes"
);
while
((
change
=
it
++
))
{
DBUG_PRINT
(
"info"
,
(
"revert %p -> %p"
,
change
->
old_value
,
(
*
change
->
place
)));
*
change
->
place
=
change
->
old_value
;
}
/* We can forget about changes memory: it's allocated in runtime memroot */
change_list
.
empty
();
DBUG_VOID_RETURN
;
...
...
sql/sql_derived.cc
View file @
016caa3d
...
...
@@ -362,6 +362,9 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
SELECT_LEX
*
parent_lex
=
derived
->
select_lex
;
Query_arena
*
arena
,
backup
;
DBUG_ENTER
(
"mysql_derived_merge"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
if
(
derived
->
merged
)
DBUG_RETURN
(
FALSE
);
...
...
@@ -510,7 +513,9 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
bool
mysql_derived_merge_for_insert
(
THD
*
thd
,
LEX
*
lex
,
TABLE_LIST
*
derived
)
{
DBUG_ENTER
(
"mysql_derived_merge_for_insert"
);
DBUG_PRINT
(
"enter"
,
(
"derived: %p"
,
derived
));
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
DBUG_PRINT
(
"info"
,
(
"merged_for_insert: %d is_materialized_derived: %d "
"is_multitable: %d single_table_updatable: %d "
"merge_underlying_list: %d"
,
...
...
@@ -566,7 +571,9 @@ bool mysql_derived_init(THD *thd, LEX *lex, TABLE_LIST *derived)
{
SELECT_LEX_UNIT
*
unit
=
derived
->
get_unit
();
DBUG_ENTER
(
"mysql_derived_init"
);
DBUG_PRINT
(
"enter"
,
(
"derived: %p"
,
derived
));
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
// Skip already prepared views/DT
if
(
!
unit
||
unit
->
prepared
)
...
...
@@ -637,8 +644,9 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
SELECT_LEX_UNIT
*
unit
=
derived
->
get_unit
();
DBUG_ENTER
(
"mysql_derived_prepare"
);
bool
res
=
FALSE
;
DBUG_PRINT
(
"enter"
,
(
"unit: %p table_list: %p Alias '%s'"
,
unit
,
derived
,
derived
->
alias
));
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
unit
));
// Skip already prepared views/DT
if
(
!
unit
||
unit
->
prepared
||
...
...
@@ -795,6 +803,9 @@ bool mysql_derived_optimize(THD *thd, LEX *lex, TABLE_LIST *derived)
bool
res
=
FALSE
;
DBUG_ENTER
(
"mysql_derived_optimize"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
if
(
unit
->
optimized
)
DBUG_RETURN
(
FALSE
);
...
...
@@ -860,6 +871,9 @@ bool mysql_derived_optimize(THD *thd, LEX *lex, TABLE_LIST *derived)
bool
mysql_derived_create
(
THD
*
thd
,
LEX
*
lex
,
TABLE_LIST
*
derived
)
{
DBUG_ENTER
(
"mysql_derived_create"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
TABLE
*
table
=
derived
->
table
;
SELECT_LEX_UNIT
*
unit
=
derived
->
get_unit
();
...
...
@@ -909,9 +923,13 @@ bool mysql_derived_create(THD *thd, LEX *lex, TABLE_LIST *derived)
bool
mysql_derived_fill
(
THD
*
thd
,
LEX
*
lex
,
TABLE_LIST
*
derived
)
{
DBUG_ENTER
(
"mysql_derived_fill"
)
;
Field_iterator_table
field_iterator
;
SELECT_LEX_UNIT
*
unit
=
derived
->
get_unit
();
bool
res
=
FALSE
;
DBUG_ENTER
(
"mysql_derived_fill"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
if
(
unit
->
executed
&&
!
unit
->
uncacheable
&&
!
unit
->
describe
)
DBUG_RETURN
(
FALSE
);
...
...
@@ -951,7 +969,27 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived)
if
(
derived_result
->
flush
())
res
=
TRUE
;
unit
->
executed
=
TRUE
;
if
(
derived
->
field_translation
)
{
/* reset translation table to materialized table */
field_iterator
.
set_table
(
derived
->
table
);
for
(
uint
i
=
0
;
!
field_iterator
.
end_of_fields
();
field_iterator
.
next
(),
i
=
i
+
1
)
{
Item
*
item
;
if
(
!
(
item
=
field_iterator
.
create_item
(
thd
)))
{
res
=
TRUE
;
break
;
}
thd
->
change_item_tree
(
&
derived
->
field_translation
[
i
].
item
,
item
);
}
}
}
if
(
res
||
!
lex
->
describe
)
unit
->
cleanup
();
lex
->
current_select
=
save_current_select
;
...
...
@@ -980,6 +1018,9 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived)
bool
mysql_derived_reinit
(
THD
*
thd
,
LEX
*
lex
,
TABLE_LIST
*
derived
)
{
DBUG_ENTER
(
"mysql_derived_reinit"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
derived
->
alias
?
derived
->
alias
:
"<NULL>"
),
derived
->
get_unit
()));
st_select_lex_unit
*
unit
=
derived
->
get_unit
();
derived
->
merged_for_insert
=
FALSE
;
...
...
sql/table.cc
View file @
016caa3d
...
...
@@ -4260,6 +4260,9 @@ bool TABLE_LIST::create_field_translation(THD *thd)
Query_arena
*
arena
,
backup
;
bool
res
=
FALSE
;
DBUG_ENTER
(
"TABLE_LIST::create_field_translation"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
alias
?
alias
:
"<NULL>"
),
get_unit
()));
if
(
thd
->
stmt_arena
->
is_conventional
()
||
thd
->
stmt_arena
->
is_stmt_prepare_or_first_sp_execute
())
...
...
sql/table.h
View file @
016caa3d
...
...
@@ -2287,6 +2287,9 @@ struct TABLE_LIST
inline
void
set_merged_derived
()
{
DBUG_ENTER
(
"set_merged_derived"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
alias
?
alias
:
"<NULL>"
),
get_unit
()));
derived_type
=
((
derived_type
&
DTYPE_MASK
)
|
DTYPE_TABLE
|
DTYPE_MERGE
);
set_check_merged
();
...
...
@@ -2299,6 +2302,9 @@ struct TABLE_LIST
void
set_materialized_derived
()
{
DBUG_ENTER
(
"set_materialized_derived"
);
DBUG_PRINT
(
"enter"
,
(
"Alias: '%s' Unit: %p"
,
(
alias
?
alias
:
"<NULL>"
),
get_unit
()));
derived_type
=
((
derived_type
&
(
derived
?
DTYPE_MASK
:
DTYPE_VIEW
))
|
DTYPE_TABLE
|
DTYPE_MATERIALIZE
);
set_check_materialized
();
...
...
storage/innobase/include/trx0rec.h
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -196,6 +196,7 @@ trx_undo_rec_get_partial_row(
used, as we do NOT copy the data in the
record! */
dict_index_t
*
index
,
/*!< in: clustered index */
const
upd_t
*
update
,
/*!< in: updated columns */
dtuple_t
**
row
,
/*!< out, own: partial row */
ibool
ignore_prefix
,
/*!< in: flag to indicate if we
expect blob prefixes in undo. Used
...
...
storage/innobase/row/row0purge.cc
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -823,7 +823,7 @@ row_purge_parse_undo_rec(
if
(
!
(
node
->
cmpl_info
&
UPD_NODE_NO_ORD_CHANGE
))
{
ptr
=
trx_undo_rec_get_partial_row
(
ptr
,
clust_index
,
&
node
->
row
,
ptr
,
clust_index
,
node
->
update
,
&
node
->
row
,
type
==
TRX_UNDO_UPD_DEL_REC
,
node
->
heap
);
}
...
...
storage/innobase/trx/trx0rec.cc
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -1076,6 +1076,7 @@ trx_undo_rec_get_partial_row(
used, as we do NOT copy the data in the
record! */
dict_index_t
*
index
,
/*!< in: clustered index */
const
upd_t
*
update
,
/*!< in: updated columns */
dtuple_t
**
row
,
/*!< out, own: partial row */
ibool
ignore_prefix
,
/*!< in: flag to indicate if we
expect blob prefixes in undo. Used
...
...
@@ -1103,6 +1104,13 @@ trx_undo_rec_get_partial_row(
->
mtype
=
DATA_MISSING
;
}
for
(
const
upd_field_t
*
uf
=
update
->
fields
,
*
const
ue
=
update
->
fields
+
update
->
n_fields
;
uf
!=
ue
;
uf
++
)
{
ulint
c
=
dict_index_get_nth_col
(
index
,
uf
->
field_no
)
->
ind
;
*
dtuple_get_nth_field
(
*
row
,
c
)
=
uf
->
new_val
;
}
end_ptr
=
ptr
+
mach_read_from_2
(
ptr
);
ptr
+=
2
;
...
...
@@ -1123,6 +1131,10 @@ trx_undo_rec_get_partial_row(
ptr
=
trx_undo_rec_get_col_val
(
ptr
,
&
field
,
&
len
,
&
orig_len
);
dfield
=
dtuple_get_nth_field
(
*
row
,
col_no
);
ut_ad
(
dfield
->
type
.
mtype
==
DATA_MISSING
||
dict_col_type_assert_equal
(
col
,
&
dfield
->
type
));
ut_ad
(
dfield
->
type
.
mtype
==
DATA_MISSING
||
dfield
->
len
==
len
);
dict_col_copy_type
(
dict_table_get_nth_col
(
index
->
table
,
col_no
),
dfield_get_type
(
dfield
));
...
...
storage/xtradb/include/trx0rec.h
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -196,6 +196,7 @@ trx_undo_rec_get_partial_row(
used, as we do NOT copy the data in the
record! */
dict_index_t
*
index
,
/*!< in: clustered index */
const
upd_t
*
update
,
/*!< in: updated columns */
dtuple_t
**
row
,
/*!< out, own: partial row */
ibool
ignore_prefix
,
/*!< in: flag to indicate if we
expect blob prefixes in undo. Used
...
...
storage/xtradb/row/row0purge.cc
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -823,7 +823,7 @@ row_purge_parse_undo_rec(
if
(
!
(
node
->
cmpl_info
&
UPD_NODE_NO_ORD_CHANGE
))
{
ptr
=
trx_undo_rec_get_partial_row
(
ptr
,
clust_index
,
&
node
->
row
,
ptr
,
clust_index
,
node
->
update
,
&
node
->
row
,
type
==
TRX_UNDO_UPD_DEL_REC
,
node
->
heap
);
}
...
...
storage/xtradb/trx/trx0rec.cc
View file @
016caa3d
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -1076,6 +1076,7 @@ trx_undo_rec_get_partial_row(
used, as we do NOT copy the data in the
record! */
dict_index_t
*
index
,
/*!< in: clustered index */
const
upd_t
*
update
,
/*!< in: updated columns */
dtuple_t
**
row
,
/*!< out, own: partial row */
ibool
ignore_prefix
,
/*!< in: flag to indicate if we
expect blob prefixes in undo. Used
...
...
@@ -1103,6 +1104,13 @@ trx_undo_rec_get_partial_row(
->
mtype
=
DATA_MISSING
;
}
for
(
const
upd_field_t
*
uf
=
update
->
fields
,
*
const
ue
=
update
->
fields
+
update
->
n_fields
;
uf
!=
ue
;
uf
++
)
{
ulint
c
=
dict_index_get_nth_col
(
index
,
uf
->
field_no
)
->
ind
;
*
dtuple_get_nth_field
(
*
row
,
c
)
=
uf
->
new_val
;
}
end_ptr
=
ptr
+
mach_read_from_2
(
ptr
);
ptr
+=
2
;
...
...
@@ -1123,6 +1131,10 @@ trx_undo_rec_get_partial_row(
ptr
=
trx_undo_rec_get_col_val
(
ptr
,
&
field
,
&
len
,
&
orig_len
);
dfield
=
dtuple_get_nth_field
(
*
row
,
col_no
);
ut_ad
(
dfield
->
type
.
mtype
==
DATA_MISSING
||
dict_col_type_assert_equal
(
col
,
&
dfield
->
type
));
ut_ad
(
dfield
->
type
.
mtype
==
DATA_MISSING
||
dfield
->
len
==
len
);
dict_col_copy_type
(
dict_table_get_nth_col
(
index
->
table
,
col_no
),
dfield_get_type
(
dfield
));
...
...
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