mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Comment and test changes per review request by Timour. All tests pass on production with this code.
mysql-test/r/federated.result: added explain results to join test results per Timour's request. mysql-test/t/federated.test: Added explain to test per Timour's request sql/ha_federated.cc: better comment to explain why we need table->status set to 0
This commit is contained in:
@@ -906,6 +906,13 @@ INSERT INTO federated.t1 (name, country_id, other) VALUES ('Lenz', 2, 22222);
|
|||||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Marizio', 3, 33333);
|
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Marizio', 3, 33333);
|
||||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Monty', 4, 33333);
|
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Monty', 4, 33333);
|
||||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Sanja', 5, 33333);
|
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Sanja', 5, 33333);
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1, federated.countries WHERE
|
||||||
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||||
|
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1, federated.countries WHERE
|
FROM federated.t1, federated.countries WHERE
|
||||||
@@ -916,6 +923,13 @@ Lenz 2 22222 Germany
|
|||||||
Marizio 3 33333 Italy
|
Marizio 3 33333 Italy
|
||||||
Monty 4 33333 Finland
|
Monty 4 33333 Finland
|
||||||
Sanja 5 33333 Ukraine
|
Sanja 5 33333 Ukraine
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||||
|
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1 INNER JOIN federated.countries ON
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
@@ -926,6 +940,14 @@ Lenz 2 22222 Germany
|
|||||||
Marizio 3 33333 Italy
|
Marizio 3 33333 Italy
|
||||||
Monty 4 33333 Finland
|
Monty 4 33333 Finland
|
||||||
Sanja 5 33333 Ukraine
|
Sanja 5 33333 Ukraine
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
|
federated.t1.country_id = federated.countries.id
|
||||||
|
WHERE federated.t1.name = 'Monty';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE countries ALL PRIMARY NULL NULL NULL 5
|
||||||
|
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120 Using where
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1 INNER JOIN federated.countries ON
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
@@ -933,6 +955,13 @@ federated.t1.country_id = federated.countries.id
|
|||||||
WHERE federated.t1.name = 'Monty';
|
WHERE federated.t1.name = 'Monty';
|
||||||
name country_id other country
|
name country_id other country
|
||||||
Monty 4 33333 Finland
|
Monty 4 33333 Finland
|
||||||
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.countries.id;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10000 Using temporary; Using filesort
|
||||||
|
1 SIMPLE countries eq_ref PRIMARY PRIMARY 4 federated.t1.country_id 1
|
||||||
SELECT federated.t1.*, federated.countries.country
|
SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 LEFT JOIN federated.countries
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
@@ -943,6 +972,13 @@ id country_id name other country
|
|||||||
3 3 Marizio 33333 Italy
|
3 3 Marizio 33333 Italy
|
||||||
4 4 Monty 33333 Finland
|
4 4 Monty 33333 Finland
|
||||||
5 5 Sanja 33333 Ukraine
|
5 5 Sanja 33333 Ukraine
|
||||||
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.countries.country;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10000 Using temporary; Using filesort
|
||||||
|
1 SIMPLE countries eq_ref PRIMARY PRIMARY 4 federated.t1.country_id 1
|
||||||
SELECT federated.t1.*, federated.countries.country
|
SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 LEFT JOIN federated.countries
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
@@ -953,6 +989,13 @@ id country_id name other country
|
|||||||
1 1 Kumar 11111 India
|
1 1 Kumar 11111 India
|
||||||
3 3 Marizio 33333 Italy
|
3 3 Marizio 33333 Italy
|
||||||
5 5 Sanja 33333 Ukraine
|
5 5 Sanja 33333 Ukraine
|
||||||
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 RIGHT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.t1.country_id;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE countries ALL NULL NULL NULL NULL 5 Using temporary; Using filesort
|
||||||
|
1 SIMPLE t1 ref country_id country_id 4 federated.countries.id 120
|
||||||
SELECT federated.t1.*, federated.countries.country
|
SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 RIGHT JOIN federated.countries
|
FROM federated.t1 RIGHT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
@@ -862,16 +862,32 @@ INSERT INTO federated.t1 (name, country_id, other) VALUES ('Monty', 4, 33333);
|
|||||||
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Sanja', 5, 33333);
|
INSERT INTO federated.t1 (name, country_id, other) VALUES ('Sanja', 5, 33333);
|
||||||
|
|
||||||
#inner join
|
#inner join
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1, federated.countries WHERE
|
||||||
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1, federated.countries WHERE
|
FROM federated.t1, federated.countries WHERE
|
||||||
federated.t1.country_id = federated.countries.id;
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1 INNER JOIN federated.countries ON
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
federated.t1.country_id = federated.countries.id;
|
federated.t1.country_id = federated.countries.id;
|
||||||
|
|
||||||
|
EXPLAIN SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
|
federated.t1.country_id = federated.countries.id
|
||||||
|
WHERE federated.t1.name = 'Monty';
|
||||||
|
|
||||||
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
SELECT federated.t1.name AS name, federated.t1.country_id AS country_id,
|
||||||
federated.t1.other AS other, federated.countries.country AS country
|
federated.t1.other AS other, federated.countries.country AS country
|
||||||
FROM federated.t1 INNER JOIN federated.countries ON
|
FROM federated.t1 INNER JOIN federated.countries ON
|
||||||
@@ -879,17 +895,32 @@ federated.t1.country_id = federated.countries.id
|
|||||||
WHERE federated.t1.name = 'Monty';
|
WHERE federated.t1.name = 'Monty';
|
||||||
|
|
||||||
#left join
|
#left join
|
||||||
SELECT federated.t1.*, federated.countries.country
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 LEFT JOIN federated.countries
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
ORDER BY federated.countries.id;
|
ORDER BY federated.countries.id;
|
||||||
|
|
||||||
|
SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.countries.id;
|
||||||
|
|
||||||
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.countries.country;
|
||||||
|
|
||||||
SELECT federated.t1.*, federated.countries.country
|
SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 LEFT JOIN federated.countries
|
FROM federated.t1 LEFT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
ORDER BY federated.countries.country;
|
ORDER BY federated.countries.country;
|
||||||
|
|
||||||
#right join
|
#right join
|
||||||
|
EXPLAIN SELECT federated.t1.*, federated.countries.country
|
||||||
|
FROM federated.t1 RIGHT JOIN federated.countries
|
||||||
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
ORDER BY federated.t1.country_id;
|
||||||
|
|
||||||
SELECT federated.t1.*, federated.countries.country
|
SELECT federated.t1.*, federated.countries.country
|
||||||
FROM federated.t1 RIGHT JOIN federated.countries
|
FROM federated.t1 RIGHT JOIN federated.countries
|
||||||
ON federated.t1.country_id = federated.countries.id
|
ON federated.t1.country_id = federated.countries.id
|
||||||
|
@@ -1526,7 +1526,11 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
|
|||||||
table->status= STATUS_NOT_FOUND;
|
table->status= STATUS_NOT_FOUND;
|
||||||
DBUG_RETURN(mysql_errno(mysql));
|
DBUG_RETURN(mysql_errno(mysql));
|
||||||
}
|
}
|
||||||
/* very important - joins will not work without this! */
|
/*
|
||||||
|
This basically says that the record in table->record[0] is legal, and that it is
|
||||||
|
ok to use this record, for whatever reason, such as with a join (without it, joins
|
||||||
|
will not work)
|
||||||
|
*/
|
||||||
table->status=0;
|
table->status=0;
|
||||||
|
|
||||||
DBUG_RETURN(rnd_next(buf));
|
DBUG_RETURN(rnd_next(buf));
|
||||||
|
Reference in New Issue
Block a user