Commit 4328a8cf authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

ChangeLog merging

parents ea459bc9 7d276c3b
MySQL Manual style guidelines
Paul DuBois <paul@snake.net>
The following list of guidelines contains items that I've been jotting
down over time as style questions have come up in relation to the
MySQL manual. I wouldn't say they're exactly "official", but they
do reflect current working practice. Arjen asked me to post this
on the list some time ago so that it can be discussed with a view
to adding it (or something like it) to the source tree. So here it is!
MySQL Reference Manual Style Guidelines
The manual is written in UK English, not American English. This means:
colour, not color
behaviour, not behavior
authorise, not authorize
optimise, not optimize
etc.
Write MySQL, not @strong{MySQL} (the manual used to use the latter, but no
more).
Write Unix, not UNIX.
Use uppercase for SQL keywords, functions names, etc., when writing
SQL statement examples.
To write a list of items, add commas after all items preceding the last one:
Correct: Features, products, and services
Incorrect: Features, products and services
How to pluralize keywords that are enclosed in @code:
Correct: @code{SELECT}s
Incorrect: @code{SELECTs} or @code{SELECT}'s or @code{SELECT}:s
Use "its" and "it's" correctly. These words are exceptions to
the normal use of "'s" to indicate possession:
it's = it is (e.g., "one of the strengths of MySQL is that it's fast")
its = possession (e.g., "MySQL is fast, which is one of its strengths")
"a lot" is two words. "alot" is rebarbative.
Write lowercase, not lower case
Write uppercase, not upper case
Write lettercase, not letter case
Write "web site" (two words), not "website", and "web page" rather
than "webpage".
The word "data" is problematic. It's commonly used both in plural and in
singular form. The manual uses it as plural, which means you use "data are"
rather than "data is". It's unfortunate that no matter which form we use, it
will look incorrect to some people. But we can at least be internally
consistent.
Write "press Enter", not "hit Return" or "hit Enter".
When reproducing program output, reproduce it exactly, even if it contains
typos. Don't "fix" it. (If the output is produced by a MySQL program, then
fix the source for the program to write the output correctly without the
typo, then update the manual to match.)
Use "okay" rather than "ok" or "Ok" or "OK" in sentences.
Exceptions:
- When describing instructions for a GUI with buttons that say
"OK", then use "OK". That is, use the label that the GUI uses.
- When showing the output from a program, show the output exactly;
don't change "ok" to "okay", etc.
Write "Open Source", not "open source".
To put something in quotes, do it ``like this,'' not "like this"
or 'like this.' In the latter two cases, the quotes will come
out looking rotten in printed formats.
Exception: quotes in code examples should be written using whatever
contention the program language requires.
Table types should be written using @code{}; write @code{MyISAM}, not
MyISAM.
When possible, use table names that are singular, not plural.
For example, use "item" rather than "items", or "person" rather than
"people". Sometimes you can add "_list" (as in "item_list") to make it
more clear that the name refers to a collection of items.
Some commonly occurring misspelling:
Correct Incorrect
---------------------------
publicly publically
statically staticly
dynamically dynamicly
automatically automaticly
There is no hyphen after "ly" words. Write statically linked, not
statically-linked.
To refer to ASCII codes, use ASCII n, not ASCII(n), unless you're
referring to the ASCII() function, which case you use @code{ASCII()}.
ASCII 13 indicates ASCII character code 13
@code{ASCII(13)} indicates a function call
backup is a noun or adjective (as in "a backup file"), back up is a verb
(as in "to back up a database")
rollback is a noun or adjective (as in "a rollback operation"), roll back
is a verb (as in "roll back a transaction")
core dump is a noun or a verb (as in "a core dump file" or "a program
core dumps when it fails"). In the latter case, however, it's better say
say "a program dumps core when it fails").
Write character set names in @code{}, e.g., @code{latin1}, @code{win1251}.
To prevent problems with various output formats, there should be no link
titles in a @uref{}. So @uref{url} is allowed, @uref{url,blabla} is not.
Use this format:
@uref{url} (WWW)
Not this format:
@uref{url, WWW}
Similarly for FTP sites.
URLs ending in a domain name or directory should have a "/" at the end.
(For example, the URLs for all mirror sites should be written that way.)
Privilege names are written using @strong and lowercase, as in "the
@strong{process} privilege". Column names in the grant tables are
written using @code and the lettercase found in the table definition,
as in "the @code{Process_priv} column".
Write "e-mail", not "email". Exceptions are the @email{} construct, and
the Email attribute name in X509 certificate strings.
Write thread-safe, transaction-safe, replication-safe, not thread safe,
transaction safe, replication safe.
Write wildcard, not wild card or wild-card.
This diff is collapsed.
...@@ -614,8 +614,8 @@ int main(int argc, char **argv) ...@@ -614,8 +614,8 @@ int main(int argc, char **argv)
if (dbConnect(current_host, current_user, opt_password)) if (dbConnect(current_host, current_user, opt_password))
exit(EX_MYSQLERR); exit(EX_MYSQLERR);
if (opt_auto_repair && if (opt_auto_repair &&
init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64)) my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64))
{ {
first_error = 1; first_error = 1;
goto end; goto end;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
** and adapted to mysqldump 05/11/01 by Jani Tolonen ** and adapted to mysqldump 05/11/01 by Jani Tolonen
*/ */
#define DUMP_VERSION "9.01" #define DUMP_VERSION "9.02"
#include <my_global.h> #include <my_global.h>
#include <my_sys.h> #include <my_sys.h>
...@@ -201,8 +201,7 @@ static struct my_option my_long_options[] = ...@@ -201,8 +201,7 @@ static struct my_option my_long_options[] =
0, 0}, 0, 0},
{"result-file", 'r', {"result-file", 'r',
"Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\\n' from being converted to '\\n\\r' (newline + carriage return).", "Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\\n' from being converted to '\\n\\r' (newline + carriage return).",
(gptr*) &md_result_file, (gptr*) &md_result_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
0, 0, 0, 0, 0, 0},
{"socket", 'S', "Socket file to use for connection.", {"socket", 'S', "Socket file to use for connection.",
(gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR, (gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
...@@ -366,9 +365,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -366,9 +365,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
opt_xml = 1; opt_xml = 1;
opt_disable_keys=0; opt_disable_keys=0;
break; break;
default:
fprintf(stderr,"%s: Illegal option character '%c'\n",my_progname,opterr);
/* Fall throught */
case 'I': case 'I':
case '?': case '?':
usage(); usage();
......
...@@ -2360,7 +2360,7 @@ int main(int argc, char** argv) ...@@ -2360,7 +2360,7 @@ int main(int argc, char** argv)
file_stack_end = file_stack + MAX_INCLUDE_DEPTH; file_stack_end = file_stack + MAX_INCLUDE_DEPTH;
cur_file = file_stack; cur_file = file_stack;
lineno = lineno_stack; lineno = lineno_stack;
init_dynamic_array(&q_lines, sizeof(struct st_query*), INIT_Q_LINES, my_init_dynamic_array(&q_lines, sizeof(struct st_query*), INIT_Q_LINES,
INIT_Q_LINES); INIT_Q_LINES);
memset(block_stack, 0, sizeof(block_stack)); memset(block_stack, 0, sizeof(block_stack));
block_stack_end = block_stack + BLOCK_STACK_DEPTH; block_stack_end = block_stack + BLOCK_STACK_DEPTH;
......
...@@ -135,7 +135,7 @@ static int init_question_widget(QUESTION_WIDGET* w, const char* question, ...@@ -135,7 +135,7 @@ static int init_question_widget(QUESTION_WIDGET* w, const char* question,
} }
w->question = question; w->question = question;
w->default_ind = default_ind; w->default_ind = default_ind;
if (init_dynamic_array(&w->answers,sizeof(char*), if (my_init_dynamic_array(&w->answers,sizeof(char*),
ANSWERS_CHUNCK,ANSWERS_CHUNCK)) ANSWERS_CHUNCK,ANSWERS_CHUNCK))
die("Out of memory"); die("Out of memory");
return 0; return 0;
......
...@@ -230,9 +230,9 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf) ...@@ -230,9 +230,9 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf)
static void init_sym_table() static void init_sym_table()
{ {
char buf[512]; char buf[512];
if(init_dynamic_array(&sym_table, sizeof(SYM_ENTRY), INIT_SYM_TABLE, if(my_init_dynamic_array(&sym_table, sizeof(SYM_ENTRY), INIT_SYM_TABLE,
INC_SYM_TABLE)) INC_SYM_TABLE))
die("Failed in init_dynamic_array() -- looks like out of memory problem"); die("Failed in my_init_dynamic_array() -- looks like out of memory problem");
while(fgets(buf, sizeof(buf), fp_sym)) while(fgets(buf, sizeof(buf), fp_sym))
{ {
......
...@@ -243,7 +243,7 @@ int db_show_field(char *b,const char *database,const char *table, const char *fi ...@@ -243,7 +243,7 @@ int db_show_field(char *b,const char *database,const char *table, const char *fi
if (!(database[0] && table[0] && field[0])) if (!(database[0] && table[0] && field[0]))
DBUG_RETURN(-1); DBUG_RETURN(-1);
init_dynamic_array(&field_array, sizeof(buff), 4096, 1024); my_init_dynamic_array(&field_array, sizeof(buff), 4096, 1024);
if (mysql_select_db(sock,database)) if (mysql_select_db(sock,database))
{ {
...@@ -593,7 +593,7 @@ gptr db_load_functions() ...@@ -593,7 +593,7 @@ gptr db_load_functions()
int i=0; int i=0;
struct func_st func; struct func_st func;
DBUG_ENTER("db_load_functions"); DBUG_ENTER("db_load_functions");
init_dynamic_array(&functions_array, sizeof(struct func_st), 4096, 1024); my_init_dynamic_array(&functions_array, sizeof(struct func_st), 4096, 1024);
while(functions[i]) { while(functions[i]) {
strcpy(func.type_s, functions[i]); /* Type in string: "table"` */ strcpy(func.type_s, functions[i]); /* Type in string: "table"` */
strcpy(func.filename, functions[i+1]); /* Name like it appears on FS: "count" */ strcpy(func.filename, functions[i+1]); /* Name like it appears on FS: "count" */
......
...@@ -651,9 +651,9 @@ extern my_bool real_open_cached_file(IO_CACHE *cache); ...@@ -651,9 +651,9 @@ extern my_bool real_open_cached_file(IO_CACHE *cache);
extern void close_cached_file(IO_CACHE *cache); extern void close_cached_file(IO_CACHE *cache);
File create_temp_file(char *to, const char *dir, const char *pfx, File create_temp_file(char *to, const char *dir, const char *pfx,
int mode, myf MyFlags); int mode, myf MyFlags);
#define init_dynamic_array(A,B,C,D) _init_dynamic_array(A,B,C,D CALLER_INFO) #define my_init_dynamic_array(A,B,C,D) init_dynamic_array(A,B,C,D CALLER_INFO)
#define init_dynamic_array_ci(A,B,C,D) _init_dynamic_array(A,B,C,D ORIG_CALLER_INFO) #define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array(A,B,C,D ORIG_CALLER_INFO)
extern my_bool _init_dynamic_array(DYNAMIC_ARRAY *array,uint element_size, extern my_bool init_dynamic_array(DYNAMIC_ARRAY *array,uint element_size,
uint init_alloc,uint alloc_increment CALLER_INFO_PROTO); uint init_alloc,uint alloc_increment CALLER_INFO_PROTO);
extern my_bool insert_dynamic(DYNAMIC_ARRAY *array,gptr element); extern my_bool insert_dynamic(DYNAMIC_ARRAY *array,gptr element);
extern byte *alloc_dynamic(DYNAMIC_ARRAY *array); extern byte *alloc_dynamic(DYNAMIC_ARRAY *array);
......
...@@ -848,13 +848,13 @@ static void mysql_read_default_options(struct st_mysql_options *options, ...@@ -848,13 +848,13 @@ static void mysql_read_default_options(struct st_mysql_options *options,
options->client_flag&= CLIENT_LOCAL_FILES; options->client_flag&= CLIENT_LOCAL_FILES;
break; break;
case 23: /* replication probe */ case 23: /* replication probe */
options->rpl_probe = 1; options->rpl_probe= 1;
break; break;
case 24: /* enable-reads-from-master */ case 24: /* enable-reads-from-master */
options->rpl_parse = 1; options->no_master_reads= 0;
break; break;
case 25: /* repl-parse-query */ case 25: /* repl-parse-query */
options->no_master_reads = 0; options->rpl_parse= 1;
break; break;
default: default:
DBUG_PRINT("warning",("unknown option: %s",option[0])); DBUG_PRINT("warning",("unknown option: %s",option[0]));
......
...@@ -481,15 +481,15 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length) ...@@ -481,15 +481,15 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
continue; continue;
end=ftsi.pos+ftsi.len; end=ftsi.pos+ftsi.len;
while (ft_simple_get_word((byte **)&ftsi.pos,(byte *)end,&word)) while (ft_simple_get_word((byte **) &ftsi.pos,(byte *) end, &word))
{ {
int a, b, c; int a, b, c;
for (a=0, b=ftb->queue.elements, c=(a+b)/2; b-a>1; c=(a+b)/2) for (a=0, b=ftb->queue.elements, c=(a+b)/2; b-a>1; c=(a+b)/2)
{ {
ftbw=(FTB_WORD *)(ftb->list[c]); ftbw=(FTB_WORD *)(ftb->list[c]);
if (_mi_compare_text(ftb->charset, word.pos,word.len, if (_mi_compare_text(ftb->charset, word.pos, word.len,
(uchar*) ftbw->word+1,ftbw->len-1, (uchar*) ftbw->word+1, ftbw->len-1,
(ftbw->flags&FTB_FLAG_TRUNC) ) >0) (my_bool) (ftbw->flags&FTB_FLAG_TRUNC)) >0)
b=c; b=c;
else else
a=c; a=c;
...@@ -498,8 +498,8 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length) ...@@ -498,8 +498,8 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
{ {
ftbw=(FTB_WORD *)(ftb->list[c]); ftbw=(FTB_WORD *)(ftb->list[c]);
if (_mi_compare_text(ftb->charset, word.pos,word.len, if (_mi_compare_text(ftb->charset, word.pos,word.len,
(uchar*) ftbw->word+1,ftbw->len-1, (uchar*) ftbw->word+1,ftbw->len-1,
(ftbw->flags&FTB_FLAG_TRUNC) )) (my_bool) (ftbw->flags&FTB_FLAG_TRUNC)))
break; break;
if (ftbw->docid[1] == docid) if (ftbw->docid[1] == docid)
continue; continue;
......
...@@ -122,7 +122,7 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, ...@@ -122,7 +122,7 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
if ((sort_keys=(uchar **)my_malloc(keys*(sort_length+sizeof(char*))+ if ((sort_keys=(uchar **)my_malloc(keys*(sort_length+sizeof(char*))+
HA_FT_MAXLEN, MYF(0)))) HA_FT_MAXLEN, MYF(0))))
{ {
if (init_dynamic_array(&buffpek, sizeof(BUFFPEK), maxbuffer, if (my_init_dynamic_array(&buffpek, sizeof(BUFFPEK), maxbuffer,
maxbuffer/2)) maxbuffer/2))
my_free((gptr) sort_keys,MYF(0)); my_free((gptr) sort_keys,MYF(0));
else else
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
even if space allocation failed even if space allocation failed
*/ */
my_bool _init_dynamic_array(DYNAMIC_ARRAY *array, uint element_size, my_bool init_dynamic_array(DYNAMIC_ARRAY *array, uint element_size,
uint init_alloc, uint init_alloc,
uint alloc_increment CALLER_INFO_PROTO) uint alloc_increment CALLER_INFO_PROTO)
{ {
......
...@@ -122,7 +122,7 @@ static my_bool read_charset_index(CS_ID ***charsets, myf myflags) ...@@ -122,7 +122,7 @@ static my_bool read_charset_index(CS_ID ***charsets, myf myflags)
fb.buf[0] = '\0'; fb.buf[0] = '\0';
fb.p = fb.buf; fb.p = fb.buf;
if (init_dynamic_array(&cs, sizeof(CS_ID *), 32, 32)) if (my_init_dynamic_array(&cs, sizeof(CS_ID *), 32, 32))
return TRUE; return TRUE;
while (!get_word(&fb, buf) && !get_word(&fb, num_buf)) while (!get_word(&fb, buf) && !get_word(&fb, num_buf))
...@@ -180,7 +180,7 @@ static my_bool init_available_charsets(myf myflags) ...@@ -180,7 +180,7 @@ static my_bool init_available_charsets(myf myflags)
pthread_mutex_lock(&THR_LOCK_charset); pthread_mutex_lock(&THR_LOCK_charset);
if (!cs_info_table.buffer) /* If not initialized */ if (!cs_info_table.buffer) /* If not initialized */
{ {
init_dynamic_array(&cs_info_table, sizeof(CHARSET_INFO*), 16, 8); my_init_dynamic_array(&cs_info_table, sizeof(CHARSET_INFO*), 16, 8);
error = read_charset_index(&available_charsets, myflags); error = read_charset_index(&available_charsets, myflags);
} }
charset_initialized=1; charset_initialized=1;
......
...@@ -123,7 +123,7 @@ void load_defaults(const char *conf_file, const char **groups, ...@@ -123,7 +123,7 @@ void load_defaults(const char *conf_file, const char **groups,
for (; *groups ; groups++) for (; *groups ; groups++)
group.count++; group.count++;
if (init_dynamic_array(&args, sizeof(char*),*argc, 32)) if (my_init_dynamic_array(&args, sizeof(char*),*argc, 32))
goto err; goto err;
if (forced_default_file) if (forced_default_file)
{ {
......
...@@ -44,7 +44,7 @@ my_bool _hash_init(HASH *hash,uint size,uint key_offset,uint key_length, ...@@ -44,7 +44,7 @@ my_bool _hash_init(HASH *hash,uint size,uint key_offset,uint key_length,
DBUG_PRINT("enter",("hash: %lx size: %d",hash,size)); DBUG_PRINT("enter",("hash: %lx size: %d",hash,size));
hash->records=0; hash->records=0;
if (init_dynamic_array_ci(&hash->array,sizeof(HASH_LINK),size,0)) if (my_init_dynamic_array_ci(&hash->array,sizeof(HASH_LINK),size,0))
{ {
hash->free=0; /* Allow call to hash_free */ hash->free=0; /* Allow call to hash_free */
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
......
...@@ -105,6 +105,8 @@ static long thread_id=0; ...@@ -105,6 +105,8 @@ static long thread_id=0;
my_bool my_thread_init(void) my_bool my_thread_init(void)
{ {
struct st_my_thread_var *tmp; struct st_my_thread_var *tmp;
my_bool error=0;
#ifdef EXTRA_DEBUG_THREADS #ifdef EXTRA_DEBUG_THREADS
fprintf(stderr,"my_thread_init(): thread_id=%ld\n",pthread_self()); fprintf(stderr,"my_thread_init(): thread_id=%ld\n",pthread_self());
#endif #endif
...@@ -117,16 +119,14 @@ my_bool my_thread_init(void) ...@@ -117,16 +119,14 @@ my_bool my_thread_init(void)
{ {
#ifdef EXTRA_DEBUG #ifdef EXTRA_DEBUG
fprintf(stderr,"my_thread_init() called more than once in thread %ld\n", fprintf(stderr,"my_thread_init() called more than once in thread %ld\n",
pthread_self()); pthread_self());
#endif #endif
pthread_mutex_unlock(&THR_LOCK_lock); goto end;
return 0; /* Safequard */
} }
if (!(tmp=(struct st_my_thread_var *) if (!(tmp= (struct st_my_thread_var *) calloc(1, sizeof(*tmp))))
calloc(1, sizeof(struct st_my_thread_var))))
{ {
pthread_mutex_unlock(&THR_LOCK_lock); error= 1;
return 1; goto end;
} }
pthread_setspecific(THR_KEY_mysys,tmp); pthread_setspecific(THR_KEY_mysys,tmp);
...@@ -146,7 +146,7 @@ end: ...@@ -146,7 +146,7 @@ end:
#if !defined(__WIN__) || defined(USE_TLS) || ! defined(SAFE_MUTEX) #if !defined(__WIN__) || defined(USE_TLS) || ! defined(SAFE_MUTEX)
pthread_mutex_unlock(&THR_LOCK_lock); pthread_mutex_unlock(&THR_LOCK_lock);
#endif #endif
return 0; return error;
} }
void my_thread_end(void) void my_thread_end(void)
......
...@@ -94,7 +94,7 @@ extern "C" { ...@@ -94,7 +94,7 @@ extern "C" {
void init_raid(void) void init_raid(void)
{ {
/* Allocate memory for global file to raid map */ /* Allocate memory for global file to raid map */
init_dynamic_array(&RaidFd::_raid_map, sizeof(RaidFd*), 4096, 1024); my_init_dynamic_array(&RaidFd::_raid_map, sizeof(RaidFd*), 4096, 1024);
} }
void end_raid(void) void end_raid(void)
{ {
......
...@@ -531,14 +531,14 @@ int MYSQL_LOG::purge_logs(THD* thd, const char* to_log) ...@@ -531,14 +531,14 @@ int MYSQL_LOG::purge_logs(THD* thd, const char* to_log)
error = LOG_INFO_MEM; error = LOG_INFO_MEM;
goto err; goto err;
} }
if (init_dynamic_array(&logs_to_purge, sizeof(char*), 1024, 1024)) if (my_init_dynamic_array(&logs_to_purge, sizeof(char*), 1024, 1024))
{ {
error = LOG_INFO_MEM; error = LOG_INFO_MEM;
goto err; goto err;
} }
logs_to_purge_inited = 1; logs_to_purge_inited = 1;
if (init_dynamic_array(&logs_to_keep, sizeof(char*), 1024, 1024)) if (my_init_dynamic_array(&logs_to_keep, sizeof(char*), 1024, 1024))
{ {
error = LOG_INFO_MEM; error = LOG_INFO_MEM;
goto err; goto err;
......
...@@ -246,9 +246,10 @@ err: ...@@ -246,9 +246,10 @@ err:
} }
/* called from get_options() in mysqld.cc on start-up */ /* called from get_options() in mysqld.cc on start-up */
void init_slave_skip_errors(char* arg)
void init_slave_skip_errors(const char* arg)
{ {
char* p; const char *p;
my_bool last_was_digit = 0; my_bool last_was_digit = 0;
if (bitmap_init(&slave_error_mask,MAX_SLAVE_ERROR,0)) if (bitmap_init(&slave_error_mask,MAX_SLAVE_ERROR,0))
{ {
...@@ -275,8 +276,11 @@ void init_slave_skip_errors(char* arg) ...@@ -275,8 +276,11 @@ void init_slave_skip_errors(char* arg)
} }
} }
// we assume we have a run lock on rli and that the both slave thread /*
// are not running We assume we have a run lock on rli and that the both slave thread
are not running
*/
int purge_relay_logs(RELAY_LOG_INFO* rli, bool just_reset, const char** errmsg) int purge_relay_logs(RELAY_LOG_INFO* rli, bool just_reset, const char** errmsg)
{ {
DBUG_ENTER("purge_relay_logs"); DBUG_ENTER("purge_relay_logs");
...@@ -514,7 +518,7 @@ void init_table_rule_hash(HASH* h, bool* h_inited) ...@@ -514,7 +518,7 @@ void init_table_rule_hash(HASH* h, bool* h_inited)
void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited) void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited)
{ {
init_dynamic_array(a, sizeof(TABLE_RULE_ENT*), TABLE_RULE_ARR_SIZE, my_init_dynamic_array(a, sizeof(TABLE_RULE_ENT*), TABLE_RULE_ARR_SIZE,
TABLE_RULE_ARR_SIZE); TABLE_RULE_ARR_SIZE);
*a_inited = 1; *a_inited = 1;
} }
......
...@@ -333,7 +333,7 @@ typedef struct st_table_rule_ent ...@@ -333,7 +333,7 @@ typedef struct st_table_rule_ent
#define SLAVE_FORCE_ALL 4 #define SLAVE_FORCE_ALL 4
int init_slave(); int init_slave();
void init_slave_skip_errors(char* arg); void init_slave_skip_errors(const char* arg);
int flush_master_info(MASTER_INFO* mi); int flush_master_info(MASTER_INFO* mi);
int flush_relay_log_info(RELAY_LOG_INFO* rli); int flush_relay_log_info(RELAY_LOG_INFO* rli);
int register_slave_on_master(MYSQL* mysql); int register_slave_on_master(MYSQL* mysql);
......
...@@ -163,7 +163,7 @@ int acl_init(bool dont_read_acl_tables) ...@@ -163,7 +163,7 @@ int acl_init(bool dont_read_acl_tables)
init_sql_alloc(&mem,1024,0); init_sql_alloc(&mem,1024,0);
init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0); init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0);
VOID(init_dynamic_array(&acl_hosts,sizeof(ACL_HOST),20,50)); VOID(my_init_dynamic_array(&acl_hosts,sizeof(ACL_HOST),20,50));
while (!(read_record_info.read_record(&read_record_info))) while (!(read_record_info.read_record(&read_record_info)))
{ {
ACL_HOST host; ACL_HOST host;
...@@ -187,7 +187,7 @@ int acl_init(bool dont_read_acl_tables) ...@@ -187,7 +187,7 @@ int acl_init(bool dont_read_acl_tables)
freeze_size(&acl_hosts); freeze_size(&acl_hosts);
init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0); init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0);
VOID(init_dynamic_array(&acl_users,sizeof(ACL_USER),50,100)); VOID(my_init_dynamic_array(&acl_users,sizeof(ACL_USER),50,100));
if (table->field[2]->field_length == 8 && if (table->field[2]->field_length == 8 &&
protocol_version == PROTOCOL_VERSION) protocol_version == PROTOCOL_VERSION)
{ {
...@@ -273,7 +273,7 @@ int acl_init(bool dont_read_acl_tables) ...@@ -273,7 +273,7 @@ int acl_init(bool dont_read_acl_tables)
freeze_size(&acl_users); freeze_size(&acl_users);
init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0); init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0);
VOID(init_dynamic_array(&acl_dbs,sizeof(ACL_DB),50,100)); VOID(my_init_dynamic_array(&acl_dbs,sizeof(ACL_DB),50,100));
while (!(read_record_info.read_record(&read_record_info))) while (!(read_record_info.read_record(&read_record_info)))
{ {
ACL_DB db; ACL_DB db;
...@@ -846,7 +846,7 @@ int wild_case_compare(const char *str,const char *wildstr) ...@@ -846,7 +846,7 @@ int wild_case_compare(const char *str,const char *wildstr)
static void init_check_host(void) static void init_check_host(void)
{ {
DBUG_ENTER("init_check_host"); DBUG_ENTER("init_check_host");
VOID(init_dynamic_array(&acl_wild_hosts,sizeof(struct acl_host_and_ip), VOID(my_init_dynamic_array(&acl_wild_hosts,sizeof(struct acl_host_and_ip),
acl_users.elements,1)); acl_users.elements,1));
VOID(hash_init(&acl_check_hosts,acl_users.elements,0,0, VOID(hash_init(&acl_check_hosts,acl_users.elements,0,0,
(hash_get_key) check_get_key,0,HASH_CASE_INSENSITIVE)); (hash_get_key) check_get_key,0,HASH_CASE_INSENSITIVE));
......
...@@ -195,6 +195,7 @@ send_fields(THD *thd,List<Item> &list,uint flag) ...@@ -195,6 +195,7 @@ send_fields(THD *thd,List<Item> &list,uint flag)
Item *item; Item *item;
char buff[80]; char buff[80];
CONVERT *convert= (flag & 4) ? (CONVERT*) 0 : thd->convert_set; CONVERT *convert= (flag & 4) ? (CONVERT*) 0 : thd->convert_set;
DBUG_ENTER("send_fields");
String tmp((char*) buff,sizeof(buff)),*res,*packet= &thd->packet; String tmp((char*) buff,sizeof(buff)),*res,*packet= &thd->packet;
...@@ -255,11 +256,11 @@ send_fields(THD *thd,List<Item> &list,uint flag) ...@@ -255,11 +256,11 @@ send_fields(THD *thd,List<Item> &list,uint flag)
if (my_net_write(&thd->net, (char*) packet->ptr(),packet->length())) if (my_net_write(&thd->net, (char*) packet->ptr(),packet->length()))
break; /* purecov: inspected */ break; /* purecov: inspected */
} }
send_eof(&thd->net); send_eof(&thd->net,1);
return 0; DBUG_RETURN(0);
err: err:
send_error(&thd->net,ER_OUT_OF_RESOURCES); /* purecov: inspected */ send_error(&thd->net,ER_OUT_OF_RESOURCES); /* purecov: inspected */
return 1; /* purecov: inspected */ DBUG_RETURN(1); /* purecov: inspected */
} }
......
...@@ -182,7 +182,9 @@ cleanup: ...@@ -182,7 +182,9 @@ cleanup:
thd->lock=0; thd->lock=0;
} }
if (deleted) if (deleted)
query_cache_invalidate3(thd, table_list, 1); {
query_cache_invalidate3(thd, table_list, 1);
}
delete select; delete select;
if (error >= 0) // Fatal error if (error >= 0) // Fatal error
send_error(&thd->net,thd->killed ? ER_SERVER_SHUTDOWN: 0); send_error(&thd->net,thd->killed ? ER_SERVER_SHUTDOWN: 0);
...@@ -470,7 +472,9 @@ bool multi_delete::send_eof() ...@@ -470,7 +472,9 @@ bool multi_delete::send_eof()
VOID(ha_autocommit_or_rollback(thd,error > 0)); VOID(ha_autocommit_or_rollback(thd,error > 0));
} }
if (deleted) if (deleted)
{
query_cache_invalidate3(thd, delete_tables, 1); query_cache_invalidate3(thd, delete_tables, 1);
}
::send_ok(&thd->net,deleted); ::send_ok(&thd->net,deleted);
return 0; return 0;
} }
......
...@@ -311,7 +311,9 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields, ...@@ -311,7 +311,9 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
} }
thd->proc_info="end"; thd->proc_info="end";
if (info.copied || info.deleted) if (info.copied || info.deleted)
{
query_cache_invalidate3(thd, table_list, 1); query_cache_invalidate3(thd, table_list, 1);
}
table->time_stamp=save_time_stamp; // Restore auto timestamp ptr table->time_stamp=save_time_stamp; // Restore auto timestamp ptr
table->next_number_field=0; table->next_number_field=0;
thd->count_cuted_fields=0; thd->count_cuted_fields=0;
...@@ -1330,7 +1332,9 @@ void select_insert::send_error(uint errcode,const char *err) ...@@ -1330,7 +1332,9 @@ void select_insert::send_error(uint errcode,const char *err)
table->file->activate_all_index(thd); table->file->activate_all_index(thd);
ha_rollback_stmt(thd); ha_rollback_stmt(thd);
if (info.copied || info.deleted) if (info.copied || info.deleted)
{
query_cache_invalidate3(thd, table, 1); query_cache_invalidate3(thd, table, 1);
}
} }
...@@ -1343,8 +1347,9 @@ bool select_insert::send_eof() ...@@ -1343,8 +1347,9 @@ bool select_insert::send_eof()
if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error) if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
error=error2; error=error2;
if (info.copied || info.deleted) if (info.copied || info.deleted)
{
query_cache_invalidate3(thd, table, 1); query_cache_invalidate3(thd, table, 1);
}
if (error) if (error)
{ {
table->file->print_error(error,MYF(0)); table->file->print_error(error,MYF(0));
......
...@@ -1610,7 +1610,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab, ...@@ -1610,7 +1610,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
join_tab[i].table->map); join_tab[i].table->map);
} }
} }
if (init_dynamic_array(keyuse,sizeof(KEYUSE),20,64)) if (my_init_dynamic_array(keyuse,sizeof(KEYUSE),20,64))
return TRUE; return TRUE;
/* fill keyuse with found key parts */ /* fill keyuse with found key parts */
for (KEY_FIELD *field=key_fields ; field != end ; field++) for (KEY_FIELD *field=key_fields ; field != end ; field++)
......
...@@ -324,7 +324,9 @@ int mysql_update(THD *thd, ...@@ -324,7 +324,9 @@ int mysql_update(THD *thd,
thd->lock=0; thd->lock=0;
} }
if (updated) if (updated)
{
query_cache_invalidate3(thd, table_list, 1); query_cache_invalidate3(thd, table_list, 1);
}
delete select; delete select;
if (error >= 0) if (error >= 0)
...@@ -788,8 +790,9 @@ bool multi_update::send_eof() ...@@ -788,8 +790,9 @@ bool multi_update::send_eof()
sprintf(buff,ER(ER_UPDATE_INFO), (long) found, (long) updated, sprintf(buff,ER(ER_UPDATE_INFO), (long) found, (long) updated,
(long) thd->cuted_fields); (long) thd->cuted_fields);
if (updated) if (updated)
{
query_cache_invalidate3(thd, update_tables, 1); query_cache_invalidate3(thd, update_tables, 1);
}
::send_ok(&thd->net, ::send_ok(&thd->net,
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated, (thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
thd->insert_id_used ? thd->insert_id() : 0L,buff); thd->insert_id_used ? thd->insert_id() : 0L,buff);
......
...@@ -1237,11 +1237,11 @@ alter_list_item: ...@@ -1237,11 +1237,11 @@ alter_list_item:
lex->alter_list.push_back(new Alter_column($3.str,(Item*) 0)); lex->alter_list.push_back(new Alter_column($3.str,(Item*) 0));
lex->simple_alter=0; lex->simple_alter=0;
} }
| RENAME opt_to table_alias table_ident | RENAME opt_to table_ident
{ {
LEX *lex=Lex; LEX *lex=Lex;
lex->select->db=$4->db.str; lex->select->db=$3->db.str;
lex->name= $4->table.str; lex->name= $3->table.str;
lex->simple_alter=0; lex->simple_alter=0;
} }
| create_table_options { Lex->simple_alter=0; } | create_table_options { Lex->simple_alter=0; }
...@@ -1268,6 +1268,7 @@ opt_place: ...@@ -1268,6 +1268,7 @@ opt_place:
opt_to: opt_to:
/* empty */ {} /* empty */ {}
| TO_SYM {} | TO_SYM {}
| EQ {}
| AS {}; | AS {};
slave: slave:
......
...@@ -55,7 +55,7 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg, ...@@ -55,7 +55,7 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
my_b_clear(&file); my_b_clear(&file);
init_tree(&tree, max_in_memory_size / 16, 0, size, comp_func, 0, NULL, comp_func_fixed_arg); init_tree(&tree, max_in_memory_size / 16, 0, size, comp_func, 0, NULL, comp_func_fixed_arg);
/* If the following fail's the next add will also fail */ /* If the following fail's the next add will also fail */
init_dynamic_array(&file_ptrs, sizeof(BUFFPEK), 16, 16); my_init_dynamic_array(&file_ptrs, sizeof(BUFFPEK), 16, 16);
max_elements= max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+size); max_elements= max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+size);
open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE, open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
MYF(MY_WME)); MYF(MY_WME));
......
...@@ -96,7 +96,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost) ...@@ -96,7 +96,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
sprintf(vio->desc, sprintf(vio->desc,
(vio->type == VIO_TYPE_SOCKET ? "socket (%d)" : "TCP/IP (%d)"), (vio->type == VIO_TYPE_SOCKET ? "socket (%d)" : "TCP/IP (%d)"),
vio->sd); vio->sd);
#if !defined(___WIN__) && !defined(__EMX__) #if !defined(___WIN__) && !defined(__EMX__) && !defined(OS2)
#if !defined(NO_FCNTL_NONBLOCK) #if !defined(NO_FCNTL_NONBLOCK)
vio->fcntl_mode = fcntl(sd, F_GETFL); vio->fcntl_mode = fcntl(sd, F_GETFL);
#elif defined(HAVE_SYS_IOCTL_H) /* hpux */ #elif defined(HAVE_SYS_IOCTL_H) /* hpux */
......
...@@ -87,7 +87,7 @@ int vio_write(Vio * vio, const gptr buf, int size) ...@@ -87,7 +87,7 @@ int vio_write(Vio * vio, const gptr buf, int size)
int r; int r;
DBUG_ENTER("vio_write"); DBUG_ENTER("vio_write");
DBUG_PRINT("enter", ("sd=%d, buf=%p, size=%d", vio->sd, buf, size)); DBUG_PRINT("enter", ("sd=%d, buf=%p, size=%d", vio->sd, buf, size));
#ifdef __WIN__ #if defined( __WIN__)
if ( vio->type == VIO_TYPE_NAMEDPIPE) if ( vio->type == VIO_TYPE_NAMEDPIPE)
{ {
DWORD length; DWORD length;
...@@ -95,7 +95,7 @@ int vio_write(Vio * vio, const gptr buf, int size) ...@@ -95,7 +95,7 @@ int vio_write(Vio * vio, const gptr buf, int size)
DBUG_RETURN(-1); DBUG_RETURN(-1);
DBUG_RETURN(length); DBUG_RETURN(length);
} }
r = send(vio->sd, buf, size,0); r = send(vio->sd, buf, size, 0);
#else #else
r = write(vio->sd, buf, size); r = write(vio->sd, buf, size);
#endif /* __WIN__ */ #endif /* __WIN__ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment