Loading mysql-test/r/ndb_index_unique.result +15 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,21 @@ a b c 6 7 2 7 8 3 8 2 3 create unique index bi using hash on t2(b); insert into t2 values(9, 3, 1); ERROR 23000: Duplicate entry '' for key 0 alter table t2 drop index bi; insert into t2 values(9, 3, 1); select * from t2 order by a; a b c 2 3 5 3 4 6 4 5 8 5 6 2 6 7 2 7 8 3 8 2 3 9 3 1 drop table t2; CREATE TABLE t2 ( a int unsigned NOT NULL PRIMARY KEY, Loading mysql-test/r/subselect.result +74 −0 Original line number Diff line number Diff line Loading @@ -3026,3 +3026,77 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 2 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE DROP TABLE t1; CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (2), (4), (1), (3); CREATE TABLE t2 (b int, c int); INSERT INTO t2 VALUES (2,1), (1,3), (2,1), (4,4), (2,2), (1,4); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2 ); a 2 4 1 3 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2), a; a 1 2 3 4 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1), a; ERROR 21000: Subquery returns more than 1 row SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 2); b MAX(c) 1 4 2 2 4 4 SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 1); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; a 1 2 3 4 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; a 4 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)) > 3; ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); a 2 4 1 3 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); a 2 1 3 4 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); ERROR 21000: Subquery returns more than 1 row DROP TABLE t1,t2; mysql-test/t/ndb_index_unique.test +8 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,14 @@ delete from t2 where a = 1; insert into t2 values(8, 2, 3); select * from t2 order by a; # Bug #24818 CREATE UNIQUE INDEX (...) USING HASH on a NDB table crashes mysqld create unique index bi using hash on t2(b); -- error 1062 insert into t2 values(9, 3, 1); alter table t2 drop index bi; insert into t2 values(9, 3, 1); select * from t2 order by a; drop table t2; -- error 1121 Loading mysql-test/t/subselect.test +59 −0 Original line number Diff line number Diff line Loading @@ -1993,4 +1993,63 @@ SELECT a FROM t1 WHERE (SELECT 1 FROM DUAL WHERE 1=0) IS NULL; EXPLAIN SELECT a FROM t1 WHERE (SELECT 1 FROM DUAL WHERE 1=0) IS NULL; DROP TABLE t1; # # Bug 24653: sorting by expressions containing subselects # that return more than one row # CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (2), (4), (1), (3); CREATE TABLE t2 (b int, c int); INSERT INTO t2 VALUES (2,1), (1,3), (2,1), (4,4), (2,2), (1,4); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2 ); --error 1242 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2), a; --error 1242 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1), a; SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 2); --error 1242 SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 1); SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; --error 1242 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; --error 1242 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)) > 3; SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); --error 1242 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); --error 1242 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); DROP TABLE t1,t2; # End of 4.1 tests ndb/src/common/util/File.cpp +15 −3 Original line number Diff line number Diff line Loading @@ -123,12 +123,24 @@ bool File_class::close() { bool rc = true; int retval = 0; if (m_file != NULL) { ::fflush(m_file); rc = (::fclose(m_file) == 0 ? true : false); m_file = NULL; // Try again? retval = ::fclose(m_file); while ( (retval != 0) && (errno == EINTR) ){ retval = ::fclose(m_file); } if( retval == 0){ rc = true; } else { rc = false; ndbout_c("ERROR: Close file error in File.cpp for %s",strerror(errno)); } } m_file = NULL; return rc; } Loading Loading
mysql-test/r/ndb_index_unique.result +15 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,21 @@ a b c 6 7 2 7 8 3 8 2 3 create unique index bi using hash on t2(b); insert into t2 values(9, 3, 1); ERROR 23000: Duplicate entry '' for key 0 alter table t2 drop index bi; insert into t2 values(9, 3, 1); select * from t2 order by a; a b c 2 3 5 3 4 6 4 5 8 5 6 2 6 7 2 7 8 3 8 2 3 9 3 1 drop table t2; CREATE TABLE t2 ( a int unsigned NOT NULL PRIMARY KEY, Loading
mysql-test/r/subselect.result +74 −0 Original line number Diff line number Diff line Loading @@ -3026,3 +3026,77 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 2 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE DROP TABLE t1; CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (2), (4), (1), (3); CREATE TABLE t2 (b int, c int); INSERT INTO t2 VALUES (2,1), (1,3), (2,1), (4,4), (2,2), (1,4); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2 ); a 2 4 1 3 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2), a; a 1 2 3 4 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1), a; ERROR 21000: Subquery returns more than 1 row SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 2); b MAX(c) 1 4 2 2 4 4 SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 1); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; a 1 2 3 4 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; a 4 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)) > 3; ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); a 2 4 1 3 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); ERROR 21000: Subquery returns more than 1 row SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); a 2 1 3 4 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); ERROR 21000: Subquery returns more than 1 row DROP TABLE t1,t2;
mysql-test/t/ndb_index_unique.test +8 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,14 @@ delete from t2 where a = 1; insert into t2 values(8, 2, 3); select * from t2 order by a; # Bug #24818 CREATE UNIQUE INDEX (...) USING HASH on a NDB table crashes mysqld create unique index bi using hash on t2(b); -- error 1062 insert into t2 values(9, 3, 1); alter table t2 drop index bi; insert into t2 values(9, 3, 1); select * from t2 order by a; drop table t2; -- error 1121 Loading
mysql-test/t/subselect.test +59 −0 Original line number Diff line number Diff line Loading @@ -1993,4 +1993,63 @@ SELECT a FROM t1 WHERE (SELECT 1 FROM DUAL WHERE 1=0) IS NULL; EXPLAIN SELECT a FROM t1 WHERE (SELECT 1 FROM DUAL WHERE 1=0) IS NULL; DROP TABLE t1; # # Bug 24653: sorting by expressions containing subselects # that return more than one row # CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (2), (4), (1), (3); CREATE TABLE t2 (b int, c int); INSERT INTO t2 VALUES (2,1), (1,3), (2,1), (4,4), (2,2), (1,4); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2 ); --error 1242 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1); SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 2), a; --error 1242 SELECT a FROM t1 ORDER BY (SELECT c FROM t2 WHERE b > 1), a; SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 2); --error 1242 SELECT b, MAX(c) FROM t2 GROUP BY b, (SELECT c FROM t2 WHERE b > 1); SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; --error 1242 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)) > 3; --error 1242 SELECT a FROM t1 GROUP BY a HAVING IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)) > 3; SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 2), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); --error 1242 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 1), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 2 ORDER BY b)); --error 1242 SELECT a FROM t1 ORDER BY IFNULL((SELECT b FROM t2 WHERE b > 4), (SELECT c FROM t2 WHERE c=a AND b > 1 ORDER BY b)); DROP TABLE t1,t2; # End of 4.1 tests
ndb/src/common/util/File.cpp +15 −3 Original line number Diff line number Diff line Loading @@ -123,12 +123,24 @@ bool File_class::close() { bool rc = true; int retval = 0; if (m_file != NULL) { ::fflush(m_file); rc = (::fclose(m_file) == 0 ? true : false); m_file = NULL; // Try again? retval = ::fclose(m_file); while ( (retval != 0) && (errno == EINTR) ){ retval = ::fclose(m_file); } if( retval == 0){ rc = true; } else { rc = false; ndbout_c("ERROR: Close file error in File.cpp for %s",strerror(errno)); } } m_file = NULL; return rc; } Loading