Commit 1246d2a2 authored by tomas@poseidon.ndb.mysql.com's avatar tomas@poseidon.ndb.mysql.com

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  poseidon.ndb.mysql.com:/home/tomas/v7
parents e648a8fe 8651cee8
......@@ -12433,31 +12433,108 @@ a b
DROP TABLE t5;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b char(12),
b blob(12),
KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (32, "foo");
INSERT INTO t5 VALUES (23, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (3, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "We the people");
INSERT INTO t5 VALUES (NULL, "in order to form a more pefect union");
INSERT INTO t5 VALUES (NULL, "establish justice");
INSERT INTO t5 VALUES (NULL, "foo grok ");
INSERT INTO t5 VALUES (32, "ensure domestic tranquility");
INSERT INTO t5 VALUES (23, "provide for the common defense");
INSERT INTO t5 VALUES (NULL, "fo fooo");
INSERT INTO t5 VALUES (NULL, "foo just naother bit of text");
INSERT INTO t5 VALUES (3, "foo this is mine to think about");
INSERT INTO t5 VALUES (NULL, "promote the general welfare");
SELECT * FROM t5;
a b
1 foo
2 foo
3 foo
4 foo
5 foo
32 foo
23 foo
33 foo
34 foo
3 foo
35 foo
2 We the people
3 in order to form a more pefect union
4 establish justice
5 foo grok
32 ensure domestic tranquility
23 provide for the common defense
33 fo fooo
34 foo just naother bit of text
3 foo this is mine to think about
35 promote the general welfare
SELECT b FROM t5;
b
foo
We the people
in order to form a more pefect union
establish justice
foo grok
ensure domestic tranquility
provide for the common defense
fo fooo
foo just naother bit of text
foo this is mine to think about
promote the general welfare
SELECT b FROM t5 WHERE a =3;
b
in order to form a more pefect union
foo this is mine to think about
SELECT b FROM t5 WHERE a IN (32, 23, 5);
b
foo grok
ensure domestic tranquility
provide for the common defense
DROP TABLE t5;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b blob(12),
c blob(12),
KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (NULL, "foo", "grok this!");
INSERT INTO t5 VALUES (NULL, "We the people", NULL);
INSERT INTO t5 VALUES (NULL, "in order to form a more peefect union", "secure the blessing of liberty");
INSERT INTO t5 VALUES (NULL, "establish justice", "to ourselves and");
INSERT INTO t5 VALUES (32, "ensure domestic tranquility", NULL);
INSERT INTO t5 VALUES (23, "provide for the common defense", "posterity");
INSERT INTO t5 VALUES (NULL, "promote the general welfare", "do ordain");
SELECT * FROM t5;
a b c
1 foo grok this!
2 We the people NULL
3 in order to form a more peefect union secure the blessing of liberty
4 establish justice to ourselves and
32 ensure domestic tranquility NULL
23 provide for the common defense posterity
33 promote the general welfare do ordain
SELECT b FROM t5;
b
foo
We the people
in order to form a more peefect union
establish justice
ensure domestic tranquility
provide for the common defense
promote the general welfare
SELECT b FROM t5 WHERE a =3;
b
in order to form a more peefect union
SELECT b FROM t5 WHERE a IN (32, 23, 5);
b
ensure domestic tranquility
provide for the common defense
SELECT c FROM t5;
c
grok this!
NULL
secure the blessing of liberty
to ourselves and
NULL
posterity
do ordain
SELECT c FROM t5 WHERE a =3;
c
secure the blessing of liberty
SELECT c FROM t5 WHERE a IN (32, 23, 5);
c
NULL
posterity
drop table t1, t2, t4, t5;
......@@ -1409,22 +1409,52 @@ DROP TABLE t5;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b char(12),
b blob(12),
KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (32, "foo");
INSERT INTO t5 VALUES (23, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (3, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "We the people");
INSERT INTO t5 VALUES (NULL, "in order to form a more pefect union");
INSERT INTO t5 VALUES (NULL, "establish justice");
INSERT INTO t5 VALUES (NULL, "foo grok ");
INSERT INTO t5 VALUES (32, "ensure domestic tranquility");
INSERT INTO t5 VALUES (23, "provide for the common defense");
INSERT INTO t5 VALUES (NULL, "fo fooo");
INSERT INTO t5 VALUES (NULL, "foo just naother bit of text");
INSERT INTO t5 VALUES (3, "foo this is mine to think about");
INSERT INTO t5 VALUES (NULL, "promote the general welfare");
SELECT * FROM t5;
SELECT b FROM t5;
SELECT b FROM t5 WHERE a =3;
SELECT b FROM t5 WHERE a IN (32, 23, 5);
#More blob tests
DROP TABLE t5;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b blob(12),
c blob(12),
KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (NULL, "foo", "grok this!");
INSERT INTO t5 VALUES (NULL, "We the people", NULL);
INSERT INTO t5 VALUES (NULL, "in order to form a more peefect union", "secure the blessing of liberty");
INSERT INTO t5 VALUES (NULL, "establish justice", "to ourselves and");
INSERT INTO t5 VALUES (32, "ensure domestic tranquility", NULL);
INSERT INTO t5 VALUES (23, "provide for the common defense", "posterity");
INSERT INTO t5 VALUES (NULL, "promote the general welfare", "do ordain");
SELECT * FROM t5;
SELECT b FROM t5;
SELECT b FROM t5 WHERE a =3;
SELECT b FROM t5 WHERE a IN (32, 23, 5);
SELECT c FROM t5;
SELECT c FROM t5 WHERE a =3;
SELECT c FROM t5 WHERE a IN (32, 23, 5);
#
# Cleanup, test is over
......
......@@ -170,6 +170,7 @@ handlerton archive_hton = {
NULL, /* Start Consistent Snapshot */
NULL, /* Flush logs */
NULL, /* Show status */
NULL, /* Alter interface */
HTON_NO_FLAGS
};
......@@ -973,7 +974,10 @@ int ha_archive::get_row(azio_stream *file_to_read, byte *buf)
for (ptr= table->s->blob_field, end=ptr + table->s->blob_fields ;
ptr != end ;
ptr++)
{
if (ha_get_bit_in_read_set(((Field_blob*) table->field[*ptr])->fieldnr))
total_blob_length += ((Field_blob*) table->field[*ptr])->get_length();
}
/* Adjust our row buffer if we need be */
buffer.alloc(total_blob_length);
......@@ -986,6 +990,8 @@ int ha_archive::get_row(azio_stream *file_to_read, byte *buf)
{
size_t size= ((Field_blob*) table->field[*ptr])->get_length();
if (size)
{
if (ha_get_bit_in_read_set(((Field_blob*) table->field[*ptr])->fieldnr))
{
read= azread(file_to_read, last, size);
if ((size_t) read != size)
......@@ -993,6 +999,11 @@ int ha_archive::get_row(azio_stream *file_to_read, byte *buf)
((Field_blob*) table->field[*ptr])->set_ptr(size, last);
last += size;
}
else
{
(void)azseek(file_to_read, size, SEEK_CUR);
}
}
}
DBUG_RETURN(0);
}
......
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