1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fixed bug that caused client to hang because mysqld never did send an

error message if the table open or the index creation failed.
Updated portuguese error messages.
Fix for OS/2 that affected CHECK TABLE.


Docs/manual.texi:
  Changelog.
libmysql/errmsg.c:
  Updated portuguese error messages
mysys/my_copy.c:
  Fix for OS/2
sql/net_pkg.cc:
  cleanup
sql/share/portuguese/errmsg.txt:
  Updated portuguese error messages
sql/slave.cc:
  Cleanup.
  Fixed bug that caused client to hang because mysqld never did
  send an error message if the table open or the index creation failed.
sql/sql_parse.cc:
  Moved handling of 'no_send_ok' to fetch_nx_table.
sql/sql_table.cc:
  Cleanup.
This commit is contained in:
unknown
2001-06-02 00:03:16 +03:00
parent 455b6952d6
commit 7c077e68f6
8 changed files with 297 additions and 278 deletions

View File

@ -9603,7 +9603,7 @@ shell> cd mysql_installation_directory
shell> ./bin/safe_mysqld --user=mysql & shell> ./bin/safe_mysqld --user=mysql &
@end example @end example
For a binary distribution, do this: For a binary distribution (not RPM or pkg packages), do this:
@example @example
shell> cd mysql_installation_directory shell> cd mysql_installation_directory
@ -45459,6 +45459,8 @@ Slovak error messages.
Romanian error messages. Romanian error messages.
@item Peter Feher @item Peter Feher
Hungarian error messages. Hungarian error messages.
@item Roberto M. Serqueira
Portugise error messages.
@item David Sacerdote @email{davids@@secnet.com} @item David Sacerdote @email{davids@@secnet.com}
Ideas for secure checking of DNS hostnames. Ideas for secure checking of DNS hostnames.
@item Wei-Jou Chen @email{jou@@nematic.ieo.nctu.edu.tw} @item Wei-Jou Chen @email{jou@@nematic.ieo.nctu.edu.tw}
@ -45725,6 +45727,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.39 @appendixsubsec Changes in release 3.23.39
@itemize @bullet @itemize @bullet
@item @item
Fixed problem that client 'hang' when @code{LOAD TABLE FROM MASTER} failed.
@item
Running @code{myisamchk --fast --force} will not anymore repair tables Running @code{myisamchk --fast --force} will not anymore repair tables
that only had the open count wrong. that only had the open count wrong.
@item @item

View File

