Commit a0ca35c1 authored by unknown's avatar unknown

SHOW VARIABLES LIKE ... are now case insensitive

Fixed stack overflow checking with crash-me with gcc 3.0.4
Using @@unknown_variable doesn't hang client anymore
Added @@VERSION variable


Docs/manual.texi:
  Changelog
libmysql/libmysql.c:
  Fixed typo
myisam/myisampack.c:
  Removed not used argument
mysql-test/r/show_check.result:
  Added test of case insensitive SHOW VARIABLES LIKE
mysql-test/r/variables.result:
  test of system variables
mysql-test/t/show_check.test:
  Added test of case insensitive SHOW VARIABLES LIKE
mysql-test/t/variables.test:
  test of system variables
sql/item_func.cc:
  Fixed stack overflow checking with crash-me with gcc 3.0.4
  Using @@unknown_variable doesn't hang client anymore
  Added @@VERSION variable
sql/mysql_priv.h:
  Fixed stack overflow checking with crash-me with gcc 3.0.4
sql/share/czech/errmsg.txt:
  Fixed wrong error message
sql/share/danish/errmsg.txt:
  Fixed wrong error message
sql/share/dutch/errmsg.txt:
  Fixed wrong error message
sql/share/english/errmsg.txt:
  Fixed wrong error message
sql/share/estonian/errmsg.txt:
  Fixed wrong error message
sql/share/french/errmsg.txt:
  Fixed wrong error message
sql/share/german/errmsg.txt:
  Fixed wrong error message
sql/share/greek/errmsg.txt:
  Fixed wrong error message
sql/share/hungarian/errmsg.txt:
  Fixed wrong error message
sql/share/italian/errmsg.txt:
  Fixed wrong error message
sql/share/japanese/errmsg.txt:
  Fixed wrong error message
sql/share/korean/errmsg.txt:
  Fixed wrong error message
sql/share/norwegian-ny/errmsg.txt:
  Fixed wrong error message
sql/share/norwegian/errmsg.txt:
  Fixed wrong error message
sql/share/polish/errmsg.txt:
  Fixed wrong error message
sql/share/portuguese/errmsg.txt:
  Fixed wrong error message
sql/share/romanian/errmsg.txt:
  Fixed wrong error message
sql/share/russian/errmsg.txt:
  Fixed wrong error message
sql/share/slovak/errmsg.txt:
  Fixed wrong error message
BitKeeper/deleted/.del-identity.result~e41453a364242503:
  not used file
BitKeeper/deleted/.del-identity.test~326f469b59105404:
  not used file
sql/share/spanish/errmsg.txt:
  Fixed wrong error message
sql/share/swedish/errmsg.txt:
  Fixed wrong error message
sql/share/ukrainian/errmsg.txt:
  Fixed wrong error message
sql/sql_show.cc:
  SHOW VARIABLES LIKE ... are now case insensitive
