mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge synthia.local:/home/mydev/mysql-5.0-amain
into synthia.local:/home/mydev/mysql-5.0-axmrg
This commit is contained in:
commit
d1d77776c2
5 changed files with 65 additions and 17 deletions
19
mysql-test/r/archive-big.result
Normal file
19
mysql-test/r/archive-big.result
Normal file
|
@ -0,0 +1,19 @@
|
|||
CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
|
@ -12364,3 +12364,10 @@ select * from t1;
|
|||
i
|
||||
1
|
||||
drop table t1;
|
||||
create table t1(a longblob) engine=archive;
|
||||
insert into t1 set a='';
|
||||
insert into t1 set a='a';
|
||||
check table t1 extended;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
|
|
25
mysql-test/t/archive-big.test
Normal file
25
mysql-test/t/archive-big.test
Normal file
File diff suppressed because one or more lines are too long
|
@ -1374,3 +1374,12 @@ insert into t1 values (1);
|
|||
repair table t1 use_frm;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#29207 - archive table reported as corrupt by check table
|
||||
#
|
||||
create table t1(a longblob) engine=archive;
|
||||
insert into t1 set a='';
|
||||
insert into t1 set a='a';
|
||||
check table t1 extended;
|
||||
drop table t1;
|
||||
|
|
|
@ -205,7 +205,7 @@ bool archive_db_init()
|
|||
else
|
||||
{
|
||||
zoffset_size= 2 << ((zlibCompileFlags() >> 6) & 3);
|
||||
switch (sizeof(z_off_t)) {
|
||||
switch (zoffset_size) {
|
||||
case 2:
|
||||
max_zfile_size= INT_MAX16;
|
||||
break;
|
||||
|
@ -676,6 +676,7 @@ int ha_archive::real_write_row(byte *buf, gzFile writer)
|
|||
total_row_length+= ((Field_blob*) table->field[*ptr])->get_length();
|
||||
if (share->approx_file_size > max_zfile_size - total_row_length)
|
||||
{
|
||||
gzflush(writer, Z_SYNC_FLUSH);
|
||||
info(HA_STATUS_TIME);
|
||||
share->approx_file_size= (ulong) data_file_length;
|
||||
if (share->approx_file_size > max_zfile_size - total_row_length)
|
||||
|
@ -1204,7 +1205,6 @@ bool ha_archive::is_crashed() const
|
|||
int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
int rc= 0;
|
||||
byte *buf;
|
||||
const char *old_proc_info=thd->proc_info;
|
||||
ha_rows count= share->rows_recorded;
|
||||
DBUG_ENTER("ha_archive::check");
|
||||
|
@ -1213,25 +1213,13 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
|
|||
/* Flush any waiting data */
|
||||
gzflush(share->archive_write, Z_SYNC_FLUSH);
|
||||
|
||||
/*
|
||||
First we create a buffer that we can use for reading rows, and can pass
|
||||
to get_row().
|
||||
*/
|
||||
if (!(buf= (byte*) my_malloc(table->s->reclength, MYF(MY_WME))))
|
||||
rc= HA_ERR_OUT_OF_MEM;
|
||||
|
||||
/*
|
||||
Now we will rewind the archive file so that we are positioned at the
|
||||
start of the file.
|
||||
*/
|
||||
if (!rc)
|
||||
read_data_header(archive);
|
||||
|
||||
if (!rc)
|
||||
while (!(rc= get_row(archive, buf)))
|
||||
count--;
|
||||
|
||||
my_free((char*)buf, MYF(0));
|
||||
read_data_header(archive);
|
||||
while (!(rc= get_row(archive, table->record[0])))
|
||||
count--;
|
||||
|
||||
thd->proc_info= old_proc_info;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue