Commit 8ff68092 authored by unknown's avatar unknown
Browse files

Fix for Antony's push. I've also changed from using the zlib off_t pointer...

Fix for Antony's push. I've also changed from using the zlib off_t pointer type to my_off_t to fix issues around buggy zlib versions and to make sure file sizes are consistent through out mysql.



mysql-test/r/information_schema.result:
  Fix for Antony adding plugins to information schema.
sql/ha_archive.cc:
  Fix for now using my_off_t, no need to worry about buggy zlib's anymore.
sql/ha_archive.h:
  Update to fix issues with buggy zlib.
storage/archive/azio.c:
  Moved to using my_off_t (which should fix problems with most fille system size issues).
storage/archive/azlib.h:
  Change to using my_off_t
parent 2c88b639
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -725,7 +725,7 @@ CREATE TABLE t_crashme ( f1 BIGINT);
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
count(*)
103
104
drop view a2, a1;
drop table t_crashme;
select table_schema,table_name, column_name from
@@ -796,7 +796,7 @@ delete from mysql.db where user='mysqltest_4';
flush privileges;
SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
table_schema	count(*)
information_schema	17
information_schema	18
mysql	18
create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row
+5 −6
Original line number Diff line number Diff line
@@ -247,8 +247,7 @@ ha_archive::ha_archive(TABLE_SHARE *table_arg)
  buffer.set((char *)byte_buffer, IO_SIZE, system_charset_info);

  /* The size of the offset value we will use for position() */
  ref_length = 2 << ((zlibCompileFlags() >> 6) & 3);
  DBUG_ASSERT(ref_length <= sizeof(z_off_t));
  ref_length = sizeof(my_off_t);
}

/*
@@ -612,7 +611,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
*/
int ha_archive::real_write_row(byte *buf, azio_stream *writer)
{
  z_off_t written;
  my_off_t written;
  uint *ptr, *end;
  DBUG_ENTER("ha_archive::real_write_row");

@@ -621,7 +620,7 @@ int ha_archive::real_write_row(byte *buf, azio_stream *writer)
  if (!delayed_insert || !bulk_insert)
    share->dirty= TRUE;

  if (written != (z_off_t)table->s->reclength)
  if (written != (my_off_t)table->s->reclength)
    DBUG_RETURN(errno ? errno : -1);
  /*
    We should probably mark the table as damagaged if the record is written
@@ -638,7 +637,7 @@ int ha_archive::real_write_row(byte *buf, azio_stream *writer)
    {
      ((Field_blob*) table->field[*ptr])->get_ptr(&data_ptr);
      written= azwrite(writer, data_ptr, (unsigned)size);
      if (written != (z_off_t)size)
      if (written != (my_off_t)size)
        DBUG_RETURN(errno ? errno : -1);
    }
  }
@@ -830,7 +829,7 @@ int ha_archive::rnd_pos(byte * buf, byte *pos)
  DBUG_ENTER("ha_archive::rnd_pos");
  statistic_increment(table->in_use->status_var.ha_read_rnd_next_count,
		      &LOCK_status);
  current_position= (z_off_t)my_get_ptr(pos, ref_length);
  current_position= (my_off_t)my_get_ptr(pos, ref_length);
  (void)azseek(&archive, current_position, SEEK_SET);

  DBUG_RETURN(get_row(&archive, buf));
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ class ha_archive: public handler
  THR_LOCK_DATA lock;        /* MySQL lock */
  ARCHIVE_SHARE *share;      /* Shared lock info */
  azio_stream archive;            /* Archive file we are working with */
  z_off_t current_position;  /* The position of the row we just read */
  my_off_t current_position;  /* The position of the row we just read */
  byte byte_buffer[IO_SIZE]; /* Initial buffer for our string */
  String buffer;             /* Buffer used for blob storage */
  ha_rows scan_rows;         /* Number of rows left in scan */
+3 −3
Original line number Diff line number Diff line
@@ -506,9 +506,9 @@ int azrewind (s)
  SEEK_END is not implemented, returns error.
  In this version of the library, azseek can be extremely slow.
*/
z_off_t azseek (s, offset, whence)
my_off_t azseek (s, offset, whence)
  azio_stream *s;
  z_off_t offset;
  my_off_t offset;
  int whence;
{

@@ -589,7 +589,7 @@ z_off_t azseek (s, offset, whence)
  given compressed file. This position represents a number of bytes in the
  uncompressed data stream.
*/
z_off_t ZEXPORT aztell (file)
my_off_t ZEXPORT aztell (file)
  azio_stream *file;
{
  return azseek(file, 0L, SEEK_CUR);
+6 −6
Original line number Diff line number Diff line
@@ -166,9 +166,9 @@ typedef struct azio_stream {
  char     *msg;    /* error message */
  int      transparent; /* 1 if input file is not a .gz file */
  char     mode;    /* 'w' or 'r' */
  z_off_t  start;   /* start of compressed data in file (header skipped) */
  z_off_t  in;      /* bytes into deflate or inflate */
  z_off_t  out;     /* bytes out of deflate or inflate */
  my_off_t  start;   /* start of compressed data in file (header skipped) */
  my_off_t  in;      /* bytes into deflate or inflate */
  my_off_t  out;     /* bytes out of deflate or inflate */
  int      back;    /* one character push-back */
  int      last;    /* true if push-back is last character */
} azio_stream;
@@ -232,8 +232,8 @@ extern int azflush(azio_stream *file, int flush);
   degrade compression.
*/

extern z_off_t azseek (azio_stream *file,
                                      z_off_t offset, int whence);
extern my_off_t azseek (azio_stream *file,
                                      my_off_t offset, int whence);
/*
      Sets the starting position for the next gzread or gzwrite on the
   given compressed file. The offset represents a number of bytes in the
@@ -257,7 +257,7 @@ extern int azrewind(azio_stream *file);
   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
*/

extern z_off_t aztell(azio_stream *file);
extern my_off_t aztell(azio_stream *file);
/*
     Returns the starting position for the next gzread or gzwrite on the
   given compressed file. This position represents a number of bytes in the