parent 9c2c5a36
......@@ -46913,6 +46913,14 @@ not yet 100% confident in this code.
@itemize @bullet
@item
Fixed problem with @code{crash-me} and gcc 3.0.4.
@item
Fixed that @code{@@@@unknown_variable} doesn't hang server.
@item
Added @code{@@@@VERSION} as a synonym for @code{VERSION()}.
@item
@code{SHOW VARIABLES LIKE 'xxx'} is now case insensitive.
@item
Fixed timeout for @code{GET_LOCK()} on HPUX with DCE threads.
@item
Fixed memory allocation bug in the glibc library used to build Linux
......@@ -675,7 +675,7 @@ static const char *default_options[]=
"port","socket","compress","password","pipe", "timeout", "user",
"init-command", "host", "database", "debug", "return-found-rows",
"ssl-key" ,"ssl-cert" ,"ssl-ca" ,"ssl-capath",
"character-set-dir", "default-character-set", "interactive-timeout",
"character-sets-dir", "default-character-set", "interactive-timeout",
"connect-timeout", "local-infile", "disable-local-infile",
NullS
};
......
......@@ -239,7 +239,6 @@ static struct option long_options[] =
{"force", no_argument, 0, 'f'},
{"join", required_argument, 0, 'j'},
{"help", no_argument, 0, '?'},
{"packlength",required_argument, 0, 'p'},
{"silent", no_argument, 0, 's'},
{"tmpdir", required_argument, 0, 'T'},
{"test", no_argument, 0, 't'},
......@@ -251,7 +250,7 @@ static struct option long_options[] =
static void print_version(void)
{
printf("%s Ver 1.12 for %s on %s\n",my_progname,SYSTEM_TYPE,MACHINE_TYPE);
printf("%s Ver 1.13 for %s on %s\n",my_progname,SYSTEM_TYPE,MACHINE_TYPE);
}
static void usage(void)
......
last_insert_id(345)
345
@@IDENTITY last_insert_id()
345 345
......@@ -47,6 +47,8 @@ test.t1 optimize status Table is already up to date
Variable_name Value
wait_timeout 28800
Variable_name Value
wait_timeout 28800
Variable_name Value
Name Type Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Create_options Comment
Database
mysql
......
......@@ -23,3 +23,11 @@ c_id c_name c_country
c_id c_name c_country
1 Bozo USA
4 Mr. Floppy GB
@@VERSION=version()
1
last_insert_id(345)
345
@@IDENTITY last_insert_id()
345 345
@@IDENTITY
345
select last_insert_id(345);
select @@IDENTITY,last_insert_id();
......@@ -33,6 +33,7 @@ drop table t1;
#show variables;
show variables like "wait_timeout%";
show variables like "WAIT_timeout%";
show variables like "this_doesn't_exists%";
show table status from test like "this_doesn't_exists%";
show databases;
......
......@@ -27,3 +27,14 @@ SELECT * FROM t1 WHERE c_id=@min_cid OR c_id=@max_cid OR c_id=666;
ALTER TABLE t1 DROP PRIMARY KEY;
select * from t1 where c_id=@min_cid OR c_id=@max_cid;
drop table t1;
#
# Test system variables
#
select @@VERSION=version();
select last_insert_id(345);
select @@IDENTITY,last_insert_id();
select @@identity;
--error 1193
select @@unknown_variable;
......@@ -59,7 +59,7 @@ bool
Item_func::fix_fields(THD *thd,TABLE_LIST *tables)
{
Item **arg,**arg_end;
char buff[sizeof(double)]; // Max argument in function
char buff[STACK_BUFF_ALLOC]; // Max argument in function
binary=0;
used_tables_cache=0;
const_item_cache=1;
......@@ -1058,7 +1058,7 @@ bool
udf_handler::fix_fields(THD *thd,TABLE_LIST *tables,Item_result_field *func,
uint arg_count, Item **arguments)
{
char buff[sizeof(double)]; // Max argument in function
char buff[STACK_BUFF_ALLOC]; // Max argument in function
DBUG_ENTER("Item_udf_func::fix_fields");
if (thd)
......@@ -2161,9 +2161,12 @@ bool Item_func_match::eq(const Item *item, bool binary_cmp) const
Item *get_system_var(LEX_STRING name)
{
if (!strcmp(name.str,"IDENTITY"))
if (!my_strcasecmp(name.str,"IDENTITY"))
return new Item_int((char*) "@@IDENTITY",
current_thd->insert_id(),21);
my_error(ER_UNKNOWN_SYSTEM_VARIABLE,MYF(0),name);
if (!my_strcasecmp(name.str,"VERSION"))
return new Item_string("@@VERSION",server_version,
(uint) strlen(server_version));
net_printf(&current_thd->net, ER_UNKNOWN_SYSTEM_VARIABLE, name);
return 0;
}
......@@ -73,22 +73,30 @@ void kill_one_thread(THD *thd, ulong id);
#define MAX_FIELDS_BEFORE_HASH 32
#define USER_VARS_HASH_SIZE 16
#define STACK_MIN_SIZE 8192 // Abort if less stack during eval.
#define STACK_BUFF_ALLOC 32 // For stack overrun checks
#ifndef MYSQLD_NET_RETRY_COUNT
#define MYSQLD_NET_RETRY_COUNT 10 // Abort read after this many int.
#endif
#define TEMP_POOL_SIZE 128
/* The following parameters is to decide when to use an extra cache to
optimise seeks when reading a big table in sorted order */
/*
The following parameters is to decide when to use an extra cache to
optimise seeks when reading a big table in sorted order
*/
#define MIN_FILE_LENGTH_TO_USE_ROW_CACHE (16L*1024*1024)
#define MIN_ROWS_TO_USE_TABLE_CACHE 100
// The following is used to decide if MySQL should use table scanning
// instead of reading with keys. The number says how many evaluation of the
// WHERE clause is comparable to reading one extra row from a table.
/*
The following is used to decide if MySQL should use table scanning
instead of reading with keys. The number says how many evaluation of the
WHERE clause is comparable to reading one extra row from a table.
*/
#define TIME_FOR_COMPARE 5 // 5 compares == one read
// Number of rows in a reference table when refereed through a not unique key.
// This value is only used when we don't know anything about the key
// distribution.
/*
Number of rows in a reference table when refereed through a not unique key.
This value is only used when we don't know anything about the key
distribution.
*/
#define MATCHING_ROWS_IN_OTHER_TABLE 10
/* Don't pack string keys shorter than this (if PACK_KEYS=1 isn't used) */
......
......@@ -203,7 +203,7 @@
"S-Bov chyba pi zpisu na master",-A
"-Bdn sloupec nem vytvoen fulltextov index",-A
"Nemohu prov-Bst zadan pkaz, protoe existuj aktivn zamen tabulky nebo aktivn transakce",-A
"Nezn-Bm systmov promnn '%-.64'",-A
"Nezn-Bm systmov promnn '%-.64s'",-A
"Tabulka '%-.64s' je ozna-Bena jako poruen a mla by bt opravena",-A
"Tabulka '%-.64s' je ozna-Bena jako poruen a posledn (automatick?) oprava se nezdaila",-A
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -197,7 +197,7 @@
"Netværksfejl ved skrivning til master",
"Kan ikke finde en FULLTEXT nøgle som svarer til kolonne listen",
"Kan ikke udføre den givne kommando fordi der findes aktive, låste tabeller eller fordi der udføres en transaktion",
"Ukendt systemvariabel '%-.64'",
"Ukendt systemvariabel '%-.64s'",
"Tabellen '%-.64s' er markeret med fejl og bør repareres",
"Tabellen '%-.64s' er markeret med fejl og sidste (automatiske?) REPAIR fejlede",
"Advarsel: Visse data i tabeller der ikke understøtter transaktioner kunne ikke tilbagestilles",
......
......@@ -200,7 +200,7 @@
"Net fout tijdens schrijven naar master",
"Kan geen FULLTEXT index vinden passend bij de kolom lijst",
"Kan het gegeven commando niet uitvoeren, want u heeft actieve gelockte tabellen of een actieve transactie",
"Onbekende systeem variabele '%-.64'",
"Onbekende systeem variabele '%-.64s'",
"Tabel '%-.64s' staat als gecrashed gemarkeerd en dient te worden gerepareerd",
"Tabel '%-.64s' staat als gecrashed gemarkeerd en de laatste (automatische?) reparatie poging mislukte",
"Waarschuwing: Roll back mislukt voor sommige buiten transacties gewijzigde tabellen",
......
......@@ -194,7 +194,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -198,7 +198,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Tundmatu ssteemne muutja '%-.64'",
"Tundmatu ssteemne muutja '%-.64s'",
"Tabel '%-.64s' on mrgitud vigaseks ja tuleb parandada",
"Tabel '%-.64s' on mrgitud vigaseks ja viimane (automaatne?) parandamiskatse ebannestus",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -194,7 +194,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -197,7 +197,7 @@
"Netzfehler beim Schreiben zum Master",
"Kann keinen FULLTEXT-Index finden der der Spaltenliste entspricht",
"Kann das aktuelle Kommando wegen aktiver Tabellensperre oder aktiver Transaktion nicht ausführen",
"Unbekannte System-Variabel '%-.64'",
"Unbekannte System-Variabel '%-.64s'",
"Tabelle '%-.64s' ist als defekt makiert und sollte repariert werden",
"Tabelle '%-.64s' ist als defekt makiert und der letzte (automatische) Reparaturversuch schlug fehl.",
"Warnung: Das Rollback konnte bei einigen Tabellen, die nicht mittels Transaktionen geändert wurden, nicht ausgeführt werden.",
......
......@@ -194,7 +194,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -196,7 +196,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -194,7 +194,7 @@
"Errore di rete durante l'invio al master",
"Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne",
"Impossibile eseguire il comando richiesto: tabelle sotto lock o transazione in atto",
"Variabile di sistema '%-.64' sconosciuta",
"Variabile di sistema '%-.64s' sconosciuta",
"La tabella '%-.64s' e` segnalata come corrotta e deve essere riparata",
"La tabella '%-.64s' e` segnalata come corrotta e l'ultima ricostruzione (automatica?) e` fallita",
"Attenzione: Alcune delle modifiche alle tabelle non transazionali non possono essere ripristinate (roll back impossibile)",
......
......@@ -196,7 +196,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -194,7 +194,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -196,7 +196,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -196,7 +196,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -198,7 +198,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -194,7 +194,7 @@
"Erro de rede na gravação do 'master'",
"Não pode encontrar índice FULLTEXT que combine com a lista de colunas",
"Não pode executar o comando dado porque você tem tabelas ativas travadas ou uma 'transaction' ativa",
"Variável de sistema '%-.64' desconhecida",
"Variável de sistema '%-.64s' desconhecida",
"Tabela '%-.64s' está marcada como danificada e deve ser reparada",
"Tabela '%-.64s' está marcada como danificada e a última reparação (automática?) falhou",
"Aviso: Algumas tabelas não-transacionais alteradas não puderam ser reconstituídas ('rolled back')",
......
......@@ -198,7 +198,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -197,7 +197,7 @@
" ",
"FULLTEXT , , ",
" - locked ",
" '%-.64'",
" '%-.64s'",
" '%-.64s' ",
" '%-.64s' (?) ",
": ROLLBACK",
......
......@@ -202,7 +202,7 @@
"Net error writing to master",
"Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'",
"Unknown system variable '%-.64s'",
"Table '%-.64s' is marked as crashed and should be repaired",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed",
"Warning: Some non-transactional changed tables couldn't be rolled back",
......
......@@ -195,7 +195,7 @@
"Error de red escribiendo para el master",
"No puedo encontrar índice FULLTEXT correspondiendo a la lista de columnas",
"No puedo ejecutar el comando dado porque tienes tablas bloqueadas o una transición activa",
"Desconocida variable de sistema '%-.64'",
"Desconocida variable de sistema '%-.64s'",
"Tabla '%-.64s' está marcada como crashed y debe ser reparada",
"Tabla '%-.64s' está marcada como crashed y la última reparación (automactica?) falló",
"Aviso: Algunas tablas no transancionales no pueden tener rolled back",
......
......@@ -194,7 +194,7 @@
"Fick nätverksfel vid skrivning till master",
"Hittar inte ett FULLTEXT index i kolumnlistan",
"Kan inte exekvera kommandot emedan du har en låst tabell eller an aktiv transaktion",
"Okänd system variabel '%-.64'",
"Okänd system variabel '%-.64s'",
"Tabell '%-.64s' är crashad och bör repareras med REPAIR TABLE",
"Tabell '%-.64s' är crashad och senast (automatiska?) reparation misslyckades",
"Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK",
......
......@@ -199,7 +199,7 @@
" ",
" FULLTEXT , צצ ̦ æ",
" , դ æ",
"צ ͦ '%-.64'",
"צ ͦ '%-.64s'",
" '%-.64s' ڦ Ҧ צ",
" '%-.64s' ڦ Τ (?) צ ",
": ˦ æΦ ͦ ",
......
......@@ -567,21 +567,30 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
{
packet->length(0);
net_store_data(packet, table->table_name);
// a hack - we need to reserve some space for the length before
// we know what it is - let's assume that the length of create table
// statement will fit into 3 bytes ( 16 MB max :-) )
/*
A hack - we need to reserve some space for the length before
we know what it is - let's assume that the length of create table
statement will fit into 3 bytes ( 16 MB max :-) )
*/
ulong store_len_offset = packet->length();
packet->length(store_len_offset + 4);
if (store_create_info(thd, table, packet))
DBUG_RETURN(-1);
ulong create_len = packet->length() - store_len_offset - 4;
if (create_len > 0x00ffffff) // better readable in HEX ...
DBUG_RETURN(1); // just in case somebody manages to create a table
// with *that* much stuff in the definition
{
/*
Just in case somebody manages to create a table
with *that* much stuff in the definition
*/
DBUG_RETURN(1);
}
// now we have to store the length in three bytes, even if it would fit
// into fewer, so we cannot use net_store_data() anymore,
// and do it ourselves
/*
Now we have to store the length in three bytes, even if it would fit
into fewer bytes, so we cannot use net_store_data() anymore,
and do it ourselves
*/
char* p = (char*)packet->ptr() + store_len_offset;
*p++ = (char) 253; // The client the length is stored using 3-bytes
int3store(p, create_len);
......@@ -1125,7 +1134,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables)
pthread_mutex_lock(&LOCK_status);
for (i=0; variables[i].name; i++)
{
if (!(wild && wild[0] && wild_compare(variables[i].name,wild)))
if (!(wild && wild[0] && wild_case_compare(variables[i].name,wild)))
{
packet2.length(0);
net_store_data(&packet2,variables[i].name);
......
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