@ -48,6 +48,34 @@ const char *client_errors[]=
"Got packet bigger than 'max_allowed_packet'" "Got packet bigger than 'max_allowed_packet'"
}; };
/* Start of code added by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */
#elif defined PORTUGUESE
const char *client_errors[]=
{
"Erro desconhecido do MySQL",
"N<EFBFBD>o pode criar 'UNIX socket' (%d)",
"N<EFBFBD>o pode se conectar ao servidor MySQL local atrav<61>s do 'socket' '%-.64s' (%d)",
"N<EFBFBD>o pode se conectar ao servidor MySQL em '%-.64s' (%d)",
"N<EFBFBD>o pode criar 'socket TCP/IP' (%d)",
"'Host' servidor MySQL '%-.64s' (%d) desconhecido",
"Servidor MySQL desapareceu",
"Incompatibilidade de protocolos. Vers<72>o do Servidor: %d - Vers<72>o do Cliente: %d",
"Cliente do MySQL com falta de mem<65>ria",
"Informa<EFBFBD><EFBFBD>o inv<6E>lida de 'host'",
"Localhost via 'UNIX socket'",
"%-.64s via 'TCP/IP'",
"Erro na negocia<69><61>o de acesso ao servidor",
"Conex<EFBFBD>o perdida com servidor MySQL durante 'query'",
"Comandos fora de sincronismo. Voc<6F> n<>o pode executar este comando agora",
"%-.64s via 'named pipe'",
"N<EFBFBD>o pode esperar pelo 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
"N<EFBFBD>o pode abrir 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
"N<EFBFBD>o pode estabelecer o estado do 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)",
"N<EFBFBD>o pode inicializar conjunto de caracteres %-.64s (caminho %-.64s)",
"Obteve pacote maior do que 'max_allowed_packet'"
};
#else /* ENGLISH */ #else /* ENGLISH */
const char *client_errors[]= const char *client_errors[]=
{ {

View File

@ -54,7 +54,7 @@ int my_copy(const char *from, const char *to, myf MyFlags)
if (MyFlags & MY_HOLD_ORIGINAL_MODES) /* Copy stat if possible */ if (MyFlags & MY_HOLD_ORIGINAL_MODES) /* Copy stat if possible */
new_file_stat=stat((char*) to, &new_stat_buff); new_file_stat=stat((char*) to, &new_stat_buff);
if ((from_file=my_open(from,O_RDONLY,MyFlags)) >= 0) if ((from_file=my_open(from,O_RDONLY | O_SHARE,MyFlags)) >= 0)
{ {
if (stat(from,&stat_buff)) if (stat(from,&stat_buff))
{ {
@ -64,7 +64,7 @@ int my_copy(const char *from, const char *to, myf MyFlags)
if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat) if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat)
stat_buff=new_stat_buff; stat_buff=new_stat_buff;
if ((to_file= my_create(to,(int) stat_buff.st_mode, if ((to_file= my_create(to,(int) stat_buff.st_mode,
O_WRONLY | O_TRUNC | O_BINARY, O_WRONLY | O_TRUNC | O_BINARY | O_SHARE,
MyFlags)) < 0) MyFlags)) < 0)
goto err; goto err;

View File

@ -140,7 +140,7 @@ net_printf(NET *net, uint errcode, ...)
void void
send_ok(NET *net,ha_rows affected_rows,ulonglong id,const char *message) send_ok(NET *net,ha_rows affected_rows,ulonglong id,const char *message)
{ {
if(net->no_send_ok) if (net->no_send_ok) // hack for re-parsing queries
return; return;
char buff[MYSQL_ERRMSG_SIZE+10],*pos; char buff[MYSQL_ERRMSG_SIZE+10],*pos;

View File

@ -1,211 +1,211 @@
/* 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 */
/* Updated by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */
"hashchk", "hashchk",
"isamchk", "isamchk",
"NO", "n<EFBFBD>o",
"YES", "sim",
"Nao consegui criar o arquivo '%-.64s' (Erro: %d)", "N<EFBFBD>o pode criar arquivo '%-.64s' (erro no. %d)",
"Nao consegui criar a tabela '%-.64s' (Erro: %d)", "N<EFBFBD>o pode criar tabela '%-.64s' (erro no. %d)",
"Nao consegui criar o banco de dados '%-.64s'. Erro %d", "N<EFBFBD>o pode criar banco de dados '%-.64s' (erro no. %d)",
"Nao consegui criar o banco de dados '%-.64s'. Este banco ja existe", "N<EFBFBD>o pode criar banco de dados '%-.64s'. Banco de dados j<EFBFBD> existe",
"Nao consegui deletar o banco de dados '%-.64s'. Este banco nao existe", "N<EFBFBD>o pode eliminar banco de dados '%-.64s'. Banco de dados n<>o existe",
"Erro deletando o banco de dados(Nao foi possivel deletar '%-.64s', erro %d)", "Erro ao eliminar banco de dados (n<>o pode eliminar '%-.64s' - erro no. %d)",
"Erro deletando o banco de dados(Nao foi possivel remover o diretorio '%-.64s', erro %d)", "Erro ao eliminar banco de dados (n<>o pode remover diret<EFBFBD>rio '%-.64s' - erro no. %d)",
"Erro ao deletar '%-.64s' (Erro: %d)", "Erro na dele<EFBFBD><EFBFBD>o de '%-.64s' (erro no. %d)",
"Nao foi possivel ler o registro na tabela do sistema", "N<EFBFBD>o pode ler registro em tabela do sistema",
"Nao foi possivel obter o status de '%-.64s' (Erro: %d)", "N<EFBFBD>o pode obter status de '%-.64s' (erro no. %d)",
"Nao foi possivel obter o diretorio corrente (Erro: %d)", "N<EFBFBD>o pode obter diret<EFBFBD>rio corrente (erro no. %d)",
"Nao foi possivel travar o arquivo (Erro: %d)", "N<EFBFBD>o pode travar arquivo (erro no. %d)",
"Nao foi possivel abrir arquivo: '%-.64s'. (Erro: %d)", "N<EFBFBD>o pode abrir arquivo '%-.64s' (erro no. %d)",
"Nao foi possivel encontrar arquivo: '%-.64s' (Erro: %d)", "N<EFBFBD>o pode encontrar arquivo '%-.64s' (erro no. %d)",
"Nao foi possivel ler o diretorio de '%-.64s' (Erro: %d)", "N<EFBFBD>o pode ler diret<EFBFBD>rio de '%-.64s' (erro no. %d)",
"Nao foi possivel ir para o diretorio '%-.64s' (Erro: %d)", "N<EFBFBD>o pode mudar para o diret<EFBFBD>rio '%-.64s' (erro no. %d)",
"Registro alterado apos a ultima leitura da tabela '%-.64s'", "Registro alterado desde a <EFBFBD>ltima leitura da tabela '%-.64s'",
"Disco cheio (%s). Aguardando espaco livre....", "Disco cheio (%s). Aguardando algu<EFBFBD>m liberar algum espa<70>o....",
"Nao foi possivel gravar, chave duplicada na tabela '%-.64s'", "N<EFBFBD>o pode gravar. Chave duplicada na tabela '%-.64s'",
"Erro ao fechar '%-.64s' (Erro: %d)", "Erro ao fechar '%-.64s' (erro no. %d)",
"Erro lendo arquivo '%-.64s' (Erro: %d)", "Erro ao ler arquivo '%-.64s' (erro no. %d)",
"Erro ao renomear '%-.64s' to '%-.64s' (Erro: %d)", "Erro ao renomear '%-.64s' para '%-.64s' (erro no. %d)",
"Error gravando arquivo '%-.64s' (Erro: %d)", "Erro ao gravar arquivo '%-.64s' (erro no. %d)",
"'%-.64s' esta travado contra alteracoes", "'%-.64s' est<EFBFBD> com travamento contra altera<EFBFBD><EFBFBD>es",
"Ordenacao cancelada", "Ordena<EFBFBD><EFBFBD>o abortada",
"Visao '%-.64s' nao existe para '%-.64s'", "'View' '%-.64s' n<EFBFBD>o existe para '%-.64s'",
"Erro %d do manipulador de tabelas", "Obteve erro %d no manipulador de tabelas",
"Manipulador da tabela '%-.64s' nao suporta esta opcao", "Manipulador de tabela para '%-.64s' n<EFBFBD>o tem esta op<EFBFBD><EFBFBD>o",
"Nao foi possivel encontrar o registro em '%-.64s'", "N<EFBFBD>o pode encontrar registro em '%-.64s'",
"Informacao invalida no arquivo: '%-.64s'", "Informa<EFBFBD><EFBFBD>o incorreta no arquivo '%-.64s'",
"Arquivo de indice invalido na tabela: '%-.64s'. Tente conserta-lo!", "Arquivo chave incorreto para tabela '%-.64s'. Tente reparar",
"Arquivo de indice destaualizado na tabela '%-.64s'; Conserte-o!", "Arquivo chave desatualizado para tabela '%-.64s'. Repare-o!",
"'%-.64s' esta disponivel somente para leitura", "Tabela '%-.64s' <EFBFBD> somente para leitura",
"Sem memoria. Renicie o programa e tente novamente (Necessita de %d bytes)", "Sem mem<EFBFBD>ria. Reinicie o programa e tente novamente (necessita de %d bytes)",
"Sem memoria para ordenacao. Aumente o espaco de memoria para ordenacao.", "Sem mem<EFBFBD>ria para ordena<EFBFBD><EFBFBD>o. Aumente tamanho do 'buffer' de ordena<EFBFBD><EFBFBD>o",
"Fim de arquivo inesperado enquanto lendo o arquivo '%-.64s' (Erro: %d)", "Encontrado fim de arquivo inesperado ao ler arquivo '%-.64s' (erro no. %d)",
"Excesso de conexoes", "Excesso de conex<EFBFBD>es",
"Thread sem memoria disponivel", "Sem mem<65>ria. Verifique se o mysqld ou algum outro processo est<73> usando toda mem<EFBFBD>ria dispon<EFBFBD>vel. Se n<>o, voc<6F> pode ter que usar 'ulimit' para permitir ao mysqld usar mais mem<65>ria ou se voc<6F> pode adicionar mais <20>rea de 'swap'",
"Nao foi possivel obter o nome da maquina para este endereco IP", "N<EFBFBD>o pode obter nome do 'host' para seu endere<EFBFBD>o",
"Comunicacao invalida", "Negocia<EFBFBD><EFBFBD>o de acesso falhou",
"Acesso negado ao usuario : '%-.32s@%-.64s' ao banco de dados '%-.64s'", "Acesso negado para o usu<EFBFBD>rio '%-.32s@%-.64s' ao banco de dados '%-.64s'",
"Acesso negado ao usuario: '%-.32s@%-.64s' (usando a senha: %s)", "Acesso negado para o usu<EFBFBD>rio '%-.32s@%-.64s' (uso de senha: %s)",
"Nenhum banco de dados selecionado", "Nenhum banco de dados foi selecionado",
"Comando desconhecido", "Comando desconhecido",
"Coluna '%-.64s' nao pode ser vazia", "Coluna '%-.64s' n<EFBFBD>o pode ter NULL",
"Banco de dados '%-.64s' desconhecido", "Banco de dados '%-.64s' desconhecido",
"Tabela '%-.64s' ja existe", "Tabela '%-.64s' j<EFBFBD> existe",
"Tabela '%-.64s' desconhecida", "Tabela '%-.64s' desconhecida",
"Coluna: '%-.64s' em %s e ambigua", "Coluna '%-.64s' em '%-.64s' <20> amb<EFBFBD>gua",
"Finalizacao do servidor em andamento", "'Shutdown' do servidor em andamento",
"Coluna '%-.64s' desconhecida em %s", "Coluna '%-.64s' desconhecida em '%-.64s'",
"'%-.64s' utilizado nao esta em 'group by'", "'%-.64s' n<EFBFBD>o est<EFBFBD> em 'GROUP BY'",
"Nao foi possivel agrupar em '%-.64s'", "N<EFBFBD>o pode agrupar em '%-.64s'",
"Clausula contem funcoes de soma e colunas juntos", "Cl<EFBFBD>usula cont<EFBFBD>m fun<EFBFBD><EFBFBD>es de soma e colunas juntos",
"Contagem de colunas nao confere com a contagem de valores", "Contagem de colunas n<EFBFBD>o confere com a contagem de valores",
"Nome do identificador '%-.64s' muito grande", "Nome identificador '%-.100s' <20> longo demais",
"Nome da coluna '%-.64s' duplicado", "Nome da coluna '%-.64s' duplicado",
"Nome da chave '%-.64s' duplicado", "Nome da chave '%-.64s' duplicado",
"Inclusao de '%-.64s' duplicada para a chave %d", "Entrada '%-.64s' duplicada para a chave %d",
"Especificador de coluna invalido para a coluna '%-.64s'", "Especificador de coluna incorreto para a coluna '%-.64s'",
"%s proximo de '%-.64s' a linha %d", "%s pr<EFBFBD>ximo a '%-.80s' na linha %d",
"Selecao vazia", "'Query' estava vazia",
"Tabela/alias nao e unica: '%-.64s'", "Tabela/alias '%-.64s' n<>o <20>nica",
"Valor padrao invalido para '%-.64s'", "Valor 'default' inv<EFBFBD>lido para '%-.64s'",
"Mais de uma chave primaria definida", "Definida mais de uma chave prim<EFBFBD>ria",
"Muitas chaves definidas. O maximo permitido sao %d chaves", "Especificadas chaves demais. O m<EFBFBD>ximo permitido s<EFBFBD>o %d chaves",
"Muitas partes de chave definidas. O maximo permitido sao %d partes", "Especificadas partes de chave demais. O m<EFBFBD>ximo permitido s<EFBFBD>o %d partes",
"Chave especificada e muito longa. O comprimento maximo permitido e %d", "Chave especificada longa demais. O comprimento m<EFBFBD>ximo permitido <EFBFBD> %d",
"Coluna chave '%-.64s' nao existe na tabela", "Coluna chave '%-.64s' n<EFBFBD>o existe na tabela",
"Coluna binaria '%-.64s' nao pode ser utilizada na definicao de chaves", "Coluna BLOB '%-.64s' n<EFBFBD>o pode ser utilizada na especifica<EFBFBD><EFBFBD>o de chave para o tipo de tabela usado",
"Comprimento da coluna '%-.64s' muito grande(max = %d). Utilize o campo binario", "Comprimento da coluna '%-.64s' grande demais (max = %d). Use BLOB em seu lugar",
"Somente e permitido um campo auto incrementado, e ele deve ser chave da tabela", "Defini<EFBFBD><EFBFBD>o incorreta de tabela. Somente <EFBFBD> permitido um campo auto-incrementado e ele tem que ser definido como chave",
"%s: pronto para conexoes\n", "%s: Pronto para conex<EFBFBD>es\n",
"%s: Finalizacao concluida normalmente\n", "%s: 'Shutdown' normal\n",
"%s: Recebeu o sinal %d. Cancelando!\n", "%s: Obteve sinal %d. Abortando!\n",
"%s: Finalizacao concluida\n", "%s: 'Shutdown' completo\n",
"%s: Forcando a finalizacao da tarefa %ld usuario: '%-.64s'\n", "%s: For<EFBFBD>ando finaliza<EFBFBD><EFBFBD>o da 'thread' %ld - usu<EFBFBD>rio '%-.32s'\n",
"Nao foi possivel criar o socket IP", "N<EFBFBD>o pode criar 'socket' IP",
"Tabela '%-.64s' nao possui um indice criado por CREATE INDEX. Recrie a tabela", "Tabela '%-.64s' n<EFBFBD>o possui um <EFBFBD>ndice como o usado em CREATE INDEX. Recrie a tabela",
"O separador de campos nao esta conforme esperado. Confira no manual", "Argumento separador de campos n<EFBFBD>o <EFBFBD> o esperado. Confira no manual",
"Nao e possivel utilizar comprimento de linha fixo com campos binarios. Favor usar 'fields terminated by'.", "Voc<EFBFBD> n<>o pode usar comprimento de linha fixo com BLOBs. Favor usar 'fields terminated by'",
"O arquivo '%-.64s' precisa estar no diretorio do banco de dados, e sua leitura permitida a todos", "Arquivo '%-.64s' tem que estar no diret<EFBFBD>rio do banco de dados ou ter leitura permitida para todos",
"Arquivo '%-.64s' ja existe", "Arquivo '%-.80s' j<EFBFBD> existe",
"Registros: %ld Apagados: %ld Ignorados: %ld Avisos: %ld", "Registros: %ld - Deletados: %ld - Ignorados: %ld - Avisos: %ld",
"Registros: %ld Duplicados: %ld", "Registros: %ld - Duplicados: %ld",
"Parte da chave errada. A parte utilizada nao e um texto ou tem comprimento maior que o definido", "Parte de chave incorreta. A parte de chave usada n<EFBFBD>o <EFBFBD> um 'string' ou o comprimento usado <20> maior do que a parte de chave",
"Nao e possivel retirar todas as colunas da tabela com ALTER TABLE. Use DROP TABLE", "Voc<EFBFBD> n<>o pode deletar todas as colunas com ALTER TABLE. Use DROP TABLE em seu lugar",
"Nao foi possivel DROP '%-.64s'. Confira se este campo/chave existe", "N<EFBFBD>o pode fazer DROP '%-.64s'. Confira se este campo/chave existe",
"Registros: %ld Duplicados: %ld Avisos: %ld", "Registros: %ld - Duplicados: %ld - Avisos: %ld",
"INSERT TABLE '%-.64s' nao e permitido em FROM lista de tabelas", "INSERT TABLE '%-.64s' n<EFBFBD>o <EFBFBD> permitido em lista de tabelas FROM",
"Tarefa desconhecida id: %lu", "'Id' de 'thread' %lu desconhecido",
"Voce nao e o responsavel pela tarefa %lu", "Voc<EFBFBD> n<EFBFBD>o <EFBFBD> propriet<65>rio da 'thread' %lu",
"Nenhuma tabela em uso", "Nenhuma tabela usada",
"Muitos textos para a coluna %s e SET", "'Strings' demais para coluna '%-.64s' e SET",
"Nao foi possivel um unico nome para o arquivo %s.(1-999)\n", "N<EFBFBD>o pode gerar um nome de arquivo de 'log' <20>nico '%-.64s'.(1-999)\n",
"Tabela '%-.64s' esta travada para leitura, e nao pode ser atualizada", "Tabela '%-.64s' foi travada com trava de READ e n<EFBFBD>o pode ser atualizada",
"Tabela '%-.64s' nao foi travada com LOCK TABLES", "Tabela '%-.64s' n<EFBFBD>o foi travada com LOCK TABLES",
"Campo binario '%-.64s' nao pode ter um valor inicial", "Coluna BLOB '%-.64s' n<EFBFBD>o pode ter um valor 'default'",
"Nome de banco de dados invalido: '%-.64s'", "Nome de banco de dados '%-.100s' incorreto",
"Nome de tabela invalido: '%-.64s'", "Nome de tabela '%-.100s' incorreto",
"O SELECT muitos registros, e possivelmente vai demorar. Confira sua clausula WHERE e utilize SET OPTION SQL_BIG_SELECTS=1 se o SELECT esta correto", "O SELECT examinaria registros demais e provavelmente tomaria um tempo muito longo. Confira sua cl<EFBFBD>usula WHERE e use SET OPTION SQL_BIG_SELECTS=1, se o SELECT estiver correto",
"Erro desconhecido", "Erro desconhecido",
"Procedimento %s desconhecido", "'Procedure' '%-.64s' desconhecida",
"Numero de parametros para o procedimento %s esta incorreto", "N<EFBFBD>mero de par<EFBFBD>metros incorreto para a 'procedure' '%-.64s'",
"Parametro incorreto para o procedimento %s", "Par<EFBFBD>metros incorretos para a 'procedure' '%-.64s'",
"Tabela '%-.64s' descohecida em %s", "Tabela '%-.64s' desconhecida em '%-.32s'",
"Campo '%-.64s' definido em duplicidade", "Coluna '%-.64s' especificada duas vezes",
"Invalid use of group function", "Uso inv<EFBFBD>lido da fun<75><6E>o GROUP",
"Table '%-.64s' uses a extension that doesn't exist in this MySQL version", "Tabela '%-.64s' usa uma extens<EFBFBD>o que n<>o existe nesta vers<72>o do MySQL",
"A table must have at least 1 column", "Uma tabela tem que ter pelo menos uma (1) coluna",
"The table '%-.64s' is full", "Tabela '%-.64s' est<EFBFBD> cheia",
"Unknown character set: '%-.64s'", "Conjunto de caracteres '%-.64s' desconhecido",
"Too many tables. MySQL can only use %d tables in a join", "Tabelas demais. O MySQL pode usar somente %d tabelas em um JOIN",
"Too many fields", "Colunas demais",
"Too big row size. The maximum row size, not counting blobs, is %d. You have to change some fields to blobs", "Tamanho de linha grande demais. O m<EFBFBD>ximo tamanho de linha, n<EFBFBD>o contando BLOBs, <20> de %d. Voc<6F> tem que mudar alguns campos para BLOBs",
"Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thread_stack=#' to specify a bigger stack if needed", "Estouro da pilha do 'thread'. Usados %ld de uma pilha de %ld . Use 'mysqld -O thread_stack=#' para especificar uma pilha maior, se necess<73>rio",
"Cross dependency found in OUTER JOIN. Examine your ON conditions", "Depend<EFBFBD>ncia cruzada encontrada em OUTER JOIN. Examine suas condi<64><69>es ON",
"Column '%-.32s' is used with UNIQUE or INDEX but is not defined as NOT NULL", "Coluna '%-.64s' <EFBFBD> usada com UNIQUE ou INDEX, mas n<>o est<73> definida como NOT NULL",
"Can't load function '%-.64s'", "N<EFBFBD>o pode carregar a fun<75><6E>o '%-.64s'",
"Can't initialize function '%-.64s'; %-.80s", "N<EFBFBD>o pode inicializar a fun<75><6E>o '%-.64s' - '%-.80s'",
"No paths allowed for shared library", "N<EFBFBD>o <EFBFBD> permitido caminho para biblioteca compartilhada",
"Function '%-.64s' already exist", "Fun<EFBFBD><EFBFBD>o '%-.64s' j<EFBFBD> existe",
"Can't open shared library '%-.64s' (errno: %d %s)", "N<EFBFBD>o pode abrir biblioteca compartilhada '%-.64s' (erro no. '%d' - '%-.64s')",
"Can't find function '%-.64s' in library'", "N<EFBFBD>o pode encontrar a fun<75><6E>o '%-.64s' na biblioteca",
"Function '%-.64s' is not defined", "Fun<EFBFBD><EFBFBD>o '%-.64s' n<EFBFBD>o est<73> definida",
"Host '%-.64s' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'", "'Host' '%-.64s' est<EFBFBD> bloqueado devido a muitos erros de conex<65>o. Desbloqueie com 'mysqladmin flush-hosts'",
"Host '%-.64s' is not allowed to connect to this MySQL server", "'Host' '%-.64s' n<EFBFBD>o tem permiss<73>o para se conectar com este servidor MySQL",
"You are using MySQL as an anonymous users and anonymous users are not allowed to change passwords", "Voc<EFBFBD> est<73> usando o MySQL como usu<EFBFBD>rio an<61>nimo e usu<73>rios an<61>nimos n<>o t<>m permiss<73>o para mudar senhas",
"You must have privileges to update tables in the mysql database to be able to change passwords for others", "Voc<EFBFBD> tem que ter o privil<69>gio para atualizar tabelas no banco de dados mysql para ser capaz de mudar a senha de outros",
"Can't find any matching row in the user table", "N<EFBFBD>o pode encontrar nenhuma linha que combine na tabela user",
"Rows matched: %ld Changed: %ld Warnings: %ld", "Linhas que combinaram: %ld - Alteradas: %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", "N<EFBFBD>o pode criar uma nova 'thread' (erro no. %d). Se voc<6F> n<>o estiver sem mem<65>ria dispon<6F>vel, voc<6F> pode consultar o manual sobre uma poss<73>vel falha dependente do sistema operacional",
"Column count doesn't match value count at row %ld", "Contagem de colunas n<>o confere com a contagem de valores na linha %ld",
"Can't reopen table: '%-.64s', "N<EFBFBD>o pode reabrir a tabela '%-.64s',
"Invalid use of NULL value", "Uso inv<EFBFBD>lido do valor NULL",
"Got error '%-.64s' from regexp", "Obteve erro '%-.64s' em regexp",
"Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause", "Mistura de colunas GROUP (MIN(),MAX(),COUNT()...) com colunas n<>o GROUP <20> ilegal, se n<>o existir cl<63>usula GROUP BY",
"There is no such grant defined for user '%-.32s' on host '%-.64s'", "N<EFBFBD>o existe tal 'grant' definido para o usu<73>rio '%-.32s' no 'host' '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for table '%-.64s'", "Comando '%-.16s' negado para o usu<73>rio '%-.32s@%-.64s' na tabela '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for column '%-.64s' in table '%-.64s'", "Comando '%-.16s' negado para o usu<73>rio '%-.32s@%-.64s' na coluna '%-.64s', na tabela '%-.64s'",
"Illegal GRANT/REVOKE command. Please consult the manual which privleges can be used.", "Comando GRANT/REVOKE ilegal. Por favor consulte no manual quais privil<69>gios podem ser usados.",
"The host or user argument to GRANT is too long", "Argumento de 'host' ou de usu<73>rio para o GRANT <20> longo demais",
"Table '%-64s.%s' doesn't exist", "Tabela '%-.64s.%-.64s' n<>o existe",
"There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'", "N<EFBFBD>o existe tal 'grant' definido para o usu<73>rio '%-.32s' no 'host' '%-.64s', na tabela '%-.64s'",
"The used command is not allowed with this MySQL version", "Comando usado n<>o <20> permitido para esta vers<72>o do MySQL",
"Something is wrong in your syntax", "Voc<EFBFBD> tem um erro de sintaxe no seu SQL",
"Delayed insert thread couldn't get requested lock for table %-.64s", "'Thread' de inser<65><72>o retardada ('delayed') n<>o conseguiu obter trava solicitada na tabela '%-.64s'",
"Too many delayed threads in use", "Excesso de 'threads' retardadas ('delayed') em uso",
"Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)", "Conex<EFBFBD>o %ld abortou para o banco de dados '%-.64s' - usu<73>rio '%-.32s' (%-.64s)",
"Got a packet bigger than 'max_allowed_packet'", "Obteve um pacote maior do que 'max_allowed_packet'",
"Got a read error from the connection pipe", "Obteve um erro de leitura no 'pipe' de conex<65>o",
"Got an error from fcntl()", "Obteve um erro em fcntl()",
"Got packets out of order", "Obteve pacotes fora de ordem",
"Couldn't uncompress communication packet", "N<EFBFBD>o conseguiu descomprimir pacote de comunica<EFBFBD><EFBFBD>o",
"Got an error reading communication packets" "Obteve um erro na leitura de pacotes de comunica<EFBFBD><EFBFBD>o",
"Got timeout reading communication packets", "Obteve expira<72><61>o de tempo ('timeout') na leitura de pacotes de comunica<EFBFBD><EFBFBD>o",
"Got an error writing communication packets", "Obteve um erro na grava<76><61>o de pacotes de comunica<63><61>o",
"Got timeout writing communication packets", "Obteve expira<72><61>o de tempo ('timeout') na escrita de pacotes de comunica<EFBFBD><EFBFBD>o",
"Result string is longer than max_allowed_packet", "'String' resultante <20> mais longa do que 'max_allowed_packet'",
"The used table type doesn't support BLOB/TEXT columns", "Tipo de tabela usado n<>o permite colunas BLOB/TEXT",
"The used table type doesn't support AUTO_INCREMENT columns", "Tipo de tabela usado n<>o permite colunas AUTO_INCREMENT",
"INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES", "INSERT DELAYED n<EFBFBD>o pode ser usado com a tabela '%-.64s', porque est<73> travada com LOCK TABLES",
"Incorrect column name '%-.100s'", "Nome de coluna '%-.100s' incorreto",
"The used table handler can't index column '%-.64s'", "O manipulador de tabela usado n<>o pode indexar a coluna '%-.64s'",
"All tables in the MERGE table are not defined identically", "Tabelas no MERGE n<>o est<73>o todas definidas identicamente",
"Can't write, because of unique constraint, to table '%-.64s'", "N<EFBFBD>o pode gravar, devido <20> restri<72><69>o UNIQUE, na tabela '%-.64s'",
"BLOB column '%-.64s' used in key specification without a key length", "Coluna BLOB '%-.64s' usada na especifica<63><61>o de chave sem o comprimento da chave",
"All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead", "Todas as partes de uma PRIMARY KEY t<EFBFBD>m que ser NOT NULL. Se voc<6F> precisar de NULL em uma chave, use UNIQUE em seu lugar",
"Result consisted of more than one row", "O resultado consistiu em mais do que uma linha",
"This table type requires a primary key", "Este tipo de tabela requer uma chave prim<69>ria",
"This version of MySQL is not compiled with RAID support", "Esta vers<EFBFBD>o do MySQL n<EFBFBD>o foi compilada com suporte a RAID",
"You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column", "Voc<EFBFBD> est<73> usando modo de atualiza<7A><61>o seguro e tentou atualizar uma tabela sem um WHERE que use uma coluna tipo KEY",
"Key '%-.64s' doesn't exist in table '%-.64s'", "Chave '%-.64s' n<EFBFBD>o existe na tabela '%-.64s'",
"Can't open table", "N<EFBFBD>o pode abrir a tabela",
"The handler for the table doesn't support check/repair", "O manipulador de tabela n<>o suporta check/repair",
"You are not allowed to execute this command in a transaction", "N<EFBFBD>o lhe <20> permitido executar este comando em uma 'transaction'",
"Got error %d during COMMIT", "Obteve erro %d durante COMMIT",
"Got error %d during ROLLBACK", "Obteve erro %d durante ROLLBACK",
"Got error %d during FLUSH_LOGS", "Obteve erro %d durante FLUSH_LOGS",
"Got error %d during CHECKPOINT", "Obteve erro %d durante CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", "Conex<EFBFBD>o %ld abortada ao banco de dados '%-.64s' - usu<EFBFBD>rio '%-.32s' - 'host' `%-.64s' ('%-.64s')",
"The handler for the table does not support binary table dump", "O manipulador de tabela n<>o suporta DUMP bin<69>rio de tabela",
"Binlog closed while trying to FLUSH MASTER", "Binlog fechado. N<>o pode fazer RESET MASTER",
"Failed rebuilding the index of dumped table '%-.64s'", "Falhou na reconstru<72><75>o do <20>ndice da tabela 'dumped' '%-.64s'",
"Error from master: '%-.64s'", "Erro no 'master' '%-.64s'",
"Net error reading from master", "Erro de rede na leitura do 'master'",
"Net error writing to master", "Erro de rede na grava<76><61>o do 'master'",
"Can't find FULLTEXT index matching the column list", "N<EFBFBD>o pode encontrar <20>ndice FULLTEXT que combine com a lista de colunas",
"Can't execute the given command because you have active locked tables or an active transaction", "N<EFBFBD>o pode executar o comando dado porque voc<6F> tem tabelas ativas travadas ou uma 'transaction' ativa",
"Unknown system variable '%-.64'", "Vari<EFBFBD>vel de sistema '%-.64' desconhecida",
"Table '%-.64s' is marked as crashed and should be repaired", "Tabela '%-.64s' est<EFBFBD> marcada como danificada e deve ser reparada",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed", "Tabela '%-.64s' est<EFBFBD> marcada como danificada e a <20>ltima repara<72><61>o (autom<EFBFBD>tica?) falhou",
"Warning: Some non-transactional changed tables couldn't be rolled back", "Aviso: Algumas tabelas n<>o-transacionais alteradas n<>o puderam ser reconstitu<74>das ('rolled back')",
"Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage. Increase this mysqld variable and try again', "'Multi-statement transaction' requereu mais do que 'max_binlog_cache_size' bytes de armazenagem. Aumente o valor desta vari<72>vel do mysqld e tente novamente',
"This operation cannot be performed with a running slave, run SLAVE STOP first", "Esta opera<EFBFBD><EFBFBD>o n<>o pode ser realizada com um 'slave' em execu<63><75>o. Execute SLAVE STOP primeiro",
"This operation requires a running slave, configure slave and do SLAVE START", "Esta opera<EFBFBD><EFBFBD>o requer um 'slave' em execu<63><75>o. Configure o 'slave' e execute SLAVE START",
"The server is not configured as slave, fix in config file or with CHANGE MASTER TO", "O servidor n<>o est<73> configurado como 'slave'. Acerte o arquivo de configura<72><61>o ou use CHANGE MASTER TO",
"Could not initialize master info structure, check permisions on master.info", "N<EFBFBD>o pode inicializar a estrutura de informa<6D><61>o do 'master'. Verifique as permiss<73>es em 'master.info'",
"Could not create slave thread, check system resources", "N<EFBFBD>o conseguiu criar 'thread' de 'slave'. Verifique os recursos do sistema",
"User %-.64s has already more than 'max_user_connections' active connections", "Usu<EFBFBD>rio '%-.64s' j<> possui 'max_user_connections' conex<EFBFBD>es ativas",
"You may only use constant expressions with SET", "Voc<EFBFBD> pode usar apenas express<73>es de constante com SET",
"Lock wait timeout exceeded", "Lock wait timeout exceeded",
"The total number of locks exceeds the lock table size", "The total number of locks exceeds the lock table size",
"Update locks cannot be acquired during a READ UNCOMMITTED transaction", "Update locks cannot be acquired during a READ UNCOMMITTED transaction",

View File

@ -314,28 +314,31 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
const char* table_name) const char* table_name)
{ {
uint packet_len = my_net_read(net); // read create table statement uint packet_len = my_net_read(net); // read create table statement
Vio* save_vio;
HA_CHECK_OPT check_opt;
TABLE_LIST tables; TABLE_LIST tables;
int error = 0; int error= 1;
handler *file;
if(packet_len == packet_error) if (packet_len == packet_error)
{ {
send_error(&thd->net, ER_MASTER_NET_READ); send_error(&thd->net, ER_MASTER_NET_READ);
return 1; return 1;
} }
if(net->read_pos[0] == 255) // error from master if (net->read_pos[0] == 255) // error from master
{ {
net->read_pos[packet_len] = 0; net->read_pos[packet_len] = 0;
net_printf(&thd->net, ER_MASTER, net->read_pos + 3); net_printf(&thd->net, ER_MASTER, net->read_pos + 3);
return 1; return 1;
} }
thd->command = COM_TABLE_DUMP; thd->command = COM_TABLE_DUMP;
thd->query = sql_alloc(packet_len + 1); thd->query = sql_alloc(packet_len + 1);
if(!thd->query) if (!thd->query)
{ {
sql_print_error("create_table_from_dump: out of memory"); sql_print_error("create_table_from_dump: out of memory");
net_printf(&thd->net, ER_GET_ERRNO, "Out of memory"); net_printf(&thd->net, ER_GET_ERRNO, "Out of memory");
return 1; return 1;
} }
memcpy(thd->query, net->read_pos, packet_len); memcpy(thd->query, net->read_pos, packet_len);
thd->query[packet_len] = 0; thd->query[packet_len] = 0;
thd->current_tablenr = 0; thd->current_tablenr = 0;
@ -346,13 +349,10 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
char* save_db = thd->db; char* save_db = thd->db;
thd->db = thd->last_nx_db; thd->db = thd->last_nx_db;
mysql_parse(thd, thd->query, packet_len); // run create table mysql_parse(thd, thd->query, packet_len); // run create table
thd->db = save_db; // leave things the way the were before thd->db = save_db; // leave things the way the were before
if(thd->query_error) if (thd->query_error)
{ goto err; // mysql_parse took care of the error send
close_thread_tables(thd); // mysql_parse takes care of the error send
return 1;
}
bzero((char*) &tables,sizeof(tables)); bzero((char*) &tables,sizeof(tables));
tables.db = (char*)db; tables.db = (char*)db;
@ -361,41 +361,37 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
thd->proc_info = "Opening master dump table"; thd->proc_info = "Opening master dump table";
if (!open_ltable(thd, &tables, TL_WRITE)) if (!open_ltable(thd, &tables, TL_WRITE))
{ {
// open tables will send the error send_error(&thd->net,0,0); // Send error from open_ltable
sql_print_error("create_table_from_dump: could not open created table"); sql_print_error("create_table_from_dump: could not open created table");
close_thread_tables(thd); goto err;
return 1;
} }
handler *file = tables.table->file; file = tables.table->file;
thd->proc_info = "Reading master dump table data"; thd->proc_info = "Reading master dump table data";
if (file->net_read_dump(net)) if (file->net_read_dump(net))
{ {
net_printf(&thd->net, ER_MASTER_NET_READ); net_printf(&thd->net, ER_MASTER_NET_READ);
sql_print_error("create_table_from_dump::failed in\ sql_print_error("create_table_from_dump::failed in\
handler::net_read_dump()"); handler::net_read_dump()");
close_thread_tables(thd); goto err;
return 1;
} }
HA_CHECK_OPT check_opt;
check_opt.init(); check_opt.init();
check_opt.flags|= T_VERY_SILENT; check_opt.flags|= T_VERY_SILENT;
check_opt.quick = 1; check_opt.quick = 1;
thd->proc_info = "Rebuilding the index on master dump table"; thd->proc_info = "Rebuilding the index on master dump table";
Vio* save_vio = thd->net.vio;
// we do not want repair() to spam us with messages // we do not want repair() to spam us with messages
// just send them to the error log, and report the failure in case of // just send them to the error log, and report the failure in case of
// problems // problems
save_vio = thd->net.vio;
thd->net.vio = 0; thd->net.vio = 0;
if (file->repair(thd,&check_opt )) error=file->repair(thd,&check_opt) != 0;
{
net_printf(&thd->net, ER_INDEX_REBUILD,tables.table->real_name );
error = 1;
}
thd->net.vio = save_vio; thd->net.vio = save_vio;
if (error)
net_printf(&thd->net, ER_INDEX_REBUILD,tables.table->real_name);
err:
close_thread_tables(thd); close_thread_tables(thd);
thd->net.no_send_ok = 0; thd->net.no_send_ok = 0;
return error; return error;
} }
@ -405,31 +401,31 @@ int fetch_nx_table(THD* thd, MASTER_INFO* mi)
MYSQL* mysql = mc_mysql_init(NULL); MYSQL* mysql = mc_mysql_init(NULL);
int error = 1; int error = 1;
int nx_errno = 0; int nx_errno = 0;
if(!mysql) if (!mysql)
{ {
sql_print_error("fetch_nx_table: Error in mysql_init()"); sql_print_error("fetch_nx_table: Error in mysql_init()");
nx_errno = ER_GET_ERRNO; nx_errno = ER_GET_ERRNO;
goto err; goto err;
} }
safe_connect(thd, mysql, mi); safe_connect(thd, mysql, mi);
if(slave_killed(thd)) if (slave_killed(thd))
goto err; goto err;
if(request_table_dump(mysql, thd->last_nx_db, thd->last_nx_table)) if (request_table_dump(mysql, thd->last_nx_db, thd->last_nx_table))
{ {
nx_errno = ER_GET_ERRNO; nx_errno = ER_GET_ERRNO;
sql_print_error("fetch_nx_table: failed on table dump request "); sql_print_error("fetch_nx_table: failed on table dump request ");
goto err; goto err;
} }
if(create_table_from_dump(thd, &mysql->net, thd->last_nx_db, if (create_table_from_dump(thd, &mysql->net, thd->last_nx_db,
thd->last_nx_table)) thd->last_nx_table))
{ {
// create_table_from_dump will have sent the error alread // create_table_from_dump will have sent the error alread
sql_print_error("fetch_nx_table: failed on create table "); sql_print_error("fetch_nx_table: failed on create table ");
goto err; goto err;
} }
error = 0; error = 0;
@ -438,6 +434,7 @@ int fetch_nx_table(THD* thd, MASTER_INFO* mi)
mc_mysql_close(mysql); mc_mysql_close(mysql);
if (nx_errno && thd->net.vio) if (nx_errno && thd->net.vio)
send_error(&thd->net, nx_errno, "Error in fetch_nx_table"); send_error(&thd->net, nx_errno, "Error in fetch_nx_table");
thd->net.no_send_ok = 0; // Clear up garbage after create_table_from_dump
return error; return error;
} }

View File

@ -1210,23 +1210,13 @@ mysql_execute_command(void)
if (strlen(tables->name) > NAME_LEN) if (strlen(tables->name) > NAME_LEN)
{ {
net_printf(&thd->net,ER_WRONG_TABLE_NAME,tables->name); net_printf(&thd->net,ER_WRONG_TABLE_NAME,tables->name);
res=0;
break; break;
} }
thd->last_nx_table = tables->real_name; thd->last_nx_table = tables->real_name;
thd->last_nx_db = tables->db; thd->last_nx_db = tables->db;
if(fetch_nx_table(thd, &glob_mi)) if (fetch_nx_table(thd, &glob_mi))
// fetch_nx_table is responsible for sending break; // fetch_nx_table did send the error to the client
// the error
{
res = 0;
thd->net.no_send_ok = 0; // easier to do it here
// this way we make sure that when we are done, we are clean
break;
}
res = 0;
send_ok(&thd->net); send_ok(&thd->net);
break; break;

View File

@ -832,13 +832,13 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
int lock_retcode; int lock_retcode;
pthread_mutex_lock(&LOCK_open); pthread_mutex_lock(&LOCK_open);
if((lock_retcode = lock_table_name(thd, table)) < 0) if ((lock_retcode = lock_table_name(thd, table)) < 0)
{ {
pthread_mutex_unlock(&LOCK_open); pthread_mutex_unlock(&LOCK_open);
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
if(lock_retcode && wait_for_locked_table_names(thd, table)) if (lock_retcode && wait_for_locked_table_names(thd, table))
{ {
unlock_table_name(thd, table); unlock_table_name(thd, table);
pthread_mutex_unlock(&LOCK_open); pthread_mutex_unlock(&LOCK_open);
@ -846,7 +846,7 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
} }
pthread_mutex_unlock(&LOCK_open); pthread_mutex_unlock(&LOCK_open);
if(my_copy(src_path, if (my_copy(src_path,
fn_format(dst_path, dst_path,"", fn_format(dst_path, dst_path,"",
reg_ext, 4), reg_ext, 4),
MYF(MY_WME))) MYF(MY_WME)))
@ -860,7 +860,7 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
// generate table will try to send OK which messes up the output // generate table will try to send OK which messes up the output
// for the client // for the client
if(generate_table(thd, table, 0)) if (generate_table(thd, table, 0))
{ {
unlock_table_name(thd, table); unlock_table_name(thd, table);
thd->net.no_send_ok = save_no_send_ok; thd->net.no_send_ok = save_no_send_ok;
@ -921,7 +921,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
// now we should be able to open the partially restored table // now we should be able to open the partially restored table
// to finish the restore in the handler later on // to finish the restore in the handler later on
if(!(table->table = reopen_name_locked_table(thd, table))) if (!(table->table = reopen_name_locked_table(thd, table)))
unlock_table_name(thd, table); unlock_table_name(thd, table);
} }
@ -1689,7 +1689,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
alter table is to delete the new table so there alter table is to delete the new table so there
is no need to log the changes to it. */ is no need to log the changes to it. */
error = ha_recovery_logging(thd,false); error = ha_recovery_logging(thd,false);
if(error) if (error)
{ {
error = 1; error = 1;
goto err; goto err;