Commit 4a70a6dc authored by Magne Mahre's avatar Magne Mahre

Bug#40677 Archive tables joined on primary return no result

Select queries on archive tables when joined on their primary keys
returns no results(empty set)
      
Archive storage doesn't inform the handler about the fetched record 
status when it is found. Fixed the archive storage engine to update
the record status when it fetches successfully
parent 0a9d4e67
...@@ -12717,3 +12717,13 @@ COUNT(t1.a) ...@@ -12717,3 +12717,13 @@ COUNT(t1.a)
729 729
DROP TABLE t1; DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size; SET @@join_buffer_size= @save_join_buffer_size;
End of 5.1 tests
CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
id id name name
1 1 a b
2 2 a b
DROP TABLE t1,t2;
...@@ -1623,3 +1623,15 @@ INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'), ...@@ -1623,3 +1623,15 @@ INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e; SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
DROP TABLE t1; DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size; SET @@join_buffer_size= @save_join_buffer_size;
--echo End of 5.1 tests
#
# BUG#40677 - Archive tables joined on primary return no result
#
CREATE TABLE t1(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
INSERT INTO t1 VALUES(NULL,'a'),(NULL,'a');
CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY(id)) ENGINE=archive;
INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
DROP TABLE t1,t2;
...@@ -953,7 +953,11 @@ int ha_archive::index_read_idx(uchar *buf, uint index, const uchar *key, ...@@ -953,7 +953,11 @@ int ha_archive::index_read_idx(uchar *buf, uint index, const uchar *key,
} }
if (found) if (found)
{
/* notify handler that a record has been found */
table->status= 0;
DBUG_RETURN(0); DBUG_RETURN(0);
}
error: error:
DBUG_RETURN(rc ? rc : HA_ERR_END_OF_FILE); DBUG_RETURN(rc ? rc : HA_ERR_END_OF_FILE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment