Commit 02d0232e authored by unknown's avatar unknown

Merge work.mysql.com:/home/bk/mysql into white.box:/home/tim/my/3


BitKeeper/etc/logging_ok:
  auto-union
parents a94cf896 c0e6d9df
heikki@donna.mysql.fi heikki@donna.mysql.fi
jani@janikt.pp.saunalahti.fi jani@janikt.pp.saunalahti.fi
miguel@light.local
monty@hundin.mysql.fi monty@hundin.mysql.fi
monty@tik.mysql.fi monty@tik.mysql.fi
monty@work.mysql.com monty@work.mysql.com
......
...@@ -37,9 +37,12 @@ From: $FROM ...@@ -37,9 +37,12 @@ From: $FROM
To: $INTERNALS To: $INTERNALS
Subject: bk commit into 3.23 tree Subject: bk commit into 3.23 tree
Below is the list of changes that have just been pushed into main Below is the list of changes that have just been commited into a local
3.23. repository. For information on how to access the repository 3.23. repository of $USER. When $USER does a push, they will be
see http://www.mysql.com/doc/I/n/Installing_source_tree.html propogaged to the main repository and within 24 hours after the push into
the public repository. For information on how to access
the public repository see
http://www.mysql.com/doc/I/n/Installing_source_tree.html
EOF EOF
bk changes -v -r+ bk changes -v -r+
......
#! /bin/sh
echo "Test: post-incoming works"
#! /bin/sh
echo "Test: post-outgoing works"
...@@ -33032,7 +33032,7 @@ Performance handicapping system for yachts. Uses PHP. By ...@@ -33032,7 +33032,7 @@ Performance handicapping system for yachts. Uses PHP. By
@item @uref{http://www.mysql.com/Contrib/hylalog-1.0.tar.gz, hylalog-1.0.tar.gz} @item @uref{http://www.mysql.com/Contrib/hylalog-1.0.tar.gz, hylalog-1.0.tar.gz}
Store @code{hylafax} outgoing faxes in a @strong{MySQL} database. By Sinisa Store @code{hylafax} outgoing faxes in a @strong{MySQL} database. By Sinisa
Milivojevic, @email{sinisa@@coresinc.com}. Milivojevic, @email{sinisa@@mysql.com}.
@item @uref{http://www.mysql.com/Contrib/mrtg-mysql-1.0.tar.gz, mrtg-mysql-1.0.tar.gz} @item @uref{http://www.mysql.com/Contrib/mrtg-mysql-1.0.tar.gz, mrtg-mysql-1.0.tar.gz}
@strong{MySQL} status plotting with MRTG, by Luuk de Boer, @email{luuk@@wxs.nl}. @strong{MySQL} status plotting with MRTG, by Luuk de Boer, @email{luuk@@wxs.nl}.
...@@ -33268,7 +33268,7 @@ The @file{libmysql.dll} library. ...@@ -33268,7 +33268,7 @@ The @file{libmysql.dll} library.
Mysqlmanager, a Win32 GUI tool for administrating @strong{MySQL}. Mysqlmanager, a Win32 GUI tool for administrating @strong{MySQL}.
@item Curt Sampson @email{cjs@@portal.ca} @item Curt Sampson @email{cjs@@portal.ca}
Porting of MIT-pthreads to NetBSD/Alpha and NetBSD 1.3/i386. Porting of MIT-pthreads to NetBSD/Alpha and NetBSD 1.3/i386.
@item Sinisa Milivojevic @email{sinisa@@coresinc.com} @item Sinisa Milivojevic @email{sinisa@@mysql.com}
Compression (with @code{zlib}) to the client/server protocol. Compression (with @code{zlib}) to the client/server protocol.
Perfect hashing for the lexical analyzer phase. Perfect hashing for the lexical analyzer phase.
@item Antony T. Curtis @email{antony.curtis@@olcs.net} @item Antony T. Curtis @email{antony.curtis@@olcs.net}
...@@ -3084,6 +3084,11 @@ If so, it may have a local mailing list, so that messages sent from ...@@ -3084,6 +3084,11 @@ If so, it may have a local mailing list, so that messages sent from
cases, please contact your system administrator to be added to or dropped cases, please contact your system administrator to be added to or dropped
from the local @strong{MySQL} list. from the local @strong{MySQL} list.
If you wish to have traffic for a mailing list go to a separate mailbox in
your mail program, set up a filter based on the message headers. You can
use either the @code{List-ID:} or @code{Delivered-To:} headers to identify
list messages.
The following @strong{MySQL} mailing lists exist: The following @strong{MySQL} mailing lists exist:
@table @code @table @code
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
10 10.0 10 10 10 10 10.0 10 10 10
6e-05 -6e-05 --6e-05 -6e-05+1.000000 6e-05 -6e-05 --6e-05 -6e-05+1.000000
6e-05 -6e-05 6e-05 0.99994 6e-05 -6e-05 6e-05 0.99994
1e1 1.e1 1.0e1 1e+1 1.e+1 1.0e+1 1e-1 1.e-1 1.0e-1
10 10 10 10 10 10 0.1 0.1 0.1
Field Type Null Key Default Extra Privileges Field Type Null Key Default Extra Privileges
f1 float YES NULL select,insert,update,references f1 float YES NULL select,insert,update,references
f2 double YES NULL select,insert,update,references f2 double YES NULL select,insert,update,references
......
--sporadic-binlog-dump-fail --max-binlog-dump-events=2
#test to see if replication can continue when master sporadically fails on
# COM_BINLOG_DUMP and additionally limits the number of events per dump
source include/master-slave.inc;
connection master;
drop table if exists t1;
create table t1(n int not null auto_increment primary key);
insert into t1 values (NULL),(NULL);
delete from t1;
insert into t1 values (NULL),(NULL);
insert into t1 values (NULL),(NULL);
flush logs;
delete from t1;
insert into t1 values (NULL),(NULL);
insert into t1 values (NULL),(NULL);
insert into t1 values (NULL),(NULL);
save_master_pos;
connection slave;
sync_with_master;
select * from t1;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <my_dir.h> #include <my_dir.h>
#include "sql_acl.h" #include "sql_acl.h"
#include "slave.h" #include "slave.h"
#include "sql_repl.h"
#include "stacktrace.h" #include "stacktrace.h"
#ifdef HAVE_BERKELEY_DB #ifdef HAVE_BERKELEY_DB
#include "ha_berkeley.h" #include "ha_berkeley.h"
...@@ -2461,7 +2462,8 @@ enum options { ...@@ -2461,7 +2462,8 @@ enum options {
OPT_TEMP_POOL, OPT_TX_ISOLATION, OPT_TEMP_POOL, OPT_TX_ISOLATION,
OPT_GEMINI_FLUSH_LOG, OPT_GEMINI_RECOVER, OPT_GEMINI_FLUSH_LOG, OPT_GEMINI_RECOVER,
OPT_GEMINI_UNBUFFERED_IO, OPT_SKIP_SAFEMALLOC, OPT_GEMINI_UNBUFFERED_IO, OPT_SKIP_SAFEMALLOC,
OPT_SKIP_STACK_TRACE, OPT_SKIP_SYMLINKS OPT_SKIP_STACK_TRACE, OPT_SKIP_SYMLINKS,
OPT_MAX_BINLOG_DUMP_EVENTS, OPT_SPORADIC_BINLOG_DUMP_FAIL
}; };
static struct option long_options[] = { static struct option long_options[] = {
...@@ -2545,6 +2547,10 @@ static struct option long_options[] = { ...@@ -2545,6 +2547,10 @@ static struct option long_options[] = {
(int) OPT_DISCONNECT_SLAVE_EVENT_COUNT}, (int) OPT_DISCONNECT_SLAVE_EVENT_COUNT},
{"abort-slave-event-count", required_argument, 0, {"abort-slave-event-count", required_argument, 0,
(int) OPT_ABORT_SLAVE_EVENT_COUNT}, (int) OPT_ABORT_SLAVE_EVENT_COUNT},
{"max-binlog-dump-events", required_argument, 0,
(int) OPT_MAX_BINLOG_DUMP_EVENTS},
{"sporadic-binlog-dump-fail", no_argument, 0,
(int) OPT_SPORADIC_BINLOG_DUMP_FAIL},
{"safemalloc-mem-limit", required_argument, 0, (int) {"safemalloc-mem-limit", required_argument, 0, (int)
OPT_SAFEMALLOC_MEM_LIMIT}, OPT_SAFEMALLOC_MEM_LIMIT},
{"new", no_argument, 0, 'n'}, {"new", no_argument, 0, 'n'},
...@@ -3301,6 +3307,17 @@ static void get_options(int argc,char **argv) ...@@ -3301,6 +3307,17 @@ static void get_options(int argc,char **argv)
abort_slave_event_count = atoi(optarg); abort_slave_event_count = atoi(optarg);
#endif #endif
break; break;
case (int)OPT_SPORADIC_BINLOG_DUMP_FAIL:
#ifndef DBUG_OFF
opt_sporadic_binlog_dump_fail = 1;
#endif
break;
case (int)OPT_MAX_BINLOG_DUMP_EVENTS:
#ifndef DBUG_OFF
max_binlog_dump_events = atoi(optarg);
#endif
break;
case (int) OPT_LOG_SLAVE_UPDATES: case (int) OPT_LOG_SLAVE_UPDATES:
opt_log_slave_updates = 1; opt_log_slave_updates = 1;
break; break;
......
/* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB /* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB
This file is public domain and comes with NO WARRANTY of any kind This file is public domain and comes with NO WARRANTY of any kind
Traduccion por Miguel Angel Fernandez Roiz -- LoboCom Sistemas, s.l. */ Traduccion por Miguel Angel Fernandez Roiz -- LoboCom Sistemas, s.l.
From June 28, 2001 translated by Miguel Solorzano miguel@mysql.com */
"hashchk", "hashchk",
"isamchk", "isamchk",
"NO", "NO",
...@@ -46,8 +46,8 @@ ...@@ -46,8 +46,8 @@
"Memoria/espacio de tranpaso insuficiente", "Memoria/espacio de tranpaso insuficiente",
"No puedo obtener el nombre de maquina de tu direccion", "No puedo obtener el nombre de maquina de tu direccion",
"Protocolo erroneo", "Protocolo erroneo",
"Access denied for user: '%-.32s@%-.64s' to database '%-.64s'", "Acceso negado para usuario: '%-.32s@%-.64s' para la base de datos '%-.64s'",
"Access denied for user: '%-.32s@%-.64s' (Using password: %s)", "Acceso negado para usuario: '%-.32s@%-.64s' (Usando clave: %s)",
"Base de datos no seleccionada", "Base de datos no seleccionada",
"Comando desconocido", "Comando desconocido",
"La columna '%-.64s' no puede ser nula", "La columna '%-.64s' no puede ser nula",
...@@ -84,14 +84,14 @@ ...@@ -84,14 +84,14 @@
"%s: Apagado completado\n", "%s: Apagado completado\n",
"%s: Forzando a cerrar el thread %ld usuario: '%-.64s'\n", "%s: Forzando a cerrar el thread %ld usuario: '%-.64s'\n",
"No puedo crear IP socket", "No puedo crear IP socket",
"La tabla '%-.64s' no tiene indice como el usado en CREATE INDEX. Crea de nuevo la table", "La tabla '%-.64s' no tiene indice como el usado en CREATE INDEX. Crea de nuevo la tabla",
"Los separadores de argumentos del campo no son los especificados. Comprueba el manual", "Los separadores de argumentos del campo no son los especificados. Comprueba el manual",
"No puedes usar longitudes de filas fijos con BLOBs. Por favor usa 'campos terminados por '.", "No puedes usar longitudes de filas fijos con BLOBs. Por favor usa 'campos terminados por '.",
"El archivo '%-.64s' debe estar en el directorio de la base de datos o ser de lectura por todos", "El archivo '%-.64s' debe estar en el directorio de la base de datos o ser de lectura por todos",
"El archivo '%-.64s' ya existe", "El archivo '%-.64s' ya existe",
"Registros: %ld Borrados: %ld Saltados: %ld Peligros: %ld", "Registros: %ld Borrados: %ld Saltados: %ld Peligros: %ld",
"Registros: %ld Duplicados: %ld", "Registros: %ld Duplicados: %ld",
"Parte de la calve es erronea. Una parte de la calve no es una cadena o la longitud usada es tan grandecomo la parte de la clave", "Parte de la clave es erronea. Una parte de la clave no es una cadena o la longitud usada es tan grande como la parte de la clave",
"No puede borrar todos los campos con ALTER TABLE. Usa DROP TABLE para hacerlo", "No puede borrar todos los campos con ALTER TABLE. Usa DROP TABLE para hacerlo",
"No puedo ELIMINAR '%-.64s'. compuebe que el campo/clave existe", "No puedo ELIMINAR '%-.64s'. compuebe que el campo/clave existe",
"Registros: %ld Duplicados: %ld Peligros: %ld", "Registros: %ld Duplicados: %ld Peligros: %ld",
...@@ -99,116 +99,116 @@ ...@@ -99,116 +99,116 @@
"Identificador del thread: %lu desconocido", "Identificador del thread: %lu desconocido",
"Tu no eres el propietario del thread%lu", "Tu no eres el propietario del thread%lu",
"No ha tablas usadas", "No ha tablas usadas",
"Too many strings for column %s and SET", "Muchas strings para columna %s y SET",
"Can't generate a unique logfilename %s.(1-999)\n", "No puede crear un unico archivo log %s.(1-999)\n",
"Table '%-.64s' was locked with a READ lock and can't be updated", "Tabla '%-.64s' fue trabada con un READ lock y no puede ser actualizada",
"Table '%-.64s' was not locked with LOCK TABLES", "Tabla '%-.64s' no fue trabada con LOCK TABLES",
"Blob field '%-.64s' can't have a default value", "Campo Blob '%-.64s' no puede tener valores patron",
"Illegal database name '%-.64s'", "Nombre de base de datos ilegal '%-.64s'",
"Illegal table name '%-.64s'", "Nombre de tabla ilegal '%-.64s'",
"The SELECT would examine too many records and probably take very long time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok", "El SELECT puede examinar muchos registros y probablemente con mucho tiempo. Verifique tu WHERE y usa SET OPTION SQL_BIG_SELECTS=1 si el SELECT esta correcto",
"Unknown error", "Error desconocido",
"Unkown procedure %s", "Procedimiento desconocido %s",
"Wrong parameter count to procedure %s", "Equivocado parametro count para procedimiento %s",
"Wrong parameters to procedure %s", "Equivocados parametros para procedimiento %s",
"Unknown table '%-.64s' in %s", "Tabla desconocida '%-.64s' in %s",
"Field '%-.64s' specified twice", "Campo '%-.64s' especificado dos veces",
"Invalid use of group function", "Invalido uso de función en grupo",
"Table '%-.64s' uses a extension that doesn't exist in this MySQL version", "Tabla '%-.64s' usa una extensión que no existe en esta MySQL versión",
"A table must have at least 1 column", "Una tabla debe tener al menos 1 columna",
"The table '%-.64s' is full", "La tabla '%-.64s' está llena",
"Unknown character set: '%-.64s'", "Juego de caracteres desconocido: '%-.64s'",
"Too many tables. MySQL can only use %d tables in a join", "Muchas tablas. MySQL solamente puede usar %d tablas en un join",
"Too many fields", "Muchos campos",
"Too big row size. The maximum row size, not counting blobs, is %d. You have to change some fields to blobs", "Tamaño de línea muy grande. Máximo tamaño de línea, no contando blob, es %d. Tu tienes que cambiar algunos campos para blob",
"Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thread_stack=#' to specify a bigger stack if needed", "Sobrecarga de la pila de thread: Usada: %ld de una %ld pila. Use 'mysqld -O thread_stack=#' para especificar una mayor pila si necesario",
"Cross dependency found in OUTER JOIN. Examine your ON conditions", "Dependencia cruzada encontrada en OUTER JOIN. Examine su condición ON",
"Column '%-.32s' is used with UNIQUE or INDEX but is not defined as NOT NULL", "Columna '%-.32s' es usada con UNIQUE o INDEX pero no está definida como NOT NULL",
"Can't load function '%-.64s'", "No puedo cargar función '%-.64s'",
"Can't initialize function '%-.64s'; %-.80s", "No puedo inicializar función '%-.64s'; %-.80s",
"No paths allowed for shared library", "No pasos permitidos para librarias conjugadas",
"Function '%-.64s' already exist", "Función '%-.64s' ya existe",
"Can't open shared library '%-.64s' (errno: %d %s)", "No puedo abrir libraria conjugada '%-.64s' (errno: %d %s)",
"Can't find function '%-.64s' in library'", "No puedo encontrar función '%-.64s' en libraria'",
"Function '%-.64s' is not defined", "Función '%-.64s' no está definida",
"Host '%-.64s' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'", "Servidor '%-.64s' está bloqueado por muchos errores de conexión. Desbloquear con 'mysqladmin flush-hosts'",
"Host '%-.64s' is not allowed to connect to this MySQL server", "Servidor '%-.64s' no está permitido para conectar con este servidor MySQL",
"You are using MySQL as an anonymous users and anonymous users are not allowed to change passwords", "Tu estás usando MySQL como un usuario anonimo y usuarios anonimos no tienen permiso para cambiar las claves",
"You must have privileges to update tables in the mysql database to be able to change passwords for others", "Tu debes de tener permiso para actualizar tablas en la base de datos mysql para cambiar las claves para otros",
"Can't find any matching row in the user table", "No puedo encontrar una línea correponsdiente en la tabla user",
"Rows matched: %ld Changed: %ld Warnings: %ld", "Líneas correspondientes: %ld Cambiadas: %ld Avisos: %ld",
"Can't create a new thread (errno %d). If you are not out of available memory you can consult the manual for any possible OS dependent bug", "No puedo crear un nuevo thread (errno %d). Si tu está con falta de memoria disponible, tu puedes consultar el Manual para posibles problemas con SO",
"Column count doesn't match value count at row %ld", "El número de columnas no corresponde al número en la línea %ld",
"Can't reopen table: '%-.64s', "No puedo reabrir tabla: '%-.64s',
"Invalid use of NULL value", "Invalido uso de valor NULL",
"Got error '%-.64s' from regexp", "Obtenido error '%-.64s' de regexp",
"Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause", "Mezcla de columnas GROUP (MIN(),MAX(),COUNT()...) con no GROUP columnas es ilegal si no hat la clausula GROUP BY",
"There is no such grant defined for user '%-.32s' on host '%-.64s'", "No existe permiso definido para usuario '%-.32s' en el servidor '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for table '%-.64s'", "%-.16s comando negado para usuario: '%-.32s@%-.64s' para tabla '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for column '%-.64s' in table '%-.64s'", "%-.16s comando negado para usuario: '%-.32s@%-.64s' para columna '%-.64s' en la tabla '%-.64s'",
"Illegal GRANT/REVOKE command. Please consult the manual which privleges can be used.", "Ilegal comando GRANT/REVOKE. Por favor consulte el manual para cuales permisos pueden ser usados.",
"The host or user argument to GRANT is too long", "El argumento para servidor o usuario para GRANT es demasiado grande",
"Table '%-64s.%s' doesn't exist", "Tabla '%-64s.%s' no existe",
"There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'", "No existe tal permiso definido para usuario '%-.32s' en el servidor '%-.64s' en la tabla '%-.64s'",
"The used command is not allowed with this MySQL version", "El comando usado no es permitido con esta versión de MySQL",
"Something is wrong in your syntax", "Algo está equivocado en su sintax",
"Delayed insert thread couldn't get requested lock for table %-.64s", "Thread de inserción retarda no pudiendo bloquear para la tabla %-.64s",
"Too many delayed threads in use", "Muchos threads retardados en uso",
"Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)", "Conexión abortada %ld para db: '%-.64s' usuario: '%-.64s' (%s)",
"Got a packet bigger than 'max_allowed_packet'", "Obtenido un paquete mayor que 'max_allowed_packet'",
"Got a read error from the connection pipe", "Obtenido un error de lectura de la conexión pipe",
"Got an error from fcntl()", "Obtenido un error de fcntl()",
"Got packets out of order", "Obtenido paquetes desordenados",
"Couldn't uncompress communication packet", "No puedo descomprimir paquetes de comunicación",
"Got an error reading communication packets" "Obtenido un error leyendo paquetes de comunicación"
"Got timeout reading communication packets", "Obtenido timeout leyendo paquetes de comunicación",
"Got an error writing communication packets", "Obtenido un error de escribiendo paquetes de comunicación",
"Got timeout writing communication packets", "Obtenido timeout escribiendo paquetes de comunicación",
"Result string is longer than max_allowed_packet", "La string resultante es mayor que max_allowed_packet",
"The used table type doesn't support BLOB/TEXT columns", "El tipo de tabla usada no permite soporte para columnas BLOB/TEXT",
"The used table type doesn't support AUTO_INCREMENT columns", "El tipo de tabla usada no permite soporte para columnas AUTO_INCREMENT",
"INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES", "INSERT DELAYED no puede ser usado con tablas '%-.64s', porque esta bloqueada con LOCK TABLES",
"Incorrect column name '%-.100s'", "Incorrecto nombre de columna '%-.100s'",
"The used table handler can't index column '%-.64s'", "El manipulador de tabla usado no puede indexar columna '%-.64s'",
"All tables in the MERGE table are not defined identically", "Todas las tablas en la MERGE tabla no estan definidas identicamente",
"Can't write, because of unique constraint, to table '%-.64s'", "No puedo escribir, debido al único constraint, para tabla '%-.64s'",
"BLOB column '%-.64s' used in key specification without a key length", "Columna BLOB column '%-.64s' usada en especificación de clave sin tamaño de la clave",
"All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead", "Todas las partes de un PRIMARY KEY deben ser NOT NULL; Si necesitas NULL en una clave, use UNIQUE",
"Result consisted of more than one row", "Resultado compuesto de mas que una línea",
"This table type requires a primary key", "Este tipo de tabla necesita de una primary key",
"This version of MySQL is not compiled with RAID support", "Esta versión de MySQL no es compilada con soporte RAID",
"You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column", "Tu estás usando modo de actualización segura y tentado actualizar una tabla sin un WHERE que usa una KEY columna",
"Key '%-.64s' doesn't exist in table '%-.64s'", "Clave '%-.64s' no existe en la tabla '%-.64s'",
"Can't open table", "No puedo abrir tabla",
"The handler for the table doesn't support check/repair", "El manipulador de la tabla no permite soporte para check/repair",
"You are not allowed to execute this command in a transaction", "No tienes el permiso para ejecutar este comando en una transición",
"Got error %d during COMMIT", "Obtenido error %d durante COMMIT",
"Got error %d during ROLLBACK", "Obtenido error %d durante ROLLBACK",
"Got error %d during FLUSH_LOGS", "Obtenido error %d durante FLUSH_LOGS",
"Got error %d during CHECKPOINT", "Obtenido error %d durante CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", "Abortada conexión %ld para db: '%-.64s' usuario: '%-.32s' servidor: `%-.64s' (%-.64s)",
"The handler for the table does not support binary table dump", "El manipulador de tabla no soporta dump para tabla binaria",
"Binlog closed while trying to FLUSH MASTER", "Binlog cerrado mientras tentaba el FLUSH MASTER",
"Failed rebuilding the index of dumped table '%-.64s'", "Falla reconstruyendo el indice de la tabla dumped '%-.64s'",
"Error from master: '%-.64s'", "Error del master: '%-.64s'",
"Net error reading from master", "Error de red leyendo del master",
"Net error writing to master", "Error de red escribiendo para el master",
"Can't find FULLTEXT index matching the column list", "No puedo encontrar índice FULLTEXT correspondiendo a la lista de columnas",
"Can't execute the given command because you have active locked tables or an active transaction", "No puedo ejecutar el comando dado porque tienes tablas bloqueadas o una transición activa",
"Unknown system variable '%-.64'", "Desconocida variable de sistema '%-.64'",
"Table '%-.64s' is marked as crashed and should be repaired", "Tabla '%-.64s' está marcada como crashed y debe ser reparada",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed", "Tabla '%-.64s' está marcada como crashed y la última reparación (automactica?) falló",
"Warning: Some non-transactional changed tables couldn't be rolled back", "Aviso: Algunas tablas no transancionales no pueden tener rolled back",
"Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage. Increase this mysqld variable and try again', "Multipla transición necesita mas que 'max_binlog_cache_size' bytes de almacenamiento. Aumente esta variable mysqld y tente de nuevo',
"This operation cannot be performed with a running slave, run SLAVE STOP first", "Esta operación no puede ser hecha con el esclavo funcionando, primero use SLAVE STOP",
"This operation requires a running slave, configure slave and do SLAVE START", "Esta operación necesita el esclavo funcionando, configure esclavo y haga el SLAVE START",
"The server is not configured as slave, fix in config file or with CHANGE MASTER TO", "El servidor no está configurado como esclavo, edite el archivo config file o con CHANGE MASTER TO",
"Could not initialize master info structure, check permisions on master.info", "No puedo inicializar la estructura info del master, verifique permisiones en el master.info",
"Could not create slave thread, check system resources", "No puedo crear el thread esclavo, verifique recursos del sistema",
"User %-.64s has already more than 'max_user_connections' active connections", "Usario %-.64s ya tiene mas que 'max_user_connections' conexiones activas",
"You may only use constant expressions with SET", "Tu solo debes usar expresiones constantes con SET",
"Lock wait timeout exceeded", "Tiempo de bloqueo de espera excedido",
"The total number of locks exceeds the lock table size", "El número total de bloqueos excede el tamaño de bloqueo de la tabla",
"Update locks cannot be acquired during a READ UNCOMMITTED transaction", "Bloqueos de actualización no pueden ser adqueridos durante una transición READ UNCOMMITTED",
"DROP DATABASE not allowed while thread is holding global read lock", "DROP DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global",
"CREATE DATABASE not allowed while thread is holding global read lock", "CREATE DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global",
...@@ -1236,6 +1236,8 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused))) ...@@ -1236,6 +1236,8 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
goto err; goto err;
} }
connected:
while (!slave_killed(thd)) while (!slave_killed(thd))
{ {
thd->proc_info = "Requesting binlog dump"; thd->proc_info = "Requesting binlog dump";
...@@ -1278,10 +1280,9 @@ try again, log '%s' at postion %s", RPL_LOG_NAME, ...@@ -1278,10 +1280,9 @@ try again, log '%s' at postion %s", RPL_LOG_NAME,
goto err; goto err;
} }
continue; goto connected;
} }
while(!slave_killed(thd)) while(!slave_killed(thd))
{ {
thd->proc_info = "Reading master update"; thd->proc_info = "Reading master update";
...@@ -1291,7 +1292,6 @@ try again, log '%s' at postion %s", RPL_LOG_NAME, ...@@ -1291,7 +1292,6 @@ try again, log '%s' at postion %s", RPL_LOG_NAME,
sql_print_error("Slave thread killed while reading event"); sql_print_error("Slave thread killed while reading event");
goto err; goto err;
} }
if (event_len == packet_error) if (event_len == packet_error)
{ {
...@@ -1329,8 +1329,9 @@ reconnecting to retry, log '%s' position %s", RPL_LOG_NAME, ...@@ -1329,8 +1329,9 @@ reconnecting to retry, log '%s' position %s", RPL_LOG_NAME,
reconnect done to recover from failed read"); reconnect done to recover from failed read");
goto err; goto err;
} }
break;
} goto connected;
} // if(event_len == packet_error)
thd->proc_info = "Processing master log event"; thd->proc_info = "Processing master log event";
if(exec_event(thd, &mysql->net, &glob_mi, event_len)) if(exec_event(thd, &mysql->net, &glob_mi, event_len))
...@@ -1373,9 +1374,8 @@ the slave thread with \"mysqladmin start-slave\". We stopped at log \ ...@@ -1373,9 +1374,8 @@ the slave thread with \"mysqladmin start-slave\". We stopped at log \
events_till_disconnect++; events_till_disconnect++;
} }
#endif #endif
} // while(!slave_killed(thd)) - read/exec loop
} } // while(!slave_killed(thd)) - slave loop
}
// error = 0; // error = 0;
err: err:
......
...@@ -27,6 +27,11 @@ ...@@ -27,6 +27,11 @@
extern const char* any_db; extern const char* any_db;
extern pthread_handler_decl(handle_slave,arg); extern pthread_handler_decl(handle_slave,arg);
#ifndef DBUG_OFF
int max_binlog_dump_events = 0; // unlimited
bool opt_sporadic_binlog_dump_fail = 0;
static int binlog_dump_count = 0;
#endif
static int fake_rotate_event(NET* net, String* packet, char* log_file_name, static int fake_rotate_event(NET* net, String* packet, char* log_file_name,
const char**errmsg) const char**errmsg)
...@@ -265,8 +270,19 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags) ...@@ -265,8 +270,19 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
int error; int error;
const char *errmsg = "Unknown error"; const char *errmsg = "Unknown error";
NET* net = &thd->net; NET* net = &thd->net;
#ifndef DBUG_OFF
int left_events = max_binlog_dump_events;
#endif
DBUG_ENTER("mysql_binlog_send"); DBUG_ENTER("mysql_binlog_send");
#ifndef DBUG_OFF
if (opt_sporadic_binlog_dump_fail && (binlog_dump_count++ % 2))
{
errmsg = "Master failed COM_BINLOG_DUMP to test if slave can recover";
goto err;
}
#endif
bzero((char*) &log,sizeof(log)); bzero((char*) &log,sizeof(log));
if(!mysql_bin_log.is_open()) if(!mysql_bin_log.is_open())
...@@ -325,6 +341,14 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags) ...@@ -325,6 +341,14 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
while (!(error = Log_event::read_log_event(&log, packet, log_lock))) while (!(error = Log_event::read_log_event(&log, packet, log_lock)))
{ {
#ifndef DBUG_OFF
if(max_binlog_dump_events && !left_events--)
{
net_flush(net);
errmsg = "Debugging binlog dump abort";
goto err;
}
#endif
if (my_net_write(net, (char*)packet->ptr(), packet->length()) ) if (my_net_write(net, (char*)packet->ptr(), packet->length()) )
{ {
errmsg = "Failed on my_net_write()"; errmsg = "Failed on my_net_write()";
...@@ -399,6 +423,15 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags) ...@@ -399,6 +423,15 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
bool read_packet = 0, fatal_error = 0; bool read_packet = 0, fatal_error = 0;
#ifndef DBUG_OFF
if(max_binlog_dump_events && !left_events--)
{
net_flush(net);
errmsg = "Debugging binlog dump abort";
goto err;
}
#endif
// no one will update the log while we are reading // no one will update the log while we are reading
// now, but we'll be quick and just read one record // now, but we'll be quick and just read one record
pthread_mutex_lock(log_lock); pthread_mutex_lock(log_lock);
......
...@@ -9,6 +9,11 @@ extern uint32 server_id; ...@@ -9,6 +9,11 @@ extern uint32 server_id;
extern bool server_id_supplied; extern bool server_id_supplied;
extern I_List<i_string> binlog_do_db, binlog_ignore_db; extern I_List<i_string> binlog_do_db, binlog_ignore_db;
#ifndef DBUG_OFF
extern int max_binlog_dump_events;
extern bool opt_sporadic_binlog_dump_fail;
#endif
File open_binlog(IO_CACHE *log, const char *log_file_name, File open_binlog(IO_CACHE *log, const char *log_file_name,
const char **errmsg); const char **errmsg);
......
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