Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
mariadb
Commits
9be5696a
Commit
9be5696a
authored
14 years ago
by
Ramil Kalimullin
Browse files
Options
Download
Plain Diff
Automerge.
parents
0823afc8
f4b7c50d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
162 additions
and
3 deletions
+162
-3
mysql-test/r/handler_myisam.result
mysql-test/r/handler_myisam.result
+93
-0
mysql-test/t/handler_myisam.test
mysql-test/t/handler_myisam.test
+49
-0
sql/sql_handler.cc
sql/sql_handler.cc
+20
-3
No files found.
mysql-test/r/handler_myisam.result
View file @
9be5696a
...
...
@@ -769,4 +769,97 @@ a
1
HANDLER t1 CLOSE;
DROP TABLE t1;
#
# Bug #54007: assert in ha_myisam::index_next , HANDLER
#
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
HANDLER t1 OPEN;
HANDLER t1 READ FIRST;
a b
HANDLER t1 READ `PRIMARY` NEXT;
a b
HANDLER t1 READ ab NEXT;
a b
HANDLER t1 READ b NEXT;
a b
HANDLER t1 READ NEXT;
a b
HANDLER t1 CLOSE;
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
HANDLER t1 OPEN;
HANDLER t1 READ FIRST;
a b
2 20
HANDLER t1 READ NEXT;
a b
1 10
HANDLER t1 READ `PRIMARY` NEXT;
a b
1 10
HANDLER t1 READ `PRIMARY` NEXT;
a b
2 20
HANDLER t1 READ ab NEXT;
a b
1 10
HANDLER t1 READ ab NEXT;
a b
2 20
HANDLER t1 READ b NEXT;
a b
1 10
HANDLER t1 READ b NEXT;
a b
2 20
HANDLER t1 READ b NEXT;
a b
3 30
HANDLER t1 READ b NEXT;
a b
4 40
HANDLER t1 READ b NEXT;
a b
HANDLER t1 READ NEXT;
a b
4 40
HANDLER t1 READ NEXT;
a b
3 30
HANDLER t1 READ NEXT;
a b
HANDLER t1 CLOSE;
HANDLER t1 OPEN;
HANDLER t1 READ FIRST;
a b
2 20
HANDLER t1 READ `PRIMARY` PREV;
a b
4 40
HANDLER t1 READ `PRIMARY` PREV;
a b
3 30
HANDLER t1 READ b PREV;
a b
4 40
HANDLER t1 READ b PREV;
a b
3 30
HANDLER t1 CLOSE;
HANDLER t1 OPEN;
HANDLER t1 READ FIRST;
a b
2 20
HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
a b
4 40
3 30
2 20
HANDLER t1 READ b NEXT LIMIT 5;
a b
1 10
2 20
3 30
4 40
HANDLER t1 CLOSE;
DROP TABLE t1;
End of 5.1 tests
This diff is collapsed.
Click to expand it.
mysql-test/t/handler_myisam.test
View file @
9be5696a
...
...
@@ -48,4 +48,53 @@ HANDLER t1 READ a NEXT;
HANDLER
t1
CLOSE
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# Bug #54007: assert in ha_myisam::index_next , HANDLER
--
echo
#
CREATE
TABLE
t1
(
a
INT
,
b
INT
,
PRIMARY
KEY
(
a
),
KEY
b
(
b
),
KEY
ab
(
a
,
b
));
HANDLER
t1
OPEN
;
HANDLER
t1
READ
FIRST
;
HANDLER
t1
READ
`PRIMARY`
NEXT
;
HANDLER
t1
READ
ab
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
NEXT
;
HANDLER
t1
CLOSE
;
INSERT
INTO
t1
VALUES
(
2
,
20
),
(
1
,
10
),
(
4
,
40
),
(
3
,
30
);
HANDLER
t1
OPEN
;
HANDLER
t1
READ
FIRST
;
HANDLER
t1
READ
NEXT
;
HANDLER
t1
READ
`PRIMARY`
NEXT
;
HANDLER
t1
READ
`PRIMARY`
NEXT
;
HANDLER
t1
READ
ab
NEXT
;
HANDLER
t1
READ
ab
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
b
NEXT
;
HANDLER
t1
READ
NEXT
;
HANDLER
t1
READ
NEXT
;
HANDLER
t1
READ
NEXT
;
HANDLER
t1
CLOSE
;
HANDLER
t1
OPEN
;
HANDLER
t1
READ
FIRST
;
HANDLER
t1
READ
`PRIMARY`
PREV
;
HANDLER
t1
READ
`PRIMARY`
PREV
;
HANDLER
t1
READ
b
PREV
;
HANDLER
t1
READ
b
PREV
;
HANDLER
t1
CLOSE
;
HANDLER
t1
OPEN
;
HANDLER
t1
READ
FIRST
;
HANDLER
t1
READ
`PRIMARY`
PREV
LIMIT
3
;
HANDLER
t1
READ
b
NEXT
LIMIT
5
;
HANDLER
t1
CLOSE
;
DROP
TABLE
t1
;
--
echo
End
of
5.1
tests
This diff is collapsed.
Click to expand it.
sql/sql_handler.cc
View file @
9be5696a
...
...
@@ -539,6 +539,14 @@ retry:
my_error
(
ER_KEY_DOES_NOT_EXITS
,
MYF
(
0
),
keyname
,
tables
->
alias
);
goto
err
;
}
/* Check if the same index involved. */
if
((
uint
)
keyno
!=
table
->
file
->
get_index
())
{
if
(
mode
==
RNEXT
)
mode
=
RFIRST
;
else
if
(
mode
==
RPREV
)
mode
=
RLAST
;
}
}
if
(
insert_fields
(
thd
,
&
thd
->
lex
->
select_lex
.
context
,
...
...
@@ -561,9 +569,16 @@ retry:
case
RNEXT
:
if
(
table
->
file
->
inited
!=
handler
::
NONE
)
{
error
=
keyname
?
table
->
file
->
index_next
(
table
->
record
[
0
])
:
table
->
file
->
rnd_next
(
table
->
record
[
0
]);
if
(
keyname
)
{
/* Check if we read from the same index. */
DBUG_ASSERT
((
uint
)
keyno
==
table
->
file
->
get_index
());
error
=
table
->
file
->
index_next
(
table
->
record
[
0
]);
}
else
{
error
=
table
->
file
->
rnd_next
(
table
->
record
[
0
]);
}
break
;
}
/* else fall through */
...
...
@@ -584,6 +599,8 @@ retry:
break
;
case
RPREV
:
DBUG_ASSERT
(
keyname
!=
0
);
/* Check if we read from the same index. */
DBUG_ASSERT
((
uint
)
keyno
==
table
->
file
->
get_index
());
if
(
table
->
file
->
inited
!=
handler
::
NONE
)
{
error
=
table
->
file
->
index_prev
(
table
->
record
[
0
]);
...
...
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