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
00677a80
Commit
00677a80
authored
14 years ago
by
Alexey Kopytov
Browse files
Options
Browse Files
Download
Plain Diff
Automerge.
parents
faf54ff9
36e0ca0d
Changes
76
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
76 changed files
with
1421 additions
and
962 deletions
+1421
-962
config/ac-macros/maintainer.m4
config/ac-macros/maintainer.m4
+1
-1
mysql-test/r/merge.result
mysql-test/r/merge.result
+41
-0
mysql-test/r/partition.result
mysql-test/r/partition.result
+15
-0
mysql-test/r/partition_binlog_stmt.result
mysql-test/r/partition_binlog_stmt.result
+13
-0
mysql-test/r/ps_2myisam.result
mysql-test/r/ps_2myisam.result
+136
-136
mysql-test/r/ps_3innodb.result
mysql-test/r/ps_3innodb.result
+136
-136
mysql-test/r/ps_4heap.result
mysql-test/r/ps_4heap.result
+136
-136
mysql-test/r/ps_5merge.result
mysql-test/r/ps_5merge.result
+272
-272
mysql-test/suite/innodb_plugin/r/innodb_bug53756.result
mysql-test/suite/innodb_plugin/r/innodb_bug53756.result
+118
-0
mysql-test/suite/innodb_plugin/t/innodb_bug53756-master.opt
mysql-test/suite/innodb_plugin/t/innodb_bug53756-master.opt
+1
-0
mysql-test/suite/innodb_plugin/t/innodb_bug53756.test
mysql-test/suite/innodb_plugin/t/innodb_bug53756.test
+184
-0
mysql-test/t/merge.test
mysql-test/t/merge.test
+78
-0
mysql-test/t/partition.test
mysql-test/t/partition.test
+22
-0
mysql-test/t/partition_binlog_stmt.test
mysql-test/t/partition_binlog_stmt.test
+26
-0
mysys/my_getopt.c
mysys/my_getopt.c
+1
-2
sql/ha_partition.cc
sql/ha_partition.cc
+28
-7
sql/ha_partition.h
sql/ha_partition.h
+5
-2
sql/item_func.cc
sql/item_func.cc
+1
-1
sql/log.cc
sql/log.cc
+30
-16
sql/sql_cache.cc
sql/sql_cache.cc
+2
-0
sql/sql_table.cc
sql/sql_table.cc
+0
-3
sql/table.cc
sql/table.cc
+10
-0
sql/table.h
sql/table.h
+1
-0
storage/innobase/btr/btr0btr.c
storage/innobase/btr/btr0btr.c
+0
-2
storage/innobase/btr/btr0cur.c
storage/innobase/btr/btr0cur.c
+16
-9
storage/innobase/btr/btr0pcur.c
storage/innobase/btr/btr0pcur.c
+0
-2
storage/innobase/btr/btr0sea.c
storage/innobase/btr/btr0sea.c
+1
-2
storage/innobase/buf/buf0flu.c
storage/innobase/buf/buf0flu.c
+0
-7
storage/innobase/eval/eval0eval.c
storage/innobase/eval/eval0eval.c
+1
-6
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+3
-13
storage/innobase/include/ut0rnd.ic
storage/innobase/include/ut0rnd.ic
+0
-3
storage/innobase/lock/lock0lock.c
storage/innobase/lock/lock0lock.c
+1
-3
storage/innobase/log/log0recv.c
storage/innobase/log/log0recv.c
+4
-2
storage/innobase/os/os0file.c
storage/innobase/os/os0file.c
+2
-21
storage/innobase/que/que0que.c
storage/innobase/que/que0que.c
+0
-7
storage/innobase/row/row0mysql.c
storage/innobase/row/row0mysql.c
+6
-1
storage/innobase/row/row0purge.c
storage/innobase/row/row0purge.c
+1
-1
storage/innobase/row/row0umod.c
storage/innobase/row/row0umod.c
+6
-1
storage/innobase/row/row0upd.c
storage/innobase/row/row0upd.c
+8
-3
storage/innobase/row/row0vers.c
storage/innobase/row/row0vers.c
+8
-3
storage/innobase/trx/trx0purge.c
storage/innobase/trx/trx0purge.c
+4
-8
storage/innobase/trx/trx0roll.c
storage/innobase/trx/trx0roll.c
+0
-5
storage/innobase/trx/trx0sys.c
storage/innobase/trx/trx0sys.c
+7
-2
storage/innobase/trx/trx0trx.c
storage/innobase/trx/trx0trx.c
+1
-2
storage/innobase/trx/trx0undo.c
storage/innobase/trx/trx0undo.c
+0
-5
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/ChangeLog
+4
-0
storage/innodb_plugin/btr/btr0btr.c
storage/innodb_plugin/btr/btr0btr.c
+4
-5
storage/innodb_plugin/btr/btr0cur.c
storage/innodb_plugin/btr/btr0cur.c
+7
-3
storage/innodb_plugin/btr/btr0pcur.c
storage/innodb_plugin/btr/btr0pcur.c
+0
-2
storage/innodb_plugin/btr/btr0sea.c
storage/innodb_plugin/btr/btr0sea.c
+1
-2
storage/innodb_plugin/buf/buf0flu.c
storage/innodb_plugin/buf/buf0flu.c
+6
-8
storage/innodb_plugin/dict/dict0crea.c
storage/innodb_plugin/dict/dict0crea.c
+0
-2
storage/innodb_plugin/dict/dict0dict.c
storage/innodb_plugin/dict/dict0dict.c
+0
-9
storage/innodb_plugin/dict/dict0load.c
storage/innodb_plugin/dict/dict0load.c
+13
-14
storage/innodb_plugin/eval/eval0eval.c
storage/innodb_plugin/eval/eval0eval.c
+1
-6
storage/innodb_plugin/handler/ha_innodb.cc
storage/innodb_plugin/handler/ha_innodb.cc
+3
-7
storage/innodb_plugin/handler/i_s.cc
storage/innodb_plugin/handler/i_s.cc
+1
-0
storage/innodb_plugin/include/os0sync.h
storage/innodb_plugin/include/os0sync.h
+1
-1
storage/innodb_plugin/include/univ.i
storage/innodb_plugin/include/univ.i
+1
-1
storage/innodb_plugin/include/ut0rnd.ic
storage/innodb_plugin/include/ut0rnd.ic
+0
-3
storage/innodb_plugin/log/log0recv.c
storage/innodb_plugin/log/log0recv.c
+4
-2
storage/innodb_plugin/os/os0file.c
storage/innodb_plugin/os/os0file.c
+2
-21
storage/innodb_plugin/que/que0que.c
storage/innodb_plugin/que/que0que.c
+0
-5
storage/innodb_plugin/row/row0mysql.c
storage/innodb_plugin/row/row0mysql.c
+6
-1
storage/innodb_plugin/row/row0purge.c
storage/innodb_plugin/row/row0purge.c
+6
-1
storage/innodb_plugin/row/row0umod.c
storage/innodb_plugin/row/row0umod.c
+6
-1
storage/innodb_plugin/row/row0vers.c
storage/innodb_plugin/row/row0vers.c
+8
-3
storage/innodb_plugin/trx/trx0purge.c
storage/innodb_plugin/trx/trx0purge.c
+4
-8
storage/innodb_plugin/trx/trx0roll.c
storage/innodb_plugin/trx/trx0roll.c
+0
-5
storage/innodb_plugin/trx/trx0sys.c
storage/innodb_plugin/trx/trx0sys.c
+7
-2
storage/innodb_plugin/trx/trx0trx.c
storage/innodb_plugin/trx/trx0trx.c
+1
-2
storage/innodb_plugin/trx/trx0undo.c
storage/innodb_plugin/trx/trx0undo.c
+0
-5
storage/myisam/mi_range.c
storage/myisam/mi_range.c
+1
-2
storage/myisam/mi_search.c
storage/myisam/mi_search.c
+3
-7
storage/myisam/rt_index.c
storage/myisam/rt_index.c
+2
-6
storage/myisam/rt_split.c
storage/myisam/rt_split.c
+3
-8
No files found.
config/ac-macros/maintainer.m4
View file @
00677a80
...
...
@@ -16,7 +16,7 @@ AC_DEFUN([MY_MAINTAINER_MODE], [
AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [
# Setup GCC warning options.
AS_IF([test "$GCC" = "yes"], [
C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror"
C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -W
no-strict-aliasing -W
error"
CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter"
])
...
...
This diff is collapsed.
Click to expand it.
mysql-test/r/merge.result
View file @
00677a80
...
...
@@ -2298,4 +2298,45 @@ t2 WHERE b SOUNDS LIKE e AND d = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
DROP TABLE t2, t1;
#
# Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
#
DROP TABLE IF EXISTS m1, t1;
CREATE TABLE t1 (c1 INT) ENGINE=MYISAM;
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST;
LOCK TABLE m1 READ;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
UNLOCK TABLES;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1,t1;
CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair Error Can't open table
test.m1 repair error Corrupt
CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
REPAIR TABLE m1;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1, t1;
CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
test.m1 repair Error Table 'test.m1' doesn't exist
test.m1 repair error Corrupt
CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM;
REPAIR TABLE m1 USE_FRM;
Table Op Msg_type Msg_text
m1 repair error Cannot repair temporary table from .frm file
REPAIR TABLE m1;
Table Op Msg_type Msg_text
test.m1 repair note The storage engine for the table doesn't support repair
DROP TABLE m1, t1;
End of 5.1 tests
This diff is collapsed.
Click to expand it.
mysql-test/r/partition.result
View file @
00677a80
drop table if exists t1, t2;
#
# Bug#57113: ha_partition::extra(ha_extra_function):
# Assertion `m_extra_cache' failed
CREATE TABLE t1
(id INT NOT NULL PRIMARY KEY,
name VARCHAR(16) NOT NULL,
year YEAR,
INDEX name (name(8))
)
PARTITION BY HASH(id) PARTITIONS 2;
INSERT INTO t1 VALUES ( 1, 'FooBar', '1924' );
CREATE TABLE t2 (id INT);
INSERT INTO t2 VALUES (1),(2);
UPDATE t1, t2 SET t1.year = '1955' WHERE t1.name = 'FooBar';
DROP TABLE t1, t2;
#
# Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
#
CREATE TABLE t1 (
...
...
This diff is collapsed.
Click to expand it.
mysql-test/r/partition_binlog_stmt.result
0 → 100644
View file @
00677a80
DROP TABLE IF EXISTS t1;
#
# Bug#51851: Server with SBR locks mutex twice on LOAD DATA into
# partitioned MyISAM table
CREATE TABLE t1
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TINYBLOB NOT NULL,
modified TIMESTAMP DEFAULT '0000-00-00 00:00:00',
INDEX namelocs (name(255))) ENGINE = MyISAM
PARTITION BY HASH(id) PARTITIONS 2;
LOAD DATA LOCAL INFILE 'init_file.txt'
INTO TABLE t1 (name);
DROP TABLE t1;
This diff is collapsed.
Click to expand it.
mysql-test/r/ps_2myisam.result
View file @
00677a80
This diff is collapsed.
Click to expand it.
mysql-test/r/ps_3innodb.result
View file @
00677a80
This diff is collapsed.
Click to expand it.
mysql-test/r/ps_4heap.result
View file @
00677a80
This diff is collapsed.
Click to expand it.
mysql-test/r/ps_5merge.result
View file @
00677a80
This diff is collapsed.
Click to expand it.
mysql-test/suite/innodb_plugin/r/innodb_bug53756.result
0 → 100644
View file @
00677a80
DROP TABLE IF EXISTS bug_53756 ;
CREATE TABLE bug_53756 (pk INT, c1 INT) ENGINE=InnoDB;
ALTER TABLE bug_53756 ADD PRIMARY KEY (pk);
INSERT INTO bug_53756 VALUES(1, 11), (2, 22), (3, 33), (4, 44);
# Select a less restrictive isolation level.
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
COMMIT;
# Start a transaction in the default connection for isolation.
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
SELECT * FROM bug_53756;
pk c1
1 11
2 22
3 33
4 44
# connection con1 deletes row 1
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
DELETE FROM bug_53756 WHERE pk=1;
# connection con2 deletes row 2
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
DELETE FROM bug_53756 WHERE pk=2;
# connection con3 updates row 3
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
UPDATE bug_53756 SET c1=77 WHERE pk=3;
# connection con4 updates row 4
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
UPDATE bug_53756 SET c1=88 WHERE pk=4;
# connection con5 inserts row 5
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
INSERT INTO bug_53756 VALUES(5, 55);
# connection con6 inserts row 6
START TRANSACTION;
SELECT @@tx_isolation;
@@tx_isolation
READ-COMMITTED
INSERT INTO bug_53756 VALUES(6, 66);
# connection con1 commits.
COMMIT;
# connection con3 commits.
COMMIT;
# connection con4 rolls back.
ROLLBACK;
# connection con6 rolls back.
ROLLBACK;
# The connections 2 and 5 stay open.
# connection default selects resulting data.
# Delete of row 1 was committed.
# Update of row 3 was committed.
# Due to isolation level read committed, these should be included.
# All other changes should not be included.
SELECT * FROM bug_53756;
pk c1
2 22
3 77
4 44
# connection default
#
# Crash server.
START TRANSACTION;
INSERT INTO bug_53756 VALUES (666,666);
SET SESSION debug="+d,crash_commit_before";
COMMIT;
ERROR HY000: Lost connection to MySQL server during query
#
# disconnect con1, con2, con3, con4, con5, con6.
#
# Restart server.
#
# Select recovered data.
# Delete of row 1 was committed.
# Update of row 3 was committed.
# These should be included.
# All other changes should not be included.
# Delete of row 2 and insert of row 5 should be rolled back
SELECT * FROM bug_53756;
pk c1
2 22
3 77
4 44
# Clean up.
DROP TABLE bug_53756;
This diff is collapsed.
Click to expand it.
mysql-test/suite/innodb_plugin/t/innodb_bug53756-master.opt
0 → 100644
View file @
00677a80
--skip-stack-trace --skip-core-file
This diff is collapsed.
Click to expand it.
mysql-test/suite/innodb_plugin/t/innodb_bug53756.test
0 → 100644
View file @
00677a80
# This is the test case for bug #53756. Alter table operation could
# leave a deleted record for the temp table (later renamed to the altered
# table) in the SYS_TABLES secondary index, we should ignore this row and
# find the first non-deleted row for the specified table_id when load table
# metadata in the function dict_load_table_on_id() during crash recovery.
#
# innobackup needs to connect to the server. Not supported in embedded.
--
source
include
/
not_embedded
.
inc
#
# This test case needs to crash the server. Needs a debug server.
--
source
include
/
have_debug
.
inc
#
# Don't test this under valgrind, memory leaks will occur.
--
source
include
/
not_valgrind
.
inc
#
# This test case needs InnoDB.
--
source
include
/
have_innodb_plugin
.
inc
#
# Precautionary clean up.
#
--
disable_warnings
DROP
TABLE
IF
EXISTS
bug_53756
;
--
enable_warnings
#
# Create test data.
#
CREATE
TABLE
bug_53756
(
pk
INT
,
c1
INT
)
ENGINE
=
InnoDB
;
ALTER
TABLE
bug_53756
ADD
PRIMARY
KEY
(
pk
);
INSERT
INTO
bug_53756
VALUES
(
1
,
11
),
(
2
,
22
),
(
3
,
33
),
(
4
,
44
);
--
echo
--
echo
# Select a less restrictive isolation level.
# Don't use user variables. They won't survive server crash.
--
let
$global_isolation
=
`SELECT @@global.tx_isolation`
;
--
let
$session_isolation
=
`SELECT @@session.tx_isolation`
;
SET
GLOBAL
TRANSACTION
ISOLATION
LEVEL
READ
COMMITTED
;
SET
SESSION
TRANSACTION
ISOLATION
LEVEL
READ
COMMITTED
;
COMMIT
;
--
echo
--
echo
# Start a transaction in the default connection for isolation.
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
SELECT
*
FROM
bug_53756
;
--
echo
--
echo
# connection con1 deletes row 1
--
connect
(
con1
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
DELETE
FROM
bug_53756
WHERE
pk
=
1
;
--
echo
--
echo
# connection con2 deletes row 2
--
connect
(
con2
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
DELETE
FROM
bug_53756
WHERE
pk
=
2
;
--
echo
--
echo
# connection con3 updates row 3
--
connect
(
con3
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
UPDATE
bug_53756
SET
c1
=
77
WHERE
pk
=
3
;
--
echo
--
echo
# connection con4 updates row 4
--
connect
(
con4
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
UPDATE
bug_53756
SET
c1
=
88
WHERE
pk
=
4
;
--
echo
--
echo
# connection con5 inserts row 5
--
connect
(
con5
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
INSERT
INTO
bug_53756
VALUES
(
5
,
55
);
--
echo
--
echo
# connection con6 inserts row 6
--
connect
(
con6
,
localhost
,
root
,,)
START
TRANSACTION
;
SELECT
@@
tx_isolation
;
INSERT
INTO
bug_53756
VALUES
(
6
,
66
);
--
echo
--
echo
# connection con1 commits.
--
connection
con1
COMMIT
;
--
echo
--
echo
# connection con3 commits.
--
connection
con3
COMMIT
;
--
echo
--
echo
# connection con4 rolls back.
--
connection
con4
ROLLBACK
;
--
echo
--
echo
# connection con6 rolls back.
--
connection
con6
ROLLBACK
;
--
echo
--
echo
# The connections 2 and 5 stay open.
--
echo
--
echo
# connection default selects resulting data.
--
echo
# Delete of row 1 was committed.
--
echo
# Update of row 3 was committed.
--
echo
# Due to isolation level read committed, these should be included.
--
echo
# All other changes should not be included.
--
connection
default
SELECT
*
FROM
bug_53756
;
--
echo
--
echo
# connection default
--
connection
default
--
echo
#
--
echo
# Crash server.
#
# Write file to make mysql-test-run.pl expect the "crash", but don't start
# it until it's told to
--
exec
echo
"wait"
>
$MYSQLTEST_VARDIR
/
tmp
/
mysqld
.
1.
expect
#
START
TRANSACTION
;
INSERT
INTO
bug_53756
VALUES
(
666
,
666
);
#
# Request a crash on next execution of commit.
SET
SESSION
debug
=
"+d,crash_commit_before"
;
#
# Execute the statement that causes the crash.
--
error
2013
COMMIT
;
--
echo
--
echo
#
--
echo
# disconnect con1, con2, con3, con4, con5, con6.
--
disconnect
con1
--
disconnect
con2
--
disconnect
con3
--
disconnect
con4
--
disconnect
con5
--
disconnect
con6
--
echo
#
--
echo
# Restart server.
#
# Write file to make mysql-test-run.pl start up the server again
--
exec
echo
"restart"
>
$MYSQLTEST_VARDIR
/
tmp
/
mysqld
.
1.
expect
#
# Turn on reconnect
--
enable_reconnect
#
# Call script that will poll the server waiting for it to be back online again
--
source
include
/
wait_until_connected_again
.
inc
#
# Turn off reconnect again
--
disable_reconnect
--
echo
--
echo
#
--
echo
# Select recovered data.
--
echo
# Delete of row 1 was committed.
--
echo
# Update of row 3 was committed.
--
echo
# These should be included.
--
echo
# All other changes should not be included.
--
echo
# Delete of row 2 and insert of row 5 should be rolled back
SELECT
*
FROM
bug_53756
;
--
echo
--
echo
# Clean up.
DROP
TABLE
bug_53756
;
--
disable_query_log
eval
SET
GLOBAL
tx_isolation
=
'$global_isolation'
;
eval
SET
SESSION
tx_isolation
=
'$session_isolation'
;
--
enable_query_log
This diff is collapsed.
Click to expand it.
mysql-test/t/merge.test
View file @
00677a80
...
...
@@ -1705,4 +1705,82 @@ t2 WHERE b SOUNDS LIKE e AND d = 1;
DROP
TABLE
t2
,
t1
;
--
echo
#
--
echo
# Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
--
echo
#
--
disable_warnings
DROP
TABLE
IF
EXISTS
m1
,
t1
;
--
enable_warnings
#
# Test derived from a proposal of Shane Bester.
#
CREATE
TABLE
t1
(
c1
INT
)
ENGINE
=
MYISAM
;
CREATE
TABLE
m1
(
c1
INT
)
ENGINE
=
MRG_MyISAM
UNION
=
(
t1
)
INSERT_METHOD
=
LAST
;
#
# REPAIR ... USE_FRM with LOCK TABLES.
#
LOCK
TABLE
m1
READ
;
REPAIR
TABLE
m1
USE_FRM
;
UNLOCK
TABLES
;
#
# REPAIR ... USE_FRM without LOCK TABLES.
#
# This statement crashed the server (Bug#46339).
#
REPAIR
TABLE
m1
USE_FRM
;
#
DROP
TABLE
m1
,
t1
;
#
# Test derived from a proposal of Matthias Leich.
#
# Base table is missing.
#
CREATE
TABLE
m1
(
f1
BIGINT
)
ENGINE
=
MRG_MyISAM
UNION
(
t1
);
#
# This statement crashed the server (Bug#46339).
#
REPAIR
TABLE
m1
USE_FRM
;
#
# Create base table.
#
CREATE
TABLE
t1
(
f1
BIGINT
)
ENGINE
=
MyISAM
;
#
# This statement crashed the server (Bug#46339).
#
REPAIR
TABLE
m1
USE_FRM
;
#
# Normal repair as reference.
#
REPAIR
TABLE
m1
;
#
# Cleanup.
#
DROP
TABLE
m1
,
t1
;
#
# Same with temporary tables.
#
# Base table is missing.
#
CREATE
TEMPORARY
TABLE
m1
(
f1
BIGINT
)
ENGINE
=
MRG_MyISAM
UNION
(
t1
);
#
# This statement crashed the server (Bug#46339).
#
REPAIR
TABLE
m1
USE_FRM
;
#
# Create base table.
#
CREATE
TEMPORARY
TABLE
t1
(
f1
BIGINT
)
ENGINE
=
MyISAM
;
#
# This statement crashed the server (Bug#46339).
#
REPAIR
TABLE
m1
USE_FRM
;
#
# Normal repair as reference.
#
REPAIR
TABLE
m1
;
#
# Cleanup.
#
DROP
TABLE
m1
,
t1
;
--
echo
End
of
5.1
tests
This diff is collapsed.
Click to expand it.
mysql-test/t/partition.test
View file @
00677a80
...
...
@@ -14,6 +14,28 @@
drop
table
if
exists
t1
,
t2
;
--
enable_warnings
--
echo
#
--
echo
# Bug#57113: ha_partition::extra(ha_extra_function):
--
echo
# Assertion `m_extra_cache' failed
CREATE
TABLE
t1
(
id
INT
NOT
NULL
PRIMARY
KEY
,
name
VARCHAR
(
16
)
NOT
NULL
,
year
YEAR
,
INDEX
name
(
name
(
8
))
)
PARTITION
BY
HASH
(
id
)
PARTITIONS
2
;
INSERT
INTO
t1
VALUES
(
1
,
'FooBar'
,
'1924'
);
CREATE
TABLE
t2
(
id
INT
);
INSERT
INTO
t2
VALUES
(
1
),(
2
);
UPDATE
t1
,
t2
SET
t1
.
year
=
'1955'
WHERE
t1
.
name
=
'FooBar'
;
DROP
TABLE
t1
,
t2
;
--
echo
#
--
echo
# Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
--
echo
#
...
...
This diff is collapsed.
Click to expand it.
mysql-test/t/partition_binlog_stmt.test
0 → 100644
View file @
00677a80
--
source
include
/
have_partition
.
inc
--
source
include
/
have_binlog_format_statement
.
inc
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
--
echo
#
--
echo
# Bug#51851: Server with SBR locks mutex twice on LOAD DATA into
--
echo
# partitioned MyISAM table
--
write_file
init_file
.
txt
abcd
EOF
CREATE
TABLE
t1
(
id
INT
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
,
name
TINYBLOB
NOT
NULL
,
modified
TIMESTAMP
DEFAULT
'0000-00-00 00:00:00'
,
INDEX
namelocs
(
name
(
255
)))
ENGINE
=
MyISAM
PARTITION
BY
HASH
(
id
)
PARTITIONS
2
;
LOAD
DATA
LOCAL
INFILE
'init_file.txt'
INTO
TABLE
t1
(
name
);
--
remove_file
init_file
.
txt
DROP
TABLE
t1
;
This diff is collapsed.
Click to expand it.
mysys/my_getopt.c
View file @
00677a80
...
...
@@ -112,7 +112,7 @@ int handle_options(int *argc, char ***argv,
const
struct
my_option
*
longopts
,
my_get_one_option
get_one_option
)
{
uint
opt_found
,
argvpos
=
0
,
length
;
uint
UNINIT_VAR
(
opt_found
)
,
argvpos
=
0
,
length
;
my_bool
end_of_options
=
0
,
must_be_var
,
set_maximum_value
,
option_is_loose
;
char
**
pos
,
**
pos_end
,
*
optend
,
*
opt_str
,
key_name
[
FN_REFLEN
];
...
...
@@ -121,7 +121,6 @@ int handle_options(int *argc, char ***argv,
void
*
value
;
int
error
,
i
;
LINT_INIT
(
opt_found
);
/* handle_options() assumes arg0 (program name) always exists */
DBUG_ASSERT
(
argc
&&
*
argc
>=
1
);
DBUG_ASSERT
(
argv
&&
*
argv
);
...
...
This diff is collapsed.
Click to expand it.
sql/ha_partition.cc
View file @
00677a80
...
...
@@ -2451,6 +2451,21 @@ err1:
/****************************************************************************
MODULE open/close object
****************************************************************************/
/**
A destructor for partition-specific TABLE_SHARE data.
*/
void
ha_data_partition_destroy
(
void
*
ha_data
)
{
if
(
ha_data
)
{
HA_DATA_PARTITION
*
ha_part_data
=
(
HA_DATA_PARTITION
*
)
ha_data
;
pthread_mutex_destroy
(
&
ha_part_data
->
LOCK_auto_inc
);
}
}
/*
Open handler object
...
...
@@ -2607,6 +2622,8 @@ int ha_partition::open(const char *name, int mode, uint test_if_locked)
}
DBUG_PRINT
(
"info"
,
(
"table_share->ha_data 0x%p"
,
ha_data
));
bzero
(
ha_data
,
sizeof
(
HA_DATA_PARTITION
));
table_share
->
ha_data_destroy
=
ha_data_partition_destroy
;
VOID
(
pthread_mutex_init
(
&
ha_data
->
LOCK_auto_inc
,
MY_MUTEX_INIT_FAST
));
}
if
(
is_not_tmp_table
)
pthread_mutex_unlock
(
&
table_share
->
mutex
);
...
...
@@ -5555,7 +5572,6 @@ int ha_partition::extra(enum ha_extra_function operation)
DBUG_RETURN
(
prepare_for_rename
());
break
;
case
HA_EXTRA_PREPARE_FOR_UPDATE
:
DBUG_ASSERT
(
m_extra_cache
);
/*
Needs to be run on the first partition in the range now, and
later in late_extra_cache, when switching to a new partition to scan.
...
...
@@ -5563,6 +5579,8 @@ int ha_partition::extra(enum ha_extra_function operation)
m_extra_prepare_for_update
=
TRUE
;
if
(
m_part_spec
.
start_part
!=
NO_CURRENT_PART_ID
)
{
if
(
!
m_extra_cache
)
m_extra_cache_part_id
=
m_part_spec
.
start_part
;
DBUG_ASSERT
(
m_extra_cache_part_id
==
m_part_spec
.
start_part
);
VOID
(
m_file
[
m_part_spec
.
start_part
]
->
extra
(
HA_EXTRA_PREPARE_FOR_UPDATE
));
}
...
...
@@ -5825,19 +5843,22 @@ void ha_partition::late_extra_cache(uint partition_id)
{
handler
*
file
;
DBUG_ENTER
(
"ha_partition::late_extra_cache"
);
DBUG_PRINT
(
"info"
,
(
"extra_cache %u partid %u size %u"
,
m_extra_cache
,
DBUG_PRINT
(
"info"
,
(
"extra_cache %u prepare %u partid %u size %u"
,
m_extra_cache
,
m_extra_prepare_for_update
,
partition_id
,
m_extra_cache_size
));
if
(
!
m_extra_cache
&&
!
m_extra_prepare_for_update
)
DBUG_VOID_RETURN
;
file
=
m_file
[
partition_id
];
if
(
m_extra_cache_size
==
0
)
VOID
(
file
->
extra
(
HA_EXTRA_CACHE
));
else
VOID
(
file
->
extra_opt
(
HA_EXTRA_CACHE
,
m_extra_cache_size
));
if
(
m_extra_cache
)
{
if
(
m_extra_cache_size
==
0
)
VOID
(
file
->
extra
(
HA_EXTRA_CACHE
));
else
VOID
(
file
->
extra_opt
(
HA_EXTRA_CACHE
,
m_extra_cache_size
));
}
if
(
m_extra_prepare_for_update
)
{
DBUG_ASSERT
(
m_extra_cache
);
VOID
(
file
->
extra
(
HA_EXTRA_PREPARE_FOR_UPDATE
));
}
m_extra_cache_part_id
=
partition_id
;
...
...
This diff is collapsed.
Click to expand it.
sql/ha_partition.h
View file @
00677a80
...
...
@@ -44,6 +44,7 @@ typedef struct st_partition_share
typedef
struct
st_ha_data_partition
{
ulonglong
next_auto_inc_val
;
/**< first non reserved value */
pthread_mutex_t
LOCK_auto_inc
;
bool
auto_inc_initialized
;
}
HA_DATA_PARTITION
;
...
...
@@ -948,8 +949,9 @@ private:
DBUG_ASSERT
(
table_share
->
ha_data
&&
!
auto_increment_lock
);
if
(
table_share
->
tmp_table
==
NO_TMP_TABLE
)
{
HA_DATA_PARTITION
*
ha_data
=
(
HA_DATA_PARTITION
*
)
table_share
->
ha_data
;
auto_increment_lock
=
TRUE
;
pthread_mutex_lock
(
&
table_share
->
mutex
);
pthread_mutex_lock
(
&
ha_data
->
LOCK_auto_inc
);
}
}
virtual
void
unlock_auto_increment
()
...
...
@@ -962,7 +964,8 @@ private:
*/
if
(
auto_increment_lock
&&
!
auto_increment_safe_stmt_log_lock
)
{
pthread_mutex_unlock
(
&
table_share
->
mutex
);
HA_DATA_PARTITION
*
ha_data
=
(
HA_DATA_PARTITION
*
)
table_share
->
ha_data
;
pthread_mutex_unlock
(
&
ha_data
->
LOCK_auto_inc
);
auto_increment_lock
=
FALSE
;
}
}
...
...
This diff is collapsed.
Click to expand it.
sql/item_func.cc
View file @
00677a80
...
...
@@ -4640,7 +4640,7 @@ void Item_func_get_user_var::fix_length_and_dec()
decimals
=
0
;
break
;
case
STRING_RESULT
:
max_length
=
MAX_BLOB_WIDTH
;
max_length
=
MAX_BLOB_WIDTH
-
1
;
break
;
case
DECIMAL_RESULT
:
max_length
=
DECIMAL_MAX_STR_LENGTH
;
...
...
This diff is collapsed.
Click to expand it.
sql/log.cc
View file @
00677a80
...
...
@@ -5072,10 +5072,32 @@ extern "C" my_bool reopen_fstreams(const char *filename,
FILE
*
outstream
,
FILE
*
errstream
)
{
int
handle_fd
;
int
stream
_fd
;
int
err_fd
,
out
_fd
;
HANDLE
osfh
;
DBUG_ASSERT
(
filename
&&
(
outstream
||
errstream
));
DBUG_ASSERT
(
filename
&&
errstream
);
// Services don't have stdout/stderr on Windows, so _fileno returns -1.
err_fd
=
_fileno
(
errstream
);
if
(
err_fd
<
0
)
{
if
(
!
freopen
(
filename
,
"a+"
,
errstream
))
return
TRUE
;
setbuf
(
errstream
,
NULL
);
err_fd
=
_fileno
(
errstream
);
}
if
(
outstream
)
{
out_fd
=
_fileno
(
outstream
);
if
(
out_fd
<
0
)
{
if
(
!
freopen
(
filename
,
"a+"
,
outstream
))
return
TRUE
;
out_fd
=
_fileno
(
outstream
);
}
}
if
((
osfh
=
CreateFile
(
filename
,
GENERIC_READ
|
GENERIC_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
|
...
...
@@ -5091,24 +5113,16 @@ extern "C" my_bool reopen_fstreams(const char *filename,
return
TRUE
;
}
if
(
outstream
)
if
(
_dup2
(
handle_fd
,
err_fd
)
<
0
)
{
stream_fd
=
_fileno
(
outstream
);
if
(
_dup2
(
handle_fd
,
stream_fd
)
<
0
)
{
CloseHandle
(
osfh
);
return
TRUE
;
}
CloseHandle
(
osfh
);
return
TRUE
;
}
if
(
errstream
)
if
(
outstream
&&
_dup2
(
handle_fd
,
out_fd
)
<
0
)
{
stream_fd
=
_fileno
(
errstream
);
if
(
_dup2
(
handle_fd
,
stream_fd
)
<
0
)
{
CloseHandle
(
osfh
);
return
TRUE
;
}
CloseHandle
(
osfh
);
return
TRUE
;
}
_close
(
handle_fd
);
...
...
This diff is collapsed.
Click to expand it.
sql/sql_cache.cc
View file @
00677a80
...
...
@@ -1330,6 +1330,7 @@ end:
}
#ifndef EMBEDDED_LIBRARY
/**
Send a single memory block from the query cache.
...
...
@@ -1377,6 +1378,7 @@ send_data_in_chunks(NET *net, const uchar *packet, ulong len)
return
FALSE
;
}
#endif
/*
...
...
This diff is collapsed.
Click to expand it.
sql/sql_table.cc
View file @
00677a80
...
...
@@ -4416,9 +4416,6 @@ static int prepare_for_repair(THD *thd, TABLE_LIST *table_list,
pthread_mutex_unlock
(
&
LOCK_open
);
}
/* A MERGE table must not come here. */
DBUG_ASSERT
(
!
table
->
child_l
);
/*
REPAIR TABLE ... USE_FRM for temporary tables makes little sense.
*/
...
...
This diff is collapsed.
Click to expand it.
sql/table.cc
View file @
00677a80
...
...
@@ -425,6 +425,11 @@ void free_table_share(TABLE_SHARE *share)
key_info
->
flags
=
0
;
}
}
if
(
share
->
ha_data_destroy
)
{
share
->
ha_data_destroy
(
share
->
ha_data
);
share
->
ha_data_destroy
=
NULL
;
}
/* We must copy mem_root from share because share is allocated through it */
memcpy
((
char
*
)
&
mem_root
,
(
char
*
)
&
share
->
mem_root
,
sizeof
(
mem_root
));
free_root
(
&
mem_root
,
MYF
(
0
));
// Free's share
...
...
@@ -1616,6 +1621,11 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
delete
crypted
;
delete
handler_file
;
hash_free
(
&
share
->
name_hash
);
if
(
share
->
ha_data_destroy
)
{
share
->
ha_data_destroy
(
share
->
ha_data
);
share
->
ha_data_destroy
=
NULL
;
}
open_table_error
(
share
,
error
,
share
->
open_errno
,
errarg
);
DBUG_RETURN
(
error
);
...
...
This diff is collapsed.
Click to expand it.
sql/table.h
View file @
00677a80
...
...
@@ -463,6 +463,7 @@ typedef struct st_table_share
/** place to store storage engine specific data */
void
*
ha_data
;
void
(
*
ha_data_destroy
)(
void
*
);
/* An optional destructor for ha_data. */
/*
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/btr/btr0btr.c
View file @
00677a80
...
...
@@ -2060,7 +2060,6 @@ btr_compress(
ulint
n_recs
;
ulint
max_ins_size
;
ulint
max_ins_size_reorg
;
ulint
level
;
ulint
comp
;
page
=
btr_cur_get_page
(
cursor
);
...
...
@@ -2072,7 +2071,6 @@ btr_compress(
MTR_MEMO_X_LOCK
));
ut_ad
(
mtr_memo_contains
(
mtr
,
buf_block_align
(
page
),
MTR_MEMO_PAGE_X_FIX
));
level
=
btr_page_get_level
(
page
,
mtr
);
space
=
dict_index_get_space
(
index
);
left_page_no
=
btr_page_get_prev
(
page
,
mtr
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/btr/btr0cur.c
View file @
00677a80
...
...
@@ -3365,7 +3365,9 @@ btr_store_big_rec_extern_fields(
page_t
*
page
;
ulint
space_id
;
page_t
*
prev_page
;
#ifdef UNIV_SYNC_DEBUG
page_t
*
rec_page
;
#endif
/* UNIV_SYNC_DEBUG */
ulint
prev_page_no
;
ulint
hint_page_no
;
ulint
i
;
...
...
@@ -3460,9 +3462,12 @@ btr_store_big_rec_extern_fields(
extern_len
-=
store_len
;
rec_page
=
buf_page_get
(
space_id
,
buf_frame_get_page_no
(
data
),
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
rec_page
=
#endif
/* UNIV_SYNC_DEBUG */
buf_page_get
(
space_id
,
buf_frame_get_page_no
(
data
),
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
buf_page_dbg_add_level
(
rec_page
,
SYNC_NO_ORDER_CHECK
);
#endif
/* UNIV_SYNC_DEBUG */
...
...
@@ -3536,10 +3541,11 @@ btr_free_externally_stored_field(
X-latch to the index tree */
{
page_t
*
page
;
#ifdef UNIV_SYNC_DEBUG
page_t
*
rec_page
;
#endif
/* UNIV_SYNC_DEBUG */
ulint
space_id
;
ulint
page_no
;
ulint
offset
;
ulint
extern_len
;
ulint
next_page_no
;
ulint
part_len
;
...
...
@@ -3556,9 +3562,12 @@ btr_free_externally_stored_field(
for
(;;)
{
mtr_start
(
&
mtr
);
rec_page
=
buf_page_get
(
buf_frame_get_space_id
(
data
),
buf_frame_get_page_no
(
data
),
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
rec_page
=
#endif
/* UNIV_SYNC_DEBUG */
buf_page_get
(
buf_frame_get_space_id
(
data
),
buf_frame_get_page_no
(
data
),
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
buf_page_dbg_add_level
(
rec_page
,
SYNC_NO_ORDER_CHECK
);
#endif
/* UNIV_SYNC_DEBUG */
...
...
@@ -3568,8 +3577,6 @@ btr_free_externally_stored_field(
page_no
=
mach_read_from_4
(
data
+
local_len
+
BTR_EXTERN_PAGE_NO
);
offset
=
mach_read_from_4
(
data
+
local_len
+
BTR_EXTERN_OFFSET
);
extern_len
=
mach_read_from_4
(
data
+
local_len
+
BTR_EXTERN_LEN
+
4
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/btr/btr0pcur.c
View file @
00677a80
...
...
@@ -429,7 +429,6 @@ btr_pcur_move_backward_from_page(
mtr_t
*
mtr
)
/* in: mtr */
{
ulint
prev_page_no
;
ulint
space
;
page_t
*
page
;
page_t
*
prev_page
;
ulint
latch_mode
;
...
...
@@ -465,7 +464,6 @@ btr_pcur_move_backward_from_page(
page
=
btr_pcur_get_page
(
cursor
);
prev_page_no
=
btr_page_get_prev
(
page
,
mtr
);
space
=
buf_frame_get_space_id
(
page
);
if
(
btr_pcur_is_before_first_on_page
(
cursor
,
mtr
)
&&
(
prev_page_no
!=
FIL_NULL
))
{
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/btr/btr0sea.c
View file @
00677a80
...
...
@@ -1401,7 +1401,6 @@ btr_search_update_hash_on_delete(
rec_t
*
rec
;
ulint
fold
;
dulint
index_id
;
ibool
found
;
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
mem_heap_t
*
heap
=
NULL
;
*
offsets_
=
(
sizeof
offsets_
)
/
sizeof
*
offsets_
;
...
...
@@ -1433,7 +1432,7 @@ btr_search_update_hash_on_delete(
}
rw_lock_x_lock
(
&
btr_search_latch
);
found
=
ha_search_and_delete_if_found
(
table
,
fold
,
rec
);
ha_search_and_delete_if_found
(
table
,
fold
,
rec
);
rw_lock_x_unlock
(
&
btr_search_latch
);
}
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/buf/buf0flu.c
View file @
00677a80
...
...
@@ -841,7 +841,6 @@ buf_flush_batch(
{
buf_block_t
*
block
;
ulint
page_count
=
0
;
ulint
old_page_count
;
ulint
space
;
ulint
offset
;
ibool
found
;
...
...
@@ -913,15 +912,9 @@ buf_flush_batch(
mutex_exit
(
&
block
->
mutex
);
mutex_exit
(
&
(
buf_pool
->
mutex
));
old_page_count
=
page_count
;
/* Try to flush also all the neighbors */
page_count
+=
buf_flush_try_neighbors
(
space
,
offset
,
flush_type
);
/* fprintf(stderr,
"Flush type %lu, page no %lu, neighb %lu\n",
flush_type, offset,
page_count - old_page_count); */
mutex_enter
(
&
(
buf_pool
->
mutex
));
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/eval/eval0eval.c
View file @
00677a80
...
...
@@ -367,18 +367,13 @@ eval_notfound(
/*==========*/
func_node_t
*
func_node
)
/* in: function node */
{
que_node_t
*
arg1
;
que_node_t
*
arg2
;
sym_node_t
*
cursor
;
sel_node_t
*
sel_node
;
ibool
ibool_val
;
arg1
=
func_node
->
args
;
arg2
=
que_node_get_next
(
arg1
);
ut_ad
(
func_node
->
func
==
PARS_NOTFOUND_TOKEN
);
cursor
=
arg1
;
cursor
=
func_node
->
args
;
ut_ad
(
que_node_get_type
(
cursor
)
==
QUE_NODE_SYMBOL
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/handler/ha_innodb.cc
View file @
00677a80
...
...
@@ -5966,7 +5966,6 @@ innobase_drop_database(
trx_t
*
parent_trx
;
trx_t
*
trx
;
char
*
ptr
;
int
error
;
char
*
namebuf
;
THD
*
thd
=
current_thd
;
...
...
@@ -6004,7 +6003,7 @@ innobase_drop_database(
trx
->
check_foreigns
=
FALSE
;
}
error
=
row_drop_database_for_mysql
(
namebuf
,
trx
);
row_drop_database_for_mysql
(
namebuf
,
trx
);
my_free
(
namebuf
,
MYF
(
0
));
/* Flush the log to reduce probability that the .frm files and
...
...
@@ -6020,13 +6019,7 @@ innobase_drop_database(
innobase_commit_low
(
trx
);
trx_free_for_mysql
(
trx
);
#ifdef NO_LONGER_INTERESTED_IN_DROP_DB_ERROR
error
=
convert_error_code_to_mysql
(
error
,
NULL
);
return
(
error
);
#else
return
;
#endif
}
/*************************************************************************
...
...
@@ -7543,12 +7536,9 @@ innodb_show_status(
mutex_exit_noninline
(
&
srv_monitor_file_mutex
);
bool
result
=
FALSE
;
stat_print
(
thd
,
innobase_hton_name
,
(
uint
)
strlen
(
innobase_hton_name
),
STRING_WITH_LEN
(
""
),
str
,
flen
);
if
(
stat_print
(
thd
,
innobase_hton_name
,
(
uint
)
strlen
(
innobase_hton_name
),
STRING_WITH_LEN
(
""
),
str
,
flen
))
{
result
=
TRUE
;
}
my_free
(
str
,
MYF
(
0
));
DBUG_RETURN
(
FALSE
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/include/ut0rnd.ic
View file @
00677a80
...
...
@@ -67,9 +67,6 @@ ut_rnd_gen_ulint(void)
/* out: the 'random' number */
{
ulint rnd;
ulint n_bits;
n_bits = 8 * sizeof(ulint);
ut_rnd_ulint_counter = UT_RND1 * ut_rnd_ulint_counter + UT_RND2;
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/lock/lock0lock.c
View file @
00677a80
...
...
@@ -4296,7 +4296,6 @@ lock_print_info_all_transactions(
lock_t
*
lock
;
ulint
space
;
ulint
page_no
;
page_t
*
page
;
ibool
load_page_first
=
TRUE
;
ulint
nth_trx
=
0
;
ulint
nth_lock
=
0
;
...
...
@@ -4410,8 +4409,7 @@ loop:
mtr_start
(
&
mtr
);
page
=
buf_page_get_with_no_latch
(
space
,
page_no
,
&
mtr
);
buf_page_get_with_no_latch
(
space
,
page_no
,
&
mtr
);
mtr_commit
(
&
mtr
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/log/log0recv.c
View file @
00677a80
...
...
@@ -400,10 +400,8 @@ recv_synchronize_groups(
dulint
start_lsn
;
dulint
end_lsn
;
dulint
recovered_lsn
;
dulint
limit_lsn
;
recovered_lsn
=
recv_sys
->
recovered_lsn
;
limit_lsn
=
recv_sys
->
limit_lsn
;
/* Read the last recovered log block to the recovery system buffer:
the block is always incomplete */
...
...
@@ -2506,7 +2504,9 @@ recv_recovery_from_checkpoint_start(
dulint
old_scanned_lsn
;
dulint
group_scanned_lsn
;
dulint
contiguous_lsn
;
#ifdef UNIV_LOG_ARCHIVE
dulint
archived_lsn
;
#endif
/* UNIV_LOG_ARCHIVE */
ulint
capacity
;
byte
*
buf
;
byte
log_hdr_buf
[
LOG_FILE_HDR_SIZE
];
...
...
@@ -2552,7 +2552,9 @@ recv_recovery_from_checkpoint_start(
checkpoint_lsn
=
mach_read_from_8
(
buf
+
LOG_CHECKPOINT_LSN
);
checkpoint_no
=
mach_read_from_8
(
buf
+
LOG_CHECKPOINT_NO
);
#ifdef UNIV_LOG_ARCHIVE
archived_lsn
=
mach_read_from_8
(
buf
+
LOG_CHECKPOINT_ARCHIVED_LSN
);
#endif
/* UNIV_LOG_ARCHIVE */
/* Read the first log file header to print a note if this is
a recovery from a restored InnoDB Hot Backup */
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/os/os0file.c
View file @
00677a80
...
...
@@ -1314,8 +1314,6 @@ try_again:
int
create_flag
;
ibool
retry
;
const
char
*
mode_str
=
NULL
;
const
char
*
type_str
=
NULL
;
const
char
*
purpose_str
=
NULL
;
try_again:
ut_a
(
name
);
...
...
@@ -1335,26 +1333,9 @@ try_again:
ut_error
;
}
if
(
type
==
OS_LOG_FILE
)
{
type_str
=
"LOG"
;
}
else
if
(
type
==
OS_DATA_FILE
)
{
type_str
=
"DATA"
;
}
else
{
ut_error
;
}
ut_a
(
type
==
OS_LOG_FILE
||
type
==
OS_DATA_FILE
);
ut_a
(
purpose
==
OS_FILE_AIO
||
purpose
==
OS_FILE_NORMAL
);
if
(
purpose
==
OS_FILE_AIO
)
{
purpose_str
=
"AIO"
;
}
else
if
(
purpose
==
OS_FILE_NORMAL
)
{
purpose_str
=
"NORMAL"
;
}
else
{
ut_error
;
}
#if 0
fprintf(stderr, "Opening file %s, mode %s, type %s, purpose %s\n",
name, mode_str, type_str, purpose_str);
#endif
#ifdef O_SYNC
/* We let O_SYNC only affect log files; note that we map O_DSYNC to
O_SYNC because the datasync options seemed to corrupt files in 2001
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/que/que0que.c
View file @
00677a80
...
...
@@ -802,13 +802,11 @@ que_thr_dec_refer_count(
{
que_fork_t
*
fork
;
trx_t
*
trx
;
sess_t
*
sess
;
ulint
fork_type
;
ibool
stopped
;
fork
=
thr
->
common
.
parent
;
trx
=
thr_get_trx
(
thr
);
sess
=
trx
->
sess
;
mutex_enter
(
&
kernel_mutex
);
...
...
@@ -1292,18 +1290,13 @@ que_run_threads_low(
que_thr_t
*
thr
)
/* in: query thread */
{
que_thr_t
*
next_thr
;
ulint
cumul_resource
;
ulint
loop_count
;
ut_ad
(
thr
->
state
==
QUE_THR_RUNNING
);
ut_a
(
thr_get_trx
(
thr
)
->
error_state
==
DB_SUCCESS
);
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
/* cumul_resource counts how much resources the OS thread (NOT the
query thread) has spent in this function */
loop_count
=
QUE_MAX_LOOPS_WITHOUT_CHECK
;
cumul_resource
=
0
;
loop:
/* Check that there is enough space in the log to accommodate
possible log entries by this query step; if the operation can touch
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/row/row0mysql.c
View file @
00677a80
...
...
@@ -1447,7 +1447,12 @@ run_again:
srv_n_rows_updated
++
;
}
row_update_statistics_if_needed
(
prebuilt
->
table
);
/* We update table statistics only if it is a DELETE or UPDATE
that changes indexed columns, UPDATEs that change only non-indexed
columns would not affect statistics. */
if
(
node
->
is_delete
||
!
(
node
->
cmpl_info
&
UPD_NODE_NO_ORD_CHANGE
))
{
row_update_statistics_if_needed
(
prebuilt
->
table
);
}
trx
->
op_info
=
""
;
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/row/row0purge.c
View file @
00677a80
...
...
@@ -667,7 +667,7 @@ row_purge_step(
err
=
row_purge
(
node
,
thr
);
ut_a
d
(
err
==
DB_SUCCESS
);
ut_a
(
err
==
DB_SUCCESS
);
return
(
thr
);
}
This diff is collapsed.
Click to expand it.
storage/innobase/row/row0umod.c
View file @
00677a80
...
...
@@ -89,12 +89,17 @@ row_undo_mod_clust_low(
btr_pcur_t
*
pcur
;
btr_cur_t
*
btr_cur
;
ulint
err
;
#ifdef UNIV_DEBUG
ibool
success
;
#endif
/* UNIV_DEBUG */
pcur
=
&
(
node
->
pcur
);
btr_cur
=
btr_pcur_get_btr_cur
(
pcur
);
success
=
btr_pcur_restore_position
(
mode
,
pcur
,
mtr
);
#ifdef UNIV_DEBUG
success
=
#endif
/* UNIV_DEBUG */
btr_pcur_restore_position
(
mode
,
pcur
,
mtr
);
ut_ad
(
success
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/row/row0upd.c
View file @
00677a80
...
...
@@ -2037,7 +2037,9 @@ row_upd_in_place_in_select(
upd_node_t
*
node
;
btr_pcur_t
*
pcur
;
btr_cur_t
*
btr_cur
;
#ifdef UNIV_DEBUG
ulint
err
;
#endif
/* UNIV_DEBUG */
mem_heap_t
*
heap
=
NULL
;
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
*
offsets_
=
(
sizeof
offsets_
)
/
sizeof
*
offsets_
;
...
...
@@ -2074,8 +2076,11 @@ row_upd_in_place_in_select(
ut_ad
(
node
->
cmpl_info
&
UPD_NODE_NO_ORD_CHANGE
);
ut_ad
(
node
->
select_will_do_update
);
err
=
btr_cur_update_in_place
(
BTR_NO_LOCKING_FLAG
,
btr_cur
,
node
->
update
,
node
->
cmpl_info
,
thr
,
mtr
);
#ifdef UNIV_DEBUG
err
=
#endif
/* UNIV_DEBUG */
btr_cur_update_in_place
(
BTR_NO_LOCKING_FLAG
,
btr_cur
,
node
->
update
,
node
->
cmpl_info
,
thr
,
mtr
);
ut_ad
(
err
==
DB_SUCCESS
);
}
This diff is collapsed.
Click to expand it.
storage/innobase/row/row0vers.c
View file @
00677a80
...
...
@@ -59,7 +59,9 @@ row_vers_impl_x_locked_off_kernel(
trx_t
*
trx
;
ulint
vers_del
;
ulint
rec_del
;
#ifdef UNIV_DEBUG
ulint
err
;
#endif
/* UNIV_DEBUG */
mtr_t
mtr
;
ulint
comp
;
...
...
@@ -152,9 +154,12 @@ row_vers_impl_x_locked_off_kernel(
heap2
=
heap
;
heap
=
mem_heap_create
(
1024
);
err
=
trx_undo_prev_version_build
(
clust_rec
,
&
mtr
,
version
,
clust_index
,
clust_offsets
,
heap
,
&
prev_version
);
#ifdef UNIV_DEBUG
err
=
#endif
/* UNIV_DEBUG */
trx_undo_prev_version_build
(
clust_rec
,
&
mtr
,
version
,
clust_index
,
clust_offsets
,
heap
,
&
prev_version
);
mem_heap_free
(
heap2
);
/* free version and clust_offsets */
if
(
prev_version
)
{
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0purge.c
View file @
00677a80
...
...
@@ -249,9 +249,10 @@ trx_purge_add_update_undo_to_history(
trx_undo_t
*
undo
;
trx_rseg_t
*
rseg
;
trx_rsegf_t
*
rseg_header
;
#ifdef UNIV_DEBUG
trx_usegf_t
*
seg_header
;
#endif
/* UNIV_DEBUG */
trx_ulogf_t
*
undo_header
;
trx_upagef_t
*
page_header
;
ulint
hist_size
;
undo
=
trx
->
update_undo
;
...
...
@@ -265,8 +266,9 @@ trx_purge_add_update_undo_to_history(
rseg_header
=
trx_rsegf_get
(
rseg
->
space
,
rseg
->
page_no
,
mtr
);
undo_header
=
undo_page
+
undo
->
hdr_offset
;
#ifdef UNIV_DEBUG
seg_header
=
undo_page
+
TRX_UNDO_SEG_HDR
;
page_header
=
undo_page
+
TRX_UNDO_PAGE_HDR
;
#endif
/* UNIV_DEBUG */
if
(
undo
->
state
!=
TRX_UNDO_CACHED
)
{
/* The undo log segment will not be reused */
...
...
@@ -594,7 +596,6 @@ trx_purge_rseg_get_next_history_log(
{
page_t
*
undo_page
;
trx_ulogf_t
*
log_hdr
;
trx_usegf_t
*
seg_hdr
;
fil_addr_t
prev_log_addr
;
dulint
trx_no
;
ibool
del_marks
;
...
...
@@ -615,7 +616,6 @@ trx_purge_rseg_get_next_history_log(
undo_page
=
trx_undo_page_get_s_latched
(
rseg
->
space
,
rseg
->
last_page_no
,
&
mtr
);
log_hdr
=
undo_page
+
rseg
->
last_offset
;
seg_hdr
=
undo_page
+
TRX_UNDO_SEG_HDR
;
/* Increase the purge page count by one for every handled log */
...
...
@@ -1004,12 +1004,8 @@ trx_purge_rec_release(
/*==================*/
trx_undo_inf_t
*
cell
)
/* in: storage cell */
{
trx_undo_arr_t
*
arr
;
mutex_enter
(
&
(
purge_sys
->
mutex
));
arr
=
purge_sys
->
arr
;
trx_purge_arr_remove_info
(
cell
);
mutex_exit
(
&
(
purge_sys
->
mutex
));
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0roll.c
View file @
00677a80
...
...
@@ -713,13 +713,8 @@ trx_undo_arr_remove_info(
dulint
undo_no
)
/* in: undo number */
{
trx_undo_inf_t
*
cell
;
ulint
n_used
;
ulint
n
;
ulint
i
;
n_used
=
arr
->
n_used
;
n
=
0
;
for
(
i
=
0
;;
i
++
)
{
cell
=
trx_undo_arr_get_nth_info
(
arr
,
i
);
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0sys.c
View file @
00677a80
...
...
@@ -165,7 +165,9 @@ trx_sys_create_doublewrite_buf(void)
{
page_t
*
page
;
page_t
*
page2
;
#ifdef UNIV_SYNC_DEBUG
page_t
*
new_page
;
#endif
/* UNIV_SYNC_DEBUG */
byte
*
doublewrite
;
byte
*
fseg_header
;
ulint
page_no
;
...
...
@@ -271,8 +273,11 @@ start_again:
the page position in the tablespace, then the page
has not been written to in doublewrite. */
new_page
=
buf_page_get
(
TRX_SYS_SPACE
,
page_no
,
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
new_page
=
#endif
/* UNIV_SYNC_DEBUG */
buf_page_get
(
TRX_SYS_SPACE
,
page_no
,
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
buf_page_dbg_add_level
(
new_page
,
SYNC_NO_ORDER_CHECK
);
#endif
/* UNIV_SYNC_DEBUG */
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0trx.c
View file @
00677a80
...
...
@@ -1827,7 +1827,6 @@ trx_prepare_off_kernel(
/*===================*/
trx_t
*
trx
)
/* in: transaction */
{
page_t
*
update_hdr_page
;
trx_rseg_t
*
rseg
;
ibool
must_flush_log
=
FALSE
;
dulint
lsn
;
...
...
@@ -1863,7 +1862,7 @@ trx_prepare_off_kernel(
}
if
(
trx
->
update_undo
)
{
update_hdr_page
=
trx_undo_set_state_at_prepare
(
trx_undo_set_state_at_prepare
(
trx
,
trx
->
update_undo
,
&
mtr
);
}
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0undo.c
View file @
00677a80
...
...
@@ -1012,14 +1012,11 @@ trx_undo_truncate_end(
ulint
last_page_no
;
trx_undo_rec_t
*
rec
;
trx_undo_rec_t
*
trunc_here
;
trx_rseg_t
*
rseg
;
mtr_t
mtr
;
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
ut_ad
(
mutex_own
(
&
(
trx
->
rseg
->
mutex
)));
rseg
=
trx
->
rseg
;
for
(;;)
{
mtr_start
(
&
mtr
);
...
...
@@ -1798,7 +1795,6 @@ trx_undo_set_state_at_prepare(
mtr_t
*
mtr
)
/* in: mtr */
{
trx_usegf_t
*
seg_hdr
;
trx_upagef_t
*
page_hdr
;
trx_ulogf_t
*
undo_header
;
page_t
*
undo_page
;
ulint
offset
;
...
...
@@ -1815,7 +1811,6 @@ trx_undo_set_state_at_prepare(
undo_page
=
trx_undo_page_get
(
undo
->
space
,
undo
->
hdr_page_no
,
mtr
);
seg_hdr
=
undo_page
+
TRX_UNDO_SEG_HDR
;
page_hdr
=
undo_page
+
TRX_UNDO_PAGE_HDR
;
/*------------------------------*/
undo
->
state
=
TRX_UNDO_PREPARED
;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/ChangeLog
View file @
00677a80
2010-09-06 The InnoDB Team
* dict/dict0load.c, innodb_bug53756.test innodb_bug53756.result
Fix Bug #53756 ALTER TABLE ADD PRIMARY KEY affects crash recovery
2010-08-24 The InnoDB Team
* handler/ha_innodb.c, dict/dict0dict.c:
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/btr/btr0btr.c
View file @
00677a80
...
...
@@ -1895,7 +1895,6 @@ btr_page_split_and_insert(
buf_block_t
*
left_block
;
buf_block_t
*
right_block
;
buf_block_t
*
insert_block
;
page_t
*
insert_page
;
page_cur_t
*
page_cursor
;
rec_t
*
first_rec
;
byte
*
buf
=
0
;
/* remove warning */
...
...
@@ -2153,8 +2152,6 @@ insert_empty:
insert_block
=
right_block
;
}
insert_page
=
buf_block_get_frame
(
insert_block
);
/* 7. Reposition the cursor for insert and try insertion */
page_cursor
=
btr_cur_get_page_cur
(
cursor
);
...
...
@@ -2166,8 +2163,12 @@ insert_empty:
#ifdef UNIV_ZIP_DEBUG
{
page_t
*
insert_page
=
buf_block_get_frame
(
insert_block
);
page_zip_des_t
*
insert_page_zip
=
buf_block_get_page_zip
(
insert_block
);
ut_a
(
!
insert_page_zip
||
page_zip_validate
(
insert_page_zip
,
insert_page
));
}
...
...
@@ -2560,7 +2561,6 @@ btr_compress(
ulint
n_recs
;
ulint
max_ins_size
;
ulint
max_ins_size_reorg
;
ulint
level
;
block
=
btr_cur_get_block
(
cursor
);
page
=
btr_cur_get_page
(
cursor
);
...
...
@@ -2570,7 +2570,6 @@ btr_compress(
ut_ad
(
mtr_memo_contains
(
mtr
,
dict_index_get_lock
(
index
),
MTR_MEMO_X_LOCK
));
ut_ad
(
mtr_memo_contains
(
mtr
,
block
,
MTR_MEMO_PAGE_X_FIX
));
level
=
btr_page_get_level
(
page
,
mtr
);
space
=
dict_index_get_space
(
index
);
zip_size
=
dict_table_zip_size
(
index
->
table
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/btr/btr0cur.c
View file @
00677a80
...
...
@@ -1836,7 +1836,6 @@ btr_cur_optimistic_update(
page_t
*
page
;
page_zip_des_t
*
page_zip
;
rec_t
*
rec
;
rec_t
*
orig_rec
;
ulint
max_size
;
ulint
new_rec_size
;
ulint
old_rec_size
;
...
...
@@ -1850,7 +1849,7 @@ btr_cur_optimistic_update(
block
=
btr_cur_get_block
(
cursor
);
page
=
buf_block_get_frame
(
block
);
orig_rec
=
rec
=
btr_cur_get_rec
(
cursor
);
rec
=
btr_cur_get_rec
(
cursor
);
index
=
cursor
->
index
;
ut_ad
(
!!
page_rec_is_comp
(
rec
)
==
dict_table_is_comp
(
index
->
table
));
ut_ad
(
mtr_memo_contains
(
mtr
,
block
,
MTR_MEMO_PAGE_X_FIX
));
...
...
@@ -4279,12 +4278,17 @@ btr_free_externally_stored_field(
}
for
(;;)
{
#ifdef UNIV_SYNC_DEBUG
buf_block_t
*
rec_block
;
#endif
/* UNIV_SYNC_DEBUG */
buf_block_t
*
ext_block
;
mtr_start
(
&
mtr
);
rec_block
=
buf_page_get
(
page_get_space_id
(
#ifdef UNIV_SYNC_DEBUG
rec_block
=
#endif
/* UNIV_SYNC_DEBUG */
buf_page_get
(
page_get_space_id
(
page_align
(
field_ref
)),
rec_zip_size
,
page_get_page_no
(
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/btr/btr0pcur.c
View file @
00677a80
...
...
@@ -452,7 +452,6 @@ btr_pcur_move_backward_from_page(
mtr_t
*
mtr
)
/*!< in: mtr */
{
ulint
prev_page_no
;
ulint
space
;
page_t
*
page
;
buf_block_t
*
prev_block
;
ulint
latch_mode
;
...
...
@@ -488,7 +487,6 @@ btr_pcur_move_backward_from_page(
page
=
btr_pcur_get_page
(
cursor
);
prev_page_no
=
btr_page_get_prev
(
page
,
mtr
);
space
=
buf_block_get_space
(
btr_pcur_get_block
(
cursor
));
if
(
prev_page_no
==
FIL_NULL
)
{
}
else
if
(
btr_pcur_is_before_first_on_page
(
cursor
))
{
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/btr/btr0sea.c
View file @
00677a80
...
...
@@ -1495,7 +1495,6 @@ btr_search_update_hash_on_delete(
rec_t
*
rec
;
ulint
fold
;
dulint
index_id
;
ibool
found
;
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
mem_heap_t
*
heap
=
NULL
;
rec_offs_init
(
offsets_
);
...
...
@@ -1528,7 +1527,7 @@ btr_search_update_hash_on_delete(
}
rw_lock_x_lock
(
&
btr_search_latch
);
found
=
ha_search_and_delete_if_found
(
table
,
fold
,
rec
);
ha_search_and_delete_if_found
(
table
,
fold
,
rec
);
rw_lock_x_unlock
(
&
btr_search_latch
);
}
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/buf/buf0flu.c
View file @
00677a80
...
...
@@ -128,10 +128,15 @@ buf_flush_delete_from_flush_rbt(
buf_page_t
*
bpage
)
/*!< in: bpage to be removed. */
{
#ifdef UNIV_DEBUG
ibool
ret
=
FALSE
;
#endif
/* UNIV_DEBUG */
ut_ad
(
buf_pool_mutex_own
());
ret
=
rbt_delete
(
buf_pool
->
flush_rbt
,
&
bpage
);
#ifdef UNIV_DEBUG
ret
=
#endif
/* UNIV_DEBUG */
rbt_delete
(
buf_pool
->
flush_rbt
,
&
bpage
);
ut_ad
(
ret
);
}
...
...
@@ -1266,7 +1271,6 @@ buf_flush_batch(
{
buf_page_t
*
bpage
;
ulint
page_count
=
0
;
ulint
old_page_count
;
ulint
space
;
ulint
offset
;
...
...
@@ -1338,15 +1342,9 @@ flush_next:
buf_pool_mutex_exit
();
old_page_count
=
page_count
;
/* Try to flush also all the neighbors */
page_count
+=
buf_flush_try_neighbors
(
space
,
offset
,
flush_type
);
/* fprintf(stderr,
"Flush type %lu, page no %lu, neighb %lu\n",
flush_type, offset,
page_count - old_page_count); */
buf_pool_mutex_enter
();
goto
flush_next
;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/dict/dict0crea.c
View file @
00677a80
...
...
@@ -627,7 +627,6 @@ dict_create_index_tree_step(
{
dict_index_t
*
index
;
dict_table_t
*
sys_indexes
;
dict_table_t
*
table
;
dtuple_t
*
search_tuple
;
ulint
zip_size
;
btr_pcur_t
pcur
;
...
...
@@ -636,7 +635,6 @@ dict_create_index_tree_step(
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
index
=
node
->
index
;
table
=
node
->
table
;
sys_indexes
=
dict_sys
->
sys_indexes
;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/dict/dict0dict.c
View file @
00677a80
...
...
@@ -4441,7 +4441,6 @@ dict_index_print_low(
{
ib_int64_t
n_vals
;
ulint
i
;
const
char
*
type_string
;
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
...
...
@@ -4456,14 +4455,6 @@ dict_index_print_low(
dict_index_stat_mutex_exit
(
index
);
if
(
dict_index_is_clust
(
index
))
{
type_string
=
"clustered index"
;
}
else
if
(
dict_index_is_unique
(
index
))
{
type_string
=
"unique index"
;
}
else
{
type_string
=
"secondary index"
;
}
fprintf
(
stderr
,
" INDEX: name %s, id %lu %lu, fields %lu/%lu,"
" uniq %lu, type %lu
\n
"
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/dict/dict0load.c
View file @
00677a80
...
...
@@ -1072,6 +1072,8 @@ dict_load_table_on_id(
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
table
=
NULL
;
/* NOTE that the operation of this function is protected by
the dictionary mutex, and therefore no deadlocks can occur
with other dictionary operations. */
...
...
@@ -1098,15 +1100,17 @@ dict_load_table_on_id(
BTR_SEARCH_LEAF
,
&
pcur
,
&
mtr
);
rec
=
btr_pcur_get_rec
(
&
pcur
);
if
(
!
btr_pcur_is_on_user_rec
(
&
pcur
)
||
rec_get_deleted_flag
(
rec
,
0
))
{
if
(
!
btr_pcur_is_on_user_rec
(
&
pcur
))
{
/* Not found */
goto
func_exit
;
}
btr_pcur_close
(
&
pcur
);
mtr_commit
(
&
mtr
);
mem_heap_free
(
heap
);
return
(
NULL
);
/* Find the first record that is not delete marked */
while
(
rec_get_deleted_flag
(
rec
,
0
))
{
if
(
!
btr_pcur_move_to_next_user_rec
(
&
pcur
,
&
mtr
))
{
goto
func_exit
;
}
rec
=
btr_pcur_get_rec
(
&
pcur
);
}
/*---------------------------------------------------*/
...
...
@@ -1119,19 +1123,14 @@ dict_load_table_on_id(
/* Check if the table id in record is the one searched for */
if
(
ut_dulint_cmp
(
table_id
,
mach_read_from_8
(
field
))
!=
0
)
{
btr_pcur_close
(
&
pcur
);
mtr_commit
(
&
mtr
);
mem_heap_free
(
heap
);
return
(
NULL
);
goto
func_exit
;
}
/* Now we get the table name from the record */
field
=
rec_get_nth_field_old
(
rec
,
1
,
&
len
);
/* Load the table definition to memory */
table
=
dict_load_table
(
mem_heap_strdupl
(
heap
,
(
char
*
)
field
,
len
));
func_exit:
btr_pcur_close
(
&
pcur
);
mtr_commit
(
&
mtr
);
mem_heap_free
(
heap
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/eval/eval0eval.c
View file @
00677a80
...
...
@@ -384,18 +384,13 @@ eval_notfound(
/*==========*/
func_node_t
*
func_node
)
/*!< in: function node */
{
que_node_t
*
arg1
;
que_node_t
*
arg2
;
sym_node_t
*
cursor
;
sel_node_t
*
sel_node
;
ibool
ibool_val
;
arg1
=
func_node
->
args
;
arg2
=
que_node_get_next
(
arg1
);
ut_ad
(
func_node
->
func
==
PARS_NOTFOUND_TOKEN
);
cursor
=
arg1
;
cursor
=
func_node
->
args
;
ut_ad
(
que_node_get_type
(
cursor
)
==
QUE_NODE_SYMBOL
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/handler/ha_innodb.cc
View file @
00677a80
...
...
@@ -7007,7 +7007,6 @@ innobase_drop_database(
ulint
len
=
0
;
trx_t
*
trx
;
char
*
ptr
;
int
error
;
char
*
namebuf
;
THD
*
thd
=
current_thd
;
...
...
@@ -7050,7 +7049,7 @@ innobase_drop_database(
#else
trx
=
innobase_trx_allocate
(
thd
);
#endif
error
=
row_drop_database_for_mysql
(
namebuf
,
trx
);
row_drop_database_for_mysql
(
namebuf
,
trx
);
my_free
(
namebuf
,
MYF
(
0
));
/* Flush the log to reduce probability that the .frm files and
...
...
@@ -8848,12 +8847,9 @@ innodb_show_status(
mutex_exit
(
&
srv_monitor_file_mutex
);
bool
result
=
FALSE
;
stat_print
(
thd
,
innobase_hton_name
,
(
uint
)
strlen
(
innobase_hton_name
),
STRING_WITH_LEN
(
""
),
str
,
flen
);
if
(
stat_print
(
thd
,
innobase_hton_name
,
(
uint
)
strlen
(
innobase_hton_name
),
STRING_WITH_LEN
(
""
),
str
,
flen
))
{
result
=
TRUE
;
}
my_free
(
str
,
MYF
(
0
));
DBUG_RETURN
(
FALSE
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/handler/i_s.cc
View file @
00677a80
...
...
@@ -1012,6 +1012,7 @@ trx_i_s_common_fill_table(
deadlock occurs between the mysqld server and mysql client,
see http://bugs.mysql.com/29900 ; when that bug is resolved
we can enable the DBUG_RETURN(ret) above */
ret
++
;
// silence a gcc46 warning
DBUG_RETURN
(
0
);
#endif
}
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/include/os0sync.h
View file @
00677a80
...
...
@@ -330,7 +330,7 @@ amount of increment. */
Returns the old value of *ptr, atomically sets *ptr to new_val */
# define os_atomic_test_and_set_byte(ptr, new_val) \
__sync_lock_test_and_set(ptr, new_val)
__sync_lock_test_and_set(ptr,
(byte)
new_val)
#elif defined(HAVE_IB_SOLARIS_ATOMICS)
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/include/univ.i
View file @
00677a80
...
...
@@ -46,7 +46,7 @@ Created 1/20/1994 Heikki Tuuri
#
define
INNODB_VERSION_MAJOR
1
#
define
INNODB_VERSION_MINOR
0
#
define
INNODB_VERSION_BUGFIX
1
2
#
define
INNODB_VERSION_BUGFIX
1
3
/* The following is the InnoDB version as shown in
SELECT plugin_version FROM information_schema.plugins;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/include/ut0rnd.ic
View file @
00677a80
...
...
@@ -85,9 +85,6 @@ ut_rnd_gen_ulint(void)
/*==================*/
{
ulint rnd;
ulint n_bits;
n_bits = 8 * sizeof(ulint);
ut_rnd_ulint_counter = UT_RND1 * ut_rnd_ulint_counter + UT_RND2;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/log/log0recv.c
View file @
00677a80
...
...
@@ -559,10 +559,8 @@ recv_synchronize_groups(
ib_uint64_t
start_lsn
;
ib_uint64_t
end_lsn
;
ib_uint64_t
recovered_lsn
;
ib_uint64_t
limit_lsn
;
recovered_lsn
=
recv_sys
->
recovered_lsn
;
limit_lsn
=
recv_sys
->
limit_lsn
;
/* Read the last recovered log block to the recovery system buffer:
the block is always incomplete */
...
...
@@ -2891,7 +2889,9 @@ recv_recovery_from_checkpoint_start_func(
ib_uint64_t
old_scanned_lsn
;
ib_uint64_t
group_scanned_lsn
;
ib_uint64_t
contiguous_lsn
;
#ifdef UNIV_LOG_ARCHIVE
ib_uint64_t
archived_lsn
;
#endif
/* UNIV_LOG_ARCHIVE */
byte
*
buf
;
byte
log_hdr_buf
[
LOG_FILE_HDR_SIZE
];
ulint
err
;
...
...
@@ -2946,7 +2946,9 @@ recv_recovery_from_checkpoint_start_func(
checkpoint_lsn
=
mach_read_ull
(
buf
+
LOG_CHECKPOINT_LSN
);
checkpoint_no
=
mach_read_ull
(
buf
+
LOG_CHECKPOINT_NO
);
#ifdef UNIV_LOG_ARCHIVE
archived_lsn
=
mach_read_ull
(
buf
+
LOG_CHECKPOINT_ARCHIVED_LSN
);
#endif
/* UNIV_LOG_ARCHIVE */
/* Read the first log file header to print a note if this is
a recovery from a restored InnoDB Hot Backup */
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/os/os0file.c
View file @
00677a80
...
...
@@ -1367,8 +1367,6 @@ try_again:
int
create_flag
;
ibool
retry
;
const
char
*
mode_str
=
NULL
;
const
char
*
type_str
=
NULL
;
const
char
*
purpose_str
=
NULL
;
try_again:
ut_a
(
name
);
...
...
@@ -1388,26 +1386,9 @@ try_again:
ut_error
;
}
if
(
type
==
OS_LOG_FILE
)
{
type_str
=
"LOG"
;
}
else
if
(
type
==
OS_DATA_FILE
)
{
type_str
=
"DATA"
;
}
else
{
ut_error
;
}
ut_a
(
type
==
OS_LOG_FILE
||
type
==
OS_DATA_FILE
);
ut_a
(
purpose
==
OS_FILE_AIO
||
purpose
==
OS_FILE_NORMAL
);
if
(
purpose
==
OS_FILE_AIO
)
{
purpose_str
=
"AIO"
;
}
else
if
(
purpose
==
OS_FILE_NORMAL
)
{
purpose_str
=
"NORMAL"
;
}
else
{
ut_error
;
}
#if 0
fprintf(stderr, "Opening file %s, mode %s, type %s, purpose %s\n",
name, mode_str, type_str, purpose_str);
#endif
#ifdef O_SYNC
/* We let O_SYNC only affect log files; note that we map O_DSYNC to
O_SYNC because the datasync options seemed to corrupt files in 2001
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/que/que0que.c
View file @
00677a80
...
...
@@ -1284,18 +1284,13 @@ que_run_threads_low(
que_thr_t
*
thr
)
/*!< in: query thread */
{
que_thr_t
*
next_thr
;
ulint
cumul_resource
;
ulint
loop_count
;
ut_ad
(
thr
->
state
==
QUE_THR_RUNNING
);
ut_a
(
thr_get_trx
(
thr
)
->
error_state
==
DB_SUCCESS
);
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
/* cumul_resource counts how much resources the OS thread (NOT the
query thread) has spent in this function */
loop_count
=
QUE_MAX_LOOPS_WITHOUT_CHECK
;
cumul_resource
=
0
;
loop:
/* Check that there is enough space in the log to accommodate
possible log entries by this query step; if the operation can touch
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/row/row0mysql.c
View file @
00677a80
...
...
@@ -1422,7 +1422,12 @@ run_again:
srv_n_rows_updated
++
;
}
row_update_statistics_if_needed
(
prebuilt
->
table
);
/* We update table statistics only if it is a DELETE or UPDATE
that changes indexed columns, UPDATEs that change only non-indexed
columns would not affect statistics. */
if
(
node
->
is_delete
||
!
(
node
->
cmpl_info
&
UPD_NODE_NO_ORD_CHANGE
))
{
row_update_statistics_if_needed
(
prebuilt
->
table
);
}
trx
->
op_info
=
""
;
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/row/row0purge.c
View file @
00677a80
...
...
@@ -684,7 +684,9 @@ row_purge_step(
que_thr_t
*
thr
)
/*!< in: query thread */
{
purge_node_t
*
node
;
#ifdef UNIV_DEBUG
ulint
err
;
#endif
/* UNIV_DEBUG */
ut_ad
(
thr
);
...
...
@@ -692,7 +694,10 @@ row_purge_step(
ut_ad
(
que_node_get_type
(
node
)
==
QUE_NODE_PURGE
);
err
=
row_purge
(
node
,
thr
);
#ifdef UNIV_DEBUG
err
=
#endif
/* UNIV_DEBUG */
row_purge
(
node
,
thr
);
ut_ad
(
err
==
DB_SUCCESS
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/row/row0umod.c
View file @
00677a80
...
...
@@ -114,12 +114,17 @@ row_undo_mod_clust_low(
btr_pcur_t
*
pcur
;
btr_cur_t
*
btr_cur
;
ulint
err
;
#ifdef UNIV_DEBUG
ibool
success
;
#endif
/* UNIV_DEBUG */
pcur
=
&
(
node
->
pcur
);
btr_cur
=
btr_pcur_get_btr_cur
(
pcur
);
success
=
btr_pcur_restore_position
(
mode
,
pcur
,
mtr
);
#ifdef UNIV_DEBUG
success
=
#endif
/* UNIV_DEBUG */
btr_pcur_restore_position
(
mode
,
pcur
,
mtr
);
ut_ad
(
success
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/row/row0vers.c
View file @
00677a80
...
...
@@ -71,7 +71,9 @@ row_vers_impl_x_locked_off_kernel(
warning */
trx_t
*
trx
;
ulint
rec_del
;
#ifdef UNIV_DEBUG
ulint
err
;
#endif
/* UNIV_DEBUG */
mtr_t
mtr
;
ulint
comp
;
...
...
@@ -169,9 +171,12 @@ row_vers_impl_x_locked_off_kernel(
heap2
=
heap
;
heap
=
mem_heap_create
(
1024
);
err
=
trx_undo_prev_version_build
(
clust_rec
,
&
mtr
,
version
,
clust_index
,
clust_offsets
,
heap
,
&
prev_version
);
#ifdef UNIV_DEBUG
err
=
#endif
/* UNIV_DEBUG */
trx_undo_prev_version_build
(
clust_rec
,
&
mtr
,
version
,
clust_index
,
clust_offsets
,
heap
,
&
prev_version
);
mem_heap_free
(
heap2
);
/* free version and clust_offsets */
if
(
prev_version
==
NULL
)
{
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/trx/trx0purge.c
View file @
00677a80
...
...
@@ -304,9 +304,10 @@ trx_purge_add_update_undo_to_history(
trx_undo_t
*
undo
;
trx_rseg_t
*
rseg
;
trx_rsegf_t
*
rseg_header
;
#ifdef UNIV_DEBUG
trx_usegf_t
*
seg_header
;
#endif
/* UNIV_DEBUG */
trx_ulogf_t
*
undo_header
;
trx_upagef_t
*
page_header
;
ulint
hist_size
;
undo
=
trx
->
update_undo
;
...
...
@@ -321,8 +322,9 @@ trx_purge_add_update_undo_to_history(
rseg
->
page_no
,
mtr
);
undo_header
=
undo_page
+
undo
->
hdr_offset
;
#ifdef UNIV_DEBUG
seg_header
=
undo_page
+
TRX_UNDO_SEG_HDR
;
page_header
=
undo_page
+
TRX_UNDO_PAGE_HDR
;
#endif
/* UNIV_DEBUG */
if
(
undo
->
state
!=
TRX_UNDO_CACHED
)
{
/* The undo log segment will not be reused */
...
...
@@ -655,7 +657,6 @@ trx_purge_rseg_get_next_history_log(
{
page_t
*
undo_page
;
trx_ulogf_t
*
log_hdr
;
trx_usegf_t
*
seg_hdr
;
fil_addr_t
prev_log_addr
;
trx_id_t
trx_no
;
ibool
del_marks
;
...
...
@@ -676,7 +677,6 @@ trx_purge_rseg_get_next_history_log(
undo_page
=
trx_undo_page_get_s_latched
(
rseg
->
space
,
rseg
->
zip_size
,
rseg
->
last_page_no
,
&
mtr
);
log_hdr
=
undo_page
+
rseg
->
last_offset
;
seg_hdr
=
undo_page
+
TRX_UNDO_SEG_HDR
;
/* Increase the purge page count by one for every handled log */
...
...
@@ -1068,12 +1068,8 @@ trx_purge_rec_release(
/*==================*/
trx_undo_inf_t
*
cell
)
/*!< in: storage cell */
{
trx_undo_arr_t
*
arr
;
mutex_enter
(
&
(
purge_sys
->
mutex
));
arr
=
purge_sys
->
arr
;
trx_purge_arr_remove_info
(
cell
);
mutex_exit
(
&
(
purge_sys
->
mutex
));
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/trx/trx0roll.c
View file @
00677a80
...
...
@@ -740,13 +740,8 @@ trx_undo_arr_remove_info(
undo_no_t
undo_no
)
/*!< in: undo number */
{
trx_undo_inf_t
*
cell
;
ulint
n_used
;
ulint
n
;
ulint
i
;
n_used
=
arr
->
n_used
;
n
=
0
;
for
(
i
=
0
;;
i
++
)
{
cell
=
trx_undo_arr_get_nth_info
(
arr
,
i
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/trx/trx0sys.c
View file @
00677a80
...
...
@@ -241,7 +241,9 @@ trx_sys_create_doublewrite_buf(void)
{
buf_block_t
*
block
;
buf_block_t
*
block2
;
#ifdef UNIV_SYNC_DEBUG
buf_block_t
*
new_block
;
#endif
/* UNIV_SYNC_DEBUG */
byte
*
doublewrite
;
byte
*
fseg_header
;
ulint
page_no
;
...
...
@@ -344,8 +346,11 @@ start_again:
the page position in the tablespace, then the page
has not been written to in doublewrite. */
new_block
=
buf_page_get
(
TRX_SYS_SPACE
,
0
,
page_no
,
RW_X_LATCH
,
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
new_block
=
#endif
/* UNIV_SYNC_DEBUG */
buf_page_get
(
TRX_SYS_SPACE
,
0
,
page_no
,
RW_X_LATCH
,
&
mtr
);
buf_block_dbg_add_level
(
new_block
,
SYNC_NO_ORDER_CHECK
);
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/trx/trx0trx.c
View file @
00677a80
...
...
@@ -1805,7 +1805,6 @@ trx_prepare_off_kernel(
/*===================*/
trx_t
*
trx
)
/*!< in: transaction */
{
page_t
*
update_hdr_page
;
trx_rseg_t
*
rseg
;
ib_uint64_t
lsn
=
0
;
mtr_t
mtr
;
...
...
@@ -1838,7 +1837,7 @@ trx_prepare_off_kernel(
}
if
(
trx
->
update_undo
)
{
update_hdr_page
=
trx_undo_set_state_at_prepare
(
trx_undo_set_state_at_prepare
(
trx
,
trx
->
update_undo
,
&
mtr
);
}
...
...
This diff is collapsed.
Click to expand it.
storage/innodb_plugin/trx/trx0undo.c
View file @
00677a80
...
...
@@ -1066,14 +1066,11 @@ trx_undo_truncate_end(
ulint
last_page_no
;
trx_undo_rec_t
*
rec
;
trx_undo_rec_t
*
trunc_here
;
trx_rseg_t
*
rseg
;
mtr_t
mtr
;
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
ut_ad
(
mutex_own
(
&
(
trx
->
rseg
->
mutex
)));
rseg
=
trx
->
rseg
;
for
(;;)
{
mtr_start
(
&
mtr
);
...
...
@@ -1868,7 +1865,6 @@ trx_undo_set_state_at_prepare(
mtr_t
*
mtr
)
/*!< in: mtr */
{
trx_usegf_t
*
seg_hdr
;
trx_upagef_t
*
page_hdr
;
trx_ulogf_t
*
undo_header
;
page_t
*
undo_page
;
ulint
offset
;
...
...
@@ -1886,7 +1882,6 @@ trx_undo_set_state_at_prepare(
undo
->
hdr_page_no
,
mtr
);
seg_hdr
=
undo_page
+
TRX_UNDO_SEG_HDR
;
page_hdr
=
undo_page
+
TRX_UNDO_PAGE_HDR
;
/*------------------------------*/
undo
->
state
=
TRX_UNDO_PREPARED
;
...
...
This diff is collapsed.
Click to expand it.
storage/myisam/mi_range.c
View file @
00677a80
...
...
@@ -193,12 +193,11 @@ static double _mi_search_pos(register MI_INFO *info,
register
my_off_t
pos
)
{
int
flag
;
uint
nod_flag
,
keynr
,
max_keynr
;
uint
nod_flag
,
keynr
,
UNINIT_VAR
(
max_keynr
)
;
my_bool
after_key
;
uchar
*
keypos
,
*
buff
;
double
offset
;
DBUG_ENTER
(
"_mi_search_pos"
);
LINT_INIT
(
max_keynr
);
if
(
pos
==
HA_OFFSET_ERROR
)
DBUG_RETURN
(
0
.
5
);
...
...
This diff is collapsed.
Click to expand it.
storage/myisam/mi_search.c
View file @
00677a80
...
...
@@ -296,9 +296,9 @@ int _mi_prefix_search(MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *page,
flag is the value returned by ha_key_cmp and as treated as final
*/
int
flag
=
0
,
my_flag
=-
1
;
uint
nod_flag
,
length
,
len
,
matched
,
cmplen
,
kseg_len
;
uint
prefix_len
,
suffix_len
;
int
key_len_skip
,
seg_len_pack
,
key_len_left
;
uint
nod_flag
,
UNINIT_VAR
(
length
)
,
len
,
matched
,
cmplen
,
kseg_len
;
uint
UNINIT_VAR
(
prefix_len
),
suffix_len
;
int
key_len_skip
,
UNINIT_VAR
(
seg_len_pack
)
,
key_len_left
;
uchar
*
end
,
*
kseg
,
*
vseg
;
uchar
*
sort_order
=
keyinfo
->
seg
->
charset
->
sort_order
;
uchar
tt_buff
[
MI_MAX_KEY_BUFF
+
2
],
*
t_buff
=
tt_buff
+
2
;
...
...
@@ -308,10 +308,6 @@ int _mi_prefix_search(MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *page,
uint
length_pack
;
DBUG_ENTER
(
"_mi_prefix_search"
);
LINT_INIT
(
length
);
LINT_INIT
(
prefix_len
);
LINT_INIT
(
seg_len_pack
);
t_buff
[
0
]
=
0
;
/* Avoid bugs */
end
=
page
+
mi_getint
(
page
);
nod_flag
=
mi_test_if_nod
(
page
);
...
...
This diff is collapsed.
Click to expand it.
storage/myisam/rt_index.c
View file @
00677a80
...
...
@@ -481,17 +481,13 @@ static uchar *rtree_pick_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
uint
key_length
,
uchar
*
page_buf
,
uint
nod_flag
)
{
double
increase
;
double
best_incr
;
double
UNINIT_VAR
(
best_incr
)
;
double
area
;
double
best_area
;
double
UNINIT_VAR
(
best_area
)
;
uchar
*
best_key
=
NULL
;
uchar
*
k
=
rt_PAGE_FIRST_KEY
(
page_buf
,
nod_flag
);
uchar
*
last
=
rt_PAGE_END
(
page_buf
);
LINT_INIT
(
best_area
);
LINT_INIT
(
best_key
);
LINT_INIT
(
best_incr
);
for
(;
k
<
last
;
k
=
rt_PAGE_NEXT_KEY
(
k
,
key_length
,
nod_flag
))
{
/* The following is safe as -1.0 is an exact number */
...
...
This diff is collapsed.
Click to expand it.
storage/myisam/rt_split.c
View file @
00677a80
...
...
@@ -178,18 +178,13 @@ static int split_rtree_node(SplitStruct *node, int n_entries,
double
**
d_buffer
,
int
n_dim
)
{
SplitStruct
*
cur
;
SplitStruct
*
a
;
SplitStruct
*
b
;
SplitStruct
*
UNINIT_VAR
(
a
),
*
UNINIT_VAR
(
b
);
double
*
g1
=
reserve_coords
(
d_buffer
,
n_dim
);
double
*
g2
=
reserve_coords
(
d_buffer
,
n_dim
);
SplitStruct
*
next
;
int
next_node
;
SplitStruct
*
UNINIT_VAR
(
next
)
;
int
UNINIT_VAR
(
next_node
)
;
int
i
;
SplitStruct
*
end
=
node
+
n_entries
;
LINT_INIT
(
a
);
LINT_INIT
(
b
);
LINT_INIT
(
next
);
LINT_INIT
(
next_node
);
if
(
all_size
<
min_size
*
2
)
{
...
...
This diff is collapsed.
Click to expand it.
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