Merge with 5.1

Fixed a couple of compilation failures that was not detected before merge.
This commit is contained in:
Michael Widenius 2011-01-30 16:43:23 +02:00
commit 2e75dda33e
75 changed files with 237 additions and 234 deletions

View file

@ -106,7 +106,7 @@ sql_src=log_event.h mysql_priv.h rpl_constants.h \
log_event.cc my_decimal.h my_decimal.cc \
log_event_old.h log_event_old.cc \
rpl_record_old.h rpl_record_old.cc
strings_src=decimal.c
strings_src=decimal.c strings_def.h
link_sources:
for f in $(sql_src) ; do \

View file

@ -126,7 +126,7 @@ extern void _db_flush_();
#define DBUG_END() _db_end_ ()
#define DBUG_LOCK_FILE _db_lock_file_()
#define DBUG_UNLOCK_FILE _db_unlock_file_()
#define DBUG_ASSERT(A) assert(A)
#define DBUG_ASSERT(A) do { _db_flush_(); assert(A); } while(0)
#define DBUG_EXPLAIN(buf,len) _db_explain_(0, (buf),(len))
#define DBUG_EXPLAIN_INITIAL(buf,len) _db_explain_init_((buf),(len))
#define DEBUGGER_OFF do { _dbug_on_= 0; } while(0)

View file

@ -41,7 +41,7 @@ link_sources:
ms=`echo $(mysysobjects) | sed "s;\.lo;.c;g"`; \
vs=`echo $(vio_objects) | sed "s;\.lo;.c;g"`; \
scs=`echo $(sql_cmn_objects) | sed "s;\.lo;.c;g"`; \
for f in $$ss; do \
for f in $$ss $(mystringsheaders); do \
rm -f $$f; \
@LN_CP_F@ $(top_srcdir)/strings/$$f $$f; \
done; \

View file

@ -50,6 +50,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \
strmov_overlapp.lo
mystringsextra= strto.c
mystringsheaders= strings_def.h
dbugobjects = dbug.lo # IT IS IN SAFEMALLOC.C sanity.lo
mysysheaders = mysys_priv.h my_static.h
vioheaders = vio_priv.h

View file

