summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorunknown <brian@zim.(none)>2007-01-03 17:26:45 -0800
committerunknown <brian@zim.(none)>2007-01-03 17:26:45 -0800
commit20f0c7a65faf52136f47e809f855e5d500ad9a5b (patch)
treeda45ed3f5a6f4370b7c05fb2e7d171f8f3257565 /storage
parent0968cc9dec13ddc3352eeff73aa8ebb3eecb0213 (diff)
downloadmariadb-git-20f0c7a65faf52136f47e809f855e5d500ad9a5b.tar.gz
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
Diffstat (limited to 'storage')
-rw-r--r--storage/csv/CMakeLists.txt2
-rw-r--r--storage/csv/Makefile.am6
-rw-r--r--storage/csv/ha_tina.cc48
-rw-r--r--storage/csv/ha_tina.h44
-rw-r--r--storage/csv/transparent_file.cc104
-rw-r--r--storage/csv/transparent_file.h41
6 files changed, 150 insertions, 95 deletions
diff --git a/storage/csv/CMakeLists.txt b/storage/csv/CMakeLists.txt
index 55e9b50fbfc..9088e2b7aa9 100644
--- a/storage/csv/CMakeLists.txt
+++ b/storage/csv/CMakeLists.txt
@@ -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)
diff --git a/storage/csv/Makefile.am b/storage/csv/Makefile.am
index e6bda138120..15ef5c71756 100644
--- a/storage/csv/Makefile.am
+++ b/storage/csv/Makefile.am
@@ -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
diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc
index b957bcef3ea..712c2d9d29a 100644
--- a/storage/csv/ha_tina.cc
+++ b/storage/csv/ha_tina.cc
@@ -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
*****************************************************************************/
diff --git a/storage/csv/ha_tina.h b/storage/csv/ha_tina.h
index 5068468fedf..0c667237c0f 100644
--- a/storage/csv/ha_tina.h
+++ b/storage/csv/ha_tina.h
@@ -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 */
diff --git a/storage/csv/transparent_file.cc b/storage/csv/transparent_file.cc
new file mode 100644
index 00000000000..27cc8c024b4
--- /dev/null
+++ b/storage/csv/transparent_file.cc
@@ -0,0 +1,104 @@
+/* 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];
+ }
+}
diff --git a/storage/csv/transparent_file.h b/storage/csv/transparent_file.h
new file mode 100644
index 00000000000..ceb59ec7caf
--- /dev/null
+++ b/storage/csv/transparent_file.h
@@ -0,0 +1,41 @@
+/* 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 */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <my_dir.h>
+
+
+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();
+ ~Transparent_file();
+
+ void init_buff(File filedes_arg);
+ byte *ptr();
+ off_t start();
+ off_t end();
+ char get_value (off_t offset);
+ off_t read_next();
+};