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
|
i
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
repair table t1 use_frm;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table 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
|
else
|
||||||
{
|
{
|
||||||
zoffset_size= 2 << ((zlibCompileFlags() >> 6) & 3);
|
zoffset_size= 2 << ((zlibCompileFlags() >> 6) & 3);
|
||||||
switch (sizeof(z_off_t)) {
|
switch (zoffset_size) {
|
||||||
case 2:
|
case 2:
|
||||||
max_zfile_size= INT_MAX16;
|
max_zfile_size= INT_MAX16;
|
||||||
break;
|
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();
|
total_row_length+= ((Field_blob*) table->field[*ptr])->get_length();
|
||||||
if (share->approx_file_size > max_zfile_size - total_row_length)
|
if (share->approx_file_size > max_zfile_size - total_row_length)
|
||||||
{
|
{
|
||||||
|
gzflush(writer, Z_SYNC_FLUSH);
|
||||||
info(HA_STATUS_TIME);
|
info(HA_STATUS_TIME);
|
||||||
share->approx_file_size= (ulong) data_file_length;
|
share->approx_file_size= (ulong) data_file_length;
|
||||||
if (share->approx_file_size > max_zfile_size - total_row_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 ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
|
||||||
{
|
{
|
||||||
int rc= 0;
|
int rc= 0;
|
||||||
byte *buf;
|
|
||||||
const char *old_proc_info=thd->proc_info;
|
const char *old_proc_info=thd->proc_info;
|
||||||
ha_rows count= share->rows_recorded;
|
ha_rows count= share->rows_recorded;
|
||||||
DBUG_ENTER("ha_archive::check");
|
DBUG_ENTER("ha_archive::check");
|
||||||
|
@ -1213,25 +1213,13 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
|
||||||
/* Flush any waiting data */
|
/* Flush any waiting data */
|
||||||
gzflush(share->archive_write, Z_SYNC_FLUSH);
|
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
|
Now we will rewind the archive file so that we are positioned at the
|
||||||
start of the file.
|
start of the file.
|
||||||
*/
|
*/
|
||||||
if (!rc)
|
read_data_header(archive);
|
||||||
read_data_header(archive);
|
while (!(rc= get_row(archive, table->record[0])))
|
||||||
|
count--;
|
||||||
if (!rc)
|
|
||||||
while (!(rc= get_row(archive, buf)))
|
|
||||||
count--;
|
|
||||||
|
|
||||||
my_free((char*)buf, MYF(0));
|
|
||||||
|
|
||||||
thd->proc_info= old_proc_info;
|
thd->proc_info= old_proc_info;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue