Commit 695c71d1 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

Merge sanja.is.com.ua:/home/bell/mysql/bk/work-top3-4.1

into sanja.is.com.ua:/home/bell/mysql/bk/work-simple_in-4.1
parents 7e34954b af41a59a
......@@ -92,7 +92,7 @@ To build the latest Windows source package from the current
BitKeeper source tree, use the following instructions. Please
note that this procedure must be performed on a system
running a Unix or Unix-like operating system. (The procedure
is know to work well on Linux, for example.
is known to work well on Linux, for example.)
- Clone the BitKeeper source tree for MySQL (version 4.1
or above, as desired). For more information how to clone
......
-- require r/have_openssl_2.require
disable_query_log;
SHOW STATUS LIKE "SSL_get_cipher";
SHOW STATUS LIKE "Ssl_cipher";
enable_query_log;
......@@ -203,7 +203,7 @@ a
2
check table t1;
Table Op Msg_type Msg_text
test.t1 check error The storage enginge for the table doesn't support check
test.t1 check error The storage engine for the table doesn't support check
drop table t1;
create table t1 (a int,b varchar(20)) type=bdb;
insert into t1 values (1,""), (2,"testing");
......
drop table if exists t1;
select 0,256,00000000000000065536,2147483647,-2147483648,2147483648,+4294967296;
0 256 00000000000000065536 2147483647 -2147483648 2147483648 +4294967296
0 256 00000000000000065536 2147483647 -2147483648 2147483648 4294967296
0 256 65536 2147483647 -2147483648 2147483648 4294967296
select 9223372036854775807,-009223372036854775808;
9223372036854775807 -009223372036854775808
9223372036854775807 -9223372036854775808
select +9999999999999999999,-9999999999999999999;
+9999999999999999999 -9999999999999999999
9999999999999999999 -9999999999999999999
9999999999999999999 -10000000000000000000
select cast(9223372036854775808 as unsigned)+1;
cast(9223372036854775808 as unsigned)+1
......@@ -14,6 +14,9 @@ cast(9223372036854775808 as unsigned)+1
select 9223372036854775808+1;
9223372036854775808+1
9223372036854775809
select -(0-3),round(-(0-3)), round(9999999999999999999);
-(0-3) round(-(0-3)) round(9999999999999999999)
3 3 10000000000000000000
create table t1 (a bigint unsigned not null, primary key(a));
insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE);
select * from t1;
......
......@@ -10,10 +10,10 @@ CASE "c" when "a" then 1 when "b" then 2 ELSE 3 END
3
select CASE BINARY "b" when "a" then 1 when "B" then 2 WHEN "b" then "ok" END;
CASE BINARY "b" when "a" then 1 when "B" then 2 WHEN "b" then "ok" END
0
ok
select CASE "b" when "a" then 1 when binary "B" then 2 WHEN "b" then "ok" END;
CASE "b" when "a" then 1 when binary "B" then 2 WHEN "b" then "ok" END
0
ok
select CASE concat("a","b") when concat("ab","") then "a" when "b" then "b" end;
CASE concat("a","b") when concat("ab","") then "a" when "b" then "b" end
a
......@@ -72,6 +72,48 @@ yellow
green
drop table t1;
SET NAMES latin1;
CREATE TABLE t1 SELECT
CASE WHEN 1 THEN _latin1'a' COLLATE latin1_danish_ci ELSE _latin1'a' END AS c1,
CASE WHEN 1 THEN _latin1'a' ELSE _latin1'a' COLLATE latin1_danish_ci END AS c2,
CASE WHEN 1 THEN 'a' ELSE 1 END AS c3,
CASE WHEN 1 THEN 1 ELSE 'a' END AS c4,
CASE WHEN 1 THEN 'a' ELSE 1.0 END AS c5,
CASE WHEN 1 THEN 1.0 ELSE 'a' END AS c6,
CASE WHEN 1 THEN 1 ELSE 1.0 END AS c7,
CASE WHEN 1 THEN 1.0 ELSE 1 END AS c8
;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` char(1) character set latin1 collate latin1_danish_ci default NULL,
`c2` char(1) character set latin1 collate latin1_danish_ci default NULL,
`c3` char(1) default NULL,
`c4` char(1) default NULL,
`c5` char(3) default NULL,
`c6` char(3) default NULL,
`c7` double(3,1) default NULL,
`c8` double(3,1) default NULL
) TYPE=MyISAM CHARSET=latin1
DROP TABLE t1;
SELECT CASE
WHEN 1
THEN _latin1'a' COLLATE latin1_danish_ci
ELSE _latin1'a' COLLATE latin1_swedish_ci
END;
ERROR HY000: Illegal mix of collations (latin1_danish_ci,EXPLICIT) and (latin1_swedish_ci,EXPLICIT) for operation 'case'
SELECT CASE _latin1'a' COLLATE latin1_general_ci
WHEN _latin1'a' COLLATE latin1_danish_ci THEN 1
WHEN _latin1'a' COLLATE latin1_swedish_ci THEN 2
END;
ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_danish_ci,EXPLICIT), (latin1_swedish_ci,EXPLICIT) for operation 'case'
SELECT
CASE _latin1'a' COLLATE latin1_general_ci WHEN _latin1'A' THEN '1' ELSE 2 END,
CASE _latin1'a' COLLATE latin1_bin WHEN _latin1'A' THEN '1' ELSE 2 END,
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_swedish_ci THEN '1' ELSE 2 END,
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_bin THEN '1' ELSE 2 END
;
CASE _latin1'a' COLLATE latin1_general_ci WHEN _latin1'A' THEN '1' ELSE 2 END CASE _latin1'a' COLLATE latin1_bin WHEN _latin1'A' THEN '1' ELSE 2 END CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_swedish_ci THEN '1' ELSE 2 END CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_bin THEN '1' ELSE 2 END
1 2 1 2
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'coalesce'
CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
......
......@@ -143,3 +143,24 @@ select * from t1 where 'a' in (a,b,c collate latin1_bin);
a b c
a c c
drop table t1;
select '1.0' in (1,2);
'1.0' in (1,2)
1
select 1 in ('1.0',2);
1 in ('1.0',2)
1
select 1 in (1,'2.0');
1 in (1,'2.0')
1
select 1 in ('1.0',2.0);
1 in ('1.0',2.0)
1
select 1 in (1.0,'2.0');
1 in (1.0,'2.0')
1
select 1 in ('1.1',2);
1 in ('1.1',2)
0
select 1 in ('1.1',2.0);
1 in ('1.1',2.0)
0
Variable_name Value
jkhjkhfs
Ssl_cipher EDH-RSA-DES-CBC3-SHA
......@@ -156,7 +156,7 @@ level id parent_id
1 1007 101
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize error The storage enginge for the table doesn't support optimize
test.t1 optimize error The storage engine for the table doesn't support optimize
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 id A # NULL NULL BTREE
......@@ -180,7 +180,7 @@ create table t1 (a int) type=innodb;
insert into t1 values (1), (2);
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize error The storage enginge for the table doesn't support optimize
test.t1 optimize error The storage engine for the table doesn't support optimize
delete from t1 where a = 1;
select * from t1;
a
......@@ -712,7 +712,7 @@ world 2
hello 1
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize error The storage enginge for the table doesn't support optimize
test.t1 optimize error The storage engine for the table doesn't support optimize
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
......@@ -788,7 +788,7 @@ id id3
UNLOCK TABLES;
DROP TABLE t1;
create table t1 (a char(20), unique (a(5))) type=innodb;
ERROR HY000: Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the store engine doesn't support unique sub keys
ERROR HY000: Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the storage engine doesn't support unique sub keys
create table t1 (a char(20), index (a(5))) type=innodb;
show create table t1;
Table Create Table
......@@ -1289,7 +1289,7 @@ a b
111 100
drop table t1;
CREATE TABLE t1 (col1 int(1))TYPE=InnoDB;
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP(+0),INDEX stamp_idx
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
(stamp))TYPE=InnoDB;
insert into t1 values (1),(2),(3);
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 );
......
......@@ -57,14 +57,14 @@ test.t1 optimize status OK
check table t1,t2;
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check error The storage enginge for the table doesn't support check
test.t2 check error The storage engine for the table doesn't support check
repair table t1,t2;
Table Op Msg_type Msg_text
test.t1 repair status OK
test.t2 repair error The storage enginge for the table doesn't support repair
test.t2 repair error The storage engine for the table doesn't support repair
check table t2,t1;
Table Op Msg_type Msg_text
test.t2 check error The storage enginge for the table doesn't support check
test.t2 check error The storage engine for the table doesn't support check
test.t1 check status OK
lock tables t1 write;
check table t2,t1;
......
......@@ -178,9 +178,9 @@ t3 CREATE TABLE `t3` (
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(`t1`,`t2`)
create table t4 (a int not null, b char(10), key(a)) type=MERGE UNION=(t1,t2);
select * from t4;
ERROR HY000: Can't open file: 't4.MRG'. (errno: 143)
ERROR HY000: Can't open file: 't4.MRG' (errno: 143)
alter table t4 add column c int;
ERROR HY000: Can't open file: 't4.MRG'. (errno: 143)
ERROR HY000: Can't open file: 't4.MRG' (errno: 143)
create database mysqltest;
create table mysqltest.t6 (a int not null primary key auto_increment, message char(20));
create table t5 (a int not null, b char(20), key(a)) type=MERGE UNION=(test.t1,mysqltest.t6);
......
......@@ -7,7 +7,7 @@ select 1 | NULL,1 & NULL,1+NULL,1-NULL;
NULL NULL NULL NULL
select NULL=NULL,NULL<>NULL,IFNULL(NULL,1.1)+0,IFNULL(NULL,1) | 0;
NULL=NULL NULL<>NULL IFNULL(NULL,1.1)+0 IFNULL(NULL,1) | 0
NULL NULL 1 1
NULL NULL 1.1 1
select strcmp("a",NULL),(1<NULL)+0.0,NULL regexp "a",null like "a%","a%" like null;
strcmp("a",NULL) (1<NULL)+0.0 NULL regexp "a" null like "a%" "a%" like null
NULL NULL NULL NULL NULL
......
SHOW STATUS LIKE 'SSL%';
SHOW STATUS LIKE 'Ssl%';
Variable_name Value
Ssl_accepts 1
Ssl_finished_accepts 1
Ssl_finished_connects 0
Ssl_accept_renegotiates 0
Ssl_connect_renegotiates 0
Ssl_callback_cache_hits 0
Ssl_session_cache_hits 0
Ssl_session_cache_misses 0
Ssl_session_cache_timeouts 0
Ssl_used_session_cache_entries 1
Ssl_client_connects 0
Ssl_session_cache_overflows 0
Ssl_session_cache_size 128
Ssl_session_cache_mode SERVER
Ssl_sessions_reused 0
Ssl_ctx_verify_mode 7
Ssl_ctx_verify_depth 4294967295
Ssl_verify_mode 7
Ssl_verify_depth 4294967295
Ssl_version TLSv1
Ssl_cipher EDH-RSA-DES-CBC3-SHA
Ssl_cipher_list
Ssl_default_timeout 7200
......@@ -7,7 +7,7 @@ test.t1 repair status OK
alter table t1 TYPE=HEAP;
repair table t1 use_frm;
Table Op Msg_type Msg_text
test.t1 repair error The storage enginge for the table doesn't support repair
test.t1 repair error The storage engine for the table doesn't support repair
drop table t1;
repair table t1 use_frm;
Table Op Msg_type Msg_text
......
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair error Can't open file: 't1.MYI'. (errno: 130)
test.t1 repair error Can't open file: 't1.MYI' (errno: 130)
repair table t1 use_frm;
Table Op Msg_type Msg_text
test.t1 repair warning Number of rows changed from 0 to 1
......
......@@ -347,7 +347,7 @@ a 1
hello 1
drop table t1;
create table t1 (a text, key (a(300)));
ERROR HY000: Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the store engine doesn't support unique sub keys
ERROR HY000: Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the storage engine doesn't support unique sub keys
create table t1 (a text, key (a(255)));
drop table t1;
CREATE TABLE t1 (
......
......@@ -436,8 +436,8 @@ a
99999999999
drop table t1;
CREATE TABLE t1 (a_dec DECIMAL(-1,0));
ERROR 42000: Too big column length for column 'a_dec' (max = 255). Use BLOB instead
ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-1,0))' at line 1
CREATE TABLE t1 (a_dec DECIMAL(-2,1));
ERROR 42000: Too big column length for column 'a_dec' (max = 255). Use BLOB instead
ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-2,1))' at line 1
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
ERROR 42000: Too big column length for column 'a_dec' (max = 255). Use BLOB instead
ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-1,1))' at line 1
......@@ -90,6 +90,12 @@ Warning 1263 Data truncated for column 'b' at row 2
Warning 1263 Data truncated for column 'b' at row 3
Warning 1261 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
Warning 1263 Data truncated for column 'b' at row 4
insert into t2(b) values('mysqlab');
set sql_warnings=1;
insert into t2(b) values('mysqlab');
Warnings:
Warning 1263 Data truncated for column 'b' at row 1
set sql_warnings=0;
drop table t1, t2;
create table t1(a char(10));
alter table t1 add b char;
......
......@@ -13,6 +13,8 @@ select 9223372036854775807,-009223372036854775808;
select +9999999999999999999,-9999999999999999999;
select cast(9223372036854775808 as unsigned)+1;
select 9223372036854775808+1;
select -(0-3),round(-(0-3)), round(9999999999999999999);
#
# In 3.23 we have to disable the test of column to bigint as
# this fails on AIX powerpc (the resolution for double is not good enough)
......
......@@ -42,6 +42,44 @@ insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium')
select max(case col when 1 then val else null end) as color from t1 group by row;
drop table t1;
SET NAMES latin1;
#
# CASE and argument types/collations aggregation into result
#
CREATE TABLE t1 SELECT
CASE WHEN 1 THEN _latin1'a' COLLATE latin1_danish_ci ELSE _latin1'a' END AS c1,
CASE WHEN 1 THEN _latin1'a' ELSE _latin1'a' COLLATE latin1_danish_ci END AS c2,
CASE WHEN 1 THEN 'a' ELSE 1 END AS c3,
CASE WHEN 1 THEN 1 ELSE 'a' END AS c4,
CASE WHEN 1 THEN 'a' ELSE 1.0 END AS c5,
CASE WHEN 1 THEN 1.0 ELSE 'a' END AS c6,
CASE WHEN 1 THEN 1 ELSE 1.0 END AS c7,
CASE WHEN 1 THEN 1.0 ELSE 1 END AS c8
;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--error 1265
SELECT CASE
WHEN 1
THEN _latin1'a' COLLATE latin1_danish_ci
ELSE _latin1'a' COLLATE latin1_swedish_ci
END;
--error 1268
SELECT CASE _latin1'a' COLLATE latin1_general_ci
WHEN _latin1'a' COLLATE latin1_danish_ci THEN 1
WHEN _latin1'a' COLLATE latin1_swedish_ci THEN 2
END;
SELECT
CASE _latin1'a' COLLATE latin1_general_ci WHEN _latin1'A' THEN '1' ELSE 2 END,
CASE _latin1'a' COLLATE latin1_bin WHEN _latin1'A' THEN '1' ELSE 2 END,
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_swedish_ci THEN '1' ELSE 2 END,
CASE _latin1'a' WHEN _latin1'A' COLLATE latin1_bin THEN '1' ELSE 2 END
;
#
# COALESCE is a CASE abbrevation:
#
......@@ -52,7 +90,6 @@ drop table t1;
#
# Check COALESCE argument types aggregation
SET NAMES latin1;
--error 1265
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
--error 1265
......
......@@ -73,3 +73,11 @@ select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
select * from t1 where 'a' collate latin1_bin in (a,b,c);
select * from t1 where 'a' in (a,b,c collate latin1_bin);
drop table t1;
select '1.0' in (1,2);
select 1 in ('1.0',2);
select 1 in (1,'2.0');
select 1 in ('1.0',2.0);
select 1 in (1.0,'2.0');
select 1 in ('1.1',2);
select 1 in ('1.1',2.0);
......@@ -868,7 +868,7 @@ drop table t1;
CREATE TABLE t1 (col1 int(1))TYPE=InnoDB;
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP(+0),INDEX stamp_idx
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
(stamp))TYPE=InnoDB;
insert into t1 values (1),(2),(3);
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 );
......
# We want to test everything with SSL turned on.
-- source include/have_openssl_2.inc
SHOW STATUS LIKE 'SSL%';
SHOW STATUS LIKE 'Ssl%';
......@@ -237,9 +237,9 @@ drop table t1;
# Test of wrong decimal type
#
--error 1074
--error 1064
CREATE TABLE t1 (a_dec DECIMAL(-1,0));
--error 1074
--error 1064
CREATE TABLE t1 (a_dec DECIMAL(-2,1));
--error 1074
--error 1064
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
......@@ -51,6 +51,10 @@ update t1 set c='mysql ab' where c='test';
update t1 set d=c;
create table t2(a tinyint NOT NULL, b char(3));
insert into t2 select b,c from t1;
insert into t2(b) values('mysqlab');
set sql_warnings=1;
insert into t2(b) values('mysqlab');
set sql_warnings=0;
drop table t1, t2;
#
......
......@@ -82,7 +82,6 @@ static void init_state_maps(CHARSET_INFO *cs)
}
state_map[(uchar)'_']=state_map[(uchar)'$']=(uchar) MY_LEX_IDENT;
state_map[(uchar)'\'']=(uchar) MY_LEX_STRING;
state_map[(uchar)'-']=state_map[(uchar)'+']=(uchar) MY_LEX_SIGNED_NUMBER;
state_map[(uchar)'.']=(uchar) MY_LEX_REAL_OR_POINT;
state_map[(uchar)'>']=state_map[(uchar)'=']=state_map[(uchar)'!']= (uchar) MY_LEX_CMP_OP;
state_map[(uchar)'<']= (uchar) MY_LEX_LONG_CMP_OP;
......
......@@ -191,7 +191,7 @@ then
echo "Installing all prepared tables"
fi
if (
$pkgdatadir/mysql_create_system_tables $create_option $mdata $hostname $windows
$bindir/mysql_create_system_tables $create_option $mdata $hostname $windows
if test -n "$fill_help_tables"
then
cat $fill_help_tables
......
......@@ -89,6 +89,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
struct hash_lex_struct
......
......@@ -382,7 +382,7 @@ class Item_uint :public Item_int
Item_uint(const char *str_arg, uint length) :
Item_int(str_arg, (longlong) strtoull(str_arg,(char**) 0,10), length) {}
Item_uint(uint32 i) :Item_int((longlong) i, 10) {}
double val() { return ulonglong2double(value); }
double val() { return ulonglong2double((ulonglong)value); }
String *val_str(String*);
Item *new_item() { return new Item_uint(name,max_length); }
bool fix_fields(THD *thd, struct st_table_list *list, Item **item)
......
......@@ -24,6 +24,32 @@
#include "mysql_priv.h"
#include <m_ctype.h>
static Item_result item_store_type(Item_result a,Item_result b)
{
if (a == STRING_RESULT || b == STRING_RESULT)
return STRING_RESULT;
else if (a == REAL_RESULT || b == REAL_RESULT)
return REAL_RESULT;
else
return INT_RESULT;
}
static void agg_result_type(Item_result *type, Item **items, uint nitems)
{
uint i;
type[0]= items[0]->result_type();
for (i=1 ; i < nitems ; i++)
type[0]= item_store_type(type[0], items[i]->result_type());
}
static void agg_cmp_type(Item_result *type, Item **items, uint nitems)
{
uint i;
type[0]= items[0]->result_type();
for (i=1 ; i < nitems ; i++)
type[0]= item_cmp_type(type[0], items[i]->result_type());
}
static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname)
{
my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0),
......@@ -561,10 +587,7 @@ void Item_func_between::fix_length_and_dec()
*/
if (!args[0] || !args[1] || !args[2])
return;
cmp_type=item_cmp_type(args[0]->result_type(),
item_cmp_type(args[1]->result_type(),
args[2]->result_type()));
agg_cmp_type(&cmp_type, args, 3);
if (cmp_type == STRING_RESULT &&
agg_arg_collations_for_comparison(cmp_collation, args, 3))
return;
......@@ -655,28 +678,17 @@ longlong Item_func_between::val_int()
return 0;
}
static Item_result item_store_type(Item_result a,Item_result b)
{
if (a == STRING_RESULT || b == STRING_RESULT)
return STRING_RESULT;
else if (a == REAL_RESULT || b == REAL_RESULT)
return REAL_RESULT;
else
return INT_RESULT;
}
void
Item_func_ifnull::fix_length_and_dec()
{
maybe_null=args[1]->maybe_null;
max_length=max(args[0]->max_length,args[1]->max_length);
decimals=max(args[0]->decimals,args[1]->decimals);
if ((cached_result_type=item_store_type(args[0]->result_type(),
args[1]->result_type())) !=
REAL_RESULT)
decimals= 0;
agg_result_type(&cached_result_type, args, 2);
if (cached_result_type == STRING_RESULT)
agg_arg_collations(collation, args, arg_count);
else if (cached_result_type != REAL_RESULT)
decimals= 0;
}
......@@ -749,19 +761,18 @@ Item_func_if::fix_length_and_dec()
cached_result_type= arg1_type;
set_charset(args[1]->charset());
}
else if (arg1_type == STRING_RESULT || arg2_type == STRING_RESULT)
else
{
agg_result_type(&cached_result_type, args+1, 2);
if (cached_result_type == STRING_RESULT)
{
cached_result_type = STRING_RESULT;
if (agg_arg_collations(collation, args+1, 2))
return;
}
else
{
set_charset(&my_charset_bin); // Number
if (arg1_type == REAL_RESULT || arg2_type == REAL_RESULT)
cached_result_type = REAL_RESULT;
else
cached_result_type=arg1_type; // Should be INT_RESULT
}
}
}
......@@ -805,7 +816,7 @@ Item_func_nullif::fix_length_and_dec()
{
max_length=args[0]->max_length;
decimals=args[0]->decimals;
cached_result_type=args[0]->result_type();
agg_result_type(&cached_result_type, args, 2);
}
}
......@@ -868,64 +879,60 @@ Item *Item_func_case::find_item(String *str)
String *first_expr_str,*tmp;
longlong first_expr_int;
double first_expr_real;
bool int_used, real_used,str_used;
int_used=real_used=str_used=0;
/* These will be initialized later */
LINT_INIT(first_expr_str);
LINT_INIT(first_expr_int);
LINT_INIT(first_expr_real);
// Compare every WHEN argument with it and return the first match
for (uint i=0 ; i < arg_count ; i+=2)
if (first_expr_num != -1)
{
if (!first_expr)
switch (cmp_type)
{
// No expression between CASE and first WHEN
if (args[i]->val_int())
return args[i+1];
continue;
}
switch (args[i]->result_type()) {
case STRING_RESULT:
if (!str_used)
{
str_used=1;
// We can't use 'str' here as this may be overwritten
if (!(first_expr_str= first_expr->val_str(&str_value)))
return else_expr; // Impossible
if (!(first_expr_str= args[first_expr_num]->val_str(&str_value)))
return else_expr_num != -1 ? args[else_expr_num] : 0; // Impossible
break;
case INT_RESULT:
first_expr_int= args[first_expr_num]->val_int();
if (args[first_expr_num]->null_value)
return else_expr_num != -1 ? args[else_expr_num] : 0;
break;
case REAL_RESULT:
first_expr_real= args[first_expr_num]->val();
if (args[first_expr_num]->null_value)
return else_expr_num != -1 ? args[else_expr_num] : 0;
break;
case ROW_RESULT:
default:
// This case should never be choosen
DBUG_ASSERT(0);
break;
}
if ((tmp=args[i]->val_str(str))) // If not null
}
// Compare every WHEN argument with it and return the first match
for (uint i=0 ; i < ncases ; i+=2)
{
/* QQ: COERCIBILITY */
if (first_expr_is_binary || (args[i]->charset()->state & MY_CS_BINSORT))
if (first_expr_num == -1)
{
if (sortcmp(tmp,first_expr_str,&my_charset_bin)==0)
// No expression between CASE and the first WHEN
if (args[i]->val_int())
return args[i+1];
continue;
}
else if (sortcmp(tmp,first_expr_str,tmp->charset())==0)
switch (cmp_type) {
case STRING_RESULT:
if ((tmp=args[i]->val_str(str))) // If not null
if (sortcmp(tmp,first_expr_str,cmp_collation.collation)==0)
return args[i+1];
}
break;
case INT_RESULT:
if (!int_used)
{
int_used=1;
first_expr_int= first_expr->val_int();
if (first_expr->null_value)
return else_expr;
}
if (args[i]->val_int()==first_expr_int && !args[i]->null_value)
return args[i+1];
break;
case REAL_RESULT:
if (!real_used)
{
real_used=1;
first_expr_real= first_expr->val();
if (first_expr->null_value)
return else_expr;
}
if (args[i]->val()==first_expr_real && !args[i]->null_value)
return args[i+1];
break;
......@@ -937,7 +944,7 @@ Item *Item_func_case::find_item(String *str)
}
}
// No, WHEN clauses all missed, return ELSE expression
return else_expr;
return else_expr_num != -1 ? args[else_expr_num] : 0;
}
......@@ -993,104 +1000,57 @@ double Item_func_case::val()
return res;
}
bool
Item_func_case::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
void Item_func_case::fix_length_and_dec()
{
if (first_expr && (first_expr->fix_fields(thd, tables, &first_expr) ||
first_expr->check_cols(1)) ||
else_expr && (else_expr->fix_fields(thd, tables, &else_expr) ||
else_expr->check_cols(1)))
return 1;
if (Item_func::fix_fields(thd, tables, ref))
return 1;
if (first_expr)
{
used_tables_cache|=(first_expr)->used_tables();
const_item_cache&= (first_expr)->const_item();
with_sum_func= with_sum_func || (first_expr)->with_sum_func;
first_expr_is_binary= first_expr->charset()->state & MY_CS_BINSORT;
}
if (else_expr)
{
used_tables_cache|=(else_expr)->used_tables();
const_item_cache&= (else_expr)->const_item();
with_sum_func= with_sum_func || (else_expr)->with_sum_func;
}
if (!else_expr || else_expr->maybe_null)
maybe_null=1; // The result may be NULL
return 0;
}
Item **agg;
uint nagg;
if (!(agg= (Item**) sql_alloc(sizeof(Item*)*(ncases+1))))
return;
// Aggregate all THEN and ELSE expression types
// and collations when string result
void Item_func_case::split_sum_func(Item **ref_pointer_array,
List<Item> &fields)
{
if (first_expr)
{
if (first_expr->with_sum_func && first_expr->type() != SUM_FUNC_ITEM)
first_expr->split_sum_func(ref_pointer_array, fields);
else if (first_expr->used_tables() || first_expr->type() == SUM_FUNC_ITEM)
{
uint el= fields.elements;
fields.push_front(first_expr);
ref_pointer_array[el]= first_expr;
first_expr= new Item_ref(ref_pointer_array + el, 0, first_expr->name);
}
}
if (else_expr)
{
if (else_expr->with_sum_func && else_expr->type() != SUM_FUNC_ITEM)
else_expr->split_sum_func(ref_pointer_array, fields);
else if (else_expr->used_tables() || else_expr->type() == SUM_FUNC_ITEM)
{
uint el= fields.elements;
fields.push_front(else_expr);
ref_pointer_array[el]= else_expr;
else_expr= new Item_ref(ref_pointer_array + el, 0, else_expr->name);
}
}
Item_func::split_sum_func(ref_pointer_array, fields);
}
for (nagg= 0 ; nagg < ncases/2 ; nagg++)
agg[nagg]= args[nagg*2+1];
if (else_expr_num != -1)
agg[nagg++]= args[else_expr_num];
bool Item_func_case::walk (Item_processor processor, byte *arg)
{
return first_expr->walk(processor, arg) ||
else_expr->walk(processor, arg) ||
Item_func::walk(processor, arg);
}
agg_result_type(&cached_result_type, agg, nagg);
if ((cached_result_type == STRING_RESULT) &&
agg_arg_collations(collation, agg, nagg))
return;
void Item_func_case::update_used_tables()
{
Item_func::update_used_tables();
if (first_expr)
{
used_tables_cache|=(first_expr)->used_tables();
const_item_cache&= (first_expr)->const_item();
}
if (else_expr)
// Aggregate first expression and all THEN expression types
// and collations when string comparison
if (first_expr_num != -1)
{
used_tables_cache|=(else_expr)->used_tables();
const_item_cache&= (else_expr)->const_item();
agg[0]= args[first_expr_num];
for (nagg= 0; nagg < ncases/2 ; nagg++)
agg[nagg+1]= args[nagg*2];
nagg++;
agg_cmp_type(&cmp_type, agg, nagg);
if ((cmp_type == STRING_RESULT) &&
agg_arg_collations_for_comparison(cmp_collation, agg, nagg))
return;
}
}
if (!else_expr_num != -1 || args[else_expr_num]->maybe_null)
maybe_null=1;
void Item_func_case::fix_length_and_dec()
{
max_length=0;
decimals=0;
cached_result_type = args[1]->result_type();
for (uint i=0 ; i < arg_count ; i+=2)
for (uint i=0 ; i < ncases ; i+=2)
{
set_if_bigger(max_length,args[i+1]->max_length);
set_if_bigger(decimals,args[i+1]->decimals);
}
if (else_expr != NULL)
if (else_expr_num != -1)
{
set_if_bigger(max_length,else_expr->max_length);
set_if_bigger(decimals,else_expr->decimals);
set_if_bigger(max_length,args[else_expr_num]->max_length);
set_if_bigger(decimals,args[else_expr_num]->decimals);
}
}
......@@ -1149,13 +1109,11 @@ void Item_func_coalesce::fix_length_and_dec()
{
max_length= 0;
decimals= 0;
cached_result_type = args[0]->result_type();
agg_result_type(&cached_result_type, args, arg_count);
for (uint i=0 ; i < arg_count ; i++)
{
set_if_bigger(max_length,args[i]->max_length);
set_if_bigger(decimals,args[i]->decimals);
cached_result_type=item_store_type(cached_result_type,
args[i]->result_type());
}
if (cached_result_type == STRING_RESULT)
agg_arg_collations(collation, args, arg_count);
......@@ -1445,7 +1403,8 @@ void Item_func_in::fix_length_and_dec()
Item **arg, **arg_end;
uint const_itm= 1;
if ((args[0]->result_type() == STRING_RESULT) &&
agg_cmp_type(&cmp_type, args, arg_count);
if ((cmp_type == STRING_RESULT) &&
(agg_arg_collations_for_comparison(cmp_collation, args, arg_count)))
return;
......@@ -1458,7 +1417,7 @@ void Item_func_in::fix_length_and_dec()
*/
if (const_itm && !nulls_in_row())
{
switch (args[0]->result_type()) {
switch (cmp_type) {
case STRING_RESULT:
uint i;
array=new in_string(arg_count-1,(qsort2_cmp) srtcmp_in,
......@@ -1492,7 +1451,7 @@ void Item_func_in::fix_length_and_dec()
else
{
in_item= cmp_item::get_comparator(args[0]);
if (args[0]->result_type() == STRING_RESULT)
if (cmp_type == STRING_RESULT)
in_item->cmp_charset= cmp_collation.collation;
}
maybe_null= args[0]->maybe_null;
......
......@@ -347,28 +347,38 @@ class Item_func_coalesce :public Item_func
class Item_func_case :public Item_func
{
Item * first_expr, *else_expr;
int first_expr_num, else_expr_num;
enum Item_result cached_result_type;
String tmp_value;
bool first_expr_is_binary;
uint ncases;
Item_result cmp_type;
DTCollation cmp_collation;
public:
Item_func_case(List<Item> &list, Item *first_expr_arg, Item *else_expr_arg)
:Item_func(list), first_expr(first_expr_arg), else_expr(else_expr_arg),
:Item_func(), first_expr_num(-1), else_expr_num(-1),
cached_result_type(INT_RESULT)
{}
{
ncases= list.elements;
if (first_expr_arg)
{
first_expr_num= list.elements;
list.push_back(first_expr_arg);
}
if (else_expr_arg)
{
else_expr_num= list.elements;
list.push_back(else_expr_arg);
}
set_arguments(list);
}
double val();
longlong val_int();
String *val_str(String *);
void fix_length_and_dec();
void update_used_tables();
enum Item_result result_type () const { return cached_result_type; }
const char *func_name() const { return "case"; }
void print(String *str);
bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref);
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
Item *find_item(String *str);
bool walk(Item_processor processor, byte *args);
};
......@@ -600,6 +610,7 @@ class cmp_item_sort_string_in_static :public cmp_item_string
class Item_func_in :public Item_int_func
{
Item_result cmp_type;
in_vector *array;
cmp_item *in_item;
bool have_null;
......
......@@ -470,7 +470,7 @@ Item *create_load_file(Item* a)
}
Item *create_func_cast(Item *a, Item_cast cast_type, CHARSET_INFO *cs)
Item *create_func_cast(Item *a, Cast_target cast_type, CHARSET_INFO *cs)
{
Item *res;
LINT_INIT(res);
......
......@@ -28,7 +28,7 @@ Item *create_func_bit_length(Item* a);
Item *create_func_coercibility(Item* a);
Item *create_func_ceiling(Item* a);
Item *create_func_char_length(Item* a);
Item *create_func_cast(Item *a, Item_cast cast_type, CHARSET_INFO *cs);
Item *create_func_cast(Item *a, Cast_target cast_type, CHARSET_INFO *cs);
Item *create_func_connection_id(void);
Item *create_func_conv(Item* a, Item *b, Item *c);
Item *create_func_cos(Item* a);
......
......@@ -102,10 +102,9 @@ eval_const_cond(COND *cond)
return ((Item_func*) cond)->val_int() ? TRUE : FALSE;
}
Item_func::Item_func(List<Item> &list)
:allowed_arg_cols(1)
void Item_func::set_arguments(List<Item> &list)
{
allowed_arg_cols= 1;
arg_count=list.elements;
if ((args=(Item**) sql_alloc(sizeof(Item*)*arg_count)))
{
......@@ -122,6 +121,12 @@ Item_func::Item_func(List<Item> &list)
list.empty(); // Fields are used
}
Item_func::Item_func(List<Item> &list)
:allowed_arg_cols(1)
{
set_arguments(list);
}
/*
Resolve references to table column for a function and it's argument
......@@ -596,7 +601,8 @@ void Item_func_neg::fix_length_and_dec()
{
decimals=args[0]->decimals;
max_length=args[0]->max_length;
hybrid_type= args[0]->result_type() == INT_RESULT ? INT_RESULT : REAL_RESULT;
hybrid_type= args[0]->result_type() == INT_RESULT && !args[0]->unsigned_flag ?
INT_RESULT : REAL_RESULT;
}
double Item_func_abs::val()
......
......@@ -115,6 +115,7 @@ class Item_func :public Item_result_field
virtual const char *func_name() const { return "?"; }
virtual bool const_item() const { return const_item_cache; }
inline Item **arguments() const { return args; }
void set_arguments(List<Item> &list);
inline uint argument_count() const { return arg_count; }
inline void remove_arguments() { arg_count=0; }
virtual void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
......@@ -1067,7 +1068,7 @@ class Item_func_is_used_lock :public Item_int_func
/* For type casts */
enum Item_cast
enum Cast_target
{
ITEM_CAST_BINARY, ITEM_CAST_SIGNED_INT, ITEM_CAST_UNSIGNED_INT,
ITEM_CAST_DATE, ITEM_CAST_TIME, ITEM_CAST_DATETIME, ITEM_CAST_CHAR
......
......@@ -225,6 +225,12 @@ const char *localhost= "localhost", *delayed_user= "DELAYED";
#endif
bool opt_large_files= sizeof(my_off_t) > 4;
/*
Used with --help for detailed option
*/
bool opt_verbose= 0;
arg_cmp_func Arg_comparator::comparator_matrix[4][2] =
{{&Arg_comparator::compare_string, &Arg_comparator::compare_e_string},
{&Arg_comparator::compare_real, &Arg_comparator::compare_e_real},
......@@ -3638,6 +3644,9 @@ Disable with --skip-bdb (will save memory).",
#endif /* End HAVE_INNOBASE_DB */
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
0, 0, 0, 0, 0},
{"verbose", 'v', "Used with --help option for detailed help",
(gptr*) &opt_verbose, (gptr*) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"init-file", OPT_INIT_FILE, "Read SQL commands from this file at startup.",
(gptr*) &opt_init_file, (gptr*) &opt_init_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
......@@ -3973,8 +3982,6 @@ replicating a LOAD DATA INFILE command.",
0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'v', "Synonym for option -V.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0,
0, 0, 0, 0},
{"log-warnings", 'W', "Log some not critical warnings to the log file.",
(gptr*) &global_system_variables.log_warnings,
(gptr*) &max_system_variables.log_warnings, 0, GET_BOOL, NO_ARG, 0, 0, 0,
......@@ -4573,6 +4580,10 @@ and you are welcome to modify and redistribute it under the GPL license\n\
Starts the MySQL server\n");
printf("Usage: %s [OPTIONS]\n", my_progname);
if (!opt_verbose)
puts("\nFor more help options (several pages), use mysqld --verbose --help\n");
else
{
#ifdef __WIN__
puts("NT and Win32 specific options:\n\
--install Install the default service (NT)\n\
......@@ -4596,7 +4607,8 @@ Starts the MySQL server\n");
puts("\n\
To see what values a running MySQL server is using, type\n\
'mysqladmin variables' instead of 'mysqld --help'.");
'mysqladmin variables' instead of 'mysqld --verbose --help'.\n");
}
}
......@@ -4871,6 +4883,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
#endif
#include <sslopt-case.h>
case 'v':
usage();
exit(0);
case 'V':
print_version();
exit(0);
......
......@@ -44,8 +44,8 @@ v/*
"Obsluha tabulky '%-.64s' nem-B tento parametr",
"Nemohu naj-Bt zznam v '%-.64s'",
"Nespr-Bvn informace v souboru '%-.64s'",
"Nespr-Bvn kl pro tabulku '%-.64s'. Pokuste se ho opravit",
"Star-B klov soubor pro '%-.64s'. Opravte ho.",
"Nespr-Bvn kl pro tabulku '%-.64s'; pokuste se ho opravit",
"Star-B klov soubor pro '%-.64s'; opravte ho.",
"'%-.64s' je jen pro -Bten",
"M-Blo pamti. Pestartujte daemona a zkuste znovu (je poteba %d byt)",
"M-Blo pamti pro tdn. Zvyte velikost tdcho bufferu",
......
......@@ -13,19 +13,19 @@
"Kan ikke oprette databasen '%-.64s' (Fejlkode: %d)",
"Kan ikke oprette databasen '%-.64s'; databasen eksisterer",
"Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke",
"Fejl ved sletning (drop) af databasen (kan ikke slette '%-.64s', Fejl %d)",
"Fejl ved sletting af database (kan ikke slette folderen '%-.64s', Fejl %d)",
"Fejl ved sletning (drop) af databasen (kan ikke slette '%-.64s', Fejlkode %d)",
"Fejl ved sletting af database (kan ikke slette folderen '%-.64s', Fejlkode %d)",
"Fejl ved sletning af '%-.64s' (Fejlkode: %d)",
"Kan ikke læse posten i systemfolderen",
"Kan ikke læse status af '%-.64s' (Fejlkode: %d)",
"Kan ikke læse aktive folder (Fejlkode: %d)",
"Kan ikke låse fil (Fejlkode: %d)",
"Kan ikke åbne fil: '%-.64s'. (Fejlkode: %d)",
"Kan ikke åbne fil: '%-.64s' (Fejlkode: %d)",
"Kan ikke finde fila: '%-.64s' (Fejlkode: %d)",
"Kan ikke læse folder '%-.64s' (Fejlkode: %d)",
"Kan ikke skifte folder til '%-.64s' (Fejlkode: %d)",
"Posten er ændret siden sidste læsning '%-.64s'",
"Ikke mere diskplads (%s). Venter på at få frigjort plads....",
"Ikke mere diskplads (%s). Venter på at få frigjort plads...",
"Kan ikke skrive, flere ens nøgler i tabellen '%-.64s'",
"Fejl ved lukning af '%-.64s' (Fejlkode: %d)",
"Fejl ved læsning af '%-.64s' (Fejlkode: %d)",
......@@ -38,8 +38,8 @@
"Denne mulighed eksisterer ikke for tabeltypen '%-.64s'",
"Kan ikke finde posten i '%-.64s'",
"Forkert indhold i: '%-.64s'",
"Fejl i indeksfilen til tabellen '%-.64s', prøv at reparere den",
"Gammel indeksfil for tabellen '%-.64s'; Reparer den",
"Fejl i indeksfilen til tabellen '%-.64s'; prøv at reparere den",
"Gammel indeksfil for tabellen '%-.64s'; reparer den",
"'%-.64s' er skrivebeskyttet",
"Ikke mere hukommelse. Genstart serveren og prøv igen (mangler %d bytes)",
"Ikke mere sorteringshukommelse. Øg sorteringshukommelse (sort buffer size) for serveren",
......
......@@ -28,8 +28,8 @@
"Kan de status niet krijgen van '%-.64s' (Errcode: %d)",
"Kan de werkdirectory niet krijgen (Errcode: %d)",
"Kan de file niet blokeren (Errcode: %d)",
"Kan de file '%-.64s' niet openen. (Errcode: %d)",
"Kan de file: '%-.64s' niet vinden. (Errcode: %d)",
"Kan de file '%-.64s' niet openen (Errcode: %d)",
"Kan de file: '%-.64s' niet vinden (Errcode: %d)",
"Kan de directory niet lezen van '%-.64s' (Errcode: %d)",
"Kan de directory niet veranderen naar '%-.64s' (Errcode: %d)",
"Record is veranderd sinds de laatste lees activiteit in de tabel '%-.64s'",
......@@ -46,8 +46,8 @@
"Tabel handler voor '%-.64s' heeft deze optie niet",
"Kan record niet vinden in '%-.64s'",
"Verkeerde info in file: '%-.64s'",
"Verkeerde zoeksleutel file voor tabel: '%-.64s'. Probeer het te repareren",
"Oude zoeksleutel file voor tabel '%-.64s'; Repareer het!",
"Verkeerde zoeksleutel file voor tabel: '%-.64s'; probeer het te repareren",
"Oude zoeksleutel file voor tabel '%-.64s'; repareer het!",
"'%-.64s' is alleen leesbaar",
"Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)",
"Geen geheugen om te sorteren. Verhoog de server sort buffer size",
......
......@@ -17,12 +17,12 @@
"Can't get status of '%-.64s' (errno: %d)",
"Can't get working directory (errno: %d)",
"Can't lock file (errno: %d)",
"Can't open file: '%-.64s'. (errno: %d)",
"Can't open file: '%-.64s' (errno: %d)",
"Can't find file: '%-.64s' (errno: %d)",
"Can't read dir of '%-.64s' (errno: %d)",
"Can't change dir to '%-.64s' (errno: %d)",
"Record has changed since last read in table '%-.64s'",
"Disk full (%s). Waiting for someone to free some space....",
"Disk full (%s). Waiting for someone to free some space...",
"Can't write, duplicate key in table '%-.64s'",
"Error on close of '%-.64s' (errno: %d)",
"Error reading file '%-.64s' (errno: %d)",
......@@ -35,8 +35,8 @@
"Table storage engine for '%-.64s' doesn't have this option",
"Can't find record in '%-.64s'",
"Incorrect information in file: '%-.64s'",
"Incorrect key file for table: '%-.64s'. Try to repair it",
"Old key file for table '%-.64s'; Repair it!",
"Incorrect key file for table: '%-.64s'; try to repair it",
"Old key file for table '%-.64s'; repair it!",
"Table '%-.64s' is read only",
"Out of memory. Restart daemon and try again (needed %d bytes)",
"Out of sort memory. Increase daemon sort buffer size",
......@@ -85,12 +85,12 @@
"Can't create IP socket",
"Table '%-.64s' has no index like the one used in CREATE INDEX. Recreate the table",
"Field separator argument is not what is expected. Check the manual",
"You can't use fixed rowlength with BLOBs. Please use 'fields terminated by'.",
"You can't use fixed rowlength with BLOBs. Please use 'fields terminated by'",
"The file '%-.64s' must be in the database directory or be readable by all",
"File '%-.80s' already exists",
"Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld",
"Records: %ld Duplicates: %ld",
"Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the store engine doesn't support unique sub keys",
"Incorrect sub part key. The used key part isn't a string, the used length is longer than the key part or the storage engine doesn't support unique sub keys",
"You can't delete all columns with ALTER TABLE. Use DROP TABLE instead",
"Can't DROP '%-.64s'. Check that column/key exists",
"Records: %ld Duplicates: %ld Warnings: %ld",
......@@ -145,7 +145,7 @@
"There is no such grant defined for user '%-.32s' on host '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for table '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for column '%-.64s' in table '%-.64s'",
"Illegal GRANT/REVOKE command. Please consult the manual which privileges can be used.",
"Illegal GRANT/REVOKE command. Please consult the manual which privileges can be used",
"The host or user argument to GRANT is too long",
"Table '%-.64s.%-.64s' doesn't exist",
"There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'",
......@@ -179,14 +179,14 @@
"You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column",
"Key '%-.64s' doesn't exist in table '%-.64s'",
"Can't open table",
"The storage enginge for the table doesn't support %s",
"The storage engine for the table doesn't support %s",
"You are not allowed to execute this command in a transaction",
"Got error %d during COMMIT",
"Got error %d during ROLLBACK",
"Got error %d during FLUSH_LOGS",
"Got error %d during CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)",
"The store engine for the table does not support binary table dump",
"The storage engine for the table does not support binary table dump",
"Binlog closed, cannot RESET MASTER",
"Failed rebuilding the index of dumped table '%-.64s'",
"Error from master: '%-.64s'",
......
......@@ -22,7 +22,7 @@
"Ei suuda lugeda '%-.64s' olekut (veakood: %d)",
"Ei suuda identifitseerida jooksvat kataloogi (veakood: %d)",
"Ei suuda lukustada faili (veakood: %d)",
"Ei suuda avada faili '%-.64s'. (veakood: %d)",
"Ei suuda avada faili '%-.64s' (veakood: %d)",
"Ei suuda leida faili '%-.64s' (veakood: %d)",
"Ei suuda lugeda kataloogi '%-.64s' (veakood: %d)",
"Ei suuda siseneda kataloogi '%-.64s' (veakood: %d)",
......@@ -40,8 +40,8 @@
"Tabeli '%-.64s' handler ei toeta antud operatsiooni",
"Ei suuda leida kirjet '%-.64s'-s",
"Vigane informatsioon failis '%-.64s'",
"Tabeli '%-.64s' vtmefail on vigane; Proovi seda parandada",
"Tabeli '%-.64s' vtmefail on aegunud; Paranda see!",
"Tabeli '%-.64s' vtmefail on vigane; proovi seda parandada",
"Tabeli '%-.64s' vtmefail on aegunud; paranda see!",
"Tabel '%-.64s' on ainult lugemiseks",
"Mlu sai otsa. Proovi MySQL uuesti kivitada (puudu ji %d baiti)",
"Mlu sai sorteerimisel otsa. Suurenda MySQL-i sorteerimispuhvrit",
......
......@@ -17,7 +17,7 @@
"Ne peut obtenir le status de '%-.64s' (Errcode: %d)",
"Ne peut obtenir le répertoire de travail (Errcode: %d)",
"Ne peut verrouiller le fichier (Errcode: %d)",
"Ne peut ouvrir le fichier: '%-.64s'. (Errcode: %d)",
"Ne peut ouvrir le fichier: '%-.64s' (Errcode: %d)",
"Ne peut trouver le fichier: '%-.64s' (Errcode: %d)",
"Ne peut lire le répertoire de '%-.64s' (Errcode: %d)",
"Ne peut changer le répertoire pour '%-.64s' (Errcode: %d)",
......@@ -35,8 +35,8 @@
"Le handler de la table '%-.64s' n'a pas cette option",
"Ne peut trouver l'enregistrement dans '%-.64s'",
"Information erronnée dans le fichier: '%-.64s'",
"Index corrompu dans la table: '%-.64s'. Essayez de le réparer",
"Vieux fichier d'index pour la table '%-.64s'; Réparez le!",
"Index corrompu dans la table: '%-.64s'; essayez de le réparer",
"Vieux fichier d'index pour la table '%-.64s'; réparez le!",
"'%-.64s' est en lecture seulement",
"Manque de mémoire. Redémarrez le démon et ré-essayez (%d octets nécessaires)",
"Manque de mémoire pour le tri. Augmentez-la.",
......
......@@ -26,27 +26,27 @@
"Kann Status von '%-.64s' nicht ermitteln. (Fehler: %d)",
"Kann Arbeitsverzeichnis nicht ermitteln. (Fehler: %d)",
"Datei nicht sperrbar. (Fehler: %d)",
"Kann Datei '%-.64s' nicht öffnen. (Fehler: %d)",
"Kann Datei '%-.64s' nicht finden. (Fehler: %d)",
"Verzeichnis von '%-.64s' nicht lesbar. (Fehler: %d)",
"Kann nicht in das Verzeichnis '%-.64s' wechseln. (Fehler: %d)",
"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert.",
"Kann Datei '%-.64s' nicht öffnen (Fehler: %d)",
"Kann Datei '%-.64s' nicht finden (Fehler: %d)",
"Verzeichnis von '%-.64s' nicht lesbar (Fehler: %d)",
"Kann nicht in das Verzeichnis '%-.64s' wechseln (Fehler: %d)",
"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert",
"Festplatte voll (%-.64s). Warte bis jemand Platz schafft ...",
"Kann nicht speichern, doppelter Schlüssel in Tabelle '%-.64s'.",
"Fehler beim Schließen von '%-.64s'. (Fehler: %d)",
"Fehler beim Lesen der Datei '%-.64s'. (Fehler: %d)",
"Fehler beim Umbenennen von '%-.64s' nach '%-.64s'. (Fehler: %d)",
"Fehler beim Speichern der Datei '%-.64s'. (Fehler: %d)",
"'%-.64s' ist für Veränderungen gesperrt.",
"Sortieren abgebrochen.",
"View '%-.64s' existiert für '%-.64s' nicht.",
"Fehler %d. (Tabellenhandler)",
"Diese Option gibt es nicht. (Tabellenhandler)",
"Kann Datensatz nicht finden.",
"Kann nicht speichern, doppelter Schlüssel in Tabelle '%-.64s'",
"Fehler beim Schließen von '%-.64s' (Fehler: %d)",
"Fehler beim Lesen der Datei '%-.64s' (Fehler: %d)",
"Fehler beim Umbenennen von '%-.64s' nach '%-.64s' (Fehler: %d)",
"Fehler beim Speichern der Datei '%-.64s' (Fehler: %d)",
"'%-.64s' ist für Veränderungen gesperrt",
"Sortieren abgebrochen",
"View '%-.64s' existiert für '%-.64s' nicht",
"Fehler %d (Tabellenhandler)",
"Diese Option gibt es nicht (Tabellenhandler)",
"Kann Datensatz nicht finden",
"Falsche Information in Datei: '%-.64s'",
"Falsche Schlüssel-Datei für Tabelle '%-.64s'. Versuche zu reparieren!",
"Alte Schlüssel-Datei für Tabelle '%-.64s'. Repariere!",
"'%-.64s' ist nur lesbar.",
"Falsche Schlüssel-Datei für Tabelle '%-.64s'; versuche zu reparieren!",
"Alte Schlüssel-Datei für Tabelle '%-.64s'; repariere!",
"'%-.64s' ist nur lesbar",
"Kein Speicher vorhanden (benötigt %d bytes). Server neu starten.",
"Kein Speicher zum Sortieren. sort_buffer_size sollte erhöht werden.",
"Unerwartetes Ende beim Lesen der Datei '%-.64s'. (Fehler: %d)",
......
......@@ -17,12 +17,12 @@
" '%-.64s' ( : %d)",
" ( : %d)",
" ( : %d)",
" : '%-.64s'. ( : %d)",
" : '%-.64s' ( : %d)",
" : '%-.64s' ( : %d)",
" '%-.64s' ( : %d)",
" '%-.64s' ( : %d)",
" '%-.64s'",
" (%s). , ....",
" (%s). , ...",
" , '%-.64s'",
" '%-.64s' ( : %d)",
" '%-.64s' ( : %d)",
......@@ -35,7 +35,7 @@
" (table handler) '%-.64s' ",
" '%-.64s'",
" : '%-.64s'",
" (key file) : '%-.64s'. , !",
" (key file) : '%-.64s'; , !",
" (key file) '%-.64s'; , !",
"'%-.64s' ",
" . , (demon) ( %d bytes)",
......
......@@ -19,8 +19,8 @@
"A(z) '%-.64s' statusza nem allapithato meg (hibakod: %d)",
"A munkakonyvtar nem allapithato meg (hibakod: %d)",
"A file nem zarolhato. (hibakod: %d)",
"A '%-.64s' file nem nyithato meg. (hibakod: %d)",
"A(z) '%-.64s' file nem talalhato. (hibakod: %d)",
"A '%-.64s' file nem nyithato meg (hibakod: %d)",
"A(z) '%-.64s' file nem talalhato (hibakod: %d)",
"A(z) '%-.64s' konyvtar nem olvashato. (hibakod: %d)",
"Konyvtarvaltas nem lehetseges a(z) '%-.64s'-ba. (hibakod: %d)",
"A(z) '%-.64s' tablaban talalhato rekord megvaltozott az utolso olvasas ota",
......@@ -37,8 +37,8 @@
"A(z) '%-.64s' tablakezelonek nincs ilyen opcioja",
"Nem talalhato a rekord '%-.64s'-ben",
"Ervenytelen info a file-ban: '%-.64s'",
"Ervenytelen kulcsfile a tablahoz: '%-.64s'. Probalja kijavitani!",
"Regi kulcsfile a '%-.64s'tablahoz; Probalja kijavitani!",
"Ervenytelen kulcsfile a tablahoz: '%-.64s'; probalja kijavitani!",
"Regi kulcsfile a '%-.64s'tablahoz; probalja kijavitani!",
"'%-.64s' irasvedett",
"Nincs eleg memoria. Inditsa ujra a demont, es probalja ismet. (%d byte szukseges.)",
"Nincs eleg memoria a rendezeshez. Novelje a rendezo demon puffermeretet",
......
......@@ -17,12 +17,12 @@
"Impossibile leggere lo stato di '%-.64s' (errno: %d)",
"Impossibile leggere la directory di lavoro (errno: %d)",
"Impossibile il locking il file (errno: %d)",
"Impossibile aprire il file: '%-.64s'. (errno: %d)",
"Impossibile aprire il file: '%-.64s' (errno: %d)",
"Impossibile trovare il file: '%-.64s' (errno: %d)",
"Impossibile leggere la directory di '%-.64s' (errno: %d)",
"Impossibile cambiare la directory in '%-.64s' (errno: %d)",
"Il record e` cambiato dall'ultima lettura della tabella '%-.64s'",
"Disco pieno (%s). In attesa che qualcuno liberi un po' di spazio....",
"Disco pieno (%s). In attesa che qualcuno liberi un po' di spazio...",
"Scrittura impossibile: chiave duplicata nella tabella '%-.64s'",
"Errore durante la chiusura di '%-.64s' (errno: %d)",
"Errore durante la lettura del file '%-.64s' (errno: %d)",
......@@ -35,8 +35,8 @@
"Il gestore delle tabelle per '%-.64s' non ha questa opzione",
"Impossibile trovare il record in '%-.64s'",
"Informazione errata nel file: '%-.64s'",
"File chiave errato per la tabella : '%-.64s'. Prova a riparalo",
"File chiave vecchio per la tabella '%-.64s'; Riparalo!",
"File chiave errato per la tabella : '%-.64s'; prova a riparalo",
"File chiave vecchio per la tabella '%-.64s'; riparalo!",
"'%-.64s' e` di sola lettura",
"Memoria esaurita. Fai ripartire il demone e riprova (richiesti %d bytes)",
"Memoria per gli ordinamenti esaurita. Incrementare il 'sort_buffer' al demone",
......
......@@ -17,9 +17,9 @@
"'%-.64s' の削除がエラー (errno: %d)",
"system table のレコードを読む事ができませんでした",
"'%-.64s' のステイタスが得られません. (errno: %d)",
"working directory を得る事ができませんでした. (errno: %d)",
"ファイルをロックできません.(errno: %d)",
"'%-.64s' ファイルを開く事ができません.(errno: %d)",
"working directory を得る事ができませんでした (errno: %d)",
"ファイルをロックできません (errno: %d)",
"'%-.64s' ファイルを開く事ができません (errno: %d)",
"'%-.64s' ファイルを見付ける事ができません.(errno: %d)",
"'%-.64s' ディレクトリが読めません.(errno: %d)",
"'%-.64s' ディレクトリに chdir できません.(errno: %d)",
......
......@@ -17,12 +17,12 @@
"'%-.64s'의 상태를 얻지 못했습니다. (에러번호: %d)",
"수행 디렉토리를 찾지 못했습니다. (에러번호: %d)",
"화일을 잠그지(lock) 못했습니다. (에러번호: %d)",
"화일을 열지 못했습니다.: '%-.64s'. (에러번호: %d)",
"화일을 열지 못했습니다.: '%-.64s' (에러번호: %d)",
"화일을 찾지 못했습니다.: '%-.64s' (에러번호: %d)",
"'%-.64s'디렉토리를 읽지 못했습니다. (에러번호: %d)",
"'%-.64s'디렉토리로 이동할 수 없었습니다. (에러번호: %d)",
"테이블 '%-.64s'에서 마지막으로 읽은 후 Record가 변경되었습니다.",
"Disk full (%s). 다른 사람이 지울때까지 기다립니다.....",
"Disk full (%s). 다른 사람이 지울때까지 기다립니다...",
"기록할 수 없읍니다., 테이블 '%-.64s'에서 중복 키",
"'%-.64s'닫는 중 에러 (에러번호: %d)",
"'%-.64s'화일 읽기 에러 (에러번호: %d)",
......@@ -48,7 +48,7 @@
"'%-.32s@%-.64s' 사용자는 '%-.64s' 데이타베이스에 접근이 거부 되었습니다.",
"'%-.32s@%-.64s' 사용자는 접근이 거부 되었습니다. (Using password: %s)",
"선택된 데이타베이스가 없습니다.",
"명령어가 뭔지 모르겠어요....",
"명령어가 뭔지 모르겠어요...",
"칼럼 '%-.64s'는 널(Null)이 되면 안됩니다. ",
"데이타베이스 '%-.64s'는 알수 없음",
"테이블 '%-.64s'는 이미 존재함",
......
......@@ -19,12 +19,12 @@
"Kan ikkje lese statusen til '%-.64s' (Feilkode: %d)",
"Kan ikkje lese aktiv katalog(Feilkode: %d)",
"Kan ikkje lse fila (Feilkode: %d)",
"Kan ikkje pne fila: '%-.64s'. (Feilkode: %d)",
"Kan ikkje pne fila: '%-.64s' (Feilkode: %d)",
"Kan ikkje finne fila: '%-.64s' (Feilkode: %d)",
"Kan ikkje lese katalogen '%-.64s' (Feilkode: %d)",
"Kan ikkje skifte katalog til '%-.64s' (Feilkode: %d)",
"Posten har vorte endra sidan den sist vart lesen '%-.64s'",
"Ikkje meir diskplass (%s). Ventar p f frigjort plass....",
"Ikkje meir diskplass (%s). Ventar p f frigjort plass...",
"Kan ikkje skrive, flere like nyklar i tabellen '%-.64s'",
"Feil ved lukking av '%-.64s' (Feilkode: %d)",
"Feil ved lesing av '%-.64s' (Feilkode: %d)",
......@@ -37,8 +37,8 @@
"Tabell hndteraren for '%-.64s' har ikkje denne moglegheita",
"Kan ikkje finne posten i '%-.64s'",
"Feil informasjon i fila: '%-.64s'",
"Tabellen '%-.64s' har feil i nykkelfila, Prv reparere den",
"Gammel nykkelfil for tabellen '%-.64s'; Reparer den!",
"Tabellen '%-.64s' har feil i nykkelfila; prv reparere den",
"Gammel nykkelfil for tabellen '%-.64s'; reparer den!",
"'%-.64s' er skrivetryggja",
"Ikkje meir minne. Start p nytt tenesten og prv igjen (trengte %d bytar)",
"Ikkje meir sorteringsminne. Auk sorteringsminnet (sorteringsbffer storleik) for tenesten",
......
......@@ -19,12 +19,12 @@
"Kan ikke lese statusen til '%-.64s' (Feilkode: %d)",
"Kan ikke lese aktiv katalog(Feilkode: %d)",
"Kan ikke låse fila (Feilkode: %d)",
"Kan ikke åpne fila: '%-.64s'. (Feilkode: %d)",
"Kan ikke åpne fila: '%-.64s' (Feilkode: %d)",
"Kan ikke finne fila: '%-.64s' (Feilkode: %d)",
"Kan ikke lese katalogen '%-.64s' (Feilkode: %d)",
"Kan ikke skifte katalog til '%-.64s' (Feilkode: %d)",
"Posten har blitt endret siden den ble lest '%-.64s'",
"Ikke mer diskplass (%s). Venter på å få frigjort plass....",
"Ikke mer diskplass (%s). Venter på å få frigjort plass...",
"Kan ikke skrive, flere like nøkler i tabellen '%-.64s'",
"Feil ved lukking av '%-.64s' (Feilkode: %d)",
"Feil ved lesing av '%-.64s' (Feilkode: %d)",
......@@ -37,8 +37,8 @@
"Tabell håndtereren for '%-.64s' har ikke denne muligheten",
"Kan ikke finne posten i '%-.64s'",
"Feil informasjon i filen: '%-.64s'",
"Tabellen '%-.64s' har feil i nøkkelfilen, forsøk å reparer den",
"Gammel nøkkelfil for tabellen '%-.64s'; Reparer den!",
"Tabellen '%-.64s' har feil i nøkkelfilen; forsøk å reparer den",
"Gammel nøkkelfil for tabellen '%-.64s'; reparer den!",
"'%-.64s' er skrivebeskyttet",
"Ikke mer minne. Star på nytt tjenesten og prøv igjen (trengte %d byter)",
"Ikke mer sorteringsminne. Øk sorteringsminnet (sort buffer size) for tjenesten",
......
......@@ -21,12 +21,12 @@
"Nie mona otrzyma statusu '%-.64s' (Kod bdu: %d)",
"Nie mona rozpozna aktualnego katalogu (Kod bdu: %d)",
"Nie mona zablokowa pliku (Kod bdu: %d)",
"Nie mona otworzy pliku: '%-.64s'. (Kod bdu: %d)",
"Nie mona otworzy pliku: '%-.64s' (Kod bdu: %d)",
"Nie mona znale pliku: '%-.64s' (Kod bdu: %d)",
"Nie mona odczyta katalogu '%-.64s' (Kod bdu: %d)",
"Nie mona zmieni katalogu na '%-.64s' (Kod bdu: %d)",
"Rekord zosta zmieniony od ostaniego odczytania z tabeli '%-.64s'",
"Dysk peny (%s). Oczekiwanie na zwolnienie miejsca....",
"Dysk peny (%s). Oczekiwanie na zwolnienie miejsca...",
"Nie mona zapisa, powtrzone klucze w tabeli '%-.64s'",
"B?d podczas zamykania '%-.64s' (Kod bdu: %d)",
"B?d podczas odczytu pliku '%-.64s' (Kod bdu: %d)",
......@@ -39,8 +39,8 @@
"Obsuga tabeli '%-.64s' nie posiada tej opcji",
"Nie mona znale rekordu w '%-.64s'",
"Niewa?ciwa informacja w pliku: '%-.64s'",
"Niewa?ciwy plik kluczy dla tabeli: '%-.64s'. Sprbuj go naprawi",
"Plik kluczy dla tabeli '%-.64s' jest starego typu; Napraw go!",
"Niewa?ciwy plik kluczy dla tabeli: '%-.64s'; sprbuj go naprawi",
"Plik kluczy dla tabeli '%-.64s' jest starego typu; napraw go!",
"'%-.64s' jest tylko do odczytu",
"Zbyt mao pamici. Uruchom ponownie demona i sprbuj ponownie (potrzeba %d bajtw)",
"Zbyt mao pamici dla sortowania. Zwiksz wielko? bufora demona dla sortowania",
......
......@@ -35,8 +35,8 @@
"Manipulador de tabela para '%-.64s' não tem esta opção",
"Não pode encontrar registro em '%-.64s'",
"Informação incorreta no arquivo '%-.64s'",
"Arquivo de índice incorreto para tabela '%-.64s'. Tente repará-lo",
"Arquivo de índice desatualizado para tabela '%-.64s'. Repare-o!",
"Arquivo de índice incorreto para tabela '%-.64s'; tente repará-lo",
"Arquivo de índice desatualizado para tabela '%-.64s'; repare-o!",
"Tabela '%-.64s' é somente para leitura",
"Sem memória. Reinicie o programa e tente novamente (necessita de %d bytes)",
"Sem memória para ordenação. Aumente tamanho do 'buffer' de ordenação",
......
......@@ -21,12 +21,12 @@
"Nu pot sa obtin statusul lui '%-.64s' (Eroare: %d)",
"Nu pot sa obtin directorul current (working directory) (Eroare: %d)",
"Nu pot sa lock fisierul (Eroare: %d)",
"Nu pot sa deschid fisierul: '%-.64s'. (Eroare: %d)",
"Nu pot sa deschid fisierul: '%-.64s' (Eroare: %d)",
"Nu pot sa gasesc fisierul: '%-.64s' (Eroare: %d)",
"Nu pot sa citesc directorul '%-.64s' (Eroare: %d)",
"Nu pot sa schimb directorul '%-.64s' (Eroare: %d)",
"Cimpul a fost schimbat de la ultima citire a tabelei '%-.64s'",
"Hard-disk-ul este plin (%s). Astept sa se elibereze ceva spatiu....",
"Hard-disk-ul este plin (%s). Astept sa se elibereze ceva spatiu...",
"Nu pot sa scriu (can't write), cheie duplicata in tabela '%-.64s'",
"Eroare inchizind '%-.64s' (errno: %d)",
"Eroare citind fisierul '%-.64s' (errno: %d)",
......@@ -39,8 +39,8 @@
"Handlerul tabelei pentru '%-.64s' nu are aceasta optiune",
"Nu pot sa gasesc recordul in '%-.64s'",
"Informatie incorecta in fisierul: '%-.64s'",
"Cheia fisierului incorecta pentru tabela: '%-.64s'. Incearca s-o repari",
"Cheia fisierului e veche pentru tabela '%-.64s'; Repar-o!",
"Cheia fisierului incorecta pentru tabela: '%-.64s'; incearca s-o repari",
"Cheia fisierului e veche pentru tabela '%-.64s'; repar-o!",
"Tabela '%-.64s' e read-only",
"Out of memory. Porneste daemon-ul din nou si incearca inca o data (e nevoie de %d bytes)",
"Out of memory pentru sortare. Largeste marimea buffer-ului pentru sortare in daemon (sort buffer size)",
......
......@@ -19,12 +19,12 @@
" '%-.64s' (: %d)",
" (: %d)",
" (: %d)",
" : '%-.64s'. (: %d)",
" : '%-.64s' (: %d)",
" : '%-.64s' (: %d)",
" '%-.64s' (: %d)",
" '%-.64s' (: %d)",
" '%-.64s'",
" . (%s). , - ....",
" . (%s). , - ...",
" , '%-.64s'",
" '%-.64s' (: %d)",
" '%-.64s' (: %d)",
......
......@@ -23,12 +23,12 @@
"Ne mogu da dobijem stanje file-a '%-.64s' (errno: %d)",
"Ne mogu da dobijem trenutni direktorijum (errno: %d)",
"Ne mogu da zakljuam file (errno: %d)",
"Ne mogu da otvorim file: '%-.64s'. (errno: %d)",
"Ne mogu da otvorim file: '%-.64s' (errno: %d)",
"Ne mogu da pronaem file: '%-.64s' (errno: %d)",
"Ne mogu da proitam direktorijum '%-.64s' (errno: %d)",
"Ne mogu da promenim direktorijum na '%-.64s' (errno: %d)",
"Slog je promenjen od zadnjeg itanja tabele '%-.64s'",
"Disk je pun (%s). ekam nekoga da doe i oslobodi neto mesta....",
"Disk je pun (%s). ekam nekoga da doe i oslobodi neto mesta...",
"Ne mogu da piem poto postoji duplirani klju u tabeli '%-.64s'",
"Greka pri zatvaranju '%-.64s' (errno: %d)",
"Greka pri itanju file-a '%-.64s' (errno: %d)",
......@@ -41,8 +41,8 @@
"Handler tabela za '%-.64s' nema ovu opciju",
"Ne mogu da pronaem slog u '%-.64s'",
"Pogrena informacija u file-u: '%-.64s'",
"Pogrean key file za tabelu: '%-.64s'. Probajte da ga ispravite",
"Zastareo key file za tabelu '%-.64s'; Ispravite ga",
"Pogrean key file za tabelu: '%-.64s'; probajte da ga ispravite",
"Zastareo key file za tabelu '%-.64s'; ispravite ga",
"Tabelu '%-.64s' je dozvoljeno samo itati",
"Nema memorije. Restartujte MySQL server i probajte ponovo (potrebno je %d byte-ova)",
"Nema memorije za sortiranje. Poveajte veliinu sort buffer-a MySQL server-u",
......
......@@ -25,12 +25,12 @@
"Nemem zisti stav '%-.64s' (chybov kd: %d)",
"Nemem zisti pracovn adresr (chybov kd: %d)",
"Nemem zamkn sbor (chybov kd: %d)",
"Nemem otvori sbor: '%-.64s'. (chybov kd: %d)",
"Nemem otvori sbor: '%-.64s' (chybov kd: %d)",
"Nemem njs sbor: '%-.64s' (chybov kd: %d)",
"Nemem ta adresr '%-.64s' (chybov kd: %d)",
"Nemem vojs do adresra '%-.64s' (chybov kd: %d)",
"Zznam bol zmenen od poslednho tania v tabuke '%-.64s'",
"Disk je pln (%s), akm na uvonenie miesta....",
"Disk je pln (%s), akm na uvonenie miesta...",
"Nemem zapsa, duplikt ka v tabuke '%-.64s'",
"Chyba pri zatvran '%-.64s' (chybov kd: %d)",
"Chyba pri tan sboru '%-.64s' (chybov kd: %d)",
......@@ -43,8 +43,8 @@
"Obsluha tabuky '%-.64s' nem tento parameter",
"Nemem njs zznam v '%-.64s'",
"Nesprvna informcia v sbore: '%-.64s'",
"Nesprvny k pre tabuku '%-.64s'. Pokste sa ho opravi",
"Star kov sbor pre '%-.64s'; Opravte ho!",
"Nesprvny k pre tabuku '%-.64s'; pokste sa ho opravi",
"Star kov sbor pre '%-.64s'; opravte ho!",
"'%-.64s' is ta only",
"Mlo pamti. Retartujte daemona a skste znova (je potrebnch %d bytov)",
"Mlo pamti pre triedenie, zvte vekos triediaceho bufferu",
......
......@@ -18,12 +18,12 @@
"No puedo obtener el estado de '%-.64s' (Error: %d)",
"No puedo acceder al directorio (Error: %d)",
"No puedo bloquear archivo: (Error: %d)",
"No puedo abrir archivo: '%-.64s'. (Error: %d)",
"No puedo abrir archivo: '%-.64s' (Error: %d)",
"No puedo encontrar archivo: '%-.64s' (Error: %d)",
"No puedo leer el directorio de '%-.64s' (Error: %d)",
"No puedo cambiar al directorio de '%-.64s' (Error: %d)",
"El registro ha cambiado desde la ultima lectura de la tabla '%-.64s'",
"Disco lleno (%s). Esperando para que se libere algo de espacio....",
"Disco lleno (%s). Esperando para que se libere algo de espacio...",
"No puedo escribir, clave duplicada en la tabla '%-.64s'",
"Error en el cierre de '%-.64s' (Error: %d)",
"Error leyendo el fichero '%-.64s' (Error: %d)",
......@@ -36,8 +36,8 @@
"El manejador de la tabla de '%-.64s' no tiene esta opcion",
"No puedo encontrar el registro en '%-.64s'",
"Informacion erronea en el archivo: '%-.64s'",
"Clave de archivo erronea para la tabla: '%-.64s'. Intente repararlo",
"Clave de archivo antigua para la tabla '%-.64s'; Reparelo!",
"Clave de archivo erronea para la tabla: '%-.64s'; intente repararlo",
"Clave de archivo antigua para la tabla '%-.64s'; reparelo!",
"'%-.64s' es de solo lectura",
"Memoria insuficiente. Reinicie el demonio e intentelo otra vez (necesita %d bytes)",
"Memoria de ordenacion insuficiente. Incremente el tamano del buffer de ordenacion",
......
......@@ -17,12 +17,12 @@
"Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)",
"Kan inte inte läsa aktivt bibliotek. (Felkod: %d)",
"Kan inte låsa filen. (Felkod: %d)",
"Kan inte använda '%-.64s'. (Felkod: %d)",
"Hittar inte filen '%-.64s'. (Felkod: %d)",
"Kan inte läsa från bibliotek '%-.64s'. (Felkod: %d)",
"Kan inte byta till '%-.64s'. (Felkod: %d)",
"Kan inte använda '%-.64s' (Felkod: %d)",
"Hittar inte filen '%-.64s' (Felkod: %d)",
"Kan inte läsa från bibliotek '%-.64s' (Felkod: %d)",
"Kan inte byta till '%-.64s' (Felkod: %d)",
"Posten har förändrats sedan den lästes i register '%-.64s'",
"Disken är full (%s). Väntar tills det finns ledigt utrymme....",
"Disken är full (%s). Väntar tills det finns ledigt utrymme...",
"Kan inte skriva, dubbel söknyckel i register '%-.64s'",
"Fick fel vid stängning av '%-.64s' (Felkod: %d)",
"Fick fel vid läsning av '%-.64s' (Felkod %d)",
......@@ -35,8 +35,8 @@
"Registrets databas har inte denna facilitet",
"Hittar inte posten",
"Felaktig fil: '%-.64s'",
"Fatalt fel vid hantering av register '%-.64s'. Kör en reparation",
"Gammal nyckelfil '%-.64s'. Reparera registret",
"Fatalt fel vid hantering av register '%-.64s'; kör en reparation",
"Gammal nyckelfil '%-.64s'; reparera registret",
"'%-.64s' är skyddad mot förändring",
"Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)",
"Sorteringsbufferten räcker inte till. Kontrollera startparametrarna",
......
......@@ -40,7 +40,7 @@
" æ '%-.64s' æ Ԧ",
" '%-.64s'",
" æ ̦: '%-.64s'",
" æ: '%-.64s'. צ",
" æ: '%-.64s'; צ",
" æ '%-.64s'; צ !",
" '%-.64s' Ԧ ",
" 'Ԧ. (Ҧ %d Ԧ)",
......
......@@ -455,6 +455,13 @@ int yylex(void *arg, void *yythd)
}
case MY_LEX_CHAR: // Unknown or single char token
case MY_LEX_SKIP: // This should not happen
if (c == '-' && yyPeek() == '-' &&
(my_isspace(cs,yyPeek2()) ||
my_iscntrl(cs,yyPeek2())))
{
state=MY_LEX_COMMENT;
break;
}
yylval->lex_str.str=(char*) (lex->ptr=lex->tok_start);// Set to first chr
yylval->lex_str.length=1;
c=yyGet();
......@@ -694,37 +701,6 @@ int yylex(void *arg, void *yythd)
lex->next_state= MY_LEX_START;
return(IDENT);
}
case MY_LEX_SIGNED_NUMBER: // Incomplete signed number
if (prev_state == MY_LEX_OPERATOR_OR_IDENT)
{
if (c == '-' && yyPeek() == '-' &&
(my_isspace(cs,yyPeek2()) ||
my_iscntrl(cs,yyPeek2())))
state=MY_LEX_COMMENT;
else
state= MY_LEX_CHAR; // Must be operator
break;
}
if (!my_isdigit(cs,c=yyGet()) || yyPeek() == 'x')
{
if (c != '.')
{
if (c == '-' && my_isspace(cs,yyPeek()))
state= MY_LEX_COMMENT;
else
state= MY_LEX_CHAR; // Return sign as single char
break;
}
yyUnget(); // Fix for next loop
}
while (my_isdigit(cs,c=yyGet())) ; // Incomplete real or int number
if ((c == 'e' || c == 'E') &&
(yyPeek() == '+' || yyPeek() == '-' || my_isdigit(cs,yyPeek())))
{ // Real number
yyUnget();
c= '.'; // Fool next test
}
// fall through
case MY_LEX_INT_OR_REAL: // Compleat int or incompleat real
if (c != '.')
{ // Found complete integer number.
......
......@@ -74,7 +74,7 @@ inline Item *or_or_concat(THD *thd, Item* A, Item* B)
enum row_type row_type;
enum ha_rkey_function ha_rkey_mode;
enum enum_tx_isolation tx_isolation;
enum Item_cast cast_type;
enum Cast_target cast_type;
enum Item_udftype udf_type;
CHARSET_INFO *charset;
thr_lock_type lock_type;
......@@ -2294,6 +2294,7 @@ simple_expr:
YYABORT;
}
| sum_expr
| '+' expr %prec NEG { $$= $2; }
| '-' expr %prec NEG { $$= new Item_func_neg($2); }
| '~' expr %prec NEG { $$= new Item_func_bit_neg($2); }
| NOT expr %prec NEG { $$= new Item_func_not($2); }
......@@ -4310,8 +4311,6 @@ ident:
LEX *lex= Lex;
$$.str= lex->thd->strmake($1.str,$1.length);
$$.length=$1.length;
if (lex->next_state != MY_LEX_END)
lex->next_state= MY_LEX_OPERATOR_OR_IDENT;
}
;
......
......@@ -2030,7 +2030,7 @@ CHARSET_INFO my_charset_utf8_bin=
3, /* mbmaxlen */
0,
&my_charset_handler,
&my_collation_ci_handler
&my_collation_bin_handler
};
......
......@@ -176,7 +176,7 @@ static void client_connect()
int rc;
myheader_r("client_connect");
fprintf(stdout, "\n Establishing a connection ...");
fprintf(stdout, "\n Establishing a connection to '%s' ...", opt_host);
if (!(mysql = mysql_init(NULL)))
{
......@@ -7161,6 +7161,11 @@ static void test_mem_overun()
rc = mysql_real_query(mysql, buffer, length);
myquery(rc);
rc = mysql_query(mysql,"select * from t_mem_overun");
myquery(rc);
myassert(1 == my_process_result(mysql));
stmt = mysql_prepare(mysql, "select * from t_mem_overun",30);
mystmt_init(stmt);
......@@ -7456,6 +7461,83 @@ static void test_sqlmode()
mysql_stmt_close(stmt);
}
/*
test for timestamp handling
*/
static void test_ts()
{
MYSQL_STMT *stmt;
MYSQL_BIND bind[2];
MYSQL_TIME ts;
char strts[30];
long length;
int rc;
myheader("test_ts");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_ts");
myquery(rc);
rc= mysql_query(mysql,"CREATE TABLE test_ts(a TIMESTAMP)");
myquery(rc);
rc = mysql_commit(mysql);
myquery(rc);
stmt = mysql_prepare(mysql,"INSERT INTO test_ts VALUES(?),(?)",40);
mystmt_init(stmt);
ts.year= 2003;
ts.month= 07;
ts.day= 12;
ts.hour= 21;
ts.minute= 07;
ts.second= 46;
length= (long)(strmov(strts,"2003-07-12 21:07:46") - strts);
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)strts;
bind[0].buffer_length= sizeof(strts);
bind[0].is_null= 0;
bind[0].length= &length;
bind[1].buffer_type= MYSQL_TYPE_TIMESTAMP;
bind[1].buffer= (char *)&ts;
bind[1].buffer_length= sizeof(ts);
bind[1].is_null= 0;
bind[1].length= 0;
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
mysql_stmt_close(stmt);
verify_col_data("test_ts","a","2003-07-12 21:07:46");
stmt = mysql_prepare(mysql,"SELECT a FROM test_ts WHERE a >= ?",50);
mystmt_init(stmt);
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
rc = mysql_fetch(stmt);
myassert(rc == MYSQL_NO_DATA);
mysql_stmt_close(stmt);
}
/*
Read and parse arguments and MySQL options from my.cnf
......@@ -7703,6 +7785,7 @@ int main(int argc, char **argv)
test_fetch_offset(); /* to test mysql_fetch_column with offset */
test_fetch_column(); /* to test mysql_fetch_column */
test_sqlmode(); /* test for SQL_MODE */
test_ts(); /* test for timestamp BR#819 */
end_time= time((time_t *)0);
total_time+= difftime(end_time, start_time);
......
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