Commit 127ff28c authored by unknown's avatar unknown

Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1

into deer.(none):/home/hf/work/mysql-4.1.2way

parents d17b3e96 00e8a411
-- require r/have_openssl_2.require -- require r/have_openssl_2.require
disable_query_log; disable_query_log;
SHOW STATUS LIKE "SSL_get_cipher"; SHOW STATUS LIKE "Ssl_cipher";
enable_query_log; enable_query_log;
...@@ -10,10 +10,10 @@ CASE "c" when "a" then 1 when "b" then 2 ELSE 3 END ...@@ -10,10 +10,10 @@ CASE "c" when "a" then 1 when "b" then 2 ELSE 3 END
3 3
select CASE BINARY "b" when "a" then 1 when "B" then 2 WHEN "b" then "ok" END; 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 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; 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 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; 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 CASE concat("a","b") when concat("ab","") then "a" when "b" then "b" end
a a
...@@ -72,6 +72,48 @@ yellow ...@@ -72,6 +72,48 @@ yellow
green green
drop table t1; drop table t1;
SET NAMES latin1; 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'); 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' 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); CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
......
...@@ -111,3 +111,56 @@ id ...@@ -111,3 +111,56 @@ id
5 5
9 9
drop table t1; drop table t1;
create table t1 (
a char(1) character set latin1 collate latin1_general_ci,
b char(1) character set latin1 collate latin1_swedish_ci,
c char(1) character set latin1 collate latin1_danish_ci
);
insert into t1 values ('A','B','C');
insert into t1 values ('a','c','c');
select * from t1 where a in (b);
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation ' IN '
select * from t1 where a in (b,c);
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT), (latin1_swedish_ci,IMPLICIT), (latin1_danish_ci,IMPLICIT) for operation ' IN '
select * from t1 where 'a' in (a,b,c);
ERROR HY000: Illegal mix of collations for operation ' IN '
select * from t1 where 'a' in (a);
a b c
A B C
a c c
select * from t1 where a in ('a');
a b c
A B C
a c c
select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
a b c
A B C
a c c
select * from t1 where 'a' collate latin1_bin in (a,b,c);
a b c
a c c
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
...@@ -363,15 +363,15 @@ select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin); ...@@ -363,15 +363,15 @@ select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
_latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin) _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin)
0 0
select _latin2'B' in (_latin1'a',_latin1'b'); select _latin2'B' in (_latin1'a',_latin1'b');
ERROR HY000: Illegal mix of collations for operation ' IN ' ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
select _latin1'B' in (_latin2'a',_latin1'b'); select _latin1'B' in (_latin2'a',_latin1'b');
ERROR HY000: Illegal mix of collations for operation ' IN ' ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
select _latin1'B' in (_latin1'a',_latin2'b'); select _latin1'B' in (_latin1'a',_latin2'b');
ERROR HY000: Illegal mix of collations for operation ' IN ' ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE) for operation ' IN '
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b'); select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
ERROR HY000: Illegal mix of collations for operation ' IN ' ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_bin,EXPLICIT), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin); select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
ERROR HY000: Illegal mix of collations for operation ' IN ' ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_bin,EXPLICIT) for operation ' IN '
select collation(bin(130)), coercibility(bin(130)); select collation(bin(130)), coercibility(bin(130));
collation(bin(130)) coercibility(bin(130)) collation(bin(130)) coercibility(bin(130))
latin1_swedish_ci 3 latin1_swedish_ci 3
......
Variable_name Value Variable_name Value
jkhjkhfs Ssl_cipher EDH-RSA-DES-CBC3-SHA
...@@ -788,7 +788,7 @@ id id3 ...@@ -788,7 +788,7 @@ id id3
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
create table t1 (a char(20), unique (a(5))) type=innodb; 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; create table t1 (a char(20), index (a(5))) type=innodb;
show create table t1; show create table t1;
Table Create Table Table Create Table
......
...@@ -178,9 +178,9 @@ t3 CREATE TABLE `t3` ( ...@@ -178,9 +178,9 @@ t3 CREATE TABLE `t3` (
) TYPE=MRG_MyISAM CHARSET=latin1 UNION=(`t1`,`t2`) ) 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); create table t4 (a int not null, b char(10), key(a)) type=MERGE UNION=(t1,t2);
select * from t4; 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; 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 database mysqltest;
create table mysqltest.t6 (a int not null primary key auto_increment, message char(20)); 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); 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; ...@@ -7,7 +7,7 @@ select 1 | NULL,1 & NULL,1+NULL,1-NULL;
NULL NULL NULL NULL NULL NULL NULL NULL
select NULL=NULL,NULL<>NULL,IFNULL(NULL,1.1)+0,IFNULL(NULL,1) | 0; 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 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; 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 strcmp("a",NULL) (1<NULL)+0.0 NULL regexp "a" null like "a%" "a%" like null
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
......
...@@ -10,22 +10,22 @@ select * from t1; ...@@ -10,22 +10,22 @@ select * from t1;
f1 f1
5 5
delete from t1; delete from t1;
Access denied for user: 'ssl_user1@localhost' to database 'test' ERROR 42000: Access denied for user: 'ssl_user1@localhost' to database 'test'
select * from t1; select * from t1;
f1 f1
5 5
delete from t1; delete from t1;
Access denied for user: 'ssl_user2@localhost' to database 'test' ERROR 42000: Access denied for user: 'ssl_user2@localhost' to database 'test'
select * from t1; select * from t1;
f1 f1
5 5
delete from t1; delete from t1;
Access denied for user: 'ssl_user3@localhost' to database 'test' ERROR 42000: Access denied for user: 'ssl_user3@localhost' to database 'test'
select * from t1; select * from t1;
f1 f1
5 5
delete from t1; delete from t1;
Access denied for user: 'ssl_user4@localhost' to database 'test' ERROR 42000: Access denied for user: 'ssl_user4@localhost' to database 'test'
delete from mysql.user where user='ssl_user%'; delete from mysql.user where user='ssl_user%';
delete from mysql.db where user='ssl_user%'; delete from mysql.db where user='ssl_user%';
flush privileges; flush privileges;
......
SHOW STATUS LIKE 'SSL%'; SHOW STATUS LIKE 'Ssl%';
Variable_name Value 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
repair table t1; repair table t1;
Table Op Msg_type Msg_text 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; repair table t1 use_frm;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 repair warning Number of rows changed from 0 to 1 test.t1 repair warning Number of rows changed from 0 to 1
......
...@@ -347,7 +347,7 @@ a 1 ...@@ -347,7 +347,7 @@ a 1
hello 1 hello 1
drop table t1; drop table t1;
create table t1 (a text, key (a(300))); 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))); create table t1 (a text, key (a(255)));
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
......
...@@ -42,6 +42,44 @@ insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium') ...@@ -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; select max(case col when 1 then val else null end) as color from t1 group by row;
drop table t1; 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: # COALESCE is a CASE abbrevation:
# #
...@@ -52,7 +90,6 @@ drop table t1; ...@@ -52,7 +90,6 @@ drop table t1;
# #
# Check COALESCE argument types aggregation # Check COALESCE argument types aggregation
SET NAMES latin1;
--error 1265 --error 1265
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a'); CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
--error 1265 --error 1265
......
...@@ -54,3 +54,30 @@ insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9); ...@@ -54,3 +54,30 @@ insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
select * from t1 where id in (2,5,9); select * from t1 where id in (2,5,9);
drop table t1; drop table t1;
create table t1 (
a char(1) character set latin1 collate latin1_general_ci,
b char(1) character set latin1 collate latin1_swedish_ci,
c char(1) character set latin1 collate latin1_danish_ci
);
insert into t1 values ('A','B','C');
insert into t1 values ('a','c','c');
--error 1265
select * from t1 where a in (b);
--error 1268
select * from t1 where a in (b,c);
--error 1269
select * from t1 where 'a' in (a,b,c);
select * from t1 where 'a' in (a);
select * from t1 where a in ('a');
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);
...@@ -217,15 +217,15 @@ select _latin1'B' in (_latin1'a',_latin1'b'); ...@@ -217,15 +217,15 @@ select _latin1'B' in (_latin1'a',_latin1'b');
select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b'); select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b'); select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin); select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
--error 1269 --error 1268
select _latin2'B' in (_latin1'a',_latin1'b'); select _latin2'B' in (_latin1'a',_latin1'b');
--error 1269 --error 1268
select _latin1'B' in (_latin2'a',_latin1'b'); select _latin1'B' in (_latin2'a',_latin1'b');
--error 1269 --error 1268
select _latin1'B' in (_latin1'a',_latin2'b'); select _latin1'B' in (_latin1'a',_latin2'b');
--error 1269 --error 1268
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b'); select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
--error 1269 --error 1268
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin); select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
select collation(bin(130)), coercibility(bin(130)); select collation(bin(130)), coercibility(bin(130));
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
# Use mysql-test-run with --with-openssl option. # Use mysql-test-run with --with-openssl option.
-- source include/have_openssl_1.inc -- source include/have_openssl_1.inc
--disable_warnings
drop table if exists t1; drop table if exists t1;
--enable_warnings
create table t1(f1 int); create table t1(f1 int);
insert into t1 values (5); insert into t1 values (5);
......
# We want to test everything with SSL turned on. # We want to test everything with SSL turned on.
-- source include/have_openssl_2.inc -- source include/have_openssl_2.inc
SHOW STATUS LIKE 'SSL%'; SHOW STATUS LIKE 'Ssl%';
...@@ -191,7 +191,7 @@ then ...@@ -191,7 +191,7 @@ then
echo "Installing all prepared tables" echo "Installing all prepared tables"
fi fi
if ( 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" if test -n "$fill_help_tables"
then then
cat $fill_help_tables cat $fill_help_tables
......
...@@ -24,6 +24,32 @@ ...@@ -24,6 +24,32 @@
#include "mysql_priv.h" #include "mysql_priv.h"
#include <m_ctype.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) static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname)
{ {
my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0), my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0),
...@@ -556,10 +582,7 @@ void Item_func_between::fix_length_and_dec() ...@@ -556,10 +582,7 @@ void Item_func_between::fix_length_and_dec()
*/ */
if (!args[0] || !args[1] || !args[2]) if (!args[0] || !args[1] || !args[2])
return; return;
cmp_type=item_cmp_type(args[0]->result_type(), agg_cmp_type(&cmp_type, args, 3);
item_cmp_type(args[1]->result_type(),
args[2]->result_type()));
if (cmp_type == STRING_RESULT && if (cmp_type == STRING_RESULT &&
agg_arg_collations_for_comparison(cmp_collation, args, 3)) agg_arg_collations_for_comparison(cmp_collation, args, 3))
return; return;
...@@ -650,28 +673,17 @@ longlong Item_func_between::val_int() ...@@ -650,28 +673,17 @@ longlong Item_func_between::val_int()
return 0; 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 void
Item_func_ifnull::fix_length_and_dec() Item_func_ifnull::fix_length_and_dec()
{ {
maybe_null=args[1]->maybe_null; maybe_null=args[1]->maybe_null;
max_length=max(args[0]->max_length,args[1]->max_length); max_length=max(args[0]->max_length,args[1]->max_length);
decimals=max(args[0]->decimals,args[1]->decimals); decimals=max(args[0]->decimals,args[1]->decimals);
if ((cached_result_type=item_store_type(args[0]->result_type(), agg_result_type(&cached_result_type, args, 2);
args[1]->result_type())) !=
REAL_RESULT)
decimals= 0;
if (cached_result_type == STRING_RESULT) if (cached_result_type == STRING_RESULT)
agg_arg_collations(collation, args, arg_count); agg_arg_collations(collation, args, arg_count);
else if (cached_result_type != REAL_RESULT)
decimals= 0;
} }
...@@ -744,19 +756,18 @@ Item_func_if::fix_length_and_dec() ...@@ -744,19 +756,18 @@ Item_func_if::fix_length_and_dec()
cached_result_type= arg1_type; cached_result_type= arg1_type;
set_charset(args[1]->charset()); set_charset(args[1]->charset());
} }
else if (arg1_type == STRING_RESULT || arg2_type == STRING_RESULT)
{
cached_result_type = STRING_RESULT;
if (agg_arg_collations(collation, args+1, 2))
return;
}
else else
{ {
set_charset(&my_charset_bin); // Number agg_result_type(&cached_result_type, args+1, 2);
if (arg1_type == REAL_RESULT || arg2_type == REAL_RESULT) if (cached_result_type == STRING_RESULT)
cached_result_type = REAL_RESULT; {
if (agg_arg_collations(collation, args+1, 2))
return;
}
else else
cached_result_type=arg1_type; // Should be INT_RESULT {
set_charset(&my_charset_bin); // Number
}
} }
} }
...@@ -800,7 +811,7 @@ Item_func_nullif::fix_length_and_dec() ...@@ -800,7 +811,7 @@ Item_func_nullif::fix_length_and_dec()
{ {
max_length=args[0]->max_length; max_length=args[0]->max_length;
decimals=args[0]->decimals; decimals=args[0]->decimals;
cached_result_type=args[0]->result_type(); agg_result_type(&cached_result_type, args, 2);
} }
} }
...@@ -863,64 +874,60 @@ Item *Item_func_case::find_item(String *str) ...@@ -863,64 +874,60 @@ Item *Item_func_case::find_item(String *str)
String *first_expr_str,*tmp; String *first_expr_str,*tmp;
longlong first_expr_int; longlong first_expr_int;
double first_expr_real; double first_expr_real;
bool int_used, real_used,str_used;
int_used=real_used=str_used=0;
/* These will be initialized later */ /* These will be initialized later */
LINT_INIT(first_expr_str); LINT_INIT(first_expr_str);
LINT_INIT(first_expr_int); LINT_INIT(first_expr_int);
LINT_INIT(first_expr_real); LINT_INIT(first_expr_real);
if (first_expr_num != -1)
{
switch (cmp_type)
{
case STRING_RESULT:
// We can't use 'str' here as this may be overwritten
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;
}
}
// Compare every WHEN argument with it and return the first match // Compare every WHEN argument with it and return the first match
for (uint i=0 ; i < arg_count ; i+=2) for (uint i=0 ; i < ncases ; i+=2)
{ {
if (!first_expr) if (first_expr_num == -1)
{ {
// No expression between CASE and first WHEN // No expression between CASE and the first WHEN
if (args[i]->val_int()) if (args[i]->val_int())
return args[i+1]; return args[i+1];
continue; continue;
} }
switch (args[i]->result_type()) { switch (cmp_type) {
case STRING_RESULT: 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 ((tmp=args[i]->val_str(str))) // If not null if ((tmp=args[i]->val_str(str))) // If not null
{ if (sortcmp(tmp,first_expr_str,cmp_collation.collation)==0)
/* QQ: COERCIBILITY */
if (first_expr_is_binary || (args[i]->charset()->state & MY_CS_BINSORT))
{
if (sortcmp(tmp,first_expr_str,&my_charset_bin)==0)
return args[i+1];
}
else if (sortcmp(tmp,first_expr_str,tmp->charset())==0)
return args[i+1]; return args[i+1];
}
break; break;
case INT_RESULT: 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) if (args[i]->val_int()==first_expr_int && !args[i]->null_value)
return args[i+1]; return args[i+1];
break; break;
case REAL_RESULT: 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) if (args[i]->val()==first_expr_real && !args[i]->null_value)
return args[i+1]; return args[i+1];
break; break;
...@@ -932,7 +939,7 @@ Item *Item_func_case::find_item(String *str) ...@@ -932,7 +939,7 @@ Item *Item_func_case::find_item(String *str)
} }
} }
// No, WHEN clauses all missed, return ELSE expression // No, WHEN clauses all missed, return ELSE expression
return else_expr; return else_expr_num != -1 ? args[else_expr_num] : 0;
} }
...@@ -988,104 +995,57 @@ double Item_func_case::val() ...@@ -988,104 +995,57 @@ double Item_func_case::val()
return res; return res;
} }
bool
Item_func_case::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
{
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;
}
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);
}
void Item_func_case::set_outer_resolving()
{
first_expr->set_outer_resolving();
else_expr->set_outer_resolving();
Item_func::set_outer_resolving();
}
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)
{
used_tables_cache|=(else_expr)->used_tables();
const_item_cache&= (else_expr)->const_item();
}
}
void Item_func_case::fix_length_and_dec() void Item_func_case::fix_length_and_dec()
{ {
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
for (nagg= 0 ; nagg < ncases/2 ; nagg++)
agg[nagg]= args[nagg*2+1];
if (else_expr_num != -1)
agg[nagg++]= args[else_expr_num];
agg_result_type(&cached_result_type, agg, nagg);
if ((cached_result_type == STRING_RESULT) &&
agg_arg_collations(collation, agg, nagg))
return;
// Aggregate first expression and all THEN expression types
// and collations when string comparison
if (first_expr_num != -1)
{
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;
max_length=0; max_length=0;
decimals=0; decimals=0;
cached_result_type = args[1]->result_type(); for (uint i=0 ; i < ncases ; i+=2)
for (uint i=0 ; i < arg_count ; i+=2)
{ {
set_if_bigger(max_length,args[i+1]->max_length); set_if_bigger(max_length,args[i+1]->max_length);
set_if_bigger(decimals,args[i+1]->decimals); 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(max_length,args[else_expr_num]->max_length);
set_if_bigger(decimals,else_expr->decimals); set_if_bigger(decimals,args[else_expr_num]->decimals);
} }
} }
...@@ -1144,13 +1104,11 @@ void Item_func_coalesce::fix_length_and_dec() ...@@ -1144,13 +1104,11 @@ void Item_func_coalesce::fix_length_and_dec()
{ {
max_length= 0; max_length= 0;
decimals= 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++) for (uint i=0 ; i < arg_count ; i++)
{ {
set_if_bigger(max_length,args[i]->max_length); set_if_bigger(max_length,args[i]->max_length);
set_if_bigger(decimals,args[i]->decimals); 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) if (cached_result_type == STRING_RESULT)
agg_arg_collations(collation, args, arg_count); agg_arg_collations(collation, args, arg_count);
...@@ -1420,7 +1378,7 @@ int cmp_item_row::compare(cmp_item *c) ...@@ -1420,7 +1378,7 @@ int cmp_item_row::compare(cmp_item *c)
bool Item_func_in::nulls_in_row() bool Item_func_in::nulls_in_row()
{ {
Item **arg,**arg_end; Item **arg,**arg_end;
for (arg= args, arg_end= args+arg_count; arg != arg_end ; arg++) for (arg= args+1, arg_end= args+arg_count; arg != arg_end ; arg++)
{ {
if ((*arg)->null_inside()) if ((*arg)->null_inside())
return 1; return 1;
...@@ -1437,42 +1395,44 @@ static int srtcmp_in(CHARSET_INFO *cs, const String *x,const String *y) ...@@ -1437,42 +1395,44 @@ static int srtcmp_in(CHARSET_INFO *cs, const String *x,const String *y)
void Item_func_in::fix_length_and_dec() void Item_func_in::fix_length_and_dec()
{ {
Item **arg, **arg_end;
uint const_itm= 1;
agg_cmp_type(&cmp_type, args, arg_count);
if ((cmp_type == STRING_RESULT) &&
(agg_arg_collations_for_comparison(cmp_collation, args, arg_count)))
return;
for (arg=args+1, arg_end=args+arg_count; arg != arg_end ; arg++)
const_itm&= arg[0]->const_item();
/* /*
Row item with NULLs inside can return NULL or FALSE => Row item with NULLs inside can return NULL or FALSE =>
they can't be processed as static they can't be processed as static
*/ */
if (const_item() && !nulls_in_row()) if (const_itm && !nulls_in_row())
{ {
switch (item->result_type()) { switch (cmp_type) {
case STRING_RESULT: case STRING_RESULT:
uint i; uint i;
cmp_collation.set(item->collation); array=new in_string(arg_count-1,(qsort2_cmp) srtcmp_in,
for (i=0 ; i<arg_count; i++)
if (cmp_collation.aggregate(args[i]->collation))
break;
if (cmp_collation.derivation == DERIVATION_NONE)
{
my_error(ER_CANT_AGGREGATE_NCOLLATIONS,MYF(0),func_name());
return;
}
array=new in_string(arg_count,(qsort2_cmp) srtcmp_in,
cmp_collation.collation); cmp_collation.collation);
break; break;
case INT_RESULT: case INT_RESULT:
array= new in_longlong(arg_count); array= new in_longlong(arg_count-1);
break; break;
case REAL_RESULT: case REAL_RESULT:
array= new in_double(arg_count); array= new in_double(arg_count-1);
break; break;
case ROW_RESULT: case ROW_RESULT:
array= new in_row(arg_count, item); array= new in_row(arg_count-1, args[0]);
break; break;
default: default:
DBUG_ASSERT(0); DBUG_ASSERT(0);
return; return;
} }
uint j=0; uint j=0;
for (uint i=0 ; i < arg_count ; i++) for (uint i=1 ; i < arg_count ; i++)
{ {
array->set(j,args[i]); array->set(j,args[i]);
if (!args[i]->null_value) // Skip NULL values if (!args[i]->null_value) // Skip NULL values
...@@ -1485,19 +1445,19 @@ void Item_func_in::fix_length_and_dec() ...@@ -1485,19 +1445,19 @@ void Item_func_in::fix_length_and_dec()
} }
else else
{ {
in_item= cmp_item::get_comparator(item); in_item= cmp_item::get_comparator(args[0]);
if (cmp_type == STRING_RESULT)
in_item->cmp_charset= cmp_collation.collation;
} }
maybe_null= item->maybe_null; maybe_null= args[0]->maybe_null;
max_length= 1; max_length= 1;
used_tables_cache|=item->used_tables(); const_item_cache&=args[0]->const_item();
const_item_cache&=item->const_item();
} }
void Item_func_in::print(String *str) void Item_func_in::print(String *str)
{ {
str->append('('); str->append('(');
item->print(str);
Item_func::print(str); Item_func::print(str);
str->append(')'); str->append(')');
} }
...@@ -1507,15 +1467,15 @@ longlong Item_func_in::val_int() ...@@ -1507,15 +1467,15 @@ longlong Item_func_in::val_int()
{ {
if (array) if (array)
{ {
int tmp=array->find(item); int tmp=array->find(args[0]);
null_value=item->null_value || (!tmp && have_null); null_value=args[0]->null_value || (!tmp && have_null);
return tmp; return tmp;
} }
in_item->store_value(item); in_item->store_value(args[0]);
if ((null_value=item->null_value)) if ((null_value=args[0]->null_value))
return 0; return 0;
have_null= 0; have_null= 0;
for (uint i=0 ; i < arg_count ; i++) for (uint i=1 ; i < arg_count ; i++)
{ {
if (!in_item->cmp(args[i]) && !args[i]->null_value) if (!in_item->cmp(args[i]) && !args[i]->null_value)
return 1; // Would maybe be nice with i ? return 1; // Would maybe be nice with i ?
...@@ -1526,29 +1486,6 @@ longlong Item_func_in::val_int() ...@@ -1526,29 +1486,6 @@ longlong Item_func_in::val_int()
} }
void Item_func_in::update_used_tables()
{
Item_func::update_used_tables();
item->update_used_tables();
used_tables_cache|=item->used_tables();
const_item_cache&=item->const_item();
}
void Item_func_in::split_sum_func(Item **ref_pointer_array, List<Item> &fields)
{
if (item->with_sum_func && item->type() != SUM_FUNC_ITEM)
item->split_sum_func(ref_pointer_array, fields);
else if (item->used_tables() || item->type() == SUM_FUNC_ITEM)
{
uint el= fields.elements;
fields.push_front(item);
ref_pointer_array[el]= item;
item= new Item_ref(ref_pointer_array + el, 0, item->name);
}
Item_func::split_sum_func(ref_pointer_array, fields);
}
longlong Item_func_bit_or::val_int() longlong Item_func_bit_or::val_int()
{ {
ulonglong arg1= (ulonglong) args[0]->val_int(); ulonglong arg1= (ulonglong) args[0]->val_int();
......
...@@ -348,27 +348,38 @@ public: ...@@ -348,27 +348,38 @@ public:
class Item_func_case :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; enum Item_result cached_result_type;
String tmp_value; String tmp_value;
bool first_expr_is_binary; uint ncases;
Item_result cmp_type;
DTCollation cmp_collation;
public: public:
Item_func_case(List<Item> &list, Item *first_expr_arg, Item *else_expr_arg) 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) 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(); double val();
longlong val_int(); longlong val_int();
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
void update_used_tables();
enum Item_result result_type () const { return cached_result_type; } enum Item_result result_type () const { return cached_result_type; }
const char *func_name() const { return "case"; } const char *func_name() const { return "case"; }
void print(String *str); 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); Item *find_item(String *str);
void set_outer_resolving();
}; };
...@@ -600,42 +611,27 @@ public: ...@@ -600,42 +611,27 @@ public:
class Item_func_in :public Item_int_func class Item_func_in :public Item_int_func
{ {
Item *item; Item_result cmp_type;
in_vector *array; in_vector *array;
cmp_item *in_item; cmp_item *in_item;
bool have_null; bool have_null;
DTCollation cmp_collation; DTCollation cmp_collation;
public: public:
Item_func_in(Item *a,List<Item> &list) Item_func_in(List<Item> &list)
:Item_int_func(list), item(a), array(0), in_item(0), have_null(0) :Item_int_func(list), array(0), in_item(0), have_null(0)
{ {
allowed_arg_cols= item->cols(); allowed_arg_cols= args[0]->cols();
} }
longlong val_int(); longlong val_int();
bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref)
{
// We do not check item->cols(), because allowed_arg_cols assigned from it
bool res=(item->fix_fields(thd, tlist, &item) ||
Item_func::fix_fields(thd, tlist, ref));
with_sum_func= with_sum_func || item->with_sum_func;
return res;
}
void fix_length_and_dec(); void fix_length_and_dec();
~Item_func_in() { delete item; delete array; delete in_item; } ~Item_func_in() { delete array; delete in_item; }
optimize_type select_optimize() const optimize_type select_optimize() const
{ return array ? OPTIMIZE_KEY : OPTIMIZE_NONE; } { return array ? OPTIMIZE_KEY : OPTIMIZE_NONE; }
Item *key_item() const { return item; } Item *key_item() const { return args[0]; }
void print(String *str); void print(String *str);
enum Functype functype() const { return IN_FUNC; } enum Functype functype() const { return IN_FUNC; }
const char *func_name() const { return " IN "; } const char *func_name() const { return " IN "; }
void update_used_tables();
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
bool nulls_in_row(); bool nulls_in_row();
void set_outer_resolving()
{
item->set_outer_resolving();
Item_int_func::set_outer_resolving();
}
}; };
/* Functions used by where clause */ /* Functions used by where clause */
......
...@@ -102,10 +102,9 @@ eval_const_cond(COND *cond) ...@@ -102,10 +102,9 @@ eval_const_cond(COND *cond)
return ((Item_func*) cond)->val_int() ? TRUE : FALSE; return ((Item_func*) cond)->val_int() ? TRUE : FALSE;
} }
void Item_func::set_arguments(List<Item> &list)
Item_func::Item_func(List<Item> &list)
:allowed_arg_cols(1)
{ {
allowed_arg_cols= 1;
arg_count=list.elements; arg_count=list.elements;
if ((args=(Item**) sql_alloc(sizeof(Item*)*arg_count))) if ((args=(Item**) sql_alloc(sizeof(Item*)*arg_count)))
{ {
...@@ -122,6 +121,12 @@ Item_func::Item_func(List<Item> &list) ...@@ -122,6 +121,12 @@ Item_func::Item_func(List<Item> &list)
list.empty(); // Fields are used 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 Resolve references to table column for a function and it's argument
......
...@@ -115,6 +115,7 @@ public: ...@@ -115,6 +115,7 @@ public:
virtual const char *func_name() const { return "?"; } virtual const char *func_name() const { return "?"; }
virtual bool const_item() const { return const_item_cache; } virtual bool const_item() const { return const_item_cache; }
inline Item **arguments() const { return args; } inline Item **arguments() const { return args; }
void set_arguments(List<Item> &list);
inline uint argument_count() const { return arg_count; } inline uint argument_count() const { return arg_count; }
inline void remove_arguments() { arg_count=0; } inline void remove_arguments() { arg_count=0; }
virtual void split_sum_func(Item **ref_pointer_array, List<Item> &fields); virtual void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
......
...@@ -225,6 +225,12 @@ const char *localhost= "localhost", *delayed_user= "DELAYED"; ...@@ -225,6 +225,12 @@ const char *localhost= "localhost", *delayed_user= "DELAYED";
#endif #endif
bool opt_large_files= sizeof(my_off_t) > 4; 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_cmp_func Arg_comparator::comparator_matrix[4][2] =
{{&Arg_comparator::compare_string, &Arg_comparator::compare_e_string}, {{&Arg_comparator::compare_string, &Arg_comparator::compare_e_string},
{&Arg_comparator::compare_real, &Arg_comparator::compare_e_real}, {&Arg_comparator::compare_real, &Arg_comparator::compare_e_real},
...@@ -3638,6 +3644,9 @@ Disable with --skip-bdb (will save memory).", ...@@ -3638,6 +3644,9 @@ Disable with --skip-bdb (will save memory).",
#endif /* End HAVE_INNOBASE_DB */ #endif /* End HAVE_INNOBASE_DB */
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
0, 0, 0, 0, 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.", {"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, (gptr*) &opt_init_file, (gptr*) &opt_init_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
...@@ -3973,8 +3982,6 @@ replicating a LOAD DATA INFILE command.", ...@@ -3973,8 +3982,6 @@ replicating a LOAD DATA INFILE command.",
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0}, 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.", {"log-warnings", 'W', "Log some not critical warnings to the log file.",
(gptr*) &global_system_variables.log_warnings, (gptr*) &global_system_variables.log_warnings,
(gptr*) &max_system_variables.log_warnings, 0, GET_BOOL, NO_ARG, 0, 0, 0, (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\ ...@@ -4573,6 +4580,10 @@ and you are welcome to modify and redistribute it under the GPL license\n\
Starts the MySQL server\n"); Starts the MySQL server\n");
printf("Usage: %s [OPTIONS]\n", my_progname); 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__ #ifdef __WIN__
puts("NT and Win32 specific options:\n\ puts("NT and Win32 specific options:\n\
--install Install the default service (NT)\n\ --install Install the default service (NT)\n\
...@@ -4596,7 +4607,8 @@ Starts the MySQL server\n"); ...@@ -4596,7 +4607,8 @@ Starts the MySQL server\n");
puts("\n\ puts("\n\
To see what values a running MySQL server is using, type\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)), ...@@ -4871,6 +4883,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
#endif #endif
#include <sslopt-case.h> #include <sslopt-case.h>
case 'v': case 'v':
usage();
exit(0);
case 'V': case 'V':
print_version(); print_version();
exit(0); exit(0);
......
...@@ -832,10 +832,10 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond) ...@@ -832,10 +832,10 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond)
Field *field=((Item_field*) (func->key_item()))->field; Field *field=((Item_field*) (func->key_item()))->field;
Item_result cmp_type=field->cmp_type(); Item_result cmp_type=field->cmp_type();
tree= get_mm_parts(param,field,Item_func::EQ_FUNC, tree= get_mm_parts(param,field,Item_func::EQ_FUNC,
func->arguments()[0],cmp_type); func->arguments()[1],cmp_type);
if (!tree) if (!tree)
DBUG_RETURN(tree); // Not key field DBUG_RETURN(tree); // Not key field
for (uint i=1 ; i < func->argument_count(); i++) for (uint i=2 ; i < func->argument_count(); i++)
{ {
SEL_TREE *new_tree=get_mm_parts(param,field,Item_func::EQ_FUNC, SEL_TREE *new_tree=get_mm_parts(param,field,Item_func::EQ_FUNC,
func->arguments()[i],cmp_type); func->arguments()[i],cmp_type);
......
...@@ -44,8 +44,8 @@ v/* ...@@ -44,8 +44,8 @@ v/*
"Obsluha tabulky '%-.64s' nem-B tento parametr", "Obsluha tabulky '%-.64s' nem-B tento parametr",
"Nemohu naj-Bt zznam v '%-.64s'", "Nemohu naj-Bt zznam v '%-.64s'",
"Nespr-Bvn informace v souboru '%-.64s'", "Nespr-Bvn informace v souboru '%-.64s'",
"Nespr-Bvn kl pro tabulku '%-.64s'. Pokuste se ho opravit", "Nespr-Bvn kl pro tabulku '%-.64s'; pokuste se ho opravit",
"Star-B klov soubor pro '%-.64s'. Opravte ho.", "Star-B klov soubor pro '%-.64s'; opravte ho.",
"'%-.64s' je jen pro -Bten", "'%-.64s' je jen pro -Bten",
"M-Blo pamti. Pestartujte daemona a zkuste znovu (je poteba %d byt)", "M-Blo pamti. Pestartujte daemona a zkuste znovu (je poteba %d byt)",
"M-Blo pamti pro tdn. Zvyte velikost tdcho bufferu", "M-Blo pamti pro tdn. Zvyte velikost tdcho bufferu",
......
...@@ -13,19 +13,19 @@ ...@@ -13,19 +13,19 @@
"Kan ikke oprette databasen '%-.64s' (Fejlkode: %d)", "Kan ikke oprette databasen '%-.64s' (Fejlkode: %d)",
"Kan ikke oprette databasen '%-.64s'; databasen eksisterer", "Kan ikke oprette databasen '%-.64s'; databasen eksisterer",
"Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke", "Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke",
"Fejl ved sletning (drop) af databasen (kan ikke slette '%-.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', Fejl %d)", "Fejl ved sletting af database (kan ikke slette folderen '%-.64s', Fejlkode %d)",
"Fejl ved sletning af '%-.64s' (Fejlkode: %d)", "Fejl ved sletning af '%-.64s' (Fejlkode: %d)",
"Kan ikke læse posten i systemfolderen", "Kan ikke læse posten i systemfolderen",
"Kan ikke læse status af '%-.64s' (Fejlkode: %d)", "Kan ikke læse status af '%-.64s' (Fejlkode: %d)",
"Kan ikke læse aktive folder (Fejlkode: %d)", "Kan ikke læse aktive folder (Fejlkode: %d)",
"Kan ikke låse fil (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 finde fila: '%-.64s' (Fejlkode: %d)",
"Kan ikke læse folder '%-.64s' (Fejlkode: %d)", "Kan ikke læse folder '%-.64s' (Fejlkode: %d)",
"Kan ikke skifte folder til '%-.64s' (Fejlkode: %d)", "Kan ikke skifte folder til '%-.64s' (Fejlkode: %d)",
"Posten er ændret siden sidste læsning '%-.64s'", "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'", "Kan ikke skrive, flere ens nøgler i tabellen '%-.64s'",
"Fejl ved lukning af '%-.64s' (Fejlkode: %d)", "Fejl ved lukning af '%-.64s' (Fejlkode: %d)",
"Fejl ved læsning af '%-.64s' (Fejlkode: %d)", "Fejl ved læsning af '%-.64s' (Fejlkode: %d)",
...@@ -38,8 +38,8 @@ ...@@ -38,8 +38,8 @@
"Denne mulighed eksisterer ikke for tabeltypen '%-.64s'", "Denne mulighed eksisterer ikke for tabeltypen '%-.64s'",
"Kan ikke finde posten i '%-.64s'", "Kan ikke finde posten i '%-.64s'",
"Forkert indhold i: '%-.64s'", "Forkert indhold i: '%-.64s'",
"Fejl i indeksfilen til tabellen '%-.64s', prøv at reparere den", "Fejl i indeksfilen til tabellen '%-.64s'; prøv at reparere den",
"Gammel indeksfil for tabellen '%-.64s'; Reparer den", "Gammel indeksfil for tabellen '%-.64s'; reparer den",
"'%-.64s' er skrivebeskyttet", "'%-.64s' er skrivebeskyttet",
"Ikke mere hukommelse. Genstart serveren og prøv igen (mangler %d bytes)", "Ikke mere hukommelse. Genstart serveren og prøv igen (mangler %d bytes)",
"Ikke mere sorteringshukommelse. Øg sorteringshukommelse (sort buffer size) for serveren", "Ikke mere sorteringshukommelse. Øg sorteringshukommelse (sort buffer size) for serveren",
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
"Kan de status niet krijgen van '%-.64s' (Errcode: %d)", "Kan de status niet krijgen van '%-.64s' (Errcode: %d)",
"Kan de werkdirectory niet krijgen (Errcode: %d)", "Kan de werkdirectory niet krijgen (Errcode: %d)",
"Kan de file niet blokeren (Errcode: %d)", "Kan de file niet blokeren (Errcode: %d)",
"Kan de file '%-.64s' niet openen. (Errcode: %d)", "Kan de file '%-.64s' niet openen (Errcode: %d)",
"Kan de file: '%-.64s' niet vinden. (Errcode: %d)", "Kan de file: '%-.64s' niet vinden (Errcode: %d)",
"Kan de directory niet lezen van '%-.64s' (Errcode: %d)", "Kan de directory niet lezen van '%-.64s' (Errcode: %d)",
"Kan de directory niet veranderen naar '%-.64s' (Errcode: %d)", "Kan de directory niet veranderen naar '%-.64s' (Errcode: %d)",
"Record is veranderd sinds de laatste lees activiteit in de tabel '%-.64s'", "Record is veranderd sinds de laatste lees activiteit in de tabel '%-.64s'",
...@@ -46,8 +46,8 @@ ...@@ -46,8 +46,8 @@
"Tabel handler voor '%-.64s' heeft deze optie niet", "Tabel handler voor '%-.64s' heeft deze optie niet",
"Kan record niet vinden in '%-.64s'", "Kan record niet vinden in '%-.64s'",
"Verkeerde info in file: '%-.64s'", "Verkeerde info in file: '%-.64s'",
"Verkeerde zoeksleutel file voor tabel: '%-.64s'. Probeer het te repareren", "Verkeerde zoeksleutel file voor tabel: '%-.64s'; probeer het te repareren",
"Oude zoeksleutel file voor tabel '%-.64s'; Repareer het!", "Oude zoeksleutel file voor tabel '%-.64s'; repareer het!",
"'%-.64s' is alleen leesbaar", "'%-.64s' is alleen leesbaar",
"Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)", "Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)",
"Geen geheugen om te sorteren. Verhoog de server sort buffer size", "Geen geheugen om te sorteren. Verhoog de server sort buffer size",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
"Can't get status of '%-.64s' (errno: %d)", "Can't get status of '%-.64s' (errno: %d)",
"Can't get working directory (errno: %d)", "Can't get working directory (errno: %d)",
"Can't lock file (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 find file: '%-.64s' (errno: %d)",
"Can't read dir of '%-.64s' (errno: %d)", "Can't read dir of '%-.64s' (errno: %d)",
"Can't change dir to '%-.64s' (errno: %d)", "Can't change dir to '%-.64s' (errno: %d)",
"Record has changed since last read in table '%-.64s'", "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'", "Can't write, duplicate key in table '%-.64s'",
"Error on close of '%-.64s' (errno: %d)", "Error on close of '%-.64s' (errno: %d)",
"Error reading file '%-.64s' (errno: %d)", "Error reading file '%-.64s' (errno: %d)",
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
"Table storage engine for '%-.64s' doesn't have this option", "Table storage engine for '%-.64s' doesn't have this option",
"Can't find record in '%-.64s'", "Can't find record in '%-.64s'",
"Incorrect information in file: '%-.64s'", "Incorrect information in file: '%-.64s'",
"Incorrect key file for table: '%-.64s'. Try to repair it", "Incorrect key file for table: '%-.64s'; try to repair it",
"Old key file for table '%-.64s'; Repair it!", "Old key file for table '%-.64s'; repair it!",
"Table '%-.64s' is read only", "Table '%-.64s' is read only",
"Out of memory. Restart daemon and try again (needed %d bytes)", "Out of memory. Restart daemon and try again (needed %d bytes)",
"Out of sort memory. Increase daemon sort buffer size", "Out of sort memory. Increase daemon sort buffer size",
...@@ -85,12 +85,12 @@ ...@@ -85,12 +85,12 @@
"Can't create IP socket", "Can't create IP socket",
"Table '%-.64s' has no index like the one used in CREATE INDEX. Recreate the table", "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", "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", "The file '%-.64s' must be in the database directory or be readable by all",
"File '%-.80s' already exists", "File '%-.80s' already exists",
"Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld", "Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld",
"Records: %ld Duplicates: %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", "You can't delete all columns with ALTER TABLE. Use DROP TABLE instead",
"Can't DROP '%-.64s'. Check that column/key exists", "Can't DROP '%-.64s'. Check that column/key exists",
"Records: %ld Duplicates: %ld Warnings: %ld", "Records: %ld Duplicates: %ld Warnings: %ld",
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
"There is no such grant defined for user '%-.32s' on host '%-.64s'", "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 table '%-.64s'",
"%-.16s command denied to user: '%-.32s@%-.64s' for column '%-.64s' in 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", "The host or user argument to GRANT is too long",
"Table '%-.64s.%-.64s' doesn't exist", "Table '%-.64s.%-.64s' doesn't exist",
"There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'", "There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'",
...@@ -186,7 +186,7 @@ ...@@ -186,7 +186,7 @@
"Got error %d during FLUSH_LOGS", "Got error %d during FLUSH_LOGS",
"Got error %d during CHECKPOINT", "Got error %d during CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", "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", "Binlog closed, cannot RESET MASTER",
"Failed rebuilding the index of dumped table '%-.64s'", "Failed rebuilding the index of dumped table '%-.64s'",
"Error from master: '%-.64s'", "Error from master: '%-.64s'",
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
"Ei suuda lugeda '%-.64s' olekut (veakood: %d)", "Ei suuda lugeda '%-.64s' olekut (veakood: %d)",
"Ei suuda identifitseerida jooksvat kataloogi (veakood: %d)", "Ei suuda identifitseerida jooksvat kataloogi (veakood: %d)",
"Ei suuda lukustada faili (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 leida faili '%-.64s' (veakood: %d)",
"Ei suuda lugeda kataloogi '%-.64s' (veakood: %d)", "Ei suuda lugeda kataloogi '%-.64s' (veakood: %d)",
"Ei suuda siseneda kataloogi '%-.64s' (veakood: %d)", "Ei suuda siseneda kataloogi '%-.64s' (veakood: %d)",
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
"Tabeli '%-.64s' handler ei toeta antud operatsiooni", "Tabeli '%-.64s' handler ei toeta antud operatsiooni",
"Ei suuda leida kirjet '%-.64s'-s", "Ei suuda leida kirjet '%-.64s'-s",
"Vigane informatsioon failis '%-.64s'", "Vigane informatsioon failis '%-.64s'",
"Tabeli '%-.64s' vtmefail on vigane; Proovi seda parandada", "Tabeli '%-.64s' vtmefail on vigane; proovi seda parandada",
"Tabeli '%-.64s' vtmefail on aegunud; Paranda see!", "Tabeli '%-.64s' vtmefail on aegunud; paranda see!",
"Tabel '%-.64s' on ainult lugemiseks", "Tabel '%-.64s' on ainult lugemiseks",
"Mlu sai otsa. Proovi MySQL uuesti kivitada (puudu ji %d baiti)", "Mlu sai otsa. Proovi MySQL uuesti kivitada (puudu ji %d baiti)",
"Mlu sai sorteerimisel otsa. Suurenda MySQL-i sorteerimispuhvrit", "Mlu sai sorteerimisel otsa. Suurenda MySQL-i sorteerimispuhvrit",
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
"Ne peut obtenir le status de '%-.64s' (Errcode: %d)", "Ne peut obtenir le status de '%-.64s' (Errcode: %d)",
"Ne peut obtenir le répertoire de travail (Errcode: %d)", "Ne peut obtenir le répertoire de travail (Errcode: %d)",
"Ne peut verrouiller le fichier (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 trouver le fichier: '%-.64s' (Errcode: %d)",
"Ne peut lire le répertoire de '%-.64s' (Errcode: %d)", "Ne peut lire le répertoire de '%-.64s' (Errcode: %d)",
"Ne peut changer le répertoire pour '%-.64s' (Errcode: %d)", "Ne peut changer le répertoire pour '%-.64s' (Errcode: %d)",
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
"Le handler de la table '%-.64s' n'a pas cette option", "Le handler de la table '%-.64s' n'a pas cette option",
"Ne peut trouver l'enregistrement dans '%-.64s'", "Ne peut trouver l'enregistrement dans '%-.64s'",
"Information erronnée dans le fichier: '%-.64s'", "Information erronnée dans le fichier: '%-.64s'",
"Index corrompu dans la table: '%-.64s'. Essayez de le réparer", "Index corrompu dans la table: '%-.64s'; essayez de le réparer",
"Vieux fichier d'index pour la table '%-.64s'; Réparez le!", "Vieux fichier d'index pour la table '%-.64s'; réparez le!",
"'%-.64s' est en lecture seulement", "'%-.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. Redémarrez le démon et ré-essayez (%d octets nécessaires)",
"Manque de mémoire pour le tri. Augmentez-la.", "Manque de mémoire pour le tri. Augmentez-la.",
......
...@@ -26,27 +26,27 @@ ...@@ -26,27 +26,27 @@
"Kann Status von '%-.64s' nicht ermitteln. (Fehler: %d)", "Kann Status von '%-.64s' nicht ermitteln. (Fehler: %d)",
"Kann Arbeitsverzeichnis nicht ermitteln. (Fehler: %d)", "Kann Arbeitsverzeichnis nicht ermitteln. (Fehler: %d)",
"Datei nicht sperrbar. (Fehler: %d)", "Datei nicht sperrbar. (Fehler: %d)",
"Kann Datei '%-.64s' nicht öffnen. (Fehler: %d)", "Kann Datei '%-.64s' nicht öffnen (Fehler: %d)",
"Kann Datei '%-.64s' nicht finden. (Fehler: %d)", "Kann Datei '%-.64s' nicht finden (Fehler: %d)",
"Verzeichnis von '%-.64s' nicht lesbar. (Fehler: %d)", "Verzeichnis von '%-.64s' nicht lesbar (Fehler: %d)",
"Kann nicht in das Verzeichnis '%-.64s' wechseln. (Fehler: %d)", "Kann nicht in das Verzeichnis '%-.64s' wechseln (Fehler: %d)",
"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert.", "Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert",
"Festplatte voll (%-.64s). Warte bis jemand Platz schafft ...", "Festplatte voll (%-.64s). Warte bis jemand Platz schafft ...",
"Kann nicht speichern, doppelter Schlüssel in Tabelle '%-.64s'.", "Kann nicht speichern, doppelter Schlüssel in Tabelle '%-.64s'",
"Fehler beim Schließen von '%-.64s'. (Fehler: %d)", "Fehler beim Schließen von '%-.64s' (Fehler: %d)",
"Fehler beim Lesen der Datei '%-.64s'. (Fehler: %d)", "Fehler beim Lesen der Datei '%-.64s' (Fehler: %d)",
"Fehler beim Umbenennen von '%-.64s' nach '%-.64s'. (Fehler: %d)", "Fehler beim Umbenennen von '%-.64s' nach '%-.64s' (Fehler: %d)",
"Fehler beim Speichern der Datei '%-.64s'. (Fehler: %d)", "Fehler beim Speichern der Datei '%-.64s' (Fehler: %d)",
"'%-.64s' ist für Veränderungen gesperrt.", "'%-.64s' ist für Veränderungen gesperrt",
"Sortieren abgebrochen.", "Sortieren abgebrochen",
"View '%-.64s' existiert für '%-.64s' nicht.", "View '%-.64s' existiert für '%-.64s' nicht",
"Fehler %d. (Tabellenhandler)", "Fehler %d (Tabellenhandler)",
"Diese Option gibt es nicht. (Tabellenhandler)", "Diese Option gibt es nicht (Tabellenhandler)",
"Kann Datensatz nicht finden.", "Kann Datensatz nicht finden",
"Falsche Information in Datei: '%-.64s'", "Falsche Information in Datei: '%-.64s'",
"Falsche Schlüssel-Datei für Tabelle '%-.64s'. Versuche zu reparieren!", "Falsche Schlüssel-Datei für Tabelle '%-.64s'; versuche zu reparieren!",
"Alte Schlüssel-Datei für Tabelle '%-.64s'. Repariere!", "Alte Schlüssel-Datei für Tabelle '%-.64s'; repariere!",
"'%-.64s' ist nur lesbar.", "'%-.64s' ist nur lesbar",
"Kein Speicher vorhanden (benötigt %d bytes). Server neu starten.", "Kein Speicher vorhanden (benötigt %d bytes). Server neu starten.",
"Kein Speicher zum Sortieren. sort_buffer_size sollte erhöht werden.", "Kein Speicher zum Sortieren. sort_buffer_size sollte erhöht werden.",
"Unerwartetes Ende beim Lesen der Datei '%-.64s'. (Fehler: %d)", "Unerwartetes Ende beim Lesen der Datei '%-.64s'. (Fehler: %d)",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
" '%-.64s' ( : %d)", " '%-.64s' ( : %d)",
" ( : %d)", " ( : %d)",
" ( : %d)", " ( : %d)",
" : '%-.64s'. ( : %d)", " : '%-.64s' ( : %d)",
" : '%-.64s' ( : %d)", " : '%-.64s' ( : %d)",
" '%-.64s' ( : %d)", " '%-.64s' ( : %d)",
" '%-.64s' ( : %d)", " '%-.64s' ( : %d)",
" '%-.64s'", " '%-.64s'",
" (%s). , ....", " (%s). , ...",
" , '%-.64s'", " , '%-.64s'",
" '%-.64s' ( : %d)", " '%-.64s' ( : %d)",
" '%-.64s' ( : %d)", " '%-.64s' ( : %d)",
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
" (table handler) '%-.64s' ", " (table handler) '%-.64s' ",
" '%-.64s'", " '%-.64s'",
" : '%-.64s'", " : '%-.64s'",
" (key file) : '%-.64s'. , !", " (key file) : '%-.64s'; , !",
" (key file) '%-.64s'; , !", " (key file) '%-.64s'; , !",
"'%-.64s' ", "'%-.64s' ",
" . , (demon) ( %d bytes)", " . , (demon) ( %d bytes)",
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
"A(z) '%-.64s' statusza nem allapithato meg (hibakod: %d)", "A(z) '%-.64s' statusza nem allapithato meg (hibakod: %d)",
"A munkakonyvtar nem allapithato meg (hibakod: %d)", "A munkakonyvtar nem allapithato meg (hibakod: %d)",
"A file nem zarolhato. (hibakod: %d)", "A file nem zarolhato. (hibakod: %d)",
"A '%-.64s' file nem nyithato meg. (hibakod: %d)", "A '%-.64s' file nem nyithato meg (hibakod: %d)",
"A(z) '%-.64s' file nem talalhato. (hibakod: %d)", "A(z) '%-.64s' file nem talalhato (hibakod: %d)",
"A(z) '%-.64s' konyvtar nem olvashato. (hibakod: %d)", "A(z) '%-.64s' konyvtar nem olvashato. (hibakod: %d)",
"Konyvtarvaltas nem lehetseges a(z) '%-.64s'-ba. (hibakod: %d)", "Konyvtarvaltas nem lehetseges a(z) '%-.64s'-ba. (hibakod: %d)",
"A(z) '%-.64s' tablaban talalhato rekord megvaltozott az utolso olvasas ota", "A(z) '%-.64s' tablaban talalhato rekord megvaltozott az utolso olvasas ota",
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
"A(z) '%-.64s' tablakezelonek nincs ilyen opcioja", "A(z) '%-.64s' tablakezelonek nincs ilyen opcioja",
"Nem talalhato a rekord '%-.64s'-ben", "Nem talalhato a rekord '%-.64s'-ben",
"Ervenytelen info a file-ban: '%-.64s'", "Ervenytelen info a file-ban: '%-.64s'",
"Ervenytelen kulcsfile a tablahoz: '%-.64s'. Probalja kijavitani!", "Ervenytelen kulcsfile a tablahoz: '%-.64s'; probalja kijavitani!",
"Regi kulcsfile a '%-.64s'tablahoz; Probalja kijavitani!", "Regi kulcsfile a '%-.64s'tablahoz; probalja kijavitani!",
"'%-.64s' irasvedett", "'%-.64s' irasvedett",
"Nincs eleg memoria. Inditsa ujra a demont, es probalja ismet. (%d byte szukseges.)", "Nincs eleg memoria. Inditsa ujra a demont, es probalja ismet. (%d byte szukseges.)",
"Nincs eleg memoria a rendezeshez. Novelje a rendezo demon puffermeretet", "Nincs eleg memoria a rendezeshez. Novelje a rendezo demon puffermeretet",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
"Impossibile leggere lo stato di '%-.64s' (errno: %d)", "Impossibile leggere lo stato di '%-.64s' (errno: %d)",
"Impossibile leggere la directory di lavoro (errno: %d)", "Impossibile leggere la directory di lavoro (errno: %d)",
"Impossibile il locking il file (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 trovare il file: '%-.64s' (errno: %d)",
"Impossibile leggere la directory di '%-.64s' (errno: %d)", "Impossibile leggere la directory di '%-.64s' (errno: %d)",
"Impossibile cambiare la directory in '%-.64s' (errno: %d)", "Impossibile cambiare la directory in '%-.64s' (errno: %d)",
"Il record e` cambiato dall'ultima lettura della tabella '%-.64s'", "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'", "Scrittura impossibile: chiave duplicata nella tabella '%-.64s'",
"Errore durante la chiusura di '%-.64s' (errno: %d)", "Errore durante la chiusura di '%-.64s' (errno: %d)",
"Errore durante la lettura del file '%-.64s' (errno: %d)", "Errore durante la lettura del file '%-.64s' (errno: %d)",
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
"Il gestore delle tabelle per '%-.64s' non ha questa opzione", "Il gestore delle tabelle per '%-.64s' non ha questa opzione",
"Impossibile trovare il record in '%-.64s'", "Impossibile trovare il record in '%-.64s'",
"Informazione errata nel file: '%-.64s'", "Informazione errata nel file: '%-.64s'",
"File chiave errato per la tabella : '%-.64s'. Prova a riparalo", "File chiave errato per la tabella : '%-.64s'; prova a riparalo",
"File chiave vecchio per la tabella '%-.64s'; Riparalo!", "File chiave vecchio per la tabella '%-.64s'; riparalo!",
"'%-.64s' e` di sola lettura", "'%-.64s' e` di sola lettura",
"Memoria esaurita. Fai ripartire il demone e riprova (richiesti %d bytes)", "Memoria esaurita. Fai ripartire il demone e riprova (richiesti %d bytes)",
"Memoria per gli ordinamenti esaurita. Incrementare il 'sort_buffer' al demone", "Memoria per gli ordinamenti esaurita. Incrementare il 'sort_buffer' al demone",
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
"'%-.64s' の削除がエラー (errno: %d)", "'%-.64s' の削除がエラー (errno: %d)",
"system table のレコードを読む事ができませんでした", "system table のレコードを読む事ができませんでした",
"'%-.64s' のステイタスが得られません. (errno: %d)", "'%-.64s' のステイタスが得られません. (errno: %d)",
"working directory を得る事ができませんでした. (errno: %d)", "working directory を得る事ができませんでした (errno: %d)",
"ファイルをロックできません.(errno: %d)", "ファイルをロックできません (errno: %d)",
"'%-.64s' ファイルを開く事ができません.(errno: %d)", "'%-.64s' ファイルを開く事ができません (errno: %d)",
"'%-.64s' ファイルを見付ける事ができません.(errno: %d)", "'%-.64s' ファイルを見付ける事ができません.(errno: %d)",
"'%-.64s' ディレクトリが読めません.(errno: %d)", "'%-.64s' ディレクトリが読めません.(errno: %d)",
"'%-.64s' ディレクトリに chdir できません.(errno: %d)", "'%-.64s' ディレクトリに chdir できません.(errno: %d)",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
"'%-.64s'의 상태를 얻지 못했습니다. (에러번호: %d)", "'%-.64s'의 상태를 얻지 못했습니다. (에러번호: %d)",
"수행 디렉토리를 찾지 못했습니다. (에러번호: %d)", "수행 디렉토리를 찾지 못했습니다. (에러번호: %d)",
"화일을 잠그지(lock) 못했습니다. (에러번호: %d)", "화일을 잠그지(lock) 못했습니다. (에러번호: %d)",
"화일을 열지 못했습니다.: '%-.64s'. (에러번호: %d)", "화일을 열지 못했습니다.: '%-.64s' (에러번호: %d)",
"화일을 찾지 못했습니다.: '%-.64s' (에러번호: %d)", "화일을 찾지 못했습니다.: '%-.64s' (에러번호: %d)",
"'%-.64s'디렉토리를 읽지 못했습니다. (에러번호: %d)", "'%-.64s'디렉토리를 읽지 못했습니다. (에러번호: %d)",
"'%-.64s'디렉토리로 이동할 수 없었습니다. (에러번호: %d)", "'%-.64s'디렉토리로 이동할 수 없었습니다. (에러번호: %d)",
"테이블 '%-.64s'에서 마지막으로 읽은 후 Record가 변경되었습니다.", "테이블 '%-.64s'에서 마지막으로 읽은 후 Record가 변경되었습니다.",
"Disk full (%s). 다른 사람이 지울때까지 기다립니다.....", "Disk full (%s). 다른 사람이 지울때까지 기다립니다...",
"기록할 수 없읍니다., 테이블 '%-.64s'에서 중복 키", "기록할 수 없읍니다., 테이블 '%-.64s'에서 중복 키",
"'%-.64s'닫는 중 에러 (에러번호: %d)", "'%-.64s'닫는 중 에러 (에러번호: %d)",
"'%-.64s'화일 읽기 에러 (에러번호: %d)", "'%-.64s'화일 읽기 에러 (에러번호: %d)",
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
"'%-.32s@%-.64s' 사용자는 '%-.64s' 데이타베이스에 접근이 거부 되었습니다.", "'%-.32s@%-.64s' 사용자는 '%-.64s' 데이타베이스에 접근이 거부 되었습니다.",
"'%-.32s@%-.64s' 사용자는 접근이 거부 되었습니다. (Using password: %s)", "'%-.32s@%-.64s' 사용자는 접근이 거부 되었습니다. (Using password: %s)",
"선택된 데이타베이스가 없습니다.", "선택된 데이타베이스가 없습니다.",
"명령어가 뭔지 모르겠어요....", "명령어가 뭔지 모르겠어요...",
"칼럼 '%-.64s'는 널(Null)이 되면 안됩니다. ", "칼럼 '%-.64s'는 널(Null)이 되면 안됩니다. ",
"데이타베이스 '%-.64s'는 알수 없음", "데이타베이스 '%-.64s'는 알수 없음",
"테이블 '%-.64s'는 이미 존재함", "테이블 '%-.64s'는 이미 존재함",
......
...@@ -19,12 +19,12 @@ ...@@ -19,12 +19,12 @@
"Kan ikkje lese statusen til '%-.64s' (Feilkode: %d)", "Kan ikkje lese statusen til '%-.64s' (Feilkode: %d)",
"Kan ikkje lese aktiv katalog(Feilkode: %d)", "Kan ikkje lese aktiv katalog(Feilkode: %d)",
"Kan ikkje lse fila (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 finne fila: '%-.64s' (Feilkode: %d)",
"Kan ikkje lese katalogen '%-.64s' (Feilkode: %d)", "Kan ikkje lese katalogen '%-.64s' (Feilkode: %d)",
"Kan ikkje skifte katalog til '%-.64s' (Feilkode: %d)", "Kan ikkje skifte katalog til '%-.64s' (Feilkode: %d)",
"Posten har vorte endra sidan den sist vart lesen '%-.64s'", "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'", "Kan ikkje skrive, flere like nyklar i tabellen '%-.64s'",
"Feil ved lukking av '%-.64s' (Feilkode: %d)", "Feil ved lukking av '%-.64s' (Feilkode: %d)",
"Feil ved lesing av '%-.64s' (Feilkode: %d)", "Feil ved lesing av '%-.64s' (Feilkode: %d)",
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
"Tabell hndteraren for '%-.64s' har ikkje denne moglegheita", "Tabell hndteraren for '%-.64s' har ikkje denne moglegheita",
"Kan ikkje finne posten i '%-.64s'", "Kan ikkje finne posten i '%-.64s'",
"Feil informasjon i fila: '%-.64s'", "Feil informasjon i fila: '%-.64s'",
"Tabellen '%-.64s' har feil i nykkelfila, Prv reparere den", "Tabellen '%-.64s' har feil i nykkelfila; prv reparere den",
"Gammel nykkelfil for tabellen '%-.64s'; Reparer den!", "Gammel nykkelfil for tabellen '%-.64s'; reparer den!",
"'%-.64s' er skrivetryggja", "'%-.64s' er skrivetryggja",
"Ikkje meir minne. Start p nytt tenesten og prv igjen (trengte %d bytar)", "Ikkje meir minne. Start p nytt tenesten og prv igjen (trengte %d bytar)",
"Ikkje meir sorteringsminne. Auk sorteringsminnet (sorteringsbffer storleik) for tenesten", "Ikkje meir sorteringsminne. Auk sorteringsminnet (sorteringsbffer storleik) for tenesten",
......
...@@ -19,12 +19,12 @@ ...@@ -19,12 +19,12 @@
"Kan ikke lese statusen til '%-.64s' (Feilkode: %d)", "Kan ikke lese statusen til '%-.64s' (Feilkode: %d)",
"Kan ikke lese aktiv katalog(Feilkode: %d)", "Kan ikke lese aktiv katalog(Feilkode: %d)",
"Kan ikke låse fila (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 finne fila: '%-.64s' (Feilkode: %d)",
"Kan ikke lese katalogen '%-.64s' (Feilkode: %d)", "Kan ikke lese katalogen '%-.64s' (Feilkode: %d)",
"Kan ikke skifte katalog til '%-.64s' (Feilkode: %d)", "Kan ikke skifte katalog til '%-.64s' (Feilkode: %d)",
"Posten har blitt endret siden den ble lest '%-.64s'", "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'", "Kan ikke skrive, flere like nøkler i tabellen '%-.64s'",
"Feil ved lukking av '%-.64s' (Feilkode: %d)", "Feil ved lukking av '%-.64s' (Feilkode: %d)",
"Feil ved lesing av '%-.64s' (Feilkode: %d)", "Feil ved lesing av '%-.64s' (Feilkode: %d)",
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
"Tabell håndtereren for '%-.64s' har ikke denne muligheten", "Tabell håndtereren for '%-.64s' har ikke denne muligheten",
"Kan ikke finne posten i '%-.64s'", "Kan ikke finne posten i '%-.64s'",
"Feil informasjon i filen: '%-.64s'", "Feil informasjon i filen: '%-.64s'",
"Tabellen '%-.64s' har feil i nøkkelfilen, forsøk å reparer den", "Tabellen '%-.64s' har feil i nøkkelfilen; forsøk å reparer den",
"Gammel nøkkelfil for tabellen '%-.64s'; Reparer den!", "Gammel nøkkelfil for tabellen '%-.64s'; reparer den!",
"'%-.64s' er skrivebeskyttet", "'%-.64s' er skrivebeskyttet",
"Ikke mer minne. Star på nytt tjenesten og prøv igjen (trengte %d byter)", "Ikke mer minne. Star på nytt tjenesten og prøv igjen (trengte %d byter)",
"Ikke mer sorteringsminne. Øk sorteringsminnet (sort buffer size) for tjenesten", "Ikke mer sorteringsminne. Øk sorteringsminnet (sort buffer size) for tjenesten",
......
...@@ -21,12 +21,12 @@ ...@@ -21,12 +21,12 @@
"Nie mona otrzyma statusu '%-.64s' (Kod bdu: %d)", "Nie mona otrzyma statusu '%-.64s' (Kod bdu: %d)",
"Nie mona rozpozna aktualnego katalogu (Kod bdu: %d)", "Nie mona rozpozna aktualnego katalogu (Kod bdu: %d)",
"Nie mona zablokowa pliku (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 znale pliku: '%-.64s' (Kod bdu: %d)",
"Nie mona odczyta katalogu '%-.64s' (Kod bdu: %d)", "Nie mona odczyta katalogu '%-.64s' (Kod bdu: %d)",
"Nie mona zmieni katalogu na '%-.64s' (Kod bdu: %d)", "Nie mona zmieni katalogu na '%-.64s' (Kod bdu: %d)",
"Rekord zosta zmieniony od ostaniego odczytania z tabeli '%-.64s'", "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'", "Nie mona zapisa, powtrzone klucze w tabeli '%-.64s'",
"B?d podczas zamykania '%-.64s' (Kod bdu: %d)", "B?d podczas zamykania '%-.64s' (Kod bdu: %d)",
"B?d podczas odczytu pliku '%-.64s' (Kod bdu: %d)", "B?d podczas odczytu pliku '%-.64s' (Kod bdu: %d)",
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
"Obsuga tabeli '%-.64s' nie posiada tej opcji", "Obsuga tabeli '%-.64s' nie posiada tej opcji",
"Nie mona znale rekordu w '%-.64s'", "Nie mona znale rekordu w '%-.64s'",
"Niewa?ciwa informacja w pliku: '%-.64s'", "Niewa?ciwa informacja w pliku: '%-.64s'",
"Niewa?ciwy plik kluczy dla tabeli: '%-.64s'. Sprbuj go naprawi", "Niewa?ciwy plik kluczy dla tabeli: '%-.64s'; sprbuj go naprawi",
"Plik kluczy dla tabeli '%-.64s' jest starego typu; Napraw go!", "Plik kluczy dla tabeli '%-.64s' jest starego typu; napraw go!",
"'%-.64s' jest tylko do odczytu", "'%-.64s' jest tylko do odczytu",
"Zbyt mao pamici. Uruchom ponownie demona i sprbuj ponownie (potrzeba %d bajtw)", "Zbyt mao pamici. Uruchom ponownie demona i sprbuj ponownie (potrzeba %d bajtw)",
"Zbyt mao pamici dla sortowania. Zwiksz wielko? bufora demona dla sortowania", "Zbyt mao pamici dla sortowania. Zwiksz wielko? bufora demona dla sortowania",
......
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
"Manipulador de tabela para '%-.64s' não tem esta opção", "Manipulador de tabela para '%-.64s' não tem esta opção",
"Não pode encontrar registro em '%-.64s'", "Não pode encontrar registro em '%-.64s'",
"Informação incorreta no arquivo '%-.64s'", "Informação incorreta no arquivo '%-.64s'",
"Arquivo de índice incorreto para tabela '%-.64s'. Tente repará-lo", "Arquivo de índice incorreto para tabela '%-.64s'; tente repará-lo",
"Arquivo de índice desatualizado para tabela '%-.64s'. Repare-o!", "Arquivo de índice desatualizado para tabela '%-.64s'; repare-o!",
"Tabela '%-.64s' é somente para leitura", "Tabela '%-.64s' é somente para leitura",
"Sem memória. Reinicie o programa e tente novamente (necessita de %d bytes)", "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", "Sem memória para ordenação. Aumente tamanho do 'buffer' de ordenação",
......
...@@ -21,12 +21,12 @@ ...@@ -21,12 +21,12 @@
"Nu pot sa obtin statusul lui '%-.64s' (Eroare: %d)", "Nu pot sa obtin statusul lui '%-.64s' (Eroare: %d)",
"Nu pot sa obtin directorul current (working directory) (Eroare: %d)", "Nu pot sa obtin directorul current (working directory) (Eroare: %d)",
"Nu pot sa lock fisierul (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 gasesc fisierul: '%-.64s' (Eroare: %d)",
"Nu pot sa citesc directorul '%-.64s' (Eroare: %d)", "Nu pot sa citesc directorul '%-.64s' (Eroare: %d)",
"Nu pot sa schimb directorul '%-.64s' (Eroare: %d)", "Nu pot sa schimb directorul '%-.64s' (Eroare: %d)",
"Cimpul a fost schimbat de la ultima citire a tabelei '%-.64s'", "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'", "Nu pot sa scriu (can't write), cheie duplicata in tabela '%-.64s'",
"Eroare inchizind '%-.64s' (errno: %d)", "Eroare inchizind '%-.64s' (errno: %d)",
"Eroare citind fisierul '%-.64s' (errno: %d)", "Eroare citind fisierul '%-.64s' (errno: %d)",
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
"Handlerul tabelei pentru '%-.64s' nu are aceasta optiune", "Handlerul tabelei pentru '%-.64s' nu are aceasta optiune",
"Nu pot sa gasesc recordul in '%-.64s'", "Nu pot sa gasesc recordul in '%-.64s'",
"Informatie incorecta in fisierul: '%-.64s'", "Informatie incorecta in fisierul: '%-.64s'",
"Cheia fisierului incorecta pentru tabela: '%-.64s'. Incearca s-o repari", "Cheia fisierului incorecta pentru tabela: '%-.64s'; incearca s-o repari",
"Cheia fisierului e veche pentru tabela '%-.64s'; Repar-o!", "Cheia fisierului e veche pentru tabela '%-.64s'; repar-o!",
"Tabela '%-.64s' e read-only", "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. 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)", "Out of memory pentru sortare. Largeste marimea buffer-ului pentru sortare in daemon (sort buffer size)",
......
...@@ -19,12 +19,12 @@ ...@@ -19,12 +19,12 @@
" '%-.64s' (: %d)", " '%-.64s' (: %d)",
" (: %d)", " (: %d)",
" (: %d)", " (: %d)",
" : '%-.64s'. (: %d)", " : '%-.64s' (: %d)",
" : '%-.64s' (: %d)", " : '%-.64s' (: %d)",
" '%-.64s' (: %d)", " '%-.64s' (: %d)",
" '%-.64s' (: %d)", " '%-.64s' (: %d)",
" '%-.64s'", " '%-.64s'",
" . (%s). , - ....", " . (%s). , - ...",
" , '%-.64s'", " , '%-.64s'",
" '%-.64s' (: %d)", " '%-.64s' (: %d)",
" '%-.64s' (: %d)", " '%-.64s' (: %d)",
......
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
"Ne mogu da dobijem stanje file-a '%-.64s' (errno: %d)", "Ne mogu da dobijem stanje file-a '%-.64s' (errno: %d)",
"Ne mogu da dobijem trenutni direktorijum (errno: %d)", "Ne mogu da dobijem trenutni direktorijum (errno: %d)",
"Ne mogu da zakljuam file (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 pronaem file: '%-.64s' (errno: %d)",
"Ne mogu da proitam direktorijum '%-.64s' (errno: %d)", "Ne mogu da proitam direktorijum '%-.64s' (errno: %d)",
"Ne mogu da promenim direktorijum na '%-.64s' (errno: %d)", "Ne mogu da promenim direktorijum na '%-.64s' (errno: %d)",
"Slog je promenjen od zadnjeg itanja tabele '%-.64s'", "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'", "Ne mogu da piem poto postoji duplirani klju u tabeli '%-.64s'",
"Greka pri zatvaranju '%-.64s' (errno: %d)", "Greka pri zatvaranju '%-.64s' (errno: %d)",
"Greka pri itanju file-a '%-.64s' (errno: %d)", "Greka pri itanju file-a '%-.64s' (errno: %d)",
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
"Handler tabela za '%-.64s' nema ovu opciju", "Handler tabela za '%-.64s' nema ovu opciju",
"Ne mogu da pronaem slog u '%-.64s'", "Ne mogu da pronaem slog u '%-.64s'",
"Pogrena informacija u file-u: '%-.64s'", "Pogrena informacija u file-u: '%-.64s'",
"Pogrean key file za tabelu: '%-.64s'. Probajte da ga ispravite", "Pogrean key file za tabelu: '%-.64s'; probajte da ga ispravite",
"Zastareo key file za tabelu '%-.64s'; Ispravite ga", "Zastareo key file za tabelu '%-.64s'; ispravite ga",
"Tabelu '%-.64s' je dozvoljeno samo itati", "Tabelu '%-.64s' je dozvoljeno samo itati",
"Nema memorije. Restartujte MySQL server i probajte ponovo (potrebno je %d byte-ova)", "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", "Nema memorije za sortiranje. Poveajte veliinu sort buffer-a MySQL server-u",
......
...@@ -25,12 +25,12 @@ ...@@ -25,12 +25,12 @@
"Nemem zisti stav '%-.64s' (chybov kd: %d)", "Nemem zisti stav '%-.64s' (chybov kd: %d)",
"Nemem zisti pracovn adresr (chybov kd: %d)", "Nemem zisti pracovn adresr (chybov kd: %d)",
"Nemem zamkn sbor (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 njs sbor: '%-.64s' (chybov kd: %d)",
"Nemem ta adresr '%-.64s' (chybov kd: %d)", "Nemem ta adresr '%-.64s' (chybov kd: %d)",
"Nemem vojs do adresra '%-.64s' (chybov kd: %d)", "Nemem vojs do adresra '%-.64s' (chybov kd: %d)",
"Zznam bol zmenen od poslednho tania v tabuke '%-.64s'", "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'", "Nemem zapsa, duplikt ka v tabuke '%-.64s'",
"Chyba pri zatvran '%-.64s' (chybov kd: %d)", "Chyba pri zatvran '%-.64s' (chybov kd: %d)",
"Chyba pri tan sboru '%-.64s' (chybov kd: %d)", "Chyba pri tan sboru '%-.64s' (chybov kd: %d)",
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
"Obsluha tabuky '%-.64s' nem tento parameter", "Obsluha tabuky '%-.64s' nem tento parameter",
"Nemem njs zznam v '%-.64s'", "Nemem njs zznam v '%-.64s'",
"Nesprvna informcia v sbore: '%-.64s'", "Nesprvna informcia v sbore: '%-.64s'",
"Nesprvny k pre tabuku '%-.64s'. Pokste sa ho opravi", "Nesprvny k pre tabuku '%-.64s'; pokste sa ho opravi",
"Star kov sbor pre '%-.64s'; Opravte ho!", "Star kov sbor pre '%-.64s'; opravte ho!",
"'%-.64s' is ta only", "'%-.64s' is ta only",
"Mlo pamti. Retartujte daemona a skste znova (je potrebnch %d bytov)", "Mlo pamti. Retartujte daemona a skste znova (je potrebnch %d bytov)",
"Mlo pamti pre triedenie, zvte vekos triediaceho bufferu", "Mlo pamti pre triedenie, zvte vekos triediaceho bufferu",
......
...@@ -18,12 +18,12 @@ ...@@ -18,12 +18,12 @@
"No puedo obtener el estado de '%-.64s' (Error: %d)", "No puedo obtener el estado de '%-.64s' (Error: %d)",
"No puedo acceder al directorio (Error: %d)", "No puedo acceder al directorio (Error: %d)",
"No puedo bloquear archivo: (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 encontrar archivo: '%-.64s' (Error: %d)",
"No puedo leer el directorio de '%-.64s' (Error: %d)", "No puedo leer el directorio de '%-.64s' (Error: %d)",
"No puedo cambiar al 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'", "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'", "No puedo escribir, clave duplicada en la tabla '%-.64s'",
"Error en el cierre de '%-.64s' (Error: %d)", "Error en el cierre de '%-.64s' (Error: %d)",
"Error leyendo el fichero '%-.64s' (Error: %d)", "Error leyendo el fichero '%-.64s' (Error: %d)",
...@@ -36,8 +36,8 @@ ...@@ -36,8 +36,8 @@
"El manejador de la tabla de '%-.64s' no tiene esta opcion", "El manejador de la tabla de '%-.64s' no tiene esta opcion",
"No puedo encontrar el registro en '%-.64s'", "No puedo encontrar el registro en '%-.64s'",
"Informacion erronea en el archivo: '%-.64s'", "Informacion erronea en el archivo: '%-.64s'",
"Clave de archivo erronea para la tabla: '%-.64s'. Intente repararlo", "Clave de archivo erronea para la tabla: '%-.64s'; intente repararlo",
"Clave de archivo antigua para la tabla '%-.64s'; Reparelo!", "Clave de archivo antigua para la tabla '%-.64s'; reparelo!",
"'%-.64s' es de solo lectura", "'%-.64s' es de solo lectura",
"Memoria insuficiente. Reinicie el demonio e intentelo otra vez (necesita %d bytes)", "Memoria insuficiente. Reinicie el demonio e intentelo otra vez (necesita %d bytes)",
"Memoria de ordenacion insuficiente. Incremente el tamano del buffer de ordenacion", "Memoria de ordenacion insuficiente. Incremente el tamano del buffer de ordenacion",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
"Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)", "Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)",
"Kan inte inte läsa aktivt bibliotek. (Felkod: %d)", "Kan inte inte läsa aktivt bibliotek. (Felkod: %d)",
"Kan inte låsa filen. (Felkod: %d)", "Kan inte låsa filen. (Felkod: %d)",
"Kan inte använda '%-.64s'. (Felkod: %d)", "Kan inte använda '%-.64s' (Felkod: %d)",
"Hittar inte filen '%-.64s'. (Felkod: %d)", "Hittar inte filen '%-.64s' (Felkod: %d)",
"Kan inte läsa från bibliotek '%-.64s'. (Felkod: %d)", "Kan inte läsa från bibliotek '%-.64s' (Felkod: %d)",
"Kan inte byta till '%-.64s'. (Felkod: %d)", "Kan inte byta till '%-.64s' (Felkod: %d)",
"Posten har förändrats sedan den lästes i register '%-.64s'", "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'", "Kan inte skriva, dubbel söknyckel i register '%-.64s'",
"Fick fel vid stängning av '%-.64s' (Felkod: %d)", "Fick fel vid stängning av '%-.64s' (Felkod: %d)",
"Fick fel vid läsning av '%-.64s' (Felkod %d)", "Fick fel vid läsning av '%-.64s' (Felkod %d)",
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
"Registrets databas har inte denna facilitet", "Registrets databas har inte denna facilitet",
"Hittar inte posten", "Hittar inte posten",
"Felaktig fil: '%-.64s'", "Felaktig fil: '%-.64s'",
"Fatalt fel vid hantering av register '%-.64s'. Kör en reparation", "Fatalt fel vid hantering av register '%-.64s'; kör en reparation",
"Gammal nyckelfil '%-.64s'. Reparera registret", "Gammal nyckelfil '%-.64s'; reparera registret",
"'%-.64s' är skyddad mot förändring", "'%-.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)", "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", "Sorteringsbufferten räcker inte till. Kontrollera startparametrarna",
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
" æ '%-.64s' æ Ԧ", " æ '%-.64s' æ Ԧ",
" '%-.64s'", " '%-.64s'",
" æ ̦: '%-.64s'", " æ ̦: '%-.64s'",
" æ: '%-.64s'. צ", " æ: '%-.64s'; צ",
" æ '%-.64s'; צ !", " æ '%-.64s'; צ !",
" '%-.64s' Ԧ ", " '%-.64s' Ԧ ",
" 'Ԧ. (Ҧ %d Ԧ)", " 'Ԧ. (Ҧ %d Ԧ)",
......
...@@ -2109,9 +2109,9 @@ all_or_any: ALL { $$ = 1; } ...@@ -2109,9 +2109,9 @@ all_or_any: ALL { $$ = 1; }
/* expressions that begin with 'expr' */ /* expressions that begin with 'expr' */
expr_expr: expr_expr:
expr IN_SYM '(' expr_list ')' expr IN_SYM '(' expr_list ')'
{ $$= new Item_func_in($1,*$4); } { $4->push_front($1); $$= new Item_func_in(*$4); }
| expr NOT IN_SYM '(' expr_list ')' | expr NOT IN_SYM '(' expr_list ')'
{ $$= new Item_func_not(new Item_func_in($1,*$5)); } { $5->push_front($1); $$= new Item_func_not(new Item_func_in(*$5)); }
| expr IN_SYM in_subselect | expr IN_SYM in_subselect
{ $$= new Item_in_subselect(YYTHD, $1, $3); } { $$= new Item_in_subselect(YYTHD, $1, $3); }
| expr NOT IN_SYM in_subselect | expr NOT IN_SYM in_subselect
...@@ -2211,9 +2211,9 @@ no_in_expr: ...@@ -2211,9 +2211,9 @@ no_in_expr:
/* expressions that begin with 'expr' that does NOT follow AND */ /* expressions that begin with 'expr' that does NOT follow AND */
no_and_expr: no_and_expr:
no_and_expr IN_SYM '(' expr_list ')' no_and_expr IN_SYM '(' expr_list ')'
{ $$= new Item_func_in($1,*$4); } { $4->push_front($1); $$= new Item_func_in(*$4); }
| no_and_expr NOT IN_SYM '(' expr_list ')' | no_and_expr NOT IN_SYM '(' expr_list ')'
{ $$= new Item_func_not(new Item_func_in($1,*$5)); } { $5->push_front($1); $$= new Item_func_not(new Item_func_in(*$5)); }
| no_and_expr IN_SYM in_subselect | no_and_expr IN_SYM in_subselect
{ $$= new Item_in_subselect(YYTHD, $1, $3); } { $$= new Item_in_subselect(YYTHD, $1, $3); }
| no_and_expr NOT IN_SYM in_subselect | no_and_expr NOT IN_SYM in_subselect
......
...@@ -2030,7 +2030,7 @@ CHARSET_INFO my_charset_utf8_bin= ...@@ -2030,7 +2030,7 @@ CHARSET_INFO my_charset_utf8_bin=
3, /* mbmaxlen */ 3, /* mbmaxlen */
0, 0,
&my_charset_handler, &my_charset_handler,
&my_collation_ci_handler &my_collation_bin_handler
}; };
......
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