mirror of
https://github.com/MariaDB/server.git
synced 2025-04-09 08:45:33 +02:00
Merge kaamos.(none):/data/src/mysql-5.1
into kaamos.(none):/data/src/opt/mysql-5.1-opt
This commit is contained in:
commit
5647dee192
45 changed files with 491 additions and 86 deletions
BUILD
mysql-test
include
lib
r
alter_table.resultcreate.resultgrant3.resultheap.resultinnodb.resultinnodb_mysql.resultmix2_myisam.resultmyisam.resultorder_by.resultrange.resultselect.resultsp.resultstrict.resulttype_binary.resulttype_set.resultview.resultwarnings.result
t
sql
field.ccfield.hfilesort.cchandler.ccitem.ccitem.hitem_cmpfunc.ccitem_func.ccmysqld.ccrpl_mi.cc
share
sql_acl.ccsql_select.ccstorage
|
@ -100,8 +100,10 @@ if [ "x$warning_mode" != "xpedantic" ]; then
|
|||
# C warnings
|
||||
c_warnings="$warnings -Wunused-parameter"
|
||||
# C++ warnings
|
||||
cxx_warnings="$warnings -Woverloaded-virtual -Wsign-promo -Wreorder"
|
||||
cxx_warnings="$warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
||||
cxx_warnings="$warnings"
|
||||
# cxx_warnings="$cxx_warnings -Woverloaded-virtual -Wsign-promo"
|
||||
cxx_warnings="$cxx_warnings -Wreorder"
|
||||
cxx_warnings="$cxx_warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
||||
# Added unless --with-debug=full
|
||||
debug_extra_cflags="-O1 -Wuninitialized"
|
||||
else
|
||||
|
|
|
@ -1090,6 +1090,19 @@ SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #34223: Assertion failed: (optp->var_type & 127) == 8,
|
||||
# file .\my_getopt.c, line 830
|
||||
#
|
||||
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
||||
|
|
|
@ -386,7 +386,10 @@ sub mtr_report_stats ($) {
|
|||
# rpl_temporary has an error on slave that can be ignored
|
||||
($testname eq 'rpl.rpl_temporary' and
|
||||
(/Slave: Can\'t find record in \'user\' Error_code: 1032/
|
||||
))
|
||||
)) or
|
||||
|
||||
# Test case for Bug#31590 produces the following error:
|
||||
/Out of sort memory; increase server sort buffer size/
|
||||
)
|
||||
{
|
||||
next; # Skip these lines
|
||||
|
|
|
@ -539,7 +539,7 @@ F2E5F1F2
|
|||
drop table t1;
|
||||
create table t1 ( a timestamp );
|
||||
alter table t1 add unique ( a(1) );
|
||||
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
|
||||
ERROR HY000: Incorrect prefix 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 prefix keys
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int, key(a));
|
||||
|
@ -953,12 +953,12 @@ t1 CREATE TABLE `t1` (
|
|||
KEY `b_2` (`b`(50))
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
CREATE TABLE t2 (a INT, KEY (a(20)));
|
||||
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
|
||||
ERROR HY000: Incorrect prefix 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 prefix keys
|
||||
ALTER TABLE t1 ADD d INT;
|
||||
ALTER TABLE t1 ADD KEY (d(20));
|
||||
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
|
||||
ERROR HY000: Incorrect prefix 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 prefix keys
|
||||
ALTER TABLE t1 ADD e GEOMETRY NOT NULL, ADD SPATIAL KEY (e(30));
|
||||
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
|
||||
ERROR HY000: Incorrect prefix 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 prefix keys
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (s CHAR(8) BINARY);
|
||||
INSERT INTO t1 VALUES ('test');
|
||||
|
|
|
@ -1545,6 +1545,20 @@ Handler_read_prev 0
|
|||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 7
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 NULL 0 NULL NULL YES HASH
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
insert into t1 values (1,1),(1,2);
|
||||
|
|
|
@ -138,3 +138,20 @@ SELECT user, host, db, select_priv FROM mysql.db where user = 'CUser2' order by
|
|||
user host db select_priv
|
||||
DROP USER CUser2@localhost;
|
||||
DROP USER CUser2@LOCALHOST;
|
||||
CREATE DATABASE mysqltest_1;
|
||||
CREATE TABLE mysqltest_1.t1 (a INT);
|
||||
CREATE USER 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%';
|
||||
REVOKE SELECT ON `mysqltest_1`.* FROM 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
SHOW GRANTS;
|
||||
Grants for mysqltest1@%
|
||||
GRANT USAGE ON *.* TO 'mysqltest1'@'%'
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%'
|
||||
GRANT UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%'
|
||||
SELECT * FROM mysqltest_1.t1;
|
||||
a
|
||||
DROP USER 'mysqltest1'@'%';
|
||||
DROP DATABASE mysqltest_1;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -256,6 +256,7 @@ set @a=repeat(' ',20);
|
|||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
|
|
@ -1823,6 +1823,7 @@ set @a=repeat(' ',20);
|
|||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
|
|
@ -1356,6 +1356,12 @@ id type d
|
|||
NULL member 3
|
||||
NULL member 4
|
||||
DROP TABLE t1;
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
|
|
|
@ -1415,6 +1415,7 @@ set @a=repeat(' ',20);
|
|||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
|
|
@ -1086,6 +1086,7 @@ set @a=repeat(' ',20);
|
|||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
|
|
@ -1416,3 +1416,15 @@ SELECT @tmp_tables_after = @tmp_tables_before;
|
|||
@tmp_tables_after = @tmp_tables_before
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#31590: Wrong error message on sort buffer being too small.
|
||||
#
|
||||
create table t1(a int, b tinytext);
|
||||
insert into t1 values (1,2),(3,2);
|
||||
set session sort_buffer_size= 30000;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect sort_buffer_size value: '30000'
|
||||
set session max_sort_length= 2180;
|
||||
select * from t1 order by b;
|
||||
ERROR HY001: Out of sort memory; increase server sort buffer size
|
||||
drop table t1;
|
||||
|
|
|
@ -1153,6 +1153,19 @@ explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range dateval dateval 4 NULL 2 Using where
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a varchar(32), index (a)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
|
||||
INSERT INTO t1 VALUES
|
||||
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
|
||||
SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
a
|
||||
B
|
||||
B
|
||||
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t2 (a int, b int, filler char(100));
|
||||
|
|
|
@ -4313,6 +4313,12 @@ SELECT * FROM t1 WHERE c1 > NULL + 1;
|
|||
c1
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
|
||||
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
|
||||
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
|
||||
a
|
||||
foo0
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
create table t1(a INT, KEY (a));
|
||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||
|
|
|
@ -6862,6 +6862,23 @@ end//
|
|||
call proc_33618(20);
|
||||
drop table t_33618;
|
||||
drop procedure proc_33618;
|
||||
#
|
||||
# Bug#30787: Stored function ignores user defined alias.
|
||||
#
|
||||
use test;
|
||||
drop function if exists func30787;
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
create function func30787(p1 int) returns int
|
||||
begin
|
||||
return p1;
|
||||
end |
|
||||
select (select func30787(f1)) as ttt from t1;
|
||||
ttt
|
||||
1
|
||||
2
|
||||
drop function func30787;
|
||||
drop table t1;
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 5.0 tests
|
||||
# ------------------------------------------------------------------
|
||||
|
|
|
@ -934,6 +934,8 @@ NULL NULL
|
|||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
|
||||
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'col1' at row 3
|
||||
INSERT INTO t1 (col1) VALUES ('hellobob');
|
||||
ERROR 22001: Data too long for column 'col1' at row 1
|
||||
INSERT INTO t1 (col2) VALUES ('hellobob');
|
||||
|
|
|
@ -125,6 +125,7 @@ create table t1 (c char(2), vc varchar(2));
|
|||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
Note 1265 Data truncated for column 'vc' at row 1
|
||||
drop table t1;
|
||||
set @old_sql_mode= @@sql_mode, sql_mode= 'traditional';
|
||||
|
|
|
@ -85,3 +85,11 @@ t1 CREATE TABLE `t1` (
|
|||
`f1` set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','1') DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t1(c set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64'));
|
||||
INSERT INTO t1 VALUES(7);
|
||||
INSERT INTO t1 VALUES(9223372036854775808);
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1,2,3
|
||||
64
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -3613,6 +3613,22 @@ ERROR HY000: Field of view 'test.v1' underlying table doesn't have a default val
|
|||
set @@sql_mode=@old_mode;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1 (a int, key(a));
|
||||
create table t2 (c int);
|
||||
create view v1 as select a b from t1;
|
||||
create view v2 as select 1 a from t2, v1 where c in
|
||||
(select 1 from t1 where b = a);
|
||||
insert into t1 values (1), (1);
|
||||
insert into t2 values (1), (1);
|
||||
prepare stmt from "select * from v2 where a = 1";
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
End of 5.0 tests.
|
||||
DROP DATABASE IF EXISTS `d-1`;
|
||||
CREATE DATABASE `d-1`;
|
||||
|
|
|
@ -276,4 +276,42 @@ DROP TABLE t3;
|
|||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
DROP PROCEDURE sp3;
|
||||
create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext tinytext);
|
||||
create table t2 (c_tinyblob tinyblob);
|
||||
set @c = repeat(' ', 256);
|
||||
set @q = repeat('q', 256);
|
||||
set sql_mode = '';
|
||||
insert into t1 values(@c, @c, @c);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c_char' at row 1
|
||||
Note 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Note 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@c);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_tinyblob' at row 1
|
||||
insert into t1 values(@q, @q, @q);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_char' at row 1
|
||||
Warning 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Warning 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@q);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_tinyblob' at row 1
|
||||
set sql_mode = 'traditional';
|
||||
insert into t1 values(@c, @c, @c);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c_char' at row 1
|
||||
Note 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Note 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@c);
|
||||
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
|
||||
insert into t1 values(@q, NULL, NULL);
|
||||
ERROR 22001: Data too long for column 'c_char' at row 1
|
||||
insert into t1 values(NULL, @q, NULL);
|
||||
ERROR 22001: Data too long for column 'c_varchar' at row 1
|
||||
insert into t1 values(NULL, NULL, @q);
|
||||
ERROR 22001: Data too long for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@q);
|
||||
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
|
||||
drop table t1, t2;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -1152,6 +1152,30 @@ create table t2 select sql_big_result f1,count(f2) from t1 group by f1;
|
|||
show status like 'handler_read%';
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug #25162: Backing up DB from 5.1 adds 'USING BTREE' to KEYs on table creates
|
||||
#
|
||||
|
||||
# Show that the old syntax for index type is supported
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||
DROP TABLE t1;
|
||||
|
||||
# Show that the new syntax for index type is supported
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
|
||||
DROP TABLE t1;
|
||||
|
||||
# Show that in case of multiple index type definitions, the last one takes
|
||||
# precedence
|
||||
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
|
|
@ -134,3 +134,29 @@ SELECT user, host, db, select_priv FROM mysql.db where user = 'CUser2' order by
|
|||
|
||||
DROP USER CUser2@localhost;
|
||||
DROP USER CUser2@LOCALHOST;
|
||||
|
||||
|
||||
#
|
||||
# Bug#31194: Privilege ordering does not order properly for wildcard values
|
||||
#
|
||||
|
||||
CREATE DATABASE mysqltest_1;
|
||||
CREATE TABLE mysqltest_1.t1 (a INT);
|
||||
CREATE USER 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%';
|
||||
REVOKE SELECT ON `mysqltest_1`.* FROM 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
connect (conn1,localhost,mysqltest1,,);
|
||||
connection conn1;
|
||||
SHOW GRANTS;
|
||||
SELECT * FROM mysqltest_1.t1;
|
||||
disconnect conn1;
|
||||
|
||||
connection default;
|
||||
DROP USER 'mysqltest1'@'%';
|
||||
DROP DATABASE mysqltest_1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -836,3 +836,14 @@ eval set @tmp_tables_after =
|
|||
SELECT @tmp_tables_after = @tmp_tables_before;
|
||||
|
||||
DROP TABLE t1;
|
||||
--echo #
|
||||
--echo # Bug#31590: Wrong error message on sort buffer being too small.
|
||||
--echo #
|
||||
create table t1(a int, b tinytext);
|
||||
insert into t1 values (1,2),(3,2);
|
||||
set session sort_buffer_size= 30000;
|
||||
set session max_sort_length= 2180;
|
||||
--error 1038
|
||||
select * from t1 order by b;
|
||||
drop table t1;
|
||||
|
||||
|
|
|
@ -955,6 +955,23 @@ explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '
|
|||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #33833: different or-ed predicates were erroneously merged into one that
|
||||
# resulted in ref access instead of range access and a wrong result set
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a varchar(32), index (a)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
|
||||
|
||||
SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
# BUG#22393 fix: Adjust 'ref' estimate if we have 'range' estimate for
|
||||
|
|
|
@ -3661,6 +3661,17 @@ DROP TABLE t1;
|
|||
|
||||
--echo
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
# Bug #33764: Wrong result with IN(), CONCAT() and implicit type conversion
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
|
||||
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
|
||||
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
|
|
@ -7900,6 +7900,25 @@ DROP DATABASE db28318_a;
|
|||
DROP DATABASE db28318_b;
|
||||
use test;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#30787: Stored function ignores user defined alias.
|
||||
--echo #
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop function if exists func30787;
|
||||
--enable_warnings
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
delimiter |;
|
||||
create function func30787(p1 int) returns int
|
||||
begin
|
||||
return p1;
|
||||
end |
|
||||
delimiter ;|
|
||||
select (select func30787(f1)) as ttt from t1;
|
||||
drop function func30787;
|
||||
drop table t1;
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
|
|
|
@ -56,3 +56,23 @@ set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17',
|
|||
'50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','1'));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#15409: Columns with SET datatype with 64-element sets
|
||||
# may not be updated with integers
|
||||
#
|
||||
|
||||
let $i=64;
|
||||
let $s='$i';
|
||||
dec $i;
|
||||
while ($i) {
|
||||
let $s='$i',$s;
|
||||
dec $i;
|
||||
}
|
||||
--eval CREATE TABLE t1(c set($s))
|
||||
INSERT INTO t1 VALUES(7);
|
||||
INSERT INTO t1 VALUES(9223372036854775808);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--# echo End of 5.0 tests
|
||||
|
|
|
@ -3468,6 +3468,27 @@ set @@sql_mode=@old_mode;
|
|||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #33389: Selecting from a view into a table from within SP or trigger
|
||||
# crashes server
|
||||
#
|
||||
|
||||
create table t1 (a int, key(a));
|
||||
create table t2 (c int);
|
||||
|
||||
create view v1 as select a b from t1;
|
||||
create view v2 as select 1 a from t2, v1 where c in
|
||||
(select 1 from t1 where b = a);
|
||||
|
||||
insert into t1 values (1), (1);
|
||||
insert into t2 values (1), (1);
|
||||
|
||||
prepare stmt from "select * from v2 where a = 1";
|
||||
execute stmt;
|
||||
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
|
@ -3541,3 +3562,4 @@ DROP TABLE t1;
|
|||
--echo
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
||||
|
|
|
@ -193,4 +193,37 @@ DROP PROCEDURE sp1;
|
|||
DROP PROCEDURE sp2;
|
||||
DROP PROCEDURE sp3;
|
||||
|
||||
|
||||
#
|
||||
# Bug#30059: End-space truncation warnings are inconsistent or incorrect
|
||||
#
|
||||
|
||||
create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext tinytext);
|
||||
create table t2 (c_tinyblob tinyblob); # not affected by bug, for regression testing
|
||||
set @c = repeat(' ', 256);
|
||||
set @q = repeat('q', 256);
|
||||
|
||||
set sql_mode = '';
|
||||
|
||||
insert into t1 values(@c, @c, @c);
|
||||
insert into t2 values(@c);
|
||||
insert into t1 values(@q, @q, @q);
|
||||
insert into t2 values(@q);
|
||||
|
||||
set sql_mode = 'traditional';
|
||||
|
||||
insert into t1 values(@c, @c, @c);
|
||||
--error 1406
|
||||
insert into t2 values(@c);
|
||||
--error 1406
|
||||
insert into t1 values(@q, NULL, NULL);
|
||||
--error 1406
|
||||
insert into t1 values(NULL, @q, NULL);
|
||||
--error 1406
|
||||
insert into t1 values(NULL, NULL, @q);
|
||||
--error 1406
|
||||
insert into t2 values(@q);
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
80
sql/field.cc
80
sql/field.cc
|
@ -6323,26 +6323,41 @@ check_string_copy_error(Field_str *field,
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Send a truncation warning or a truncation error
|
||||
after storing a too long character string info a field.
|
||||
Check if we lost any important data and send a truncation error/warning
|
||||
|
||||
SYNOPSIS
|
||||
report_data_too_long()
|
||||
field - Field
|
||||
Field_longstr::report_if_important_data()
|
||||
ptr - Truncated rest of string
|
||||
end - End of truncated string
|
||||
|
||||
RETURN
|
||||
N/A
|
||||
RETURN VALUES
|
||||
0 - None was truncated (or we don't count cut fields)
|
||||
2 - Some bytes was truncated
|
||||
|
||||
NOTE
|
||||
Check if we lost any important data (anything in a binary string,
|
||||
or any non-space in others). If only trailing spaces was lost,
|
||||
send a truncation note, otherwise send a truncation error.
|
||||
*/
|
||||
|
||||
inline void
|
||||
report_data_too_long(Field_str *field)
|
||||
int
|
||||
Field_longstr::report_if_important_data(const char *ptr, const char *end)
|
||||
{
|
||||
if (field->table->in_use->abort_on_warning)
|
||||
field->set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
|
||||
else
|
||||
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
|
||||
if ((ptr < end) && table->in_use->count_cuted_fields)
|
||||
{
|
||||
if (test_if_important_data(field_charset, ptr, end))
|
||||
{
|
||||
if (table->in_use->abort_on_warning)
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1);
|
||||
else
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
|
||||
}
|
||||
else /* If we lost only spaces then produce a NOTE, not a WARNING */
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1);
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -6377,19 +6392,7 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs)
|
|||
cannot_convert_error_pos, from + length, cs))
|
||||
return 2;
|
||||
|
||||
/*
|
||||
Check if we lost any important data (anything in a binary string,
|
||||
or any non-space in others).
|
||||
*/
|
||||
if ((from_end_pos < from + length) && table->in_use->count_cuted_fields)
|
||||
{
|
||||
if (test_if_important_data(field_charset, from_end_pos, from + length))
|
||||
{
|
||||
report_data_too_long(this);
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return report_if_important_data(from_end_pos, from + length);
|
||||
}
|
||||
|
||||
|
||||
|
@ -6964,16 +6967,7 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
|
|||
cannot_convert_error_pos, from + length, cs))
|
||||
return 2;
|
||||
|
||||
// Check if we lost something other than just trailing spaces
|
||||
if ((from_end_pos < from + length) && table->in_use->count_cuted_fields)
|
||||
{
|
||||
if (test_if_important_data(field_charset, from_end_pos, from + length))
|
||||
report_data_too_long(this);
|
||||
else /* If we lost only spaces then produce a NOTE, not a WARNING */
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1);
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
return report_if_important_data(from_end_pos, from + length);
|
||||
}
|
||||
|
||||
|
||||
|
@ -7665,13 +7659,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
|
|||
cannot_convert_error_pos, from + length, cs))
|
||||
return 2;
|
||||
|
||||
if (from_end_pos < from + length)
|
||||
{
|
||||
report_data_too_long(this);
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return report_if_important_data(from_end_pos, from + length);
|
||||
|
||||
oom_error:
|
||||
/* Fatal OOM error */
|
||||
|
@ -8619,10 +8607,10 @@ int Field_set::store(longlong nr, bool unsigned_val)
|
|||
{
|
||||
ASSERT_COLUMN_MARKED_FOR_WRITE;
|
||||
int error= 0;
|
||||
if ((ulonglong) nr > (ulonglong) (((longlong) 1 << typelib->count) -
|
||||
(longlong) 1))
|
||||
ulonglong max_nr= set_bits(ulonglong, typelib->count);
|
||||
if ((ulonglong) nr > max_nr)
|
||||
{
|
||||
nr&= (longlong) (((longlong) 1 << typelib->count) - (longlong) 1);
|
||||
nr&= max_nr;
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
|
||||
error=1;
|
||||
}
|
||||
|
|
|
@ -593,6 +593,8 @@ public:
|
|||
|
||||
class Field_longstr :public Field_str
|
||||
{
|
||||
protected:
|
||||
int report_if_important_data(const char *ptr, const char *end);
|
||||
public:
|
||||
Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
|
||||
uchar null_bit_arg, utype unireg_check_arg,
|
||||
|
|
|
@ -223,8 +223,7 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||
sort_keys= table_sort.sort_keys;
|
||||
if (memavl < min_sort_memory)
|
||||
{
|
||||
my_error(ER_OUTOFMEMORY,MYF(ME_ERROR+ME_WAITTANG),
|
||||
thd->variables.sortbuff_size);
|
||||
my_error(ER_OUT_OF_SORTMEMORY,MYF(ME_ERROR+ME_WAITTANG));
|
||||
goto err;
|
||||
}
|
||||
if (open_cached_file(&buffpek_pointers,mysql_tmpdir,TEMP_PREFIX,
|
||||
|
|
|
@ -1522,6 +1522,13 @@ int ha_delete_table(THD *thd, handlerton *table_type, const char *path,
|
|||
handler *handler::clone(MEM_ROOT *mem_root)
|
||||
{
|
||||
handler *new_handler= get_new_handler(table->s, mem_root, table->s->db_type());
|
||||
/*
|
||||
Allocate handler->ref here because otherwise ha_open will allocate it
|
||||
on this->table->mem_root and we will not be able to reclaim that memory
|
||||
when the clone handler object is destroyed.
|
||||
*/
|
||||
if (!(new_handler->ref= (uchar*) alloc_root(mem_root, ALIGN_SIZE(ref_length)*2)))
|
||||
return NULL;
|
||||
if (new_handler && !new_handler->ha_open(table,
|
||||
table->s->normalized_path.str,
|
||||
table->db_stat,
|
||||
|
@ -1590,7 +1597,9 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
|
|||
table->db_stat|=HA_READ_ONLY;
|
||||
(void) extra(HA_EXTRA_NO_READCHECK); // Not needed in SQL
|
||||
|
||||
if (!(ref= (uchar*) alloc_root(&table->mem_root, ALIGN_SIZE(ref_length)*2)))
|
||||
/* ref is already allocated for us if we're called from handler::clone() */
|
||||
if (!ref && !(ref= (uchar*) alloc_root(&table->mem_root,
|
||||
ALIGN_SIZE(ref_length)*2)))
|
||||
{
|
||||
close();
|
||||
error=HA_ERR_OUT_OF_MEM;
|
||||
|
|
67
sql/item.cc
67
sql/item.cc
|
@ -3948,6 +3948,18 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
|
|||
else if (!from_field)
|
||||
goto error;
|
||||
|
||||
if (!outer_fixed && cached_table && cached_table->select_lex &&
|
||||
context->select_lex &&
|
||||
cached_table->select_lex != context->select_lex)
|
||||
{
|
||||
int ret;
|
||||
if ((ret= fix_outer_field(thd, &from_field, reference)) < 0)
|
||||
goto error;
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
outer_fixed= 1;
|
||||
}
|
||||
|
||||
/*
|
||||
if it is not expression from merged VIEW we will set this field.
|
||||
|
||||
|
@ -3963,18 +3975,6 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
|
|||
if (from_field == view_ref_found)
|
||||
return FALSE;
|
||||
|
||||
if (!outer_fixed && cached_table && cached_table->select_lex &&
|
||||
context->select_lex &&
|
||||
cached_table->select_lex != context->select_lex)
|
||||
{
|
||||
int ret;
|
||||
if ((ret= fix_outer_field(thd, &from_field, reference)) < 0)
|
||||
goto error;
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
outer_fixed= 1;
|
||||
}
|
||||
|
||||
set_field(from_field);
|
||||
if (thd->lex->in_sum_func &&
|
||||
thd->lex->in_sum_func->nest_level ==
|
||||
|
@ -4367,6 +4367,49 @@ String *Item::check_well_formed_result(String *str, bool send_error)
|
|||
return str;
|
||||
}
|
||||
|
||||
/*
|
||||
Compare two items using a given collation
|
||||
|
||||
SYNOPSIS
|
||||
eq_by_collation()
|
||||
item item to compare with
|
||||
binary_cmp TRUE <-> compare as binaries
|
||||
cs collation to use when comparing strings
|
||||
|
||||
DESCRIPTION
|
||||
This method works exactly as Item::eq if the collation cs coincides with
|
||||
the collation of the compared objects. Otherwise, first the collations that
|
||||
differ from cs are replaced for cs and then the items are compared by
|
||||
Item::eq. After the comparison the original collations of items are
|
||||
restored.
|
||||
|
||||
RETURN
|
||||
1 compared items has been detected as equal
|
||||
0 otherwise
|
||||
*/
|
||||
|
||||
bool Item::eq_by_collation(Item *item, bool binary_cmp, CHARSET_INFO *cs)
|
||||
{
|
||||
CHARSET_INFO *save_cs= 0;
|
||||
CHARSET_INFO *save_item_cs= 0;
|
||||
if (collation.collation != cs)
|
||||
{
|
||||
save_cs= collation.collation;
|
||||
collation.collation= cs;
|
||||
}
|
||||
if (item->collation.collation != cs)
|
||||
{
|
||||
save_item_cs= item->collation.collation;
|
||||
item->collation.collation= cs;
|
||||
}
|
||||
bool res= eq(item, binary_cmp);
|
||||
if (save_cs)
|
||||
collation.collation= save_cs;
|
||||
if (save_item_cs)
|
||||
item->collation.collation= save_item_cs;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Create a field to hold a string value from an item.
|
||||
|
|
|
@ -1004,6 +1004,7 @@ public:
|
|||
virtual Field::geometry_type get_geometry_type() const
|
||||
{ return Field::GEOM_GEOMETRY; };
|
||||
String *check_well_formed_result(String *str, bool send_error= 0);
|
||||
bool eq_by_collation(Item *item, bool binary_cmp, CHARSET_INFO *cs);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -3059,7 +3059,10 @@ void in_string::set(uint pos,Item *item)
|
|||
{
|
||||
if (res->uses_buffer_owned_by(str))
|
||||
res->copy();
|
||||
*str= *res;
|
||||
if (item->type() == Item::FUNC_ITEM)
|
||||
str->copy(*res);
|
||||
else
|
||||
*str= *res;
|
||||
}
|
||||
if (!str->charset())
|
||||
{
|
||||
|
|
|
@ -5489,6 +5489,8 @@ Item_func_sp::make_field(Send_field *tmp_field)
|
|||
DBUG_ENTER("Item_func_sp::make_field");
|
||||
DBUG_ASSERT(sp_result_field);
|
||||
sp_result_field->make_field(tmp_field);
|
||||
if (name)
|
||||
tmp_field->col_name= name;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
|
|
@ -2351,10 +2351,6 @@ static void init_signals(void)
|
|||
struct sigaction sa;
|
||||
DBUG_ENTER("init_signals");
|
||||
|
||||
if (test_flags & TEST_SIGINT)
|
||||
{
|
||||
my_sigset(thr_kill_signal, end_thread_signal);
|
||||
}
|
||||
my_sigset(THR_SERVER_ALARM,print_signal_warning); // Should never be called!
|
||||
|
||||
if (!(test_flags & TEST_NO_STACKTRACE) || (test_flags & TEST_CORE_ON_SIGNAL))
|
||||
|
@ -2391,7 +2387,6 @@ static void init_signals(void)
|
|||
(void) sigemptyset(&set);
|
||||
my_sigset(SIGPIPE,SIG_IGN);
|
||||
sigaddset(&set,SIGPIPE);
|
||||
sigaddset(&set,SIGINT);
|
||||
#ifndef IGNORE_SIGHUP_SIGQUIT
|
||||
sigaddset(&set,SIGQUIT);
|
||||
sigaddset(&set,SIGHUP);
|
||||
|
@ -2413,9 +2408,12 @@ static void init_signals(void)
|
|||
sigaddset(&set,THR_SERVER_ALARM);
|
||||
if (test_flags & TEST_SIGINT)
|
||||
{
|
||||
my_sigset(thr_kill_signal, end_thread_signal);
|
||||
// May be SIGINT
|
||||
sigdelset(&set, thr_kill_signal);
|
||||
}
|
||||
else
|
||||
sigaddset(&set,SIGINT);
|
||||
sigprocmask(SIG_SETMASK,&set,NULL);
|
||||
pthread_sigmask(SIG_SETMASK,&set,NULL);
|
||||
DBUG_VOID_RETURN;
|
||||
|
|
|
@ -29,9 +29,9 @@ int init_strvar_from_file(char *var, int max_size, IO_CACHE *f,
|
|||
|
||||
Master_info::Master_info()
|
||||
:Slave_reporting_capability("I/O"),
|
||||
ssl(0), fd(-1), io_thd(0), inited(0),
|
||||
ssl(0), ssl_verify_server_cert(0), fd(-1), io_thd(0), inited(0),
|
||||
abort_slave(0),slave_running(0),
|
||||
ssl_verify_server_cert(0), slave_run_id(0)
|
||||
slave_run_id(0)
|
||||
{
|
||||
host[0] = 0; user[0] = 0; password[0] = 0;
|
||||
ssl_ca[0]= 0; ssl_capath[0]= 0; ssl_cert[0]= 0;
|
||||
|
|
|
@ -2146,14 +2146,14 @@ ER_WRONG_SUB_KEY
|
|||
cze "Chybn-Bá podèást klíèe -- není to øetìzec nebo je del¹í ne¾ délka èásti klíèe"
|
||||
dan "Forkert indeksdel. Den anvendte nøgledel er ikke en streng eller længden er større end nøglelængden"
|
||||
nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of of de gebruikte lengte is langer dan de zoeksleutel"
|
||||
eng "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"
|
||||
eng "Incorrect prefix 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 prefix keys"
|
||||
est "Vigane võtme osa. Kasutatud võtmeosa ei ole string tüüpi, määratud pikkus on pikem kui võtmeosa või tabelihandler ei toeta seda tüüpi võtmeid"
|
||||
fre "Mauvaise sous-clef. Ce n'est pas un 'string' ou la longueur dépasse celle définie dans la clef"
|
||||
ger "Falscher Unterteilschlüssel. Der verwendete Schlüsselteil ist entweder kein String, die verwendete Länge ist länger als der Teilschlüssel oder die Speicher-Engine unterstützt keine Unterteilschlüssel"
|
||||
greek "ÅóöáëìÝíï sub part key. Ôï ÷ñçóéìïðïéïýìåíï key part äåí åßíáé string Þ ôï ìÞêïò ôïõ åßíáé ìåãáëýôåñï"
|
||||
hun "Rossz alkulcs. A hasznalt kulcsresz nem karaktersorozat vagy hosszabb, mint a kulcsresz"
|
||||
ita "Sotto-parte della chiave errata. La parte di chiave utilizzata non e` una stringa o la lunghezza e` maggiore della parte di chiave."
|
||||
jpn "Incorrect sub part key; the used key part isn't a string or the used length is longer than the key part"
|
||||
jpn "Incorrect prefix key; the used key part isn't a string or the used length is longer than the key part"
|
||||
kor "ºÎÁ¤È®ÇÑ ¼¹ö ÆÄÆ® Å°. »ç¿ëµÈ Å° ÆÄÆ®°¡ ½ºÆ®¸µÀÌ ¾Æ´Ï°Å³ª Å° ÆÄÆ®ÀÇ ±æÀÌ°¡ ³Ê¹« ±é´Ï´Ù."
|
||||
nor "Feil delnøkkel. Den brukte delnøkkelen er ikke en streng eller den oppgitte lengde er lengre enn nøkkel lengden"
|
||||
norwegian-ny "Feil delnykkel. Den brukte delnykkelen er ikkje ein streng eller den oppgitte lengda er lengre enn nykkellengden"
|
||||
|
@ -2162,7 +2162,7 @@ ER_WRONG_SUB_KEY
|
|||
rum "Componentul cheii este incorrect. Componentul folosit al cheii nu este un sir sau lungimea folosita este mai lunga decit lungimea cheii"
|
||||
rus "îÅËÏÒÒÅËÔÎÁÑ ÞÁÓÔØ ËÌÀÞÁ. éÓÐÏÌØÚÕÅÍÁÑ ÞÁÓÔØ ËÌÀÞÁ ÎÅ Ñ×ÌÑÅÔÓÑ ÓÔÒÏËÏÊ, ÕËÁÚÁÎÎÁÑ ÄÌÉÎÁ ÂÏÌØÛÅ, ÞÅÍ ÄÌÉÎÁ ÞÁÓÔÉ ËÌÀÞÁ, ÉÌÉ ÏÂÒÁÂÏÔÞÉË ÔÁÂÌÉÃÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÕÎÉËÁÌØÎÙÅ ÞÁÓÔÉ ËÌÀÞÁ"
|
||||
serbian "Pogrešan pod-kljuè dela kljuèa. Upotrebljeni deo kljuèa nije string, upotrebljena dužina je veæa od dela kljuèa ili handler tabela ne podržava jedinstvene pod-kljuèeve"
|
||||
slo "Incorrect sub part key; the used key part isn't a string or the used length is longer than the key part"
|
||||
slo "Incorrect prefix key; the used key part isn't a string or the used length is longer than the key part"
|
||||
spa "Parte de la clave es erronea. Una parte de la clave no es una cadena o la longitud usada es tan grande como la parte de la clave"
|
||||
swe "Felaktig delnyckel. Nyckeldelen är inte en sträng eller den angivna längden är längre än kolumnlängden"
|
||||
ukr "îÅצÒÎÁ ÞÁÓÔÉÎÁ ËÌÀÞÁ. ÷ÉËÏÒÉÓÔÁÎÁ ÞÁÓÔÉÎÁ ËÌÀÞÁ ÎÅ ¤ ÓÔÒÏËÏÀ, ÚÁÄÏ×ÇÁ ÁÂÏ ×ËÁÚ¦×ÎÉË ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ ÕΦËÁÌØÎÉÈ ÞÁÓÔÉÎ ËÌÀÞÅÊ"
|
||||
|
|
|
@ -801,7 +801,9 @@ static ulong get_sort(uint count,...)
|
|||
{
|
||||
for (; *str ; str++)
|
||||
{
|
||||
if (*str == wild_many || *str == wild_one || *str == wild_prefix)
|
||||
if (*str == wild_prefix && str[1])
|
||||
str++;
|
||||
else if (*str == wild_many || *str == wild_one)
|
||||
{
|
||||
wild_pos= (uint) (str - start) + 1;
|
||||
break;
|
||||
|
|
|
@ -2983,7 +2983,9 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
|
|||
}
|
||||
}
|
||||
else if (old->eq_func && new_fields->eq_func &&
|
||||
old->val->eq(new_fields->val, old->field->binary()))
|
||||
old->val->eq_by_collation(new_fields->val,
|
||||
old->field->binary(),
|
||||
old->field->charset()))
|
||||
|
||||
{
|
||||
old->level= and_level;
|
||||
|
|
|
@ -61,8 +61,8 @@ static handler *heap_create_handler(handlerton *hton,
|
|||
*****************************************************************************/
|
||||
|
||||
ha_heap::ha_heap(handlerton *hton, TABLE_SHARE *table_arg)
|
||||
:handler(hton, table_arg), file(0), records_changed(0), internal_table(0),
|
||||
key_stat_version(0)
|
||||
:handler(hton, table_arg), file(0), records_changed(0), key_stat_version(0),
|
||||
internal_table(0)
|
||||
{}
|
||||
|
||||
|
||||
|
|
|
@ -425,8 +425,9 @@ public:
|
|||
ArrayPool<TriggerRecord> & trp)
|
||||
: slaveState(b, validSlaveTransitions, validSlaveTransitionsCount,1)
|
||||
, tables(tp), triggers(trp), files(bp)
|
||||
, masterData(b), backup(b)
|
||||
, ctlFilePtr(RNIL), logFilePtr(RNIL), dataFilePtr(RNIL)
|
||||
, masterData(b), backup(b)
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -259,14 +259,14 @@ Pgman::execCONTINUEB(Signal* signal)
|
|||
// page entry
|
||||
|
||||
Pgman::Page_entry::Page_entry(Uint32 file_no, Uint32 page_no) :
|
||||
m_state(0),
|
||||
m_file_no(file_no),
|
||||
m_state(0),
|
||||
m_page_no(page_no),
|
||||
m_real_page_i(RNIL),
|
||||
m_copy_page_i(RNIL),
|
||||
m_lsn(0),
|
||||
m_last_lcp(0),
|
||||
m_dirty_count(0),
|
||||
m_copy_page_i(RNIL),
|
||||
m_busy_count(0),
|
||||
m_requests()
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue