diff options
author | Guilhem Bichot <guilhem@mysql.com> | 2009-08-07 12:16:00 +0200 |
---|---|---|
committer | Guilhem Bichot <guilhem@mysql.com> | 2009-08-07 12:16:00 +0200 |
commit | 7ceb29ff17047a268d8e8670478f6e1669939904 (patch) | |
tree | 65b42f5cb11f29ea5b4414ff075ccafd48569ad6 /storage/innobase/mach | |
parent | 7fa1449eac29401b3d1f3fb4980149e9e562a705 (diff) | |
download | mariadb-git-7ceb29ff17047a268d8e8670478f6e1669939904.tar.gz |
Renamed storage/innodb_plugin to storage/innobase, so that 1) it's the same
layout as we always had in trees containing only the builtin
2) win\configure.js WITH_INNOBASE_STORAGE_ENGINE still works.
storage/innobase/CMakeLists.txt:
fix to new directory name (and like 5.1)
storage/innobase/Makefile.am:
fix to new directory name (and like 5.1)
storage/innobase/handler/ha_innodb.cc:
fix to new directory name (and like 5.1)
storage/innobase/plug.in:
fix to new directory name (and like 5.1)
Diffstat (limited to 'storage/innobase/mach')
-rw-r--r-- | storage/innobase/mach/mach0data.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/storage/innobase/mach/mach0data.c b/storage/innobase/mach/mach0data.c new file mode 100644 index 00000000000..e030ce9aadf --- /dev/null +++ b/storage/innobase/mach/mach0data.c @@ -0,0 +1,134 @@ +/***************************************************************************** + +Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. + +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 + +*****************************************************************************/ + +/******************************************************************//** +@file mach/mach0data.c +Utilities for converting data from the database file +to the machine format. + +Created 11/28/1995 Heikki Tuuri +***********************************************************************/ + +#include "mach0data.h" + +#ifdef UNIV_NONINL +#include "mach0data.ic" +#endif + +/*********************************************************//** +Reads a ulint in a compressed form if the log record fully contains it. +@return pointer to end of the stored field, NULL if not complete */ +UNIV_INTERN +byte* +mach_parse_compressed( +/*==================*/ + byte* ptr, /*!< in: pointer to buffer from where to read */ + byte* end_ptr,/*!< in: pointer to end of the buffer */ + ulint* val) /*!< out: read value (< 2^32) */ +{ + ulint flag; + + ut_ad(ptr && end_ptr && val); + + if (ptr >= end_ptr) { + + return(NULL); + } + + flag = mach_read_from_1(ptr); + + if (flag < 0x80UL) { + *val = flag; + return(ptr + 1); + + } else if (flag < 0xC0UL) { + if (end_ptr < ptr + 2) { + return(NULL); + } + + *val = mach_read_from_2(ptr) & 0x7FFFUL; + + return(ptr + 2); + + } else if (flag < 0xE0UL) { + if (end_ptr < ptr + 3) { + return(NULL); + } + + *val = mach_read_from_3(ptr) & 0x3FFFFFUL; + + return(ptr + 3); + } else if (flag < 0xF0UL) { + if (end_ptr < ptr + 4) { + return(NULL); + } + + *val = mach_read_from_4(ptr) & 0x1FFFFFFFUL; + + return(ptr + 4); + } else { + ut_ad(flag == 0xF0UL); + + if (end_ptr < ptr + 5) { + return(NULL); + } + + *val = mach_read_from_4(ptr + 1); + return(ptr + 5); + } +} + +/*********************************************************//** +Reads a dulint in a compressed form if the log record fully contains it. +@return pointer to end of the stored field, NULL if not complete */ +UNIV_INTERN +byte* +mach_dulint_parse_compressed( +/*=========================*/ + byte* ptr, /*!< in: pointer to buffer from where to read */ + byte* end_ptr,/*!< in: pointer to end of the buffer */ + dulint* val) /*!< out: read value */ +{ + ulint high; + ulint low; + ulint size; + + ut_ad(ptr && end_ptr && val); + + if (end_ptr < ptr + 5) { + + return(NULL); + } + + high = mach_read_compressed(ptr); + + size = mach_get_compressed_size(high); + + ptr += size; + + if (end_ptr < ptr + 4) { + + return(NULL); + } + + low = mach_read_from_4(ptr); + + *val = ut_dulint_create(high, low); + + return(ptr + 4); +} |