Commit 2e0dc698 authored by unknown's avatar unknown

merge


BitKeeper/etc/logging_ok:
  auto-union
client/Makefile.am:
  Auto merged
client/mysql.cc:
  Auto merged
myisam/mi_check.c:
  Auto merged
sql/slave.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
strings/strmake.c:
  Auto merged
mysql-test/t/rpl000017-slave.sh:
  Auto merged
parents 9b3d608e abf1b80c
Administrator@fred.
Miguel@light.local
Sinisa@sinisa.nasamreza.org
davida@isil.mysql.com
......@@ -30,4 +31,3 @@ tonu@hundin.mysql.fi
tonu@volk.internalnet
tonu@x153.internalnet
tonu@x3.internalnet
Administrator@fred.
......@@ -28165,6 +28165,13 @@ column that only can take 2 values: A @code{CHAR(0)}, that is not defined
as @code{NOT NULL}, will only occupy one bit and can only take 2 values:
@code{NULL} or @code{""}. @xref{CHAR}.
@tindex BOOL
@tindex BIT
@item BIT
@itemx BOOL
@itemx CHAR
These three are synonyms for @code{CHAR(1)}.
@tindex CHARACTER VARYING
@tindex CHAR VARYING
@tindex VARCHAR
......@@ -30980,7 +30987,8 @@ mysql> select ATAN(-2);
@end example
@findex ATAN2()
@item ATAN2(Y,X)
@item ATAN(Y,X)
@itemx ATAN2(Y,X)
Returns the arc tangent of the two variables @code{X} and @code{Y}. It is
similar to calculating the arc tangent of @code{Y / X}, except that the
signs of both arguments are used to determine the quadrant of the
......@@ -30988,7 +30996,7 @@ result:
@example
mysql> select ATAN(-2,2);
-> -0.785398
mysql> select ATAN(PI(),0);
mysql> select ATAN2(PI(),0);
-> 1.570796
@end example
......@@ -32193,6 +32201,18 @@ MySQL will directly use disk-based temporary tables if needed.
MySQL will also, in this case, prefer sorting to doing a
temporary table with a key on the @code{GROUP BY} elements.
@item
@code{SQL_BUFFER_RESULT} will force the result to be put into a temporary
table. This will help MySQL free the table locks early and will help
in cases where it takes a long time to send the result set to the client.
@item
@code{SQL_SMALL_RESULT}, a MySQL-specific option, can be used
with @code{GROUP BY} or @code{DISTINCT} to tell the optimizer that the
result set will be small. In this case, MySQL will use fast
temporary tables to store the resulting table instead of using sorting. In
MySQL Version 3.23 this shouldn't normally be needed.
@item
@cindex @code{GROUP BY}, extensions to ANSI SQL
If you use @code{GROUP BY}, the output rows will be sorted according to the
......@@ -47547,6 +47567,9 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.43
@itemize @bullet
@item
Fixed a bug in @code{INSERT DELAYED} and @code{FLUSH TABLES} introduced
in 3.23.42.
@item
Fixed unlikely bug, which returned not matching rows, in SELECT with
many tables and multi-column indexes and 'range' type.
@item
......@@ -968,7 +968,7 @@ static bool add_line(String &buffer,char *line,char *in_string)
{ // mSQL or postgreSQL style command ?
if (!(inchar = (uchar) *++pos))
break; // readline adds one '\'
if (*in_string || inchar == 'N')
if (*in_string || inchar == 'N') // \N is short for NULL
{ // Don't allow commands in string
*out++='\\';
*out++= (char) inchar;
......
......@@ -3,8 +3,8 @@ master-bin.001
4
127.0.0.1
replicate
aaaaaaaaaaaaaaab
9306
aaaaaaaaaaaaaaabthispartofthepasswordisnotused
$MASTER_MYPORT
1
0
EOF
......@@ -307,7 +307,7 @@ static int init_strvar_from_file(char* var, int max_size, IO_CACHE* f,
}
else if (default_val)
{
strmake(var, default_val, max_size);
strmake(var, default_val, max_size-1);
return 0;
}
return 1;
......@@ -548,14 +548,14 @@ int init_master_info(MASTER_INFO* mi)
}
mi->log_file_name[length-1]= 0; // kill \n
char buf[FN_REFLEN];
if(!my_b_gets(&mi->file, buf, sizeof(buf)))
/* Reuse fname buffer */
if(!my_b_gets(&mi->file, fname, sizeof(fname)))
{
msg="Error reading log file position from master info file";
goto error;
}
mi->pos = strtoull(fname,(char**) 0, 10);
mi->pos = strtoull(buf,(char**) 0, 10);
mi->fd = fd;
if(init_strvar_from_file(mi->host, sizeof(mi->host), &mi->file,
master_host) ||
......
......@@ -868,6 +868,7 @@ void kill_delayed_threads(void)
delayed_insert *tmp;
while ((tmp=it++))
{
/* Ensure that the thread doesn't kill itself while we are looking at it */
pthread_mutex_lock(&tmp->mutex);
tmp->thd.killed=1;
if (tmp->thd.mysys_var)
......@@ -875,9 +876,15 @@ void kill_delayed_threads(void)
pthread_mutex_lock(&tmp->thd.mysys_var->mutex);
if (tmp->thd.mysys_var->current_cond)
{
pthread_mutex_lock(tmp->thd.mysys_var->current_mutex);
/*
We need the following test because the main mutex may be locked
in handle_delayed_insert()
*/
if (&tmp->mutex != tmp->thd.mysys_var->current_mutex)
pthread_mutex_lock(tmp->thd.mysys_var->current_mutex);
pthread_cond_broadcast(tmp->thd.mysys_var->current_cond);
pthread_mutex_unlock(tmp->thd.mysys_var->current_mutex);
if (&tmp->mutex != tmp->thd.mysys_var->current_mutex)
pthread_mutex_unlock(tmp->thd.mysys_var->current_mutex);
}
pthread_mutex_unlock(&tmp->thd.mysys_var->mutex);
}
......
......@@ -22,7 +22,8 @@
strmake(dst,src,length) moves length characters, or until end, of src to
dst and appends a closing NUL to dst.
strmake() returns pointer to closing null;
Note that is strlen(src) >= length then dst[length] will be set to \0
strmake() returns pointer to closing null
*/
#include <my_global.h>
......
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