diff options
author | unknown <msvensson@neptunus.(none)> | 2006-01-30 10:45:45 +0100 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-01-30 10:45:45 +0100 |
commit | 462fcf405e4898cbfec4b2237654583798705df6 (patch) | |
tree | 8f0b2baf4ad6f2748fbcb22bc138618745d5a980 | |
parent | 65779cc71891b4a6f735350eea2257e657e74c34 (diff) | |
parent | ef0cd2f58a785113cda84bb774f39428b99de0ef (diff) | |
download | mariadb-git-462fcf405e4898cbfec4b2237654583798705df6.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysqltest_var/my50-mysqltest_var-integration
-rw-r--r-- | mysql-test/r/information_schema.result | 2 | ||||
-rw-r--r-- | mysql-test/r/information_schema_db.result | 2 | ||||
-rw-r--r-- | mysql-test/r/join_nested.result | 23 | ||||
-rw-r--r-- | mysql-test/t/join_nested.test | 28 | ||||
-rw-r--r-- | sql/sql_select.cc | 3 | ||||
-rw-r--r-- | sql/sql_show.cc | 4 | ||||
-rw-r--r-- | sql/table.h | 4 |
7 files changed, 59 insertions, 7 deletions
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 08d698092e2..d3576e24a44 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -50,8 +50,8 @@ TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES TRIGGERS -VIEWS USER_PRIVILEGES +VIEWS columns_priv db func diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result index d3ff310b812..0229fdef2d5 100644 --- a/mysql-test/r/information_schema_db.result +++ b/mysql-test/r/information_schema_db.result @@ -15,8 +15,8 @@ TABLES TABLE_CONSTRAINTS TABLE_PRIVILEGES TRIGGERS -VIEWS USER_PRIVILEGES +VIEWS show tables from INFORMATION_SCHEMA like 'T%'; Tables_in_information_schema (T%) TABLES diff --git a/mysql-test/r/join_nested.result b/mysql-test/r/join_nested.result index faad969fcd1..dfcfa35d31d 100644 --- a/mysql-test/r/join_nested.result +++ b/mysql-test/r/join_nested.result @@ -1481,3 +1481,26 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref a a 5 test.t1.a 1 1 SIMPLE t3 ref a a 5 test.t2.a 1 drop table t1, t2, t3; +CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10)); +CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10)); +CREATE TABLE t3 (cid int NOT NULL PRIMARY KEY, +id int NOT NULL, +pid int NOT NULL); +INSERT INTO t1 VALUES (1, 'A'), (3, 'C'); +INSERT INTO t2 VALUES (1, 'A'), (3, 'C'); +INSERT INTO t3 VALUES (1, 1, 1), (3, 3, 3); +SELECT * FROM t1 p LEFT JOIN (t3 JOIN t1) +ON (t1.id=t3.id AND t1.type='B' AND p.id=t3.id) +LEFT JOIN t2 ON (t3.pid=t2.pid) +WHERE p.id=1; +id type cid id pid id type pid type +1 A NULL NULL NULL NULL NULL NULL NULL +CREATE VIEW v1 AS +SELECT t3.* FROM t3 JOIN t1 ON t1.id=t3.id AND t1.type='B'; +SELECT * FROM t1 p LEFT JOIN v1 ON p.id=v1.id +LEFT JOIN t2 ON v1.pid=t2.pid +WHERE p.id=1; +id type cid id pid pid type +1 A NULL NULL NULL NULL NULL +DROP VIEW v1; +DROP TABLE t1,t2,t3; diff --git a/mysql-test/t/join_nested.test b/mysql-test/t/join_nested.test index 145edded486..8adcf05be93 100644 --- a/mysql-test/t/join_nested.test +++ b/mysql-test/t/join_nested.test @@ -914,3 +914,31 @@ explain select * from t1 left join on (t1.a = t2.a); drop table t1, t2, t3; +# +# Bug #16260: single row table in the inner nest of an outer join +# + +CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10)); +CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10)); +CREATE TABLE t3 (cid int NOT NULL PRIMARY KEY, + id int NOT NULL, + pid int NOT NULL); + +INSERT INTO t1 VALUES (1, 'A'), (3, 'C'); +INSERT INTO t2 VALUES (1, 'A'), (3, 'C'); +INSERT INTO t3 VALUES (1, 1, 1), (3, 3, 3); + +SELECT * FROM t1 p LEFT JOIN (t3 JOIN t1) + ON (t1.id=t3.id AND t1.type='B' AND p.id=t3.id) + LEFT JOIN t2 ON (t3.pid=t2.pid) + WHERE p.id=1; + +CREATE VIEW v1 AS + SELECT t3.* FROM t3 JOIN t1 ON t1.id=t3.id AND t1.type='B'; + +SELECT * FROM t1 p LEFT JOIN v1 ON p.id=v1.id + LEFT JOIN t2 ON v1.pid=t2.pid + WHERE p.id=1; + +DROP VIEW v1; +DROP TABLE t1,t2,t3; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 95da0e6263a..63d46934555 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2172,7 +2172,8 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables, COND *conds, if (eq_part.is_prefix(table->key_info[key].key_parts) && ((table->key_info[key].flags & (HA_NOSAME | HA_END_SPACE_KEY)) == HA_NOSAME) && - !table->fulltext_searched) + !table->fulltext_searched && + !table->pos_in_table_list->embedding) { if (const_ref == eq_part) { // Found everything for ref. diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 1f776d815df..1b854a005ce 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -4198,12 +4198,12 @@ ST_SCHEMA_TABLE schema_tables[]= fill_schema_table_privileges, 0, 0, -1, -1, 0}, {"TRIGGERS", triggers_fields_info, create_schema_table, get_all_tables, make_old_format, get_schema_triggers_record, 5, 6, 0}, + {"USER_PRIVILEGES", user_privileges_fields_info, create_schema_table, + fill_schema_user_privileges, 0, 0, -1, -1, 0}, {"VARIABLES", variables_fields_info, create_schema_table, fill_variables, make_old_format, 0, -1, -1, 1}, {"VIEWS", view_fields_info, create_schema_table, get_all_tables, 0, get_schema_views_record, 1, 2, 0}, - {"USER_PRIVILEGES", user_privileges_fields_info, create_schema_table, - fill_schema_user_privileges, 0, 0, -1, -1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0} }; diff --git a/sql/table.h b/sql/table.h index 947316e253f..78a942ef301 100644 --- a/sql/table.h +++ b/sql/table.h @@ -309,9 +309,9 @@ enum enum_schema_tables SCH_TABLE_NAMES, SCH_TABLE_PRIVILEGES, SCH_TRIGGERS, + SCH_USER_PRIVILEGES, SCH_VARIABLES, - SCH_VIEWS, - SCH_USER_PRIVILEGES + SCH_VIEWS }; |