@ -235,7 +235,8 @@ my_bool _ma_bitmap_init(MARIA_SHARE *share, File file)
The +1 is to add the bitmap page, as this doesn't have to be covered
*/
bitmap->pages_covered= aligned_bit_blocks * 16 + 1;
bitmap->flush_all_requested= 0;
bitmap->flush_all_requested= bitmap->waiting_for_flush_all_requested=
bitmap->waiting_for_non_flushable= 0;
bitmap->non_flushable= 0;
/* Update size for bits */
@ -365,6 +366,7 @@ filter_flush_bitmap_pages(enum pagecache_page_type type
my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
{
my_bool res= 0;
uint send_signal= 0;
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
DBUG_ENTER("_ma_bitmap_flush_all");
@ -374,7 +376,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
uint len= my_sprintf(buff,
(buff, "bitmap_flush: fd: %d id: %u "
"changed: %d changed_not_flushed: %d "
"flush_all_requsted: %d",
"flush_all_requested: %d",
share->bitmap.file.file,
share->id,
bitmap->changed,
@ -389,6 +391,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
if (bitmap->changed || bitmap->changed_not_flushed)
{
bitmap->flush_all_requested++;
bitmap->waiting_for_non_flushable++;
#ifndef WRONG_BITMAP_FLUSH
while (bitmap->non_flushable > 0)
{
@ -396,6 +399,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
}
#endif
bitmap->waiting_for_non_flushable--;
#ifdef EXTRA_DEBUG_BITMAP
{
char tmp[MAX_BITMAP_INFO_LENGTH];
@ -440,10 +444,12 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
become false, wake them up.
*/
DBUG_PRINT("info", ("bitmap flusher waking up others"));
if (bitmap->flush_all_requested)
pthread_cond_broadcast(&bitmap->bitmap_cond);
send_signal= (bitmap->waiting_for_flush_all_requested |
bitmap->waiting_for_non_flushable);
}
pthread_mutex_unlock(&bitmap->bitmap_lock);
if (send_signal)
pthread_cond_broadcast(&bitmap->bitmap_cond);
DBUG_RETURN(res);
}
@ -473,11 +479,13 @@ void _ma_bitmap_lock(MARIA_SHARE *share)
pthread_mutex_lock(&bitmap->bitmap_lock);
bitmap->flush_all_requested++;
bitmap->waiting_for_non_flushable++;
while (bitmap->non_flushable)
{
DBUG_PRINT("info", ("waiting for bitmap to be flushable"));
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
}
bitmap->waiting_for_non_flushable--;
/*
Ensure that _ma_bitmap_flush_all() and _ma_bitmap_lock() are blocked.
ma_bitmap_flushable() is blocked thanks to 'flush_all_requested'.
@ -497,6 +505,7 @@ void _ma_bitmap_lock(MARIA_SHARE *share)
void _ma_bitmap_unlock(MARIA_SHARE *share)
{
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
uint send_signal;
DBUG_ENTER("_ma_bitmap_unlock");
if (!share->now_transactional)
@ -504,10 +513,12 @@ void _ma_bitmap_unlock(MARIA_SHARE *share)
DBUG_ASSERT(bitmap->flush_all_requested > 0 && bitmap->non_flushable == 1);
pthread_mutex_lock(&bitmap->bitmap_lock);
bitmap->flush_all_requested--;
bitmap->non_flushable= 0;
send_signal= bitmap->waiting_for_non_flushable;
if (!--bitmap->flush_all_requested)
send_signal|= bitmap->waiting_for_flush_all_requested;
pthread_mutex_unlock(&bitmap->bitmap_lock);
if (bitmap->flush_all_requested > 0)
if (send_signal)
pthread_cond_broadcast(&bitmap->bitmap_cond);
DBUG_VOID_RETURN;
}
@ -2334,7 +2345,7 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
the bitmap's mutex.
*/
_ma_bitmap_unpin_all(share);
if (unlikely(bitmap->flush_all_requested))
if (unlikely(bitmap->waiting_for_non_flushable))
{
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
pthread_cond_broadcast(&bitmap->bitmap_cond);
@ -2347,6 +2358,8 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
}
DBUG_ASSERT(non_flushable_inc == 1);
DBUG_ASSERT(info->non_flushable_state == 0);
bitmap->waiting_for_flush_all_requested++;
while (unlikely(bitmap->flush_all_requested))
{
/*
@ -2363,6 +2376,7 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
DBUG_PRINT("info", ("waiting for bitmap flusher"));
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
}
bitmap->waiting_for_flush_all_requested--;
bitmap->non_flushable++;
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
pthread_mutex_unlock(&bitmap->bitmap_lock);
@ -2490,7 +2504,7 @@ my_bool _ma_bitmap_release_unused(MARIA_HA *info, MARIA_BITMAP_BLOCKS *blocks)
if (--bitmap->non_flushable == 0)
{
_ma_bitmap_unpin_all(info->s);
if (unlikely(bitmap->flush_all_requested))
if (unlikely(bitmap->waiting_for_non_flushable))
{
DBUG_PRINT("info", ("bitmap flushable waking up flusher"));
pthread_cond_broadcast(&bitmap->bitmap_cond);

View file

@ -3922,8 +3922,11 @@ static my_bool _ma_update_at_original_place(MARIA_HA *info,
goto err;
block= blocks->block;
block->empty_space= row_pos.empty_space;
block->org_bitmap_value= _ma_free_size_to_head_pattern(&share->bitmap,
org_empty_size);
block->org_bitmap_value=
_ma_free_size_to_head_pattern(&share->bitmap,
(enough_free_entries_on_page(share, buff) ?
org_empty_size : 0));
DBUG_ASSERT(block->org_bitmap_value ==
_ma_bitmap_get_page_bits(info, &info->s->bitmap, page));
block->used|= BLOCKUSED_USE_ORG_BITMAP;

View file

@ -113,7 +113,7 @@
(uint)((B)->hash_link ? \
(B)->hash_link->requests : \
0), \
block->wlocks, block->rlocks, block->rlocks_queue, \
(B)->wlocks, (B)->rlocks, (B)->rlocks_queue, \
(uint)(B)->pins, (uint)(B)->status, \
page_cache_page_type_str[(B)->type]))
@ -153,8 +153,20 @@ struct st_pagecache_hash_link
/* simple states of a block */
#define PCBLOCK_ERROR 1 /* an error occurred when performing disk i/o */
#define PCBLOCK_READ 2 /* the is page in the block buffer */
#define PCBLOCK_IN_SWITCH 4 /* block is preparing to read new page */
#define PCBLOCK_REASSIGNED 8 /* block does not accept requests for old page */
/*
A tread is reading the data to the page. The page is not yet ready
to be used.
*/
#define PCBLOCK_IN_SWITCH 4
/*
Block does not accept new requests for old page that would cause
the page to be pinned or written to.
(Reads that copies the block can still continue).
This state happens when another thread is waiting for readers to finish
to read/write new data to the block.
*/
#define PCBLOCK_REASSIGNED 8
#define PCBLOCK_IN_FLUSH 16 /* block is in flush operation */
#define PCBLOCK_CHANGED 32 /* block buffer contains a dirty page */
#define PCBLOCK_DIRECT_W 64 /* possible direct write to the block */
@ -1807,7 +1819,9 @@ restart:
pageno number of the page in the file
init_hits_left how initialize the block counter for the page
wrmode <-> get for writing
reg_req Register request to thye page
block_is_copied 1 if block will be copied from page cache under
the pagelock mutex.
reg_req Register request to the page
page_st out {PAGE_READ,PAGE_TO_BE_READ,PAGE_WAIT_TO_BE_READ}
RETURN VALUE
@ -1836,6 +1850,7 @@ static PAGECACHE_BLOCK_LINK *find_block(PAGECACHE *pagecache,
pgcache_page_no_t pageno,
int init_hits_left,
my_bool wrmode,
my_bool block_is_copied,
my_bool reg_req,
int *page_st)
{
@ -1941,7 +1956,7 @@ restart:
Only reading requests can proceed until the old dirty page is flushed,
all others are to be suspended, then resubmitted
*/
if (!wrmode && !(block->status & PCBLOCK_REASSIGNED))
if (!wrmode && block_is_copied && !(block->status & PCBLOCK_REASSIGNED))
{
if (reg_req)
reg_requests(pagecache, block, 1);
@ -2135,7 +2150,7 @@ restart:
(my_bool)(block->hash_link ? 1 : 0));
PCBLOCK_INFO(block);
block->status= error ? PCBLOCK_ERROR : 0;
block->error= (int16) my_errno;
block->error= error ? (int16) my_errno : 0;
#ifndef DBUG_OFF
block->type= PAGECACHE_EMPTY_PAGE;
if (error)
@ -2536,22 +2551,13 @@ static my_bool make_lock_and_pin(PAGECACHE *pagecache,
my_bool any)
{
DBUG_ENTER("make_lock_and_pin");
DBUG_PRINT("enter", ("block: 0x%lx (%u) lock: %s pin: %s any %d",
(ulong)block, PCBLOCK_NUMBER(pagecache, block),
page_cache_page_lock_str[lock],
page_cache_page_pin_str[pin], (int)any));
PCBLOCK_INFO(block);
DBUG_PRINT("enter", ("block: 0x%lx", (ulong)block));
#ifndef DBUG_OFF
if (block)
{
DBUG_PRINT("enter", ("block: 0x%lx (%u) wrlocks: %u rdlocks: %u "
"rdlocks_q: %u pins: %u lock: %s pin: %s any %d",
(ulong)block, PCBLOCK_NUMBER(pagecache, block),
block->wlocks, block->rlocks, block->rlocks_queue,
block->pins,
page_cache_page_lock_str[lock],
page_cache_page_pin_str[pin], (int)any));
PCBLOCK_INFO(block);
}
#endif
DBUG_ASSERT(block);
DBUG_ASSERT(!any ||
((lock == PAGECACHE_LOCK_LEFT_UNLOCKED) &&
(pin == PAGECACHE_UNPIN)));
@ -2619,17 +2625,13 @@ static my_bool make_lock_and_pin(PAGECACHE *pagecache,
DBUG_ASSERT(0); /* Never should happened */
}
#ifndef DBUG_OFF
if (block)
PCBLOCK_INFO(block);
#endif
PCBLOCK_INFO(block);
DBUG_RETURN(0);
retry:
DBUG_PRINT("INFO", ("Retry block 0x%lx", (ulong)block));
PCBLOCK_INFO(block);
DBUG_ASSERT(block->hash_link->requests > 0);
block->hash_link->requests--;
PCBLOCK_INFO(block);
DBUG_RETURN(1);
}
@ -2661,7 +2663,6 @@ static void read_block(PAGECACHE *pagecache,
PAGECACHE_BLOCK_LINK *block,
my_bool primary)
{
DBUG_ENTER("read_block");
DBUG_PRINT("enter", ("read block: 0x%lx primary: %d",
(ulong)block, primary));
@ -2823,8 +2824,7 @@ void pagecache_unlock(PAGECACHE *pagecache,
page_cache_page_pin_str[pin]));
/* we do not allow any lock/pin increasing here */
DBUG_ASSERT(pin != PAGECACHE_PIN);
DBUG_ASSERT(lock != PAGECACHE_LOCK_READ);
DBUG_ASSERT(lock != PAGECACHE_LOCK_WRITE);
DBUG_ASSERT(lock != PAGECACHE_LOCK_READ && lock != PAGECACHE_LOCK_WRITE);
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
/*
@ -2835,7 +2835,7 @@ void pagecache_unlock(PAGECACHE *pagecache,
inc_counter_for_resize_op(pagecache);
/* See NOTE for pagecache_unlock about registering requests */
block= find_block(pagecache, file, pageno, 0, 0,
block= find_block(pagecache, file, pageno, 0, 0, 0,
pin == PAGECACHE_PIN_LEFT_UNPINNED, &page_st);
PCBLOCK_INFO(block);
DBUG_ASSERT(block != 0 && page_st == PAGE_READ);
@ -2924,7 +2924,7 @@ void pagecache_unpin(PAGECACHE *pagecache,
inc_counter_for_resize_op(pagecache);
/* See NOTE for pagecache_unlock about registering requests */
block= find_block(pagecache, file, pageno, 0, 0, 0, &page_st);
block= find_block(pagecache, file, pageno, 0, 0, 0, 0, &page_st);
DBUG_ASSERT(block != 0);
DBUG_ASSERT(page_st == PAGE_READ);
/* we can't unpin such page without unlock */
@ -3367,7 +3367,7 @@ restart:
/* See NOTE for pagecache_unlock about registering requests. */
reg_request= ((new_pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
(new_pin == PAGECACHE_PIN));
block= find_block(pagecache, file, pageno, level,
block= find_block(pagecache, file, pageno, level, buff != 0,
lock == PAGECACHE_LOCK_WRITE,
reg_request, &page_st);
DBUG_PRINT("info", ("Block type: %s current type %s",
@ -3785,7 +3785,6 @@ restart:
/* See NOTE for pagecache_unlock about registering requests. */
if (pin == PAGECACHE_PIN)
reg_requests(pagecache, block, 1);
DBUG_ASSERT(block != 0);
if (make_lock_and_pin(pagecache, block, lock, pin, FALSE))
{
/*
@ -3964,7 +3963,7 @@ restart:
reg_request= ((pin == PAGECACHE_PIN_LEFT_UNPINNED) ||
(pin == PAGECACHE_PIN));
block= find_block(pagecache, file, pageno, level,
TRUE,
TRUE, FALSE,
reg_request, &page_st);
if (!block)
{

View file

@ -1,5 +1,5 @@
/* Copyright (C) 2006, 2007 MySQL AB
Copyright (C) 2010 Monty Program Ab
Copyright (C) 2010-2011 Monty Program 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
@ -1292,6 +1292,21 @@ prototype_redo_exec_hook(FILE_ID)
{
tprint(tracef, " Closing table '%s'\n", info->s->open_file_name.str);
prepare_table_for_close(info, rec->lsn);
/*
Ensure that open count is 1 on close. This is needed as the
table may initially had an open_count > 0 when we initially
opened it as the server may have crashed without closing it
properly. As we now have applied all redo's for the table up to
now, we know the table is ok, so it's safe to reset the open
count to 0.
*/
if (info->s->state.open_count != 0 && info->s->reopen == 1)
{
/* let ma_close() mark the table properly closed */
info->s->state.open_count= 1;
info->s->global_changed= 1;
}
if (maria_close(info))
{
eprint(tracef, "Failed to close table");
@ -3412,7 +3427,7 @@ static int close_all_tables(void)
*/
if (info->s->state.open_count != 0)
{
/* let ma_close() mark the table properly closed */
/* let maria_close() mark the table properly closed */
info->s->state.open_count= 1;
info->s->global_changed= 1;
}

View file

@ -42,7 +42,7 @@ static CHARSET_INFO *set_collation;
static int stopwords_inited= 0;
static MY_TMPDIR maria_chk_tmpdir;
static my_bool opt_transaction_logging, opt_debug, opt_require_control_file;
static my_bool opt_warning_for_wrong_transid;
static my_bool opt_warning_for_wrong_transid, opt_update_state;
static const char *type_names[]=
{
@ -348,7 +348,8 @@ static struct my_option my_long_options[] =
"Mark tables as crashed if any errors were found and clean if check didn't "
"find any errors. This allows one to get rid of warnings like 'table not "
"properly closed'",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
&opt_update_state, &opt_update_state, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{"unpack", 'u',
"Unpack file packed with maria_pack.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@ -483,8 +484,12 @@ static void usage(void)
-i, --information Print statistics information about table that is checked.\n\
-m, --medium-check Faster than extend-check, but only finds 99.99% of\n\
all errors. Should be good enough for most cases.\n\
-T, --read-only Don't mark table as checked.\n\
-U, --update-state Mark tables as crashed if you find any errors.\n\
-T, --read-only Don't mark table as checked.\n");
--warning-for-wrong-transaction-id\n\
Give a warning if we find a transaction id in the table that is bigger\n\
than what exists in the control file. Use --skip-... to disable warning\n\
");
puts("\
Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\
@ -856,6 +861,7 @@ static void get_options(register int *argc,register char ***argv)
default_argv= *argv;
if (isatty(fileno(stdout)))
check_param.testflag|=T_WRITE_LOOP;
check_param.testflag= T_UPDATE_STATE;
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
exit(ho_error);
@ -1326,13 +1332,18 @@ static int maria_chk(HA_CHECK *param, char *filename)
(my_bool) !test(param->testflag & T_AUTO_INC));
if (info->update & HA_STATE_CHANGED && ! (param->testflag & T_READONLY))
{
error|=maria_update_state_info(param, info,
UPDATE_OPEN_COUNT |
(((param->testflag & T_REP_ANY) ?
(((param->testflag &
(T_REP_ANY | T_UPDATE_STATE)) ?
UPDATE_TIME : 0) |
(state_updated ? UPDATE_STAT : 0) |
((param->testflag & T_SORT_RECORDS) ?
UPDATE_SORT : 0)));
if (!(param->testflag & T_SILENT))
printf("State updated\n");
}
info->update&= ~HA_STATE_CHANGED;
_ma_reenable_logging_for_table(info, FALSE);
maria_lock_database(info, F_UNLCK);
@ -1438,7 +1449,7 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name)
if (share->state.check_time)
{
get_date(buff,1,share->state.check_time);
printf("Recover time: %s\n",buff);
printf("Check/recover time: %s\n",buff);
}
if (share->base.born_transactional)
{

View file

@ -249,7 +249,9 @@ typedef struct st_maria_file_bitmap
my_bool changed; /* 1 if page needs to be written */
my_bool changed_not_flushed; /* 1 if some bitmap is not flushed */
uint flush_all_requested; /**< If _ma_bitmap_flush_all waiting */
uint waiting_for_flush_all_requested; /* If someone is waiting for above */
uint non_flushable; /**< 0 if bitmap and log are in sync */
uint waiting_for_non_flushable; /* If someone is waiting for above */
PAGECACHE_FILE file; /* datafile where bitmap is stored */
#ifdef THREAD

View file

@ -23,8 +23,7 @@
src in a buffer with tot_length bytes.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
void bchange(register uchar *dst, size_t old_length, register const uchar *src,
size_t new_length, size_t tot_length)

View file

@ -21,8 +21,7 @@
comparing a shorter string with bcmp.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#ifdef HAVE_valgrind
#undef bcmp

View file

@ -29,8 +29,7 @@
code is presented for your interest and amusement.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if !defined(bfill) && !defined(HAVE_BFILL)

View file

@ -36,8 +36,7 @@
code is presented for your interest and amusement.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if !defined(HAVE_BMOVE) && !defined(bmove)

View file

@ -25,8 +25,7 @@
fastest way to move a mutiple of 512 byte.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#ifndef bmove512

View file

@ -22,8 +22,7 @@
"src-len" to the destination "dst-len" counting downwards.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if defined(MC68000) && defined(DS90)

View file

@ -13,8 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#include <m_ctype.h>
#include <fcntl.h>
#include <my_xml.h>
@ -250,7 +249,7 @@ static void
fprint_copyright(FILE *file)
{
fprintf(file,
"/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.\n"
"/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems Inc., 2010-2011 Monty Program Ab\n"
"\n"
" This program is free software; you can redistribute it and/or modify\n"
" it under the terms of the GNU General Public License as published by\n"

View file

@ -26,9 +26,8 @@
* .configure. mbmaxlen_big5=2
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_big5

View file

@ -18,9 +18,8 @@
/* This file is for binary pseudo charset, created by bar@mysql.com */
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
static uchar ctype_bin[]=
{

View file

@ -16,9 +16,8 @@
/* This file is for cp932 charaset (Windows Japanese),
and created based on ctype-sjis.c file */
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_cp932

View file

@ -65,9 +65,8 @@
#ifdef REAL_MYSQL
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#else
@ -427,8 +426,7 @@ static my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
*
* definition table reworked by Jaromir Dolecek <dolecek@ics.muni.cz>
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
static uchar NEAR ctype_czech[257] = {
0,

View file

@ -25,9 +25,8 @@
* .configure. mbmaxlen_euc_kr=2
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_euckr

View file

@ -26,9 +26,8 @@ ctype-ujis.c file.
* .configure. mbmaxlen_eucjpms=3
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_eucjpms

View file

@ -21,7 +21,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <my_global.h>
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_dec8

View file

@ -23,9 +23,8 @@
* .configure. mbmaxlen_gb2312=2
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_gb2312

View file

@ -26,9 +26,8 @@
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_gbk

View file

@ -13,9 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
static uchar ctype_latin1[] = {
0,

View file

@ -13,9 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "m_ctype.h"
#include "m_string.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef USE_MB

View file

@ -13,9 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#include "my_sys.h" /* Needed for MY_ERRNO_ERANGE */
#include <errno.h>

View file

@ -16,9 +16,8 @@
/* This file is for Shift JIS charset, and created by tommy@valley.ne.jp.
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_sjis

View file

@ -47,11 +47,10 @@
* .configure. strxfrm_multiply_tis620=4
*/
#include <my_global.h>
#include <my_sys.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#include "t_ctype.h"
#include <my_sys.h>
#ifdef HAVE_CHARSET_tis620

View file

@ -32,10 +32,8 @@
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#define MY_UCA_CNT_FLAG_SIZE 4096
#define MY_UCA_CNT_FLAG_MASK 4095

View file

@ -17,11 +17,9 @@
/* UCS2 support. Written by Alexander Barkov <bar@mysql.com> */
#include <my_global.h>
#include "strings_def.h"
#include <m_ctype.h>
#include <my_sys.h>
#include "m_string.h"
#include "m_ctype.h"
#include <errno.h>
#include <stdarg.h>

View file

@ -25,9 +25,8 @@
* .configure. mbmaxlen_ujis=3
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#ifdef HAVE_CHARSET_ujis

View file

@ -18,10 +18,8 @@
/* UTF8 according RFC 2279 */
/* Written by Alexander Barkov <bar@udm.net> */
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include <errno.h>
#include "strings_def.h"
#include <m_ctype.h>
#ifndef EILSEQ
#define EILSEQ ENOENT

View file

@ -39,9 +39,8 @@
#define REAL_MYSQL
#ifdef REAL_MYSQL
#include "my_global.h"
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#else

View file

@ -13,13 +13,9 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "strings_def.h"
#include <m_ctype.h>
#include <my_xml.h>
#ifndef SCO
#include <m_string.h>
#endif
/*

View file

@ -99,11 +99,10 @@
implementation-defined.
*/
#include <my_global.h>
#include "strings_def.h"
#include <m_ctype.h>
#include <myisampack.h>
#include <my_sys.h> /* for my_alloca */
#include <m_string.h>
#include <decimal.h>
/*

View file

@ -20,10 +20,9 @@
#undef DBUG_OFF
#endif
#include <my_global.h>
#include "strings_def.h"
#include <ctype.h>
#include <my_sys.h>
#include "m_string.h"
uchar NEAR to_upper[256];
uchar NEAR to_lower[256],NEAR sort_order[256];

View file

@ -13,8 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
/*
_dig_vec arrays are public because they are used in several outer places.

View file

@ -21,8 +21,7 @@
A empty t is allways a prefix.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
int is_prefix(register const char *s, register const char *t)
{

View file

@ -24,8 +24,7 @@
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char *llstr(longlong value,char *buff)
{

View file

@ -37,8 +37,7 @@
itoa assumes that 10 -base numbers are allways signed and other arn't.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if defined(HAVE_LONG_LONG) && !defined(longlong2str) && !defined(HAVE_LONGLONG2STR)

View file

@ -20,8 +20,7 @@
_dig_vector in a portable manner.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
extern char *longlong2str_with_dig_vector(longlong val,char *dst,int radix,
const char *dig_vector);

View file

@ -21,9 +21,8 @@
frequently.
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
char *my_strchr(CHARSET_INFO *cs, const char *str, const char *end,

View file

@ -13,9 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "strings_def.h"
#include <my_sys.h> /* Needed for MY_ERRNO_ERANGE */
#include <m_string.h>
#undef ULONGLONG_MAX
/*

View file

@ -13,10 +13,9 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include <m_string.h>
#include <stdarg.h>
#include "strings_def.h"
#include <m_ctype.h>
#include <stdarg.h>
/*
Limited snprintf() implementations

View file

@ -22,8 +22,7 @@
the pattern counted from the begining of the string.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
size_t r_strinstr(reg1 const char * str, size_t from, reg4 const char * search)
{

View file

@ -37,9 +37,8 @@
call has no problems.
*/
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
#include "strings_def.h"
#include <m_ctype.h>
#include "my_sys.h" /* defines errno */
#include <errno.h>

View file

@ -13,8 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
static void *my_str_malloc_default(size_t size)
{

View file

@ -15,9 +15,8 @@
/* Test of all stringfunktions that is coded in assembler */
#include <my_global.h>
#include "strings_def.h"
#include <stdarg.h>
#include "m_string.h"
#define F_LEN 8
#define F_CHAR 'A'
@ -50,10 +49,10 @@ int main(void)
errors=tests=0;
init_strings();
test_arg("bcmp(from,to,5)",(long) my_test(bcmp(from,to,5)),1L);
test_arg("bcmp(from,from,5)",(long) bcmp(from,from,5),0L);
test_arg("bcmp(from,to,5)",(long) my_test(bcmp((uchar*) from, (uchar*) to,5)),1L);
test_arg("bcmp(from,from,5)",(long) bcmp((uchar*) from, (uchar*) from,5),0L);
test_arg("bcmp(from,to,0)",(long) bcmp(from,to,0),0L);
test_arg("bcmp(from,to,0)",(long) bcmp((uchar*) from, (uchar*) to,0),0L);
test_arg("strend(from)",(long) strend(from),(long) from+F_LEN);
test_arg("strchr(v1,'M')",(long) strchr(v1,'M'),(long) v1);
test_arg("strchr(v1,'y')",(long) strchr(v1,'y'),(long) v1+4);
@ -90,10 +89,10 @@ int main(void)
test_strarg("bmove(to,from,4)",(bmove(to,from,4),0L),INT_MAX32,4,F_CHAR,
0,0);
test_strarg("bmove(to,from,0)",(bmove(to,from,0),0L),INT_MAX32,0,0);
test_strarg("bmove_upp(to+6,from+6,3)",(bmove_upp(to+6,from+6,3),0L),INT_MAX32,
test_strarg("bmove_upp(to+6,from+6,3)",(bmove_upp((uchar*) to+6, (uchar*) from+6,3),0L),INT_MAX32,
3,T_CHAR,3,F_CHAR,0,0);
test_strarg("bmove_upp(to,from,0)",(bmove_upp(to,from,0),0L),INT_MAX32,0,0);
test_strarg("bmove_align(to,from,8)",(bmove_align(to,from,8),0L),INT_MAX32,
test_strarg("bmove_upp(to,from,0)",(bmove_upp((uchar*) to, (uchar*) from,0),0L),INT_MAX32,0,0);
test_strarg("bmove_align(to,from,8)",(bmove_align((uchar*) to, (uchar*) from,8),0L),INT_MAX32,
8,F_CHAR,0,0);
test_strarg("strappend(to,3,' ')",(strappend(to,3,' '),0L),INT_MAX32,
3,T_CHAR,1,0,T_LEN-4,T_CHAR,1,0,0,0);
@ -124,7 +123,7 @@ int main(void)
test_strarg("strxnmov(to,2,\"!!\",NullS)",strxnmov(to,2,"!!","xx",NullS),to+2,2,'!',0,0,0);
test_strarg("strxnmov(to,2,\"!\",\"x\",\"y\",NullS)",strxnmov(to,2,"!","x","y",NullS),to+2,1,'!',1,'x',0,0,0);
test_strarg("bchange(to,2,from,4,6)",(bchange(to,2,from,4,6),0L),INT_MAX32,
test_strarg("bchange(to,2,from,4,6)",(bchange((uchar*) to,2,(uchar*) from,4,6),0L),INT_MAX32,
4,F_CHAR,2,T_CHAR,0,0);
printf("tests: %d errors: %d\n",tests,errors);
@ -233,7 +232,7 @@ int compare_buff(const char *message, char * b1, char * b2, int length,
{
int i,error=0;
if (bcmp(b1,b2,length))
if (bcmp((uchar*) b1, (uchar*) b2, length))
{
errors++;
printf("func: '%s' Buffers differ\nIs: ",message);
@ -259,19 +258,19 @@ int compare_buff(const char *message, char * b1, char * b2, int length,
return error;
} /* compare_buff */
/* These are here to be loaded and examined */
/* These are here to be loaded and examined in debugger */
extern void dummy_functions(void);
void dummy_functions(void)
{
VOID(memchr(from,'a',5));
VOID(memcmp(from,to,5));
VOID(memcpy(from,to,5));
VOID(memset(from,' ',5));
VOID(strcmp(from,to));
VOID(strcpy(from,to));
VOID(strstr(from,to));
VOID(strrchr(from,'a'));
(void) memchr(from,'a',5);
(void) memcmp(from,to,5);
(void) memcpy(from,to,5);
(void) memset(from,' ',5);
(void) strcmp(from,to);
(void) strcpy(from,to);
(void) strstr(from,to);
(void) strrchr(from,'a');
return;
}

View file

@ -23,8 +23,7 @@
trunked. The des+len character is allways set to NULL.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
void strappend(register char *s, size_t len, pchar fill)

View file

@ -22,8 +22,7 @@
occurs, or a pointer to the end-null of s if c does not occur in s.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if defined(MC68000) && defined(DS90)

View file

@ -24,8 +24,7 @@
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char * strcont(reg1 const char *str,reg2 const char *set)
{

View file

@ -27,8 +27,7 @@
Beware: the asm version works only if strlen(s) < 65535.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#if VaxAsm

View file

@ -23,8 +23,7 @@
strfill() returns pointer to dest+len;
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char * strfill(char *s, size_t len, pchar fill)
{

31
strings/strings_def.h Normal file
View file

@ -0,0 +1,31 @@
/* Copyright (C) 2011 Monty Program 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 */
/* This file is to be include first in all files in the string directory */
#include <my_global.h> /* Define standar vars */
#include "m_string.h" /* Exernal defintions of string functions */
/*
We can't use the original DBUG_ASSERT() (which includes _db_flush())
in the strings library as libdbug is compiled after the the strings
library and we don't want to have strings depending on libdbug which
depends on mysys and strings.
*/
#if !defined(DBUG_OFF)
#undef DBUG_ASSERT
#define DBUG_ASSERT(A) assert(A)
#endif

View file

@ -25,8 +25,7 @@
char is 1.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
size_t strinstr(reg1 const char *str,reg4 const char *search)
{

View file

@ -24,8 +24,7 @@
strmake() returns pointer to closing null
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char *strmake(register char *dst, register const char *src, size_t length)
{

View file

@ -21,8 +21,7 @@
into dst, which seems useful.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#ifndef strmov

View file

@ -13,8 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
/* A trivial implementation */
char *strmov_overlapp(char *dst, const char *src)

View file

@ -20,8 +20,7 @@
strnlen(s, len) returns the length of s or len if s is longer than len.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#ifndef HAVE_STRNLEN

View file

@ -20,8 +20,7 @@
truncated.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char *strnmov(register char *dst, register const char *src, size_t n)
{

View file

@ -27,8 +27,7 @@
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#ifndef HAVE_STRSTR

View file

@ -40,7 +40,7 @@
/* see 'strtoll.c' and 'strtoull.c' for the reasons */
#endif
#include "m_ctype.h"
#include <m_ctype.h>
#include "my_sys.h" /* defines errno */
#include <errno.h>

View file

@ -27,7 +27,7 @@
*/
#include "my_base.h" /* Includes errno.h + EOVERFLOW */
#include "m_ctype.h"
#include <m_ctype.h>
#ifdef HAVE_IEEEFP_H
#include <ieeefp.h>
#endif

View file

@ -20,8 +20,7 @@
functions, especially they handle tricks for Tru64 where 'long' is
64 bit already and our 'longlong' is just a 'long'.
*/
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#if !defined(MSDOS) && !defined(HAVE_STRTOL) && !defined(__WIN__)
#include "strto.c"

View file

@ -24,8 +24,7 @@
for 'strtoll()' but no implementation, see "6.1 New C99 library functions"
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
*/
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#if !defined(HAVE_STRTOLL) && defined(HAVE_LONG_LONG)
#define USE_LONGLONG

View file

@ -20,8 +20,7 @@
functions, especially they handle tricks for Tru64 where 'long' is
64 bit already and our 'longlong' is just a 'long'.
*/
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#if !defined(MSDOS) && !defined(HAVE_STRTOUL)
#define USE_UNSIGNED

View file

@ -24,8 +24,7 @@
for 'strtoull()' but no implementation, see "6.1 New C99 library functions"
in file '/usr/share/doclib/cc.dtk/release_notes.txt'.
*/
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#if !defined(HAVE_STRTOULL) && defined(HAVE_LONG_LONG)
#define USE_UNSIGNED

View file

@ -30,8 +30,7 @@
character pointer, or not the same bit pattern as NullS.
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
char *strxmov(char *dst,const char *src, ...)
{

View file

@ -35,8 +35,7 @@
if total-string-length >= length then dst[length] will be set to \0
*/
#include <my_global.h>
#include "m_string.h"
#include "strings_def.h"
#include <stdarg.h>
char *strxnmov(char *dst, size_t len, const char *src, ...)

View file

@ -13,15 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
*/
#include <my_global.h>
#include <m_string.h>
#include "strings_def.h"
#include <m_ctype.h>
#include "m_ctype.h"
typedef struct my_ctype_name_st
@ -204,7 +197,7 @@ int main(int ac, char ** av)
int charnum=0;
int num=0;
printf("static unsigned char uctype_page%02X[256]=\n{\n",plane);
printf("static unsigned char uctype_page%02X[256]=\n{\n", (uint) plane);
for(charnum=0;charnum<256;charnum++)
{
@ -231,7 +224,7 @@ int main(int ac, char ** av)
{
char plane_name[128]="NULL";
if(uctype[plane].ctype){
sprintf(plane_name,"uctype_page%02X",plane);
sprintf(plane_name,"uctype_page%02X",(uint) plane);
}
printf("\t{%d,%s}%s\n",uctype[plane].pctype,plane_name,plane<255?",":"");
}

View file

@ -15,7 +15,7 @@
/* Do udiv and urem if machine dosn't have it */
#include <my_global.h>
#include "strings_def.h"
#include <math.h>
unsigned long udiv(long unsigned int a, long unsigned int b)

View file

@ -13,8 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "my_global.h"
#include "m_string.h"
#include "strings_def.h"
#include "my_xml.h"