diff options
author | unknown <serg@serg.mylan> | 2003-08-21 18:30:43 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2003-08-21 18:30:43 +0200 |
commit | c1551b4c04a68699872d80b7e1b9e5a969e4ff72 (patch) | |
tree | 73d6e3458f0aef120d5c361fde234488c2b99242 | |
parent | e103da7acc6f3563a2f7207e59c34b9d9ff64295 (diff) | |
download | mariadb-git-c1551b4c04a68699872d80b7e1b9e5a969e4ff72.tar.gz |
use crc32() from bundled zlib if system zlib is unavailable
sql/item_create.h:
previous patch cleanup
sql/item_strfunc.cc:
previous patch cleanup
sql/item_strfunc.h:
previous patch cleanup
sql/lex.h:
previous patch cleanup
-rw-r--r-- | include/my_sys.h | 3 | ||||
-rw-r--r-- | mysys/Makefile.am | 2 | ||||
-rw-r--r-- | mysys/my_crc32.c | 36 | ||||
-rw-r--r-- | sql/item_create.h | 2 | ||||
-rw-r--r-- | sql/item_strfunc.cc | 19 | ||||
-rw-r--r-- | sql/item_strfunc.h | 40 | ||||
-rw-r--r-- | sql/lex.h | 2 |
7 files changed, 62 insertions, 42 deletions
diff --git a/include/my_sys.h b/include/my_sys.h index 6721d77a8af..a6a4d46e227 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -753,8 +753,9 @@ extern my_bool my_uncompress(byte *, ulong *, ulong *); extern byte *my_compress_alloc(const byte *packet, ulong *len, ulong *complen); extern ha_checksum my_checksum(ha_checksum crc, const byte *mem, uint count); extern uint my_bit_log2(ulong value); -uint my_count_bits(ulonglong v); +extern uint my_count_bits(ulonglong v); extern void my_sleep(ulong m_seconds); +extern ulong crc32(ulong crc, const uchar *buf, uint len); #ifdef __WIN__ extern my_bool have_tcpip; /* Is set if tcpip is used */ diff --git a/mysys/Makefile.am b/mysys/Makefile.am index 5b1c859cb2a..9e563755ebd 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -29,7 +29,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c\ mf_path.c mf_loadpath.c\ my_open.c my_create.c my_dup.c my_seek.c my_read.c \ my_pread.c my_write.c \ - mf_keycache.c \ + mf_keycache.c my_crc32.c \ mf_iocache.c mf_iocache2.c mf_cache.c mf_tempfile.c \ mf_tempdir.c my_lock.c mf_brkhant.c my_alarm.c \ my_malloc.c my_realloc.c my_once.c mulalloc.c \ diff --git a/mysys/my_crc32.c b/mysys/my_crc32.c new file mode 100644 index 00000000000..5514b01ede2 --- /dev/null +++ b/mysys/my_crc32.c @@ -0,0 +1,36 @@ +/* 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; either version 2 of the License, or + (at your option) any later version. + + 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 "mysys_priv.h" + +#ifndef HAVE_COMPRESS + +/* minimal set of defines for using crc32() from zlib codebase */ +#define _ZLIB_H +#define ZEXPORT +#define Z_NULL 0 +#define OF(args) args +#undef DYNAMIC_CRC_TABLE +typedef uchar Byte; +typedef uchar Bytef; +typedef uint uInt; +typedef ulong uLong; +typedef ulong uLongf; + +#include "../zlib/crc32.c" + +#endif + diff --git a/sql/item_create.h b/sql/item_create.h index 1326077b096..e80272e21a5 100644 --- a/sql/item_create.h +++ b/sql/item_create.h @@ -33,9 +33,7 @@ Item *create_func_connection_id(void); Item *create_func_conv(Item* a, Item *b, Item *c); Item *create_func_cos(Item* a); Item *create_func_cot(Item* a); -#ifdef HAVE_COMPRESS Item *create_func_crc32(Item* a); -#endif Item *create_func_date_format(Item* a,Item *b); Item *create_func_dayname(Item* a); Item *create_func_dayofmonth(Item* a); diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 7c6e6e0686c..cb24fb0f027 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2561,9 +2561,6 @@ longlong Item_func_uncompressed_length::val_int() return uint4korr(res->c_ptr()) & 0x3FFFFFFF; } -#ifdef HAVE_COMPRESS -#include "zlib.h" - longlong Item_func_crc32::val_int() { String *res=args[0]->val_str(&value); @@ -2573,21 +2570,11 @@ longlong Item_func_crc32::val_int() return 0; /* purecov: inspected */ } null_value=0; - return (longlong) crc32(0L, (Bytef*)res->ptr(), res->length()); + return (longlong) crc32(0L, (uchar*)res->ptr(), res->length()); } -longlong Item_func_uncompressed_length::val_int() -{ - String *res= args[0]->val_str(&value); - if (!res) - { - null_value=1; - return 0; /* purecov: inspected */ - } - null_value=0; - if (res->is_empty()) return 0; - return uint4korr(res->c_ptr()) & 0x3FFFFFFF; -} +#ifdef HAVE_COMPRESS +#include "zlib.h" String *Item_func_compress::val_str(String *str) { diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index d7547d69aed..a8725febe62 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -630,6 +630,26 @@ public: }; }; +class Item_func_crc32 :public Item_int_func +{ + String value; +public: + Item_func_crc32(Item *a) :Item_int_func(a) {} + const char *func_name() const { return "crc32"; } + void fix_length_and_dec() { max_length=10; } + longlong val_int(); +}; + +class Item_func_uncompressed_length : public Item_int_func +{ + String value; +public: + Item_func_uncompressed_length(Item *a):Item_int_func(a){} + const char *func_name() const{return "uncompressed_length";} + void fix_length_and_dec() { max_length=10; } + longlong val_int(); +}; + #ifdef HAVE_COMPRESS #define ZLIB_DEPENDED_FUNCTION ; #else @@ -656,23 +676,3 @@ public: String *val_str(String *) ZLIB_DEPENDED_FUNCTION }; -class Item_func_crc32 :public Item_int_func -{ - String value; -public: - Item_func_crc32(Item *a) :Item_int_func(a) {} - const char *func_name() const { return "crc32"; } - void fix_length_and_dec() { max_length=10; } - longlong val_int() ZLIB_DEPENDED_FUNCTION -}; - -class Item_func_uncompressed_length : public Item_int_func -{ - String value; -public: - Item_func_uncompressed_length(Item *a):Item_int_func(a){} - const char *func_name() const{return "uncompressed_length";} - void fix_length_and_dec() { max_length=10; } - longlong val_int(); -}; - diff --git a/sql/lex.h b/sql/lex.h index 35c4d990b32..7ac61c73ad8 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -472,9 +472,7 @@ static SYMBOL sql_functions[] = { { "COUNT", SYM(COUNT_SYM),0,0}, { "COS", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cos)}, { "COT", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cot)}, -#ifdef HAVE_COMPRESS { "CRC32", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_crc32)}, -#endif { "CROSSES", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_crosses)}, { "CURDATE", SYM(CURDATE),0,0}, { "CURTIME", SYM(CURTIME),0,0}, |