Commit d1d77776 authored by istruewing@synthia.local's avatar istruewing@synthia.local
Browse files

Merge synthia.local:/home/mydev/mysql-5.0-amain

into  synthia.local:/home/mydev/mysql-5.0-axmrg
parents f8b7669e f9af4156
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
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;
+7 −0
Original line number Diff line number Diff line
@@ -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 −0

File added.

Preview size limit exceeded, changes collapsed.

+9 −0
Original line number Diff line number Diff line
@@ -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;
+5 −17
Original line number Diff line number Diff line
@@ -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,26 +1213,14 @@ 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)))
  while (!(rc= get_row(archive, table->record[0])))
    count--;

  my_free((char*)buf, MYF(0));

  thd->proc_info= old_proc_info;

  if ((rc && rc != HA_ERR_END_OF_FILE) || count)