Commit 20f0c7a6 authored by unknown's avatar unknown
Browse files

Split out the hidden class from the ha_tina file (probably should have just...

Split out the hidden class from the ha_tina file (probably should have just deleted it...) but this is a bit better. 


storage/csv/transparent_file.cc:
  BitKeeper file /home/brian/mysql/merge-5.1/storage/csv/transparent_file.cc
storage/csv/transparent_file.h:
  BitKeeper file /home/brian/mysql/merge-5.1/storage/csv/transparent_file.h
storage/csv/CMakeLists.txt:
  Updated for windows
storage/csv/Makefile.am:
  Updated to add new class
storage/csv/ha_tina.cc:
  Removed hidden class
storage/csv/ha_tina.h:
  Remove hidden class
parent 0968cc9d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4,4 +4,4 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
                    ${CMAKE_SOURCE_DIR}/regex
                    ${CMAKE_SOURCE_DIR}/extra/yassl/include)
ADD_LIBRARY(csv ha_tina.cc ha_tina.h)
ADD_LIBRARY(csv ha_tina.cc ha_tina.h transparent_file.cc transparent_file.h)
+3 −3
Original line number Diff line number Diff line
@@ -28,18 +28,18 @@ INCLUDES = -I$(top_builddir)/include \
LDADD =

DEFS =	@DEFS@
noinst_HEADERS	  =	ha_tina.h
noinst_HEADERS	  =	ha_tina.h transparent_file.h

EXTRA_LTLIBRARIES =	ha_csv.la
pkglib_LTLIBRARIES =	@plugin_csv_shared_target@
ha_csv_la_LDFLAGS =	-module -rpath $(MYSQLLIBdir)
ha_csv_la_CXXFLAGS =	$(AM_CFLAGS) -DMYSQL_PLUGIN
ha_csv_la_SOURCES =	ha_tina.cc
ha_csv_la_SOURCES =	transparent_file.cc ha_tina.cc 

EXTRA_LIBRARIES =	libcsv.a
noinst_LIBRARIES =	@plugin_csv_static_target@
libcsv_a_CXXFLAGS =	$(AM_CFLAGS)
libcsv_a_SOURCES =	ha_tina.cc
libcsv_a_SOURCES =	transparent_file.cc ha_tina.cc

EXTRA_DIST =		CMakeLists.txt plug.in
# Don't update the files from bitkeeper
+0 −48
Original line number Diff line number Diff line
@@ -77,54 +77,6 @@ static handler *tina_create_handler(handlerton *hton,
                                    MEM_ROOT *mem_root);


off_t Transparent_file::read_next()
{
  off_t bytes_read;

  /*
     No need to seek here, as the file managed by Transparent_file class
     always points to upper_bound byte
  */
  if ((bytes_read= my_read(filedes, buff, buff_size, MYF(0))) == MY_FILE_ERROR)
    return -1;

  /* end of file */
  if (!bytes_read)
    return -1;

  lower_bound= upper_bound;
  upper_bound+= bytes_read;

  return lower_bound;
}


char Transparent_file::get_value(off_t offset)
{
  off_t bytes_read;

  /* check boundaries */
  if ((lower_bound <= offset) && (offset < upper_bound))
    return buff[offset - lower_bound];
  else
  {
    VOID(my_seek(filedes, offset, MY_SEEK_SET, MYF(0)));
    /* read appropriate portion of the file */
    if ((bytes_read= my_read(filedes, buff, buff_size,
                             MYF(0))) == MY_FILE_ERROR)
      return 0;

    lower_bound= offset;
    upper_bound= lower_bound + bytes_read;

    /* end of file */
    if (upper_bound == offset)
      return 0;

    return buff[0];
  }
}

/*****************************************************************************
 ** TINA tables
 *****************************************************************************/
+1 −43
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <my_dir.h>
#include "transparent_file.h"

#define DEFAULT_CHAIN_LENGTH 512
/*
@@ -55,49 +56,6 @@ struct tina_set {
  off_t end;
};

class Transparent_file
{
   File filedes;
   byte *buff;  /* in-memory window to the file or mmaped area */
   /* current window sizes */
   off_t lower_bound;
   off_t upper_bound;
   uint buff_size;

 public:

   Transparent_file() : lower_bound(0), buff_size(IO_SIZE)
   { buff= (byte *) my_malloc(buff_size*sizeof(byte),  MYF(MY_WME)); }

   ~Transparent_file()
   { my_free((gptr)buff, MYF(MY_ALLOW_ZERO_PTR)); }

   void init_buff(File filedes_arg)
   {
     filedes= filedes_arg;
     /* read the beginning of the file */
     lower_bound= 0;
     VOID(my_seek(filedes, 0, MY_SEEK_SET, MYF(0)));
     if (filedes && buff)
       upper_bound= my_read(filedes, buff, buff_size, MYF(0));
   }

   byte *ptr()
   { return buff; }

   off_t start()
   { return lower_bound; }

   off_t end()
   { return upper_bound; }

   /* get a char from the given position in the file */
   char get_value (off_t offset);
   /* shift a buffer windows to see the next part of the file */
   off_t read_next();

};

class ha_tina: public handler
{
  THR_LOCK_DATA lock;      /* MySQL lock */
+104 −0
Original line number Diff line number Diff line
/* Copyright (C) 2003 MySQL AB

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; version 2 of the License.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#ifdef USE_PRAGMA_IMPLEMENTATION
#pragma implementation        // gcc: Class implementation
#endif

#include "mysql_priv.h"
#include "transparent_file.h"

Transparent_file::Transparent_file() : lower_bound(0), buff_size(IO_SIZE)
{ 
  buff= (byte *) my_malloc(buff_size*sizeof(byte),  MYF(MY_WME)); 
}

Transparent_file::~Transparent_file()
{ 
  my_free((gptr)buff, MYF(MY_ALLOW_ZERO_PTR)); 
}

void Transparent_file::init_buff(File filedes_arg)
{
  filedes= filedes_arg;
  /* read the beginning of the file */
  lower_bound= 0;
  VOID(my_seek(filedes, 0, MY_SEEK_SET, MYF(0)));
  if (filedes && buff)
    upper_bound= my_read(filedes, buff, buff_size, MYF(0));
}

byte *Transparent_file::ptr()
{ 
  return buff; 
}

off_t Transparent_file::start()
{ 
  return lower_bound; 
}

off_t Transparent_file::end()
{ 
  return upper_bound; 
}

off_t Transparent_file::read_next()
{
  off_t bytes_read;

  /*
     No need to seek here, as the file managed by Transparent_file class
     always points to upper_bound byte
  */
  if ((bytes_read= my_read(filedes, buff, buff_size, MYF(0))) == MY_FILE_ERROR)
    return -1;

  /* end of file */
  if (!bytes_read)
    return -1;

  lower_bound= upper_bound;
  upper_bound+= bytes_read;

  return lower_bound;
}


char Transparent_file::get_value(off_t offset)
{
  off_t bytes_read;

  /* check boundaries */
  if ((lower_bound <= offset) && (offset < upper_bound))
    return buff[offset - lower_bound];
  else
  {
    VOID(my_seek(filedes, offset, MY_SEEK_SET, MYF(0)));
    /* read appropriate portion of the file */
    if ((bytes_read= my_read(filedes, buff, buff_size,
                             MYF(0))) == MY_FILE_ERROR)
      return 0;

    lower_bound= offset;
    upper_bound= lower_bound + bytes_read;

    /* end of file */
    if (upper_bound == offset)
      return 0;

    return buff[0];
  }
}
Loading