developers
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 3 participants
- 6830 discussions

[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2782)
by knielsenīŧ knielsen-hq.org 29 Dec '09
by knielsenīŧ knielsen-hq.org 29 Dec '09
29 Dec '09
#At lp:maria
2782 knielsen(a)knielsen-hq.org 2009-12-29 [merge]
Merge Sergey's fix for pbxt.join_nested.
modified:
mysql-test/suite/pbxt/r/join_nested.result
mysql-test/suite/pbxt/t/join_nested.test
=== modified file 'mysql-test/suite/pbxt/r/join_nested.result'
--- a/mysql-test/suite/pbxt/r/join_nested.result 2009-11-24 10:19:08 +0000
+++ b/mysql-test/suite/pbxt/r/join_nested.result 2009-12-27 16:48:27 +0000
@@ -968,7 +968,7 @@ id select_type table type possible_keys
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t8(b);
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -1003,22 +1003,23 @@ t0.b=t1.b AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where
-1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1 100.00 Using where
-1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
-Warnings:
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t0 ALL NULL NULL NULL NULL 3
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using join buffer
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1
+1 SIMPLE t5 ALL idx_b NULL NULL NULL 3
+1 SIMPLE t6 ALL NULL NULL NULL NULL 3
+1 SIMPLE t7 ALL NULL NULL NULL NULL 2
+1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1
+1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using join buffer
+ATTENTION: the above EXPLAIN has several competing QEPs with identical
+. costs. To combat the plan change it uses --sorted_result and
+. and --replace tricks
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -1053,19 +1054,20 @@ t0.b=t1.b AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t0 ref idx_a idx_a 5 const 1 100.00 Using where
-1 SIMPLE t1 ref idx_b idx_b 5 test.t0.b 1 100.00 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where
-1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1 100.00 Using where
-1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
-Warnings:
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t0 ref idx_a idx_a 5 const 1
+1 SIMPLE t1 ref idx_b idx_b 5 test.t0.b 1
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1
+1 SIMPLE t5 ALL idx_b NULL NULL NULL 3
+1 SIMPLE t6 ALL NULL NULL NULL NULL 3
+1 SIMPLE t7 ALL NULL NULL NULL NULL 2
+1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1
+1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using join buffer
+ATTENTION: the above EXPLAIN has several competing QEPs with identical
+. costs. To combat the plan change it uses --sorted_result
+. and --replace tricks
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
=== modified file 'mysql-test/suite/pbxt/t/join_nested.test'
--- a/mysql-test/suite/pbxt/t/join_nested.test 2009-08-17 15:57:58 +0000
+++ b/mysql-test/suite/pbxt/t/join_nested.test 2009-12-27 16:48:27 +0000
@@ -546,8 +546,9 @@ SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.
CREATE INDEX idx_b ON t8(b);
+--replace_regex /Using where; // /Using where//
--sorted_result
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -582,12 +583,16 @@ SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
+--echo ATTENTION: the above EXPLAIN has several competing QEPs with identical
+--echo . costs. To combat the plan change it uses --sorted_result and
+--echo . and --replace tricks
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
+--replace_regex /Using where; // /Using where//
--sorted_result
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -622,6 +627,9 @@ SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
+--echo ATTENTION: the above EXPLAIN has several competing QEPs with identical
+--echo . costs. To combat the plan change it uses --sorted_result
+--echo . and --replace tricks
--sorted_result
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
1
0

[Maria-developers] Rev 2743: DS-MRR backport: fix buildbot valgrind failures: in file:///home/psergey/dev/maria-5.2-dsmrr-r3/
by Sergey Petrunya 27 Dec '09
by Sergey Petrunya 27 Dec '09
27 Dec '09
At file:///home/psergey/dev/maria-5.2-dsmrr-r3/
------------------------------------------------------------
revno: 2743
revision-id: psergey(a)askmonty.org-20091227202422-fs9fgo8x2wk9ry15
parent: igor(a)askmonty.org-20091222151849-rqp41x6x9r14liz6
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.2-dsmrr-r3
timestamp: Sun 2009-12-27 23:24:22 +0300
message:
DS-MRR backport: fix buildbot valgrind failures:
- Do call update_used_tables() for new conditions obtained when adding
outer join's triggered conditions. Correct values of used_tables() are
now needed for condition pushdown.
- Update test results
=== modified file 'mysql-test/suite/pbxt/r/join_outer.result'
--- a/mysql-test/suite/pbxt/r/join_outer.result 2009-12-16 09:28:51 +0000
+++ b/mysql-test/suite/pbxt/r/join_outer.result 2009-12-27 20:24:22 +0000
@@ -886,7 +886,7 @@
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 const PRIMARY PRIMARY 4 const 1 Using index
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
-1 SIMPLE t2 ALL NULL NULL NULL NULL 2
+1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where
1 SIMPLE t3 ALL NULL NULL NULL NULL 2
drop table t1,t2;
create table t1 (a int, b int);
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2009-12-21 02:26:15 +0000
+++ b/sql/sql_select.cc 2009-12-27 20:24:22 +0000
@@ -6201,6 +6201,7 @@
cond_tab->set_select_cond(new_cond, __LINE__);
if (!cond_tab->select_cond)
DBUG_RETURN(1);
+ cond_tab->select_cond->update_used_tables();
cond_tab->select_cond->quick_fix_field();
}
}
@@ -6482,6 +6483,7 @@
if (!cond_tab->select_cond)
DBUG_RETURN(1);
cond_tab->select_cond->quick_fix_field();
+ cond_tab->select_cond->update_used_tables();
if (cond_tab->select)
cond_tab->select->cond= cond_tab->select_cond;
}
@@ -6537,6 +6539,7 @@
(ulong)cond_tab->select_cond));
if (!cond_tab->select_cond)
DBUG_RETURN(1);
+ cond_tab->select_cond->update_used_tables();
cond_tab->select_cond->quick_fix_field();
if (cond_tab->select)
cond_tab->select->cond= cond_tab->select_cond;
1
0

[Maria-developers] Rev 2777: Make pbxt.join_nested test pass in file:///home/psergey/dev/5.1-merge-look/
by Sergey Petrunya 27 Dec '09
by Sergey Petrunya 27 Dec '09
27 Dec '09
At file:///home/psergey/dev/5.1-merge-look/
------------------------------------------------------------
revno: 2777
revision-id: psergey(a)askmonty.org-20091227164827-038uergwe82hyd1m
parent: knielsen(a)knielsen-hq.org-20091214083138-axta6hzovkyt65wg
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: 5.1-merge-look
timestamp: Sun 2009-12-27 19:48:27 +0300
message:
Make pbxt.join_nested test pass
- The reason the test failed was competition between 3+ QEPs with identical
costs. Before, two plans were competing, and that was addressed by using
--sorted_result on the EXPLAIN output because they were different only in
join order.
Now we've got a 3rd plan which differs with "Using where" and that doesn't
work anymore.
- This patch fixes it by removing 'Using where' from EXPLAIN output. Test coverage
is somewhat reduced but probably still ok as PBXT and nested outer join processing
have no interaction and we don't expect any bugs here.
=== modified file 'mysql-test/suite/pbxt/r/join_nested.result'
--- a/mysql-test/suite/pbxt/r/join_nested.result 2009-11-24 10:19:08 +0000
+++ b/mysql-test/suite/pbxt/r/join_nested.result 2009-12-27 16:48:27 +0000
@@ -968,7 +968,7 @@
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t8(b);
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -1003,22 +1003,23 @@
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where
-1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1 100.00 Using where
-1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
-Warnings:
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t0 ALL NULL NULL NULL NULL 3
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using join buffer
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1
+1 SIMPLE t5 ALL idx_b NULL NULL NULL 3
+1 SIMPLE t6 ALL NULL NULL NULL NULL 3
+1 SIMPLE t7 ALL NULL NULL NULL NULL 2
+1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1
+1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using join buffer
+ATTENTION: the above EXPLAIN has several competing QEPs with identical
+. costs. To combat the plan change it uses --sorted_result and
+. and --replace tricks
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -1053,19 +1054,20 @@
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t0 ref idx_a idx_a 5 const 1 100.00 Using where
-1 SIMPLE t1 ref idx_b idx_b 5 test.t0.b 1 100.00 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where
-1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1 100.00 Using where
-1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
-Warnings:
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t0 ref idx_a idx_a 5 const 1
+1 SIMPLE t1 ref idx_b idx_b 5 test.t0.b 1
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1
+1 SIMPLE t5 ALL idx_b NULL NULL NULL 3
+1 SIMPLE t6 ALL NULL NULL NULL NULL 3
+1 SIMPLE t7 ALL NULL NULL NULL NULL 2
+1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 1
+1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using join buffer
+ATTENTION: the above EXPLAIN has several competing QEPs with identical
+. costs. To combat the plan change it uses --sorted_result
+. and --replace tricks
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
=== modified file 'mysql-test/suite/pbxt/t/join_nested.test'
--- a/mysql-test/suite/pbxt/t/join_nested.test 2009-08-17 15:57:58 +0000
+++ b/mysql-test/suite/pbxt/t/join_nested.test 2009-12-27 16:48:27 +0000
@@ -546,8 +546,9 @@
CREATE INDEX idx_b ON t8(b);
+--replace_regex /Using where; // /Using where//
--sorted_result
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -582,12 +583,16 @@
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
+--echo ATTENTION: the above EXPLAIN has several competing QEPs with identical
+--echo . costs. To combat the plan change it uses --sorted_result and
+--echo . and --replace tricks
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
+--replace_regex /Using where; // /Using where//
--sorted_result
-EXPLAIN EXTENDED
+EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -622,6 +627,9 @@
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
+--echo ATTENTION: the above EXPLAIN has several competing QEPs with identical
+--echo . costs. To combat the plan change it uses --sorted_result
+--echo . and --replace tricks
--sorted_result
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
1
1

[Maria-developers] Rev 2778: Merge in file:///home/psergey/dev/5.1-merge-look/
by Sergey Petrunya 27 Dec '09
by Sergey Petrunya 27 Dec '09
27 Dec '09
At file:///home/psergey/dev/5.1-merge-look/
------------------------------------------------------------
revno: 2778
revision-id: psergey(a)askmonty.org-20091227165146-ij7tcujhkaubuizu
parent: psergey(a)askmonty.org-20091227164827-038uergwe82hyd1m
parent: knielsen(a)knielsen-hq.org-20091216081318-kkf6pakxiu3g68v1
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: 5.1-merge-look
timestamp: Sun 2009-12-27 19:51:46 +0300
message:
Merge
modified:
BUILD/FINISH.sh sp1f-finish.sh-20001218212418-rjfhkdbumwhfwg4upd5j2pgfe375sjfq
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
dbug/dbug.c sp1f-dbug.c-19700101030959-dmu3qmh72hbptp5opqnmfgjtfckxi5ug
extra/yassl/taocrypt/include/block.hpp sp1f-block.hpp-20050428132313-36s5yrjvbk36ud3nkobt5zsv2ctac72e
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/lib/v1/mysql-test-run.pl mtrv1.pl-20081114074002-vy3rb5dcxdfqqvah-1
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/ctype_ucs.result sp1f-ctype_ucs.result-20030916112630-sohywipskzw3eqmbhfsqxqjteoun6t2g
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
mysql-test/suite/funcs_1/r/innodb_func_view.result sp1f-innodb_func_view.res-20070206175435-zksozsfanah6kcpyvvlsojjqamdrlaix
mysql-test/suite/funcs_1/r/memory_func_view.result sp1f-memory_func_view.res-20070206175436-3fqxnwbedehhtbacqfdpguyzlzigftqi
mysql-test/suite/funcs_1/r/myisam_func_view.result sp1f-myisam_func_view.res-20070206175437-hx5547ncsoco2bpruecyswjziotocyhd
mysql-test/t/ctype_ucs.test sp1f-ctype_ucs.test-20030916112631-7diba44oovwv3h5kqbswfqbveczwbrxv
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
plugin/fulltext/plugin_example.c sp1f-plugin_example.c-20051228120521-okmw6cytrbhx3kpxsuswy6v7agqdiaik
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
sql/my_decimal.cc sp1f-my_decimal.cc-20050208224937-tgb63ttruwc4ihp23jkciv5vfpwwm5bv
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
strings/ctype-ucs2.c sp1f-ctypeucs2.c-20030521102942-3fr4x6ti6jw6vqwdh7byhlxpu6oivdnn
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
------------------------------------------------------------
revno: 2776.1.1
revision-id: knielsen(a)knielsen-hq.org-20091216081318-kkf6pakxiu3g68v1
parent: knielsen(a)knielsen-hq.org-20091214083138-axta6hzovkyt65wg
parent: hakan(a)askmonty.org-20091209164300-x8yk7p3ip6xo3etm
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-pbxt
timestamp: Wed 2009-12-16 09:13:18 +0100
message:
Automatic merge with MariaDB trunk.
modified:
BUILD/FINISH.sh sp1f-finish.sh-20001218212418-rjfhkdbumwhfwg4upd5j2pgfe375sjfq
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
dbug/dbug.c sp1f-dbug.c-19700101030959-dmu3qmh72hbptp5opqnmfgjtfckxi5ug
extra/yassl/taocrypt/include/block.hpp sp1f-block.hpp-20050428132313-36s5yrjvbk36ud3nkobt5zsv2ctac72e
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/lib/v1/mysql-test-run.pl mtrv1.pl-20081114074002-vy3rb5dcxdfqqvah-1
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/ctype_ucs.result sp1f-ctype_ucs.result-20030916112630-sohywipskzw3eqmbhfsqxqjteoun6t2g
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
mysql-test/suite/funcs_1/r/innodb_func_view.result sp1f-innodb_func_view.res-20070206175435-zksozsfanah6kcpyvvlsojjqamdrlaix
mysql-test/suite/funcs_1/r/memory_func_view.result sp1f-memory_func_view.res-20070206175436-3fqxnwbedehhtbacqfdpguyzlzigftqi
mysql-test/suite/funcs_1/r/myisam_func_view.result sp1f-myisam_func_view.res-20070206175437-hx5547ncsoco2bpruecyswjziotocyhd
mysql-test/t/ctype_ucs.test sp1f-ctype_ucs.test-20030916112631-7diba44oovwv3h5kqbswfqbveczwbrxv
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
plugin/fulltext/plugin_example.c sp1f-plugin_example.c-20051228120521-okmw6cytrbhx3kpxsuswy6v7agqdiaik
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
sql/my_decimal.cc sp1f-my_decimal.cc-20050208224937-tgb63ttruwc4ihp23jkciv5vfpwwm5bv
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
strings/ctype-ucs2.c sp1f-ctypeucs2.c-20030521102942-3fr4x6ti6jw6vqwdh7byhlxpu6oivdnn
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
------------------------------------------------------------
revno: 2774.1.9
revision-id: hakan(a)askmonty.org-20091209164300-x8yk7p3ip6xo3etm
parent: knielsen(a)knielsen-hq.org-20091207065336-tm59u3231q5dvx7j
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria
timestamp: Wed 2009-12-09 17:43:00 +0100
message:
Fix for
Bug #494255
Cannot run RQG due to errors in mysql-test-run.pl v1
Problem was missing variable declaration. Most likely due to a merge issue.
modified:
mysql-test/lib/v1/mysql-test-run.pl mtrv1.pl-20081114074002-vy3rb5dcxdfqqvah-1
------------------------------------------------------------
revno: 2774.1.8
revision-id: knielsen(a)knielsen-hq.org-20091207065336-tm59u3231q5dvx7j
parent: monty(a)askmonty.org-20091207005240-jdnz3ti9pcixc5qk
parent: knielsen(a)knielsen-hq.org-20091206173454-t16nyrsqj524hvt0
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-mtr2
timestamp: Mon 2009-12-07 07:53:36 +0100
message:
Automatic merge
modified:
BUILD/FINISH.sh sp1f-finish.sh-20001218212418-rjfhkdbumwhfwg4upd5j2pgfe375sjfq
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
extra/yassl/taocrypt/include/block.hpp sp1f-block.hpp-20050428132313-36s5yrjvbk36ud3nkobt5zsv2ctac72e
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
plugin/fulltext/plugin_example.c sp1f-plugin_example.c-20051228120521-okmw6cytrbhx3kpxsuswy6v7agqdiaik
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
------------------------------------------------------------
revno: 2774.2.1
revision-id: knielsen(a)knielsen-hq.org-20091206173454-t16nyrsqj524hvt0
parent: monty(a)askmonty.org-20091204151222-xq8zhmvtas511f91
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-mtr
timestamp: Sun 2009-12-06 18:34:54 +0100
message:
Fix some compiler warnings.
Fix bad merge causing error when specifying test case in non-default suite for mysql-test-run.
Implement the ability to add extra flags and configure options when running BUILD/xxx scripts.
Improve unclear help text in mysql-test-run
modified:
BUILD/FINISH.sh sp1f-finish.sh-20001218212418-rjfhkdbumwhfwg4upd5j2pgfe375sjfq
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
extra/yassl/taocrypt/include/block.hpp sp1f-block.hpp-20050428132313-36s5yrjvbk36ud3nkobt5zsv2ctac72e
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
plugin/fulltext/plugin_example.c sp1f-plugin_example.c-20051228120521-okmw6cytrbhx3kpxsuswy6v7agqdiaik
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
------------------------------------------------------------
revno: 2774.1.7
revision-id: monty(a)askmonty.org-20091207005240-jdnz3ti9pcixc5qk
parent: monty(a)askmonty.org-20091206175148-d5wnieuylgkbeyux
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Mon 2009-12-07 02:52:40 +0200
message:
Protect stack->keywords with THR_LOCK_dbug
This solves a core dump in MariaDB when one sets the GLOBAL.DEBUG variable in mysql-test-run when other threads are checking the keyword list
modified:
dbug/dbug.c sp1f-dbug.c-19700101030959-dmu3qmh72hbptp5opqnmfgjtfckxi5ug
------------------------------------------------------------
revno: 2774.1.6
revision-id: monty(a)askmonty.org-20091206175148-d5wnieuylgkbeyux
parent: monty(a)askmonty.org-20091206172612-zemnptoycsg283y3
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Sun 2009-12-06 19:51:48 +0200
message:
Fixed bug #49474 Replication from 4.0 to 5.1 broken
Reviewer: knielsens
modified:
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
------------------------------------------------------------
revno: 2774.1.5
revision-id: monty(a)askmonty.org-20091206172612-zemnptoycsg283y3
parent: monty(a)askmonty.org-20091204151222-xq8zhmvtas511f91
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Sun 2009-12-06 19:26:12 +0200
message:
Changed -1 row number in some warnings to 0
(-1 doesn't make sence as a row number and when doing insert / load data, first row is 1, so 0 is free to use)
modified:
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/suite/funcs_1/r/innodb_func_view.result sp1f-innodb_func_view.res-20070206175435-zksozsfanah6kcpyvvlsojjqamdrlaix
mysql-test/suite/funcs_1/r/memory_func_view.result sp1f-memory_func_view.res-20070206175436-3fqxnwbedehhtbacqfdpguyzlzigftqi
mysql-test/suite/funcs_1/r/myisam_func_view.result sp1f-myisam_func_view.res-20070206175437-hx5547ncsoco2bpruecyswjziotocyhd
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
sql/my_decimal.cc sp1f-my_decimal.cc-20050208224937-tgb63ttruwc4ihp23jkciv5vfpwwm5bv
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
------------------------------------------------------------
revno: 2774.1.4
revision-id: monty(a)askmonty.org-20091204151222-xq8zhmvtas511f91
parent: monty(a)askmonty.org-20091203152654-839losfiuarve9w5
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Fri 2009-12-04 17:12:22 +0200
message:
Fixed Bug#47017 rpl_timezone fails on PB-2 with mismatch error
Fixed coredump in sql_plugin.cc:intern_plugin_lock() on mysqld start with PBXT
modified:
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
------------------------------------------------------------
revno: 2774.1.3
revision-id: monty(a)askmonty.org-20091203152654-839losfiuarve9w5
parent: monty(a)askmonty.org-20091203120237-g7oekcuv6emhor1z
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Thu 2009-12-03 17:26:54 +0200
message:
Ensure that mysql_get_server_version() also works if there is a non numerical prefix before the version number
modified:
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
------------------------------------------------------------
revno: 2774.1.2
revision-id: monty(a)askmonty.org-20091203120237-g7oekcuv6emhor1z
parent: monty(a)askmonty.org-20091203113411-cmr8g2lcp45n0prv
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Thu 2009-12-03 14:02:37 +0200
message:
Applied patch from to fix some problems with Croatian character set and LIKE queries
Author: Alexander Barkov
License: GPL
modified:
mysql-test/r/ctype_ucs.result sp1f-ctype_ucs.result-20030916112630-sohywipskzw3eqmbhfsqxqjteoun6t2g
mysql-test/t/ctype_ucs.test sp1f-ctype_ucs.test-20030916112631-7diba44oovwv3h5kqbswfqbveczwbrxv
strings/ctype-ucs2.c sp1f-ctypeucs2.c-20030521102942-3fr4x6ti6jw6vqwdh7byhlxpu6oivdnn
------------------------------------------------------------
revno: 2774.1.1
revision-id: monty(a)askmonty.org-20091203113411-cmr8g2lcp45n0prv
parent: monty(a)askmonty.org-20091201160902-a3iq6lw82xbto9yp
parent: monty(a)askmonty.org-20091203111905-eeyu051ippjrngx8
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Thu 2009-12-03 13:34:11 +0200
message:
Merge
modified:
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
------------------------------------------------------------
revno: 2762.6.1
revision-id: monty(a)askmonty.org-20091203111905-eeyu051ippjrngx8
parent: monty(a)askmonty.org-20091130124224-45xbn8nkmgnu1c2f
parent: antony(a)xiphis.org-20091114201539-9jx962iv0m3c9sr9
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1-merge
timestamp: Thu 2009-12-03 13:19:05 +0200
message:
Merge with maria-5.1-federatedx; A patch to fix bugs in federatedx and enable federated_server.test
Author: Antony Curtis
License: BSD
modified:
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
configure.in sp1f-configure.in-19700101030959-mgdpoxtnh2ewmvusvfpkreuhwvffkcjw
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
------------------------------------------------------------
revno: 2751.2.5
revision-id: antony(a)xiphis.org-20091114201539-9jx962iv0m3c9sr9
parent: antony(a)xiphis.org-20091114193359-s2ls0z7ejosnvdyc
committer: Antony T Curtis <antony(a)xiphis.org>
branch nick: 5.1-federatedx-merge
timestamp: Sat 2009-11-14 12:15:39 -0800
message:
merge fix for bug monty found in ha_federatedx::close() method
modified:
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
------------------------------------------------------------
revno: 2751.2.4
revision-id: antony(a)xiphis.org-20091114193359-s2ls0z7ejosnvdyc
parent: antony(a)xiphis.org-20091104114730-o0mva3otafctpr0x
parent: igor(a)askmonty.org-20091112044531-qi0oqsdm9yg53oao
committer: Antony T Curtis <antony(a)xiphis.org>
branch nick: 5.1-federatedx-merge
timestamp: Sat 2009-11-14 11:33:59 -0800
message:
merge from maria-5.1-merge
removed:
mysql-test/include/have_dynamic_loading.inc have_dynamic_loading-20090522174437-1iywv3u2rmhtf5lw-1
mysys/mf_strip.c sp1f-mf_stripp.c-19700101030959-2ym735i6ydnmctuca7s77ymbqt7v66me
storage/innodb_plugin/README readme-20090527093836-7v4wb2xxka10h4d0-6
storage/innodb_plugin/handler/handler0vars.h handler0vars.h-20090730095633-tiqyypxaa0sth5gl-1
storage/innodb_plugin/handler/win_delay_loader.cc win_delay_loader.cc-20090730095633-tiqyypxaa0sth5gl-2
storage/innodb_plugin/win-plugin/ winplugin-20090527093836-7v4wb2xxka10h4d0-45
storage/innodb_plugin/win-plugin/README readme-20090527093836-7v4wb2xxka10h4d0-400
storage/innodb_plugin/win-plugin/win-plugin.diff winplugin.diff-20090527093836-7v4wb2xxka10h4d0-401
added:
mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test binlog_failure_mixin-20091006002922-iahrhss60j05ei1h-1
mysql-test/extra/rpl_tests/rpl_auto_increment_insert_view.test rpl_auto_increment_i-20090914101609-rtpx81itbaubpmgc-1
mysql-test/extra/rpl_tests/rpl_auto_increment_invoke_trigger.test rpl_auto_increment_i-20090914101534-x7z3gkpnlcvpe8tc-1
mysql-test/extra/rpl_tests/rpl_autoinc_func_invokes_trigger.test rpl_autoinc_func_inv-20090927065809-91q8o1j3cgydbnbf-1
mysql-test/extra/rpl_tests/rpl_mixing_engines.test rpl_mixed_engines.in-20090713090516-96o8ff9ff01wi2qu-1
mysql-test/include/have_case_insensitive_fs.inc have_case_insensitiv-20091027080400-j8v9m0ohbe2h6g9j-1
mysql-test/include/have_debug_sync.inc have_debug_sync.inc-20090925124518-2m0htks1bbp5jaf5-1
mysql-test/include/have_dynamic_loading.inc have_dynamic_loading-20090904194100-ugojr9bb769e3fbq-1
mysql-test/include/have_mysql_upgrade.inc have_mysql_upgrade.i-20090917092107-9hgddfty57tkdmvp-1
mysql-test/include/have_not_innodb_plugin.inc have_not_innodb_plug-20090923075831-ufghhe437p4n3lll-2
mysql-test/include/not_windows_embedded.inc not_windows_embedded-20091008083404-t3r99o2khtp7kg90-1
mysql-test/include/partition_date_range.inc partition_date_range-20090820165455-xou7ss545n90goiw-1
mysql-test/include/rpl_loaddata_charset.inc rpl_loaddata_charset-20090812034853-cimas5n5dsmf1ml2-1
mysql-test/lib/v1/incompatible.tests incompatible.tests-20090716120442-nls1338ddzoeujfy-1
mysql-test/r/bug46760.result bug46760.result-20090918125958-1wth1m4e5jtlymw0-1
mysql-test/r/case_insensitive_fs.require case_insensitive_fs.-20091027080416-za7pbbn63nzc3sq1-1
mysql-test/r/debug_sync.result debug_sync.result-20090925124518-2m0htks1bbp5jaf5-2
mysql-test/r/disabled_partition.require disabled_partition.r-20081229230041-hqa8tw36y55l4v3j-1
mysql-test/r/grant_lowercase_fs.result grant_lowercase_fs.r-20091027080441-p2gwdn1qob67e2sn-1
mysql-test/r/have_debug_sync.require have_debug_sync.requ-20090925124518-2m0htks1bbp5jaf5-3
mysql-test/r/innodb_bug44369.result innodb_bug44369.resu-20091005111405-nbp5t33h95jrqha2-1
mysql-test/r/innodb_bug46000.result innodb_bug46000.resu-20091005110756-z0lgt2d7519jnym8-1
mysql-test/r/innodb_bug47777.result innodb_bug47777.resu-20091102144133-qtzn9xarzh75dlyu-1
mysql-test/r/locale.result locale.result-20091019084441-qaiek29ss4m5rftg-2
mysql-test/r/lowercase_mixed_tmpdir_innodb.result lowercase_mixed_tmpd-20090909093609-nobx9nnvim2rm4w6-1
mysql-test/r/not_true.require not_true.require-20090923075831-ufghhe437p4n3lll-1
mysql-test/r/partition_disabled.result partition_disabled.r-20090101214731-hzf4v4g8n45nergw-3
mysql-test/r/partition_innodb_builtin.result partition_innodb_bui-20090923084042-z98c8mrrs0g20ib8-1
mysql-test/r/partition_innodb_plugin.result partition_innodb_plu-20090923084042-z98c8mrrs0g20ib8-2
mysql-test/r/partition_open_files_limit.result partition_open_files-20091007154706-q8bf9g4f8yeyzaha-1
mysql-test/r/sp-bugs.result spbugs.result-20091008145837-dfo321akug9vxs7z-2
mysql-test/r/subselect4.result subselect4.result-20090903150316-1sul3u8k29ooxm3r-2
mysql-test/r/table_elim_debug.result table_elim_debug.res-20091029174945-ysye9d2blnz4o4xz-1
mysql-test/std_data/binlog_transaction.000001 binlog_transaction.0-20090924075501-0p7j6mqdvkocgsqt-1
mysql-test/std_data/latin1.xml latin1.xml-20091012072835-0kzrquhyy5du9pfx-1
mysql-test/std_data/loaddata_utf8.dat loaddata_utf8.dat-20090812034904-82ss3dren5r0kprv-1
mysql-test/std_data/parts/t1.frm t1.frm-20090101214757-xot2lcrvf03ufrq5-1
mysql-test/suite/binlog/r/binlog_delete_and_flush_index.result binlog_delete_and_fl-20091019225654-0f8r2m0kfopmcyv9-1
mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result binlog_mixed_failure-20091006002922-iahrhss60j05ei1h-2
mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result binlog_row_failure_m-20091006002922-iahrhss60j05ei1h-3
mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_verbose.result binlog_row_mysqlbinl-20091009083137-wijoi4v49b1btvoa-1
mysql-test/suite/binlog/r/binlog_stm_do_db.result binlog_stm_do_db.res-20090723105556-zwq0kkax3cohfix5-1
mysql-test/suite/binlog/std_data/update-full-row.binlog updatefullrow.binlog-20091009085429-osiv6twgm7nh9ra3-1
mysql-test/suite/binlog/std_data/update-partial-row.binlog updatepartialrow.bin-20091009085429-osiv6twgm7nh9ra3-2
mysql-test/suite/binlog/std_data/write-full-row.binlog writefullrow.binlog-20091009085435-3lxvujqi3h4xswim-1
mysql-test/suite/binlog/std_data/write-partial-row.binlog writepartialrow.binl-20091009085435-3lxvujqi3h4xswim-2
mysql-test/suite/binlog/t/binlog_delete_and_flush_index.test binlog_delete_and_fl-20091019225654-0f8r2m0kfopmcyv9-2
mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test binlog_mixed_failure-20091006002922-iahrhss60j05ei1h-4
mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test binlog_row_failure_m-20091006002922-iahrhss60j05ei1h-5
mysql-test/suite/binlog/t/binlog_row_mysqlbinlog_verbose.test binlog_row_mysqlbinl-20091009083137-wijoi4v49b1btvoa-2
mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt binlog_stm_do_dbmast-20090723105556-zwq0kkax3cohfix5-3
mysql-test/suite/binlog/t/binlog_stm_do_db.test binlog_stm_do_db.tes-20090723105556-zwq0kkax3cohfix5-2
mysql-test/suite/federated/federated_debug-master.opt federated_debugmaste-20090930202808-tky4roen9kpzlmdp-1
mysql-test/suite/federated/federated_debug.result federated_debug.resu-20090930202818-9otpqz3uxpfx2iv1-1
mysql-test/suite/federated/federated_debug.test federated_debug.test-20090930202805-kt19apxdz61tx0ln-1
mysql-test/suite/innodb/r/innodb-consistent.result innodbconsistent.res-20091009132519-hgdn500g0czzt422-1
mysql-test/suite/innodb/r/innodb_bug44571.result innodb_bug44571.resu-20091008104658-12126vr05wqyllai-1
mysql-test/suite/innodb/t/innodb-consistent-master.opt innodbconsistentmast-20091009132511-05q1yxchk8rz94rf-1
mysql-test/suite/innodb/t/innodb-consistent.test innodbconsistent.tes-20091009132503-a1s2ak2b3c32x2xl-1
mysql-test/suite/innodb/t/innodb_bug44571.test innodb_bug44571.test-20091008104658-12126vr05wqyllai-2
mysql-test/suite/rpl/r/rpl_auto_increment_update_failure.result rpl_auto_increment_u-20090903144503-al54eug7lpxe5bxp-1
mysql-test/suite/rpl/r/rpl_create_if_not_exists.result rpl_create_if_not_ex-20090810060616-r2uzycs3kvm3gfjx-1
mysql-test/suite/rpl/r/rpl_create_tmp_table_if_not_exists.result rpl_create_tmp_table-20090810060621-k8m40uyipkd1iz2x-1
mysql-test/suite/rpl/r/rpl_mysql_upgrade.result rpl_mysql_upgrade.re-20090915080949-vr0m9hda55fjmelr-1
mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result rpl_row_disabled_sla-20090926230521-lkpisp969kum1ko2-1
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result rpl_stm_mixing_engin-20090713090516-96o8ff9ff01wi2qu-2
mysql-test/suite/rpl/t/rpl_auto_increment_update_failure.test rpl_auto_increment_u-20090903144442-bgwonv8p7ky8c3ze-1
mysql-test/suite/rpl/t/rpl_create_if_not_exists.test rpl_create_if_not_ex-20090810060633-wnx1xn452r0bo0j0-1
mysql-test/suite/rpl/t/rpl_create_tmp_table_if_not_exists.test rpl_create_tmp_table-20090810060643-c4kk9kx9uc7gsbyw-1
mysql-test/suite/rpl/t/rpl_get_master_version_and_clock-slave.opt rpl_get_master_versi-20091022015603-0bswyro3q6eqinsm-1
mysql-test/suite/rpl/t/rpl_mysql_upgrade.test rpl_mysql_upgrade.te-20090915080946-ihj08jolsl0jiel5-1
mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test rpl_row_disabled_sla-20090926230521-lkpisp969kum1ko2-2
mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test rpl_stm_mixing_engin-20090713090516-96o8ff9ff01wi2qu-3
mysql-test/t/bug46760-master.opt bug46760master.opt-20090918125958-1wth1m4e5jtlymw0-2
mysql-test/t/bug46760.test bug46760.test-20090918125958-1wth1m4e5jtlymw0-3
mysql-test/t/debug_sync.test debug_sync.test-20090925124518-2m0htks1bbp5jaf5-4
mysql-test/t/grant_lowercase_fs.test grant_lowercase_fs.t-20091027080502-vaql5cl7hm77d4va-1
mysql-test/t/innodb_bug44369.test innodb_bug44369.test-20091005111405-nbp5t33h95jrqha2-2
mysql-test/t/innodb_bug46000.test innodb_bug46000.test-20091005110740-z4rhixe6pxtvfzwg-1
mysql-test/t/innodb_bug47777.test innodb_bug47777.test-20091102144121-in0bnk577l2r2niz-1
mysql-test/t/locale.test locale.test-20091019084441-qaiek29ss4m5rftg-1
mysql-test/t/lowercase_mixed_tmpdir_innodb-master.opt lowercase_mixed_tmpd-20090909093621-493y6grd4ycy587n-1
mysql-test/t/lowercase_mixed_tmpdir_innodb-master.sh lowercase_mixed_tmpd-20090909093706-tbaggs2flpboi335-1
mysql-test/t/lowercase_mixed_tmpdir_innodb.test lowercase_mixed_tmpd-20090909093625-zly7ha6rwwxch86u-1
mysql-test/t/partition_disabled-master.opt partition_disabledma-20090101214731-hzf4v4g8n45nergw-1
mysql-test/t/partition_disabled.test partition_disabled.t-20090101214731-hzf4v4g8n45nergw-2
mysql-test/t/partition_innodb_builtin.test partition_innodb_bui-20090923082845-g02wtqf81dvzw6gc-1
mysql-test/t/partition_innodb_plugin.test partition_innodb_plu-20090923082850-5l2dv4lq6f99lruy-1
mysql-test/t/partition_open_files_limit-master.opt partition_open_files-20091007154613-kkfm9vev52v7g5qx-1
mysql-test/t/partition_open_files_limit.test partition_open_files-20091007154613-kkfm9vev52v7g5qx-2
mysql-test/t/sp-bugs.test spbugs.test-20091008145837-dfo321akug9vxs7z-1
mysql-test/t/status-master.opt statusmaster.opt-20090827131631-hxfk90w60wdsy2hc-1
mysql-test/t/subselect4.test subselect4.test-20090903150316-1sul3u8k29ooxm3r-1
mysql-test/t/table_elim_debug.test table_elim_debug.tes-20091029174948-kowasjfsrk6d5pwr-1
sql/debug_sync.cc debug_sync.cc-20090925124518-2m0htks1bbp5jaf5-5
sql/debug_sync.h debug_sync.h-20090925124518-2m0htks1bbp5jaf5-6
storage/innodb_plugin/mysql-test/innodb-consistent-master.opt innodbconsistentmast-20091012122637-mepyyow3z5ui6cel-1
storage/innodb_plugin/mysql-test/innodb-consistent.result innodbconsistent.res-20091012122706-h9tv41qfkzisq1b6-1
storage/innodb_plugin/mysql-test/innodb-consistent.test innodbconsistent.tes-20091012122706-h9tv41qfkzisq1b6-2
storage/innodb_plugin/mysql-test/innodb_bug44369.result innodb_bug44369.resu-20091012122706-h9tv41qfkzisq1b6-3
storage/innodb_plugin/mysql-test/innodb_bug44369.test innodb_bug44369.test-20091012122706-h9tv41qfkzisq1b6-4
storage/innodb_plugin/mysql-test/innodb_bug44571.result innodb_bug44571.resu-20091012122706-h9tv41qfkzisq1b6-5
storage/innodb_plugin/mysql-test/innodb_bug44571.test innodb_bug44571.test-20091012122706-h9tv41qfkzisq1b6-6
storage/innodb_plugin/mysql-test/innodb_bug46000.result innodb_bug46000.resu-20091012122706-h9tv41qfkzisq1b6-7
storage/innodb_plugin/mysql-test/innodb_bug46000.test innodb_bug46000.test-20091012122706-h9tv41qfkzisq1b6-8
storage/innodb_plugin/revert_gen.sh revert_gen.sh-20091012123850-w0rv1f2ijprz292d-1
storage/innodb_plugin/scripts/export.sh export.sh-20091012120743-l9z3v18op9lk6dhw-1
storage/innodb_plugin/ut/ut0auxconf_have_gcc_atomics.c ut0auxconf_have_gcc_-20091009120907-rmzjolcnf1dsprof-1
renamed:
mysql-test/r/bug40113.result => mysql-test/r/innodb_lock_wait_timeout_1.result bug40113.result-20090619150423-w3im08cym6tyzn8f-3
mysql-test/t/bug40113-master.opt => mysql-test/t/innodb_lock_wait_timeout_1-master.opt bug40113master.opt-20090619150423-w3im08cym6tyzn8f-1
mysql-test/t/bug40113.test => mysql-test/t/innodb_lock_wait_timeout_1.test bug40113.test-20090619150423-w3im08cym6tyzn8f-2
storage/federatedx/CMakeFiles.txt => storage/federatedx/CMakeLists.txt cmakefiles.txt-20091029224633-m824ql737a2j6q5a-11
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
BUILD/check-cpu sp1f-checkcpu-20050427105035-uyuek6wv2z7qfr6kn4agmmury46u3vqo
CMakeLists.txt sp1f-cmakelists.txt-20060831175236-433hkm7nrqfjbwios4ancgytabw354nr
Makefile.am sp1f-makefile.am-19700101030959-jbbpiygwpgybyqknlavdxxupbrjonu7h
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysql_upgrade.c sp1f-mysql_upgrade.c-20060428040559-3xcugp4nhhb6qfwfacoqw3d4ibgbeboz
client/mysqladmin.cc sp1f-mysqladmin.c-19700101030959-ud6encjcx2oypzvp7ptmojbi3xdos2fs
client/mysqlbinlog.cc sp1f-mysqlbinlog.cc-19700101030959-b3vgyo47ljent5mhbyj6ik33bi4bukad
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqldump.c sp1f-mysqldump.c-19700101030959-thxq2iabzu3yo5snymsubfeclf7v5rac
client/mysqlimport.c sp1f-mysqlimport.c-19700101030959-m6nmuvl5kbp2qmdqtmu5mxafegtn7ipv
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
cmd-line-utils/readline/bind.c sp1f-bind.c-19700101030959-dexn5qnuyos6fwlgfyqqbrwhdwsxanke
cmd-line-utils/readline/display.c sp1f-display.c-19700101030959-dhuvqj5evnaoid2tbnpgu7zlqrfutn7k
cmd-line-utils/readline/histfile.c sp1f-histfile.c-19700101030959-scmzzhk3rr3e6hv5jzuvphgjw7r3e3jr
cmd-line-utils/readline/undo.c sp1f-undo.c-19700101030959-cse6tf2kpjb76fyfjj56yxyt765sxvzb
configure.in sp1f-configure.in-19700101030959-mgdpoxtnh2ewmvusvfpkreuhwvffkcjw
extra/libevent/event-internal.h eventinternal.h-20090312215838-41pxaswf0zgarxu3-18
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/taocrypt/src/random.cpp sp1f-random.cpp-20050428132321-q6wudeoop6upz7agf4pmigiyw6d6d3mt
include/my_dbug.h sp1f-dbug.h-19700101030959-jbasz7hhskrakujn4b3uatfstocyueon
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
include/my_sys.h sp1f-my_sys.h-19700101030959-lyllvna5vzqfcjnmlcrutgqocylhtb54
include/myisamchk.h sp1f-myisamchk.h-20060411134400-oxba7mdmuzv2d62tlze6mrs5tpbmhrzw
include/mysql.h sp1f-mysql.h-19700101030959-soi7hu6ji273nui3fm25jjf4m4362pcw
include/mysql.h.pp mysql.h.pp-20080613094407-2m1760u4zdzt4dc7-1
include/mysys_err.h sp1f-mysys_err.h-19700101030959-z4zqei4o4eblzvr5cgyspg6icfo7trix
include/violite.h sp1f-violite.h-19700101030959-jfyqeh5pmto4ncgcdcdf36bl5ininiqx
libmysql/libmysql.c sp1f-libmysql.c-19700101030959-ba4gwsjdmik5puh2qyrfpvoflwer257l
libmysql/libmysql.def sp1f-libmysql.def-20011019010014-dtnxyq3opddoys6ptxjmzhmaa2rlowmq
libmysqld/CMakeLists.txt sp1f-cmakelists.txt-20060403082523-x3vxka3k56u2wpzwcrlpykznlz2akpxd
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
libmysqld/lib_sql.cc sp1f-lib_sql.cc-20010411110351-gt5febleap73tqvapkesopvqtuht5sf5
libmysqld/libmysqld.c sp1f-libmysqld.c-20010411110351-4556sgf6vpnoounnscj2q6zw56ccl332
libmysqld/libmysqld.def sp1f-libmysqld.def-20020109073846-c3x4ovkgky3uok5h6uiaxaevadsluq6k
mysql-test/collections/README.experimental readme.experimental-20090224115153-en8qgzjquiw0dxzn-1
mysql-test/collections/default.experimental default.experimental-20090224104813-e52mxw708penxv44-1
mysql-test/extra/binlog_tests/binlog.test sp1f-binlog.test-20050223135508-76cdewwz46hwby5kk5g5wmkoxb74yv4y
mysql-test/extra/binlog_tests/drop_temp_table.test sp1f-drop_temp_table.test-20030928163144-dyfrto7gxylnrnim2c5i5wfn7mvjqtgp
mysql-test/extra/rpl_tests/rpl_auto_increment.test sp1f-rpl_auto_increment.t-20051222053450-wnlpmgbkojqq6fnvjocf5ltfbtofin7z
mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test sp1f-rpl_extraslave_col.t-20061103140340-egmkull7owd2wp7d4egg6itzef6p7g23
mysql-test/extra/rpl_tests/rpl_failed_optimize.test sp1f-rpl_failed_optimize.-20051222053450-ylhvmukj7czrgqebj3psg6xeigeaovdj
mysql-test/extra/rpl_tests/rpl_loaddata.test sp1f-rpl_loaddata.test-20051222053450-dtp64wd4tqum3ghoumeskw4aslqd3ntv
mysql-test/extra/rpl_tests/rpl_row_sp006.test sp1f-rpl_row_sp006.test-20051222053450-5432dx6ssedtpzocu66e5qdwfxa4vd3c
mysql-test/extra/rpl_tests/rpl_stm_000001.test sp1f-rpl000001.test-20001118063528-ailyrmllkfzwjx3qfvmu555ijzuk5yur
mysql-test/include/check-warnings.test sp1f-checkwarnings.test-20080408145123-h7zoaw4uh3notptmpiebbf3ot3ltza4q
mysql-test/include/commit.inc sp1f-commit.inc-20080219114259-ffjs6tdafi3wvq6v7iapj42xhaqjgpxu
mysql-test/include/concurrent.inc sp1f-innodb_concurrent.te-20051222053459-lwg5sp2ww5pt2wipchfkjjvnmslyp3g3
mysql-test/include/have_example_plugin.inc sp1f-have_example_plugin.-20061214230953-aurfxypudnc5qjcbqivskkglb5ml6ogr
mysql-test/include/have_simple_parser.inc have_simple_parser.i-20081217115927-orp35vg5f5j5mx25-1
mysql-test/include/have_udf.inc sp1f-have_udf.inc-20060215161119-xf74h7vjdqy73koybl4szdso2mj6cr5n
mysql-test/include/mix1.inc sp1f-innodb_mysql.test-20060426055153-mgtahdmgajg7vffqbq4xrmkzbhvanlaz
mysql-test/include/mtr_warnings.sql sp1f-mtr_warnings.sql-20080408145123-lhtlr627ins6hwi3hxjrcytx4t27nyjr
mysql-test/lib/My/ConfigFactory.pm sp1f-configfactory.pm-20071212171904-umibosyolpj2kzgk32rt5p6pl6vztmaq
mysql-test/lib/My/Platform.pm sp1f-platform.pm-20080220135528-i7dsgofojc7pzjnisb6y43f3kmu6j4ci
mysql-test/lib/My/SafeProcess/safe_kill_win.cc sp1f-safe_kill_win.cc-20071212171905-p26lghnyebz5xacmoguzikby3mb4dmhf
mysql-test/lib/My/SafeProcess/safe_process_win.cc sp1f-safe_process_win.cc-20071212171905-5fxmtbbzzyquscvb7nvjxobmzfwasomh
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/lib/v1/mtr_cases.pl mtr_cases.pl-20081114073900-ptb78lyx8r1awhv9-1
mysql-test/mysql-stress-test.pl sp1f-mysqlstresstest.pl-20051018162159-2oxz4uxwtkipjw3r7znlxngpg6l5vf63
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/almost_full.result sp1f-almost_full.result-20071112090021-zhr5drqqn7ijqmzeawaiwjfhnqvkfkjr
mysql-test/r/alter_table.result sp1f-alter_table.result-20001228015632-hk5kqhiea33uxdjhnqa2vnagoypjqbi3
mysql-test/r/analyse.result sp1f-analyse.result-20001228015632-2j2wtzdyfq62m65gl6nxekuosny6gy6v
mysql-test/r/archive.result sp1f-archive.result-20040525194738-teb7vr2fyyav2vmvw55tdwgvu3h65flc
mysql-test/r/auto_increment.result sp1f-auto_increment.resul-20001228015632-kbskyr7q5v4v323qyj46kh6yldhp6rys
mysql-test/r/bug46080.result bug46080.result-20090710115544-bi718vttwzhdrezd-3
mysql-test/r/commit_1innodb.result sp1f-commit_1innodb.resul-20080219114259-sa3xkckfii5ijnu24s6pj6e5m75axpcu
mysql-test/r/create.result sp1f-create.result-20001228015633-uy7n6oztnd6vmqcrw6z5tloij5yxv4ov
mysql-test/r/ctype_ldml.result sp1f-ctype_ldml.result-20070607125553-fkqnsdgkmmqoecb76tjv3wzmyqfaik22
mysql-test/r/delete.result sp1f-delete.result-20010928050551-vf5sxtd554vuepifylwowaaq7k3mbilw
mysql-test/r/distinct.result sp1f-distinct.result-20001228015633-adu7puhxwf4tiwor5amegcrjobuxljra
mysql-test/r/explain.result sp1f-explain.result-20001228015633-fcck4ixyixae4yjfpahxubumufcrdc7p
mysql-test/r/func_group.result sp1f-func_group.result-20001228015633-oe57bieiww3s6erojiyha7p26m5ul5ql
mysql-test/r/func_in.result sp1f-func_in.result-20001228015633-taucsvp7ggm45m64jbcfu6nyfgdhosnc
mysql-test/r/func_str.result sp1f-strfunc.result-20001215085543-qraqxeite2ybbq4se6ojb2lwaxem3br3
mysql-test/r/gis-rtree.result sp1f-gisrtree.result-20030312125159-uqk53j6wi5kgqzfuaned6oxulziutwoz
mysql-test/r/gis.result sp1f-gis.result-20030301091631-7oyzcwsw4xnrr5tisytvtyymj3p6lvak
mysql-test/r/grant.result sp1f-grant.result-20020905131705-2gfwpyej777fcllxzcvadzd6tqdxfho3
mysql-test/r/grant3.result sp1f-grant3.result-20050322110338-ewbo53qs6fkxfzkc7u2ojzyu6bvyp7w6
mysql-test/r/group_min_max.result sp1f-group_min_max.result-20040827133611-aqzadxttbw23mkanmvdsiaambv2pcy27
mysql-test/r/handler_myisam.result sp1f-handler.result-20010406221832-ybo3cgjo6qapqc6776ivjpdngwmk6plu
mysql-test/r/information_schema_db.result sp1f-information_schema_d-20050506190605-i2emmavt52skkx7n6b5jklprebhrdrxo
mysql-test/r/innodb-autoinc.result innodbautoinc.result-20081201061010-zymrrwrczns2vrex-280
mysql-test/r/innodb_mysql.result sp1f-innodb_mysql.result-20060426055153-bychbbfnqtvmvrwccwhn24i6yi46uqjv
mysql-test/r/insert_select.result sp1f-insert_select.result-20001228015633-wih3pifcw5hofocy6banrbkyhtfy6prn
mysql-test/r/join.result sp1f-join.result-20001228015633-f4navd6fbbzksvhaaqulo5ihgevkjty2
mysql-test/r/lock_multi_bug38499.result lock_multi_bug38499.-20090323142134-x1hjhoaa9zzqbs9d-1
mysql-test/r/lock_multi_bug38691.result lock_multi_bug38691.-20090323142134-x1hjhoaa9zzqbs9d-2
mysql-test/r/lowercase_fs_off.result sp1f-lowercase_fs_off.res-20060504065503-e5mqzuzzst4qdncn4przr2qqszyfdhf4
mysql-test/r/lowercase_table3.result sp1f-lowercase_table3.res-20040306084333-bdleyleqjz73g4ocjm43zmbf6zkjsipm
mysql-test/r/merge.result sp1f-merge.result-20001228015634-pf2nbswryog4ykgcx7icbva7tgga7ppt
mysql-test/r/myisam.result sp1f-myisam.result-20010411215653-pgxkk2xg4lh3nxresmfnsuszf5h3nont
mysql-test/r/myisam_crash_before_flush_keys.result myisam_crash_before_-20090402094502-ekp4zzeucx0vftta-1
mysql-test/r/mysqlbinlog.result sp1f-mysqlbinlog.result-20030924192555-7477cirsvcmvihphlv4wbcvd5dfoh3bm
mysql-test/r/mysqlbinlog_row_trans.result mysqlbinlog_row_tran-20080820140336-qltyuhvnlnekw1ir-5
mysql-test/r/mysqltest.result sp1f-mysqltest.result-20041022024801-dfor5httbrm4yhbhqtfjzpkst5hoejym
mysql-test/r/not_partition.result sp1f-not_partition.result-20061026171106-q7dvzmfy7542alsodzszx6f3qbry6eu2
mysql-test/r/olap.result sp1f-olap.result-20020720115150-egx2d46xkyxi5dgcpyjexyj4ri6wlcvb
mysql-test/r/order_by.result sp1f-order_by.result-20001228015634-omkoitbok7pbz53pkfmplnhbifnrebic
mysql-test/r/partition.result sp1f-partition.result-20050718113029-xlmjyugiq5h2b5wjp236ipsmkmej7i62
mysql-test/r/partition_csv.result sp1f-partition_csv.result-20071022181049-b7rjlf3ifzxbwhry54tng7jif24fuapa
mysql-test/r/partition_innodb.result sp1f-partition_innodb.res-20060518171642-5muwpwnvtxepgop4yhgzzrv2xo2wjlps
mysql-test/r/partition_pruning.result sp1f-partition_pruning.re-20051222092851-tdvef3tnyhio2fj4ktnbr4ienfg7k5qr
mysql-test/r/partition_range.result sp1f-partition_range.resu-20050718113032-5sbiw4aejlffhemqhlyvjflyil4vrarh
mysql-test/r/ps_grant.result sp1f-ps_grant.result-20050330011743-myy3zlxbj2yg7thj2vovrm2sszh6yzas
mysql-test/r/query_cache.result sp1f-query_cache.result-20011205230530-qf3qzwsqsgfi67vv5ijruxeci6cbkwjl
mysql-test/r/range.result sp1f-range.result-20001228015634-6hpoyn74lnc7irf4gop2jbowgpazbbae
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/sp-error.result sp1f-sperror.result-20030305184512-euxcpn3oxmcl4dn2kqbdx73ljcbivzto
mysql-test/r/sp.result sp1f-sp.result-20030117133802-duandg3yzagzyv7zhhbbt2kcomcegpc7
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/subselect3.result sp1f-subselect3.result-20061031174245-v7hvtc7uwevifiq4lziwv5gdcxpeak7t
mysql-test/r/system_mysql_db.result sp1f-system_mysql_db.resu-20040310185404-f7br5g4442iqwxireltudlyu5ppbkijo
mysql-test/r/trigger_notembedded.result sp1f-triggergrant.result-20051110192455-2zus7d4a7l2y7ldnokefkk6ibykyn46y
mysql-test/r/type_bit.result sp1f-type_bit.result-20041217140559-ppf6bkjkl3r4tbmlt7ngn46zm6tapa46
mysql-test/r/udf.result sp1f-udf.result-20060215161120-pm5l3nyny5gbznc2egfu4bhwgxbuc6wz
mysql-test/r/update.result sp1f-update.result-20001228015634-eddqlilwpyd255hhzq2fnktefhhgzua5
mysql-test/r/upgrade.result sp1f-upgrade.result-20060217091846-vefhbvl6q255bcptbelqp7boemlf7jyp
mysql-test/r/view.result sp1f-view.result-20040715221517-nqk3l34grrhprjiitidhfjyjqlgh6a5v
mysql-test/r/view_grant.result sp1f-view_grant.result-20050404194355-hbbr5ud3thpo5tn65q6eyecswq5mdhwk
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/r/windows.result sp1f-windows.result-20050901013212-d5xc5u66d6z25c2hig2xgc2zjyazfh6i
mysql-test/r/xa.result sp1f-xa.result-20050403224953-ks6zlldv2mxqgh4edidq7sdrlmj7ko4l
mysql-test/std_data/Index.xml sp1f-index.xml-20070607125553-3iauribiu2zgziawdyrtrdxne2gs5o2y
mysql-test/suite/binlog/r/binlog_killed_simulate.result sp1f-binlog_killed_simula-20071031094843-hn7c5gekip7rxgka7cic7saaqoy6afkn
mysql-test/suite/binlog/r/binlog_row_binlog.result sp1f-binlog_row_binlog.re-20051222053451-vl3rsa7i5wuxj6pjofa7aylzersn25i6
mysql-test/suite/binlog/r/binlog_row_drop_tmp_tbl.result sp1f-binlog_row_drop_tmp_-20051222053451-bsaj7qioh5jt4woxo36t7i6tvuqwdny3
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result sp1f-binlog_row_mix_innod-20051222053451-e65hkpwkx65zhmyddgnozkwk6mudqlhi
mysql-test/suite/binlog/r/binlog_stm_binlog.result sp1f-binlog.result-20050223135507-y6mkcjto5zdkpgaevaqo5epoafa3yiq5
mysql-test/suite/binlog/r/binlog_stm_blackhole.result sp1f-blackhole.result-20050323001036-qq4xfb3k4omfzzjj3to67lnds6i7m6zw
mysql-test/suite/binlog/r/binlog_stm_drop_tmp_tbl.result sp1f-drop_temp_table.resu-20030928163144-txtshow2e37lpjddhpazuhs4eulbw2dd
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result sp1f-mix_innodb_myisam_bi-20030822133916-l72xhg2oxjthj6ichxowk55lrbjebfxa
mysql-test/suite/binlog/t/binlog_row_mysqlbinlog_db_filter.test binlog_row_mysqlbinl-20090527141831-4bqcdit6efzx76qm-1
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test binlog_stm_unsafe_wa-20090627130655-dgww8l4zomxa6h9l-3
mysql-test/suite/federated/my.cnf sp1f-my.cnf-20071212171904-j7gg67dkfqjo4f5yirx3nscdzpxieqyv
mysql-test/suite/funcs_1/r/is_columns_mysql.result sp1f-is_columns_mysql.res-20080307163304-a2ymkif2vzliwqqqzr22cglbaf75tthe
mysql-test/suite/funcs_1/r/is_engines_federated.result sp1f-is_engines_federated-20080307191812-2el6dx43gswuqkqgnmarhyr3ojmzqsyi
mysql-test/suite/funcs_1/r/is_statistics.result sp1f-is_statistics.result-20080307163304-m5utnb3asmvn24qpbivqzlypbjibrtqv
mysql-test/suite/innodb/r/innodb-zip.result innodbzip.result-20090610132748-q9m60aph2eqy8zr6-14
mysql-test/suite/innodb/r/innodb_file_format.result innodb_file_format.r-20090730123212-ozvn639s8f71467w-1
mysql-test/suite/innodb/t/innodb-zip.test innodbzip.test-20090610132748-q9m60aph2eqy8zr6-28
mysql-test/suite/innodb/t/innodb_file_format.test innodb_file_format.t-20090730123218-e1mr6rq2zau4lsif-1
mysql-test/suite/innodb/t/innodb_information_schema.test innodb_information_s-20090610132748-q9m60aph2eqy8zr6-35
mysql-test/suite/parts/inc/partition_auto_increment.inc partition_auto_incre-20080902080504-smrqvl9x3yj3y30u-1
mysql-test/suite/parts/r/partition_auto_increment_innodb.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-1
mysql-test/suite/parts/r/partition_auto_increment_maria.result partition_auto_incre-20081121141947-lh5ecnr2v4dkwli4-3
mysql-test/suite/parts/r/partition_auto_increment_memory.result partition_auto_incre-20080902130257-psqogw2uun5wtb8c-1
mysql-test/suite/parts/r/partition_auto_increment_myisam.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-2
mysql-test/suite/parts/r/partition_auto_increment_ndb.result partition_auto_incre-20080902130251-otbifbb7638h2boy-3
mysql-test/suite/parts/r/partition_recover_myisam.result partition_repair_myi-20080609121315-mjya2e9ekn7bunzm-3
mysql-test/suite/parts/t/partition_auto_increment_archive.test partition_auto_incre-20080902130246-2kpijvsifmpe2sjo-1
mysql-test/suite/parts/t/partition_auto_increment_blackhole.test partition_auto_incre-20080902130246-2kpijvsifmpe2sjo-2
mysql-test/suite/parts/t/partition_recover_myisam.test partition_repair_myi-20080609121315-mjya2e9ekn7bunzm-2
mysql-test/suite/pbxt/r/partition_range.result partition_range.resu-20090402100035-4ilk9i91sh65vjcb-118
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/t/subselect.test subselect.test-20090402100035-4ilk9i91sh65vjcb-313
mysql-test/suite/rpl/r/rpl_auto_increment.result sp1f-rpl_auto_increment.r-20040915191013-ch23iwok7bzpqd7wtcsf4m6mt4txcr3o
mysql-test/suite/rpl/r/rpl_bug33931.result sp1f-rpl_bug33931.result-20080213120940-oicizd2vl3efcyhgeza6sjfbgw5j6ack
mysql-test/suite/rpl/r/rpl_concurrency_error.result rpl_concurrency_erro-20090706080146-hpbm32p363w1ko09-1
mysql-test/suite/rpl/r/rpl_do_grant.result sp1f-rpl_do_grant.result-20030802214618-dy6h6p3wwcdlud4mk6ivfxsgu5celg5t
mysql-test/suite/rpl/r/rpl_drop_if_exists.result rpl_drop_if_exists.r-20090210104946-vnykqe4n1y3v6u6f-1
mysql-test/suite/rpl/r/rpl_drop_temp.result sp1f-rpl_drop_temp.result-20050214224645-fme2pf42uu4gldojyb2mvqelfmrk6b24
mysql-test/suite/rpl/r/rpl_events.result sp1f-rpl_events.result-20070316135651-r6qp7iqg3zy2pyubu2z7dayq5t42bp5u
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result sp1f-rpl_extracol_innodb.-20061103140439-oyaqsdcl3ymjfl5y2wvwjz3cgb36dbj3
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result sp1f-rpl_extracol_myisam.-20061103140439-ipxcnvlavhkichgny6fvkejbdgnvudtd
mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result rpl_get_master_versi-20090714012948-jn3dghe3lx2bda9a-1
mysql-test/suite/rpl/r/rpl_idempotency.result sp1f-rpl_idempotency.resu-20071030201714-gapul4f6owmfen7q2slybdwkvwtonjr4
mysql-test/suite/rpl/r/rpl_init_slave_errors.result rpl_bug38197.result-20090211115331-pkf48eusdtkxwt89-1
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result sp1f-rpl_innodb_mixed_dml-20070206122521-55gg47nv2ebmatncbhfe7ihcle7wzd6n
mysql-test/suite/rpl/r/rpl_loaddata.result sp1f-rpl_loaddata.result-20030114092724-fx5ivt6tn56aiwq4siqhlaxoyw5gha66
mysql-test/suite/rpl/r/rpl_loaddata_charset.result sp1f-rpl_loaddata2.result-20070228130654-ps74msie3mryqxxvmkw7mtdf76rqsj3f
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result sp1f-rpl_loaddata_fatal.r-20070609051931-4yb5joctyn3lsurioiijsyz4xb4r2sqj
mysql-test/suite/rpl/r/rpl_loaddata_map.result sp1f-rpl_loaddata_map.res-20071221203440-ccy2zkl5istm7qrpaydhz3lbzt355aie
mysql-test/suite/rpl/r/rpl_loaddatalocal.result sp1f-rpl_loaddatalocal.re-20030228202359-vlyqlboybbakyklqm2lhptrbwruhia2n
mysql-test/suite/rpl/r/rpl_log_pos.result sp1f-rpl000014.result-20001212220135-a5ffppjzfu3hlnpovghh4w3fdmgdmk6c
mysql-test/suite/rpl/r/rpl_packet.result sp1f-rpl_packet.result-20060911211902-zl764nrlzzu3kom3pf3rrm6eltxveylw
mysql-test/suite/rpl/r/rpl_rewrt_db.result sp1f-rpl_rewrite_db.resul-20041019202710-aqerdb2a6q5aef2cz7oyyjqzeeihhzby
mysql-test/suite/rpl/r/rpl_row_create_table.result sp1f-rpl_row_create_table-20051222053452-uud3ktz3erqptqb64rkh7ftoo7bdbf6c
mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result sp1f-rpl_row_sp006_innodb-20051222053454-fadhobwa33eljoqv6iunh46xfx3f4gab
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result rpl_slave_fail_load_-20090317104308-hlm8218eqojabbnb-1
mysql-test/suite/rpl/r/rpl_stm_log.result sp1f-rpl_log.result-20010621191923-r3yiuhrqrbautxnc66pw6bzlo6qp7sds
mysql-test/suite/rpl/t/disabled.def sp1f-disabled.def-20070627122758-vdqevwzhnizicdrxrmfy4w4afgprx46x
mysql-test/suite/rpl/t/rpl_bug33931.test sp1f-rpl_bug33931.test-20080213120940-zrvpqfftvysveivghh37d77gupwv6ryc
mysql-test/suite/rpl/t/rpl_concurrency_error.test rpl_concurrency_erro-20090706080146-hpbm32p363w1ko09-3
mysql-test/suite/rpl/t/rpl_do_grant.test sp1f-rpl_do_grant.test-20030802214619-wincvjltx3w7wntnmnquss36fcszy2wa
mysql-test/suite/rpl/t/rpl_drop_temp.test sp1f-rpl_drop_temp.test-20050214224649-nglnrerjic7a76wtis7mlhcr3nzxcioi
mysql-test/suite/rpl/t/rpl_err_ignoredtable.test sp1f-rpl_error_ignored_ta-20030708095933-nrriw3pbfsfrugbgvjpriczjb3dwm4mn
mysql-test/suite/rpl/t/rpl_events.test sp1f-rpl_events.test-20070316135650-w2xuincw2c4mohfabd2zhkdtcftknq7f
mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test rpl_get_master_versi-20090714012921-gi0n2a3z1he17ht5-1
mysql-test/suite/rpl/t/rpl_idempotency.test sp1f-rpl_idempotency.test-20071030201714-dbiujbc2tp25eunlqd4msz66kri542ju
mysql-test/suite/rpl/t/rpl_init_slave_errors.test rpl_bug38197.test-20090211115331-pkf48eusdtkxwt89-2
mysql-test/suite/rpl/t/rpl_loaddata_charset.test sp1f-rpl_loaddata2.test-20070228130655-mn2of62qcwoolooqgysdxcltidol6r6h
mysql-test/suite/rpl/t/rpl_loaddatalocal.test sp1f-rpl_loaddatalocal.te-20030228202359-thkinry6nfontmohwt4ppxanoj2g2yfd
mysql-test/suite/rpl/t/rpl_log_pos.test sp1f-rpl000014.test-20001212220135-bejuuiqndvmgqdoni6j4db7qxhci65dg
mysql-test/suite/rpl/t/rpl_packet.test sp1f-rpl_packet.test-20060911211902-zxv62juvripcfcrseay32yorn6veiwfl
mysql-test/suite/rpl/t/rpl_rewrt_db-slave.opt sp1f-rpl_rewrite_dbslave.-20041019202711-hsn6aprv4aul35d42uargmxnmowlyvxo
mysql-test/suite/rpl/t/rpl_rewrt_db.test sp1f-rpl_rewrite_db.test-20041019202712-l4j5rvbowmo3c47mcnlgmyrl5thb5tse
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test rpl_slave_fail_load_-20090316155115-ydeyw4dljkuo6vf5-1
mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result sp1f-rpl_ndb_circular_sim-20070412065801-k2ky5wpm6vtdcj53bacwmwxhhj4ofcy2
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result sp1f-rpl_ndb_extracol.res-20061103140449-ucihyswq7mtsamyjm2whggyjxyfekxeo
mysql-test/suite/rpl_ndb/r/rpl_ndb_sp006.result sp1f-rpl_ndb_sp006.result-20060209212318-oue4xsmivduntdk47fzqt36ws5bbmhmq
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test sp1f-rpl_ndb_circular.tes-20070412141346-av6rslz2h32ovpuk3ppyehbg7dbsgcu4
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test sp1f-rpl_ndb_circular_sim-20070412065801-khbc7ydsapuk7454j2xfa54untsyzox5
mysql-test/t/almost_full.test sp1f-almost_full.test-20071112090021-ehngu75n2rqd6mngclfwfoxrj6ipxofo
mysql-test/t/alter_table.test sp1f-alter_table.test-20001228015635-ibytgjjpm4y57rzxqoascmr2hqujnjge
mysql-test/t/analyse.test sp1f-analyse.test-20001228015635-x364ynbakdxnjmftcf6js527huqaoipj
mysql-test/t/archive.test sp1f-archive.test-20040525194738-qla5yawytktcj3tlbgrlhvf3thbo6ghq
mysql-test/t/auto_increment.test sp1f-auto_increment.test-20001228015635-ev7zqhf36ny5k74jamyiyumxh66snmz6
mysql-test/t/bug46080.test bug46080.test-20090710115544-bi718vttwzhdrezd-1
mysql-test/t/create.test sp1f-create.test-20001228015635-grq5cruh7q3juapcegeza6mshjkzsxzo
mysql-test/t/ctype_ldml.test sp1f-ctype_ldml.test-20070607125553-mqkp3r7v2bep7crb3ooj7q5qxx7m2257
mysql-test/t/delete.test sp1f-delete.test-20001228015635-7lhk263y3s3wild7htgoaesssx5wdy4s
mysql-test/t/disabled.def sp1f-disabled.def-20050315184020-inpdp4hiogithilv62snllppjz2dcing
mysql-test/t/distinct.test sp1f-distinct.test-20001228015635-qewnmgwdqesya4ppb2fbev4mxjvlme2f
mysql-test/t/explain.test sp1f-explain.test-20001228015635-wk7l25cmz54vfufovxkip3auyxz2s36e
mysql-test/t/flush_read_lock_kill.test sp1f-flush_read_lock_kill-20041202220229-cx7dgk5hubrznmauw6vq6lnvahvcwew5
mysql-test/t/func_group.test sp1f-func_group.test-20001228015635-wkz277djccbddkitm63hibutxp7o4rb7
mysql-test/t/func_in.test sp1f-func_in.test-20001228015635-dykb2qebuowolk7cf6gpa4brezc4m5gk
mysql-test/t/func_str.test sp1f-strfunc.test-20001215085543-mqigcxue3chlbvewleghlo7v5ob5x6vj
mysql-test/t/gis-rtree.test sp1f-gisrtree.test-20030312125159-kg66qt2bmrgz7yscu55gymo7pqha5ra2
mysql-test/t/gis.test sp1f-gis.test-20030301091631-6xbsjkakono4hhavzhol5dhxlmcms4pj
mysql-test/t/grant3.test sp1f-grant3.test-20050322110327-afyko7s7c6kg2wqmwekxz7stzflyxe2s
mysql-test/t/group_min_max.test sp1f-group_min_max.test-20040827133612-bbe7hj6l7byvtyxsg4iicylzflsgy6vj
mysql-test/t/handler_myisam.test sp1f-handler_myisam.test-20060816103641-ckpb4przkqjb63gycdafwpu6hkuus3rj
mysql-test/t/information_schema_db.test sp1f-information_schema_d-20050506190606-kvrvmvgttlnqukdm6gfrtdntjs4tfjrm
mysql-test/t/innodb-autoinc.test innodbautoinc.test-20081201061010-zymrrwrczns2vrex-281
mysql-test/t/innodb_bug39438.test innodb_bug39438.test-20081214202842-57uir9gc3v9g1pge-3
mysql-test/t/innodb_mysql.test sp1f-innodb_mysql.test-20060816102624-6ymo37d3nyhvbqyzqn5ohsfuydwo426k
mysql-test/t/insert_select.test sp1f-insert_select.test-20001228015636-zjrqdr7pnvxymgj7brilmnuk2ywuj5u4
mysql-test/t/join.test sp1f-join.test-20001228015636-punt3oq3irbqswtbrlkelkxape6lttnl
mysql-test/t/kill.test sp1f-kill.test-20010314060712-batcuefxmzrvmgnamk2ljdbhvztus52g
mysql-test/t/lock_multi_bug38499.test lock_multi_bug38499.-20090323142129-zy29x8evgcinsvud-1
mysql-test/t/lock_multi_bug38691.test lock_multi_bug38691.-20090323142129-zy29x8evgcinsvud-2
mysql-test/t/lowercase_fs_off.test sp1f-lowercase_fs_off.tes-20060504065504-i6dehorpaxhrhthhkdl7ioqcnzsktaqa
mysql-test/t/lowercase_table3.test sp1f-lowercase_table3.tes-20040306084333-hnvnsyhtqiysn2fmfz3zkqfjy3mivo4d
mysql-test/t/merge.test sp1f-merge.test-20001228015636-6f5h74kivnnxupyw56zl2jueijh5rb3x
mysql-test/t/myisam-system.test sp1f-myisamsystem.test-20060503125913-ozpyqynhhwo5iiwxdgyt7iljauvr2obd
mysql-test/t/myisam.test sp1f-myisam.test-20010411215653-cdmhjqbeu3xtipkauwbbirystludnac3
mysql-test/t/myisam_crash_before_flush_keys.test myisam_crash_before_-20090402094436-q8pxw24lav2lpjzk-1
mysql-test/t/mysqlbinlog.test sp1f-mysqlbinlog.test-20030924192555-wsghaldjdiuxo36sss7fu2urp47axjk7
mysql-test/t/mysqltest.test sp1f-mysqltest.test-20041022024800-v3hvkzs4236l6rpunai7xttdltot7rvz
mysql-test/t/named_pipe.test sp1f-named_pipe.test-20070924104241-daakp7etk2k4hxuzofbxrgkdkzcwmw2a
mysql-test/t/not_partition.test sp1f-not_partition.test-20061026171106-weuf2mmixpkzlidd3r3j4yme2whe35rj
mysql-test/t/olap.test sp1f-olap.test-20020720115151-u3y5qjyyz4c7hufu5vftj74rijkr7rf2
mysql-test/t/order_by.test sp1f-order_by.test-20001228015636-nr7aml75ra7mdlruhoqo5dgbfv5tcesc
mysql-test/t/partition.test sp1f-partition.test-20050718113034-pbo3ht3bf4gfa3mz44on3sqafyctwo35
mysql-test/t/partition_csv.test sp1f-partition_csv.test-20071022181049-u2nodruhqzkicgs2isvjxv5xfkj3q5hc
mysql-test/t/partition_innodb.test sp1f-partition_innodb.tes-20060518171642-twfw23mpackjkfvorfvay4dhvjxhtbfm
mysql-test/t/partition_pruning.test sp1f-partition_pruning.te-20051222092851-w33h4bmtllkwolwe5birv6mwcwoe2uys
mysql-test/t/plugin.test sp1f-plugin.test-20061214230953-rdqkovjzpupoeypjzzvefseahkmrdz4f
mysql-test/t/plugin_load.test sp1f-plugin_load.test-20080126000459-32quuvob6bm45mqub6nydrb66zhyumvz
mysql-test/t/ps_not_windows.test sp1f-ps_not_windows.test-20061117214908-5zcao5tiy3glx2i3aqg2sn4koijafp6u
mysql-test/t/query_cache.test sp1f-query_cache.test-20011205230530-yfwho76ujeasygr3magwlmssnvwsukio
mysql-test/t/range.test sp1f-range.test-20001228015636-xfak6bsaw5p3ek36np7bznadjb3boh2q
mysql-test/t/select.test sp1f-select.test-20010103001548-tbl2ff7qehzh43qnsmf4ejhjqe66f46n
mysql-test/t/sp-error.test sp1f-sperror.test-20030305184512-aipdocqcicc6rgsz672mr32qowtm5ceb
mysql-test/t/sp.test sp1f-sp.test-20030117133803-b6pcfv2yscbqkur5fszep7acmdg7nf5k
mysql-test/t/subselect.test sp1f-subselect.test-20020512204640-lyqrayx6uwsn7zih6y7kerkenuitzbvr
mysql-test/t/subselect3.test sp1f-subselect3.test-20061031174245-pcxt5ljylerxhx2jkfhrbqfv5vqcazlz
mysql-test/t/type_bit.test sp1f-type_bit.test-20041217140559-tzpygypzmjyjiukpq75swmn6zq4ytqe4
mysql-test/t/udf.test sp1f-udf.test-20060215161120-inrv7ph3327gnzcvcqk25vmihneybyhk
mysql-test/t/update.test sp1f-update.test-20001228015637-63zlejfzul4bql7vagkgrfew3bn7qdhq
mysql-test/t/upgrade.test sp1f-upgrade.test-20060217091845-b2j6eahffx256stwqu5aki5p55sq2bz3
mysql-test/t/view.test sp1f-view.test-20040715221517-2kxb7l4itrpl4mw266xe5gby4vftru3z
mysql-test/t/view_grant.test sp1f-view_grant.test-20050404194355-y5ik7soywcms7xriyzo72dooviahc7cx
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
mysql-test/t/windows.test sp1f-windows.test-20050901013213-brlrkwlhdfgrngb2t563kyzyenq6gls2
mysql-test/t/xa.test sp1f-xa.test-20050403224954-lwrpyxgzlsnvmlzqdkoeuxg62yhkyecp
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
mysys/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-shgpjtu5x7rmyswxjiriviagwnm5kvpd
mysys/Makefile.am sp1f-makefile.am-19700101030959-36zaboyabq4ooqfc2jpion3pic7yhpgb
mysys/array.c sp1f-array.c-19700101030959-2hjzb7hsesa7johw3h36rfljc6b34cdy
mysys/errors.c sp1f-errors.c-19700101030959-xfxez7oem4mhljuj3yhmevl3vohnvgh3
mysys/hash.c sp1f-hash.c-19700101030959-ny373x26eb7225kqbdbb7l23bjwr6pun
mysys/mf_iocache.c sp1f-mf_iocache.c-19700101030959-4ewmxm2zsffy4gbuoigni57oa5ckysvf
mysys/mf_keycache.c sp1f-mf_keycache.c-19700101030959-wtigyxt4n6zscc6ezr56wziqguyc5bds
mysys/mf_pack.c sp1f-mf_pack.c-19700101030959-u7bzjnr4w3idabvny244w5gzcf33butm
mysys/my_copy.c sp1f-my_copy.c-19700101030959-jt6k3uijhnzawhndg4d4ocqbucojvwve
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
mysys/my_largepage.c sp1f-my_largepage.c-20041214192504-4n2x3wmc6b43qlmnfmpmjlxvtke7lrcz
mysys/my_redel.c sp1f-my_redel.c-19700101030959-ki322j4p74mpkdbdsettqo2bh2y2ln2g
mysys/my_seek.c sp1f-my_seek.c-19700101030959-ud6rvcvrfr5z3bkv2uapwxioynoau3pv
mysys/my_static.c sp1f-my_static.c-19700101030959-vmmfiyygpz2awmm7d3pguy4rsuugbhcs
mysys/my_thr_init.c sp1f-my_thr_init.c-19700101030959-siwg2eavxsdwdc4kkmwxvs42rp6ntkrm
mysys/my_wincond.c sp1f-my_wincond.c-19700101030959-qdv7yylq5t4imwxjnjub6dyqcq3wqwow
mysys/safemalloc.c sp1f-safemalloc.c-19700101030959-lzukndsycy7ifkiblxgakgzfmfevnjau
mysys/thr_lock.c sp1f-thr_lock.c-19700101030959-igvxgo25qd7i2moc4pgo5eoth3xp34mh
mysys/typelib.c sp1f-typelib.c-19700101030959-yks6u7xso4ru4dpd6v7uq7ynmxg6wsgt
regex/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-6kmn7fqqj7jzzviead26v47chae5xab3
regex/regcomp.c sp1f-regcomp.c-19700101030959-333ylfczx6gn4fp7dc2c5yipywjxppor
scripts/make_binary_distribution.sh sp1f-make_binary_distribu-19700101030959-efrhw236bzgbhabfsq3ygx5pkfitz7wy
scripts/make_win_bin_dist sp1f-make_win_bin_dist-20060901123056-xnusgszvkfrrcxkqidb7zszax2ezpyto
scripts/mysql_system_tables.sql sp1f-mysql_system_tables.-20070226104923-4n5a67fuifobcyhhicfbacpsv5npohgv
scripts/mysql_system_tables_fix.sql sp1f-mysql_fix_privilege_-20030604152848-cz6lnrig5srcrvkt7d5m35bk3wsz4bdc
server-tools/instance-manager/mysql_connection.cc sp1f-mysql_connection.cc-20041023073150-57pgpvvlphfl6gybl5c36jkd3exbaxjk
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
sql-common/my_time.c sp1f-my_time.c-20040624160839-c5ljhxyjpi5czybdscnldwjexwdyx3o6
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/client_settings.h sp1f-client_settings.h-20030531101544-rb7ykljjpb7sa6qz7mw6b7tknqpxgrds
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/field.cc sp1f-field.cc-19700101030959-f4imaofclsea3n4fj4ow5m7havmyxa2r
sql/field.h sp1f-field.h-19700101030959-3n6smzxcwkjl7bikm3wg4hfkjn66uvvp
sql/ha_ndbcluster.cc sp1f-ha_ndbcluster.cc-20040414175836-rvqnoxrkqexyhfu3d62s4t345ip7rez2
sql/ha_ndbcluster_binlog.cc sp1f-ha_ndbcluster_binlog-20060112185048-3hthowbxyrrly3srxavlrufjf5mmgqm6
sql/ha_partition.cc sp1f-ha_partition.cc-20050718113037-eoky4qluumb5dmdyg5z6n2fvdkgutxms
sql/ha_partition.h sp1f-ha_partition.h-20050718113038-4xxwqkuu2xgxqtrwfbc43zgfyfcwzjsq
sql/handler.cc sp1f-handler.cc-19700101030959-ta6zfrlbxzucylciyro3musjsdpocrdh
sql/handler.h sp1f-handler.h-19700101030959-mumq2hpilkpgxuf22ftyv5kbilysnzvn
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/item_create.cc sp1f-item_create.cc-19700101030959-zdsezbi5r5xu5syntjdzqs2d2dswsojn
sql/item_func.cc sp1f-item_func.cc-19700101030959-3wmsx76yvc25sroqpfrx2n77kqdxxn3y
sql/item_geofunc.cc sp1f-item_geofunc.cc-20030530102226-vdbf2bd6tpkrzoy6q2wdibkzd3bkv2io
sql/item_strfunc.cc sp1f-item_strfunc.cc-19700101030959-yl2pwnrngmla3nmlgiuiwrztx3iu4ffl
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_timefunc.cc sp1f-item_timefunc.cc-19700101030959-rvvlgmw5b4ewpuuxuntrkiqimyrr5sw2
sql/item_xmlfunc.cc sp1f-item_xmlfunc.cc-20051221130500-wo5dgojvjjm6mmra7fay3ri7ud5ow3yl
sql/lock.cc sp1f-lock.cc-19700101030959-lzrt5tyolna3dcihuenjh7nlicr7llt7
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/log_event.cc sp1f-log_event.cc-19700101030959-msmqlflsngxosswid2hpzxly5vfqdddc
sql/log_event.h sp1f-log_event.h-19700101030959-clq6ett55tcqbpys2i4cpfrdccq7j4om
sql/log_event_old.cc sp1f-log_event_old.cc-20070412135046-uu5xq4cnpwslzif6fbmj3g65x4vdkzxu
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/opt_range.cc sp1f-opt_range.cc-19700101030959-afe3wtevb7zwrg4xyibt35uamov5r7ds
sql/opt_sum.cc sp1f-opt_sum.cc-19700101030959-ygmsylwaxwx3wf77i2nv2hdupycvexro
sql/partition_info.cc sp1f-partition_info.cpp-20060216163637-eco35bnz46tcywduzmpjofzudmzlgyog
sql/partition_info.h sp1f-partition_info.h-20060216163824-oojk3ek2w7xkojv2h6uztsuhocdplhmr
sql/records.cc sp1f-records.cc-19700101030959-xg6elqzdqhvrmobazxrjajmiyqxf7lx7
sql/repl_failsafe.cc sp1f-repl_failsafe.cc-20011010025623-k7zhoyc3smc7tbliyp7vaf3f4idq22so
sql/rpl_filter.cc sp1f-table_filter.cc-20050308201116-4anzb26smj76r56ihkpxzbtnzlzatr2k
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/slave.h sp1f-slave.h-20001111215010-k3xq56z2cul6s766om7zrdsnlwdc23y5
sql/sp.cc sp1f-sp.cc-20021212121421-6xwuvxq5bku2b4yv655kp2e5gsvautd5
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/spatial.cc sp1f-spatial.cc-20020222112439-yecm64geoygpvzrlc2mg7hdtbvtlmhoe
sql/sql_acl.cc sp1f-sql_acl.cc-19700101030959-c4hku3uqxzujthqnndeprbrhamqy6a4i
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_binlog.cc sp1f-sql_binlog.cc-20051222053449-o6vkdfrjkuledkjdwz2jx3zykz4izfsz
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_db.cc sp1f-sql_db.cc-19700101030959-hyw6zjuisjyda5cj5746a2zzuzz5yibr
sql/sql_delete.cc sp1f-sql_delete.cc-19700101030959-ch2a6r6ushvc2vfwxt7ehcjuplelwthr
sql/sql_handler.cc sp1f-sql_handler.cc-20010406221833-l4tsiortoyipmoyajcoz2tcdppvyeltl
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_load.cc sp1f-sql_load.cc-19700101030959-hoqlay5we4yslrw23xqedulkejw6a3o5
sql/sql_locale.cc sp1f-sql_locale.cc-20060704124016-q5yfdbfinszhklmgyjf4kmnepgd4biai
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_partition.cc sp1f-sql_partition.cc-20050718113038-57h5bzswps6cel2y7k7qideue3ghbg3u
sql/sql_plugin.cc sp1f-sql_plugin.cc-20051105112032-hrm64p6xfjq33ud6zy3uivpo7azm75a2
sql/sql_prepare.cc sp1f-sql_prepare.cc-20020612210720-gtqjjiu7vpmfxb5xct2qke7urmqcabli
sql/sql_profile.cc sp1f-sql_profile.cc-20070222150305-yv5grcusm3k2b6rrcx3kkqggtm33i3z4
sql/sql_rename.cc sp1f-sql_rename.cc-20000821000147-ltbepgfv52umnrkaxzycedl5p2tlr3fp
sql/sql_repl.cc sp1f-sql_repl.cc-20001002032713-xqbns5ofqsaebhgi2ypcfn7nhz7nh5rp
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/sql_table.cc sp1f-sql_table.cc-19700101030959-tzdkvgigezpuaxnldqh3fx2h7h2ggslu
sql/sql_tablespace.cc sp1f-sql_tablespace.cc-20060111103519-oyr2sz233kphdr5xpru4mqwtac2mt4uf
sql/sql_trigger.cc sp1f-sql_trigger.cc-20040907122911-35k3wamrp6g7qsupxe7hisftpobcwin5
sql/sql_udf.cc sp1f-sql_udf.cc-19700101030959-tk7ysmv4dpwkfhtdovfbqe5i6uvq67ft
sql/sql_update.cc sp1f-sql_update.cc-19700101030959-edlgskfuer2ylczbw2znrr5gzfefiyw7
sql/sql_view.cc sp1f-sql_view.cc-20040715221517-nw4p4mja6nzzlvwwhzfgfqb4umxqobe4
sql/sql_yacc.yy sp1f-sql_yacc.yy-19700101030959-wvn4qyy2drpmge7kaq3dysprbhlrv27j
sql/structs.h sp1f-structs.h-19700101030959-dqulhwijezc2pwv2x4g32qdggnybj2nc
sql/table.cc sp1f-table.cc-19700101030959-nsxtem2adyqzwe6nz4cgrpcmts3o54v7
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
sql/time.cc sp1f-time.cc-19700101030959-vhvl5k35iuojsrxbsg62xysptyi4pc64
sql/udf_example.c sp1f-udf_example.cc-19700101030959-ze6kwdimrvfxkxofoegzwby3qce75brj
sql/unireg.cc sp1f-unireg.cc-19700101030959-6a4wymwak6cmvk25gch56ctjvadrhu3v
storage/archive/ha_archive.cc sp1f-ha_archive.cc-20040521001938-uy57z43drkjeirpjafdzdpvfxruqho4q
storage/blackhole/ha_blackhole.cc sp1f-ha_blackhole.cc-20050323001036-ikllt6ts2equ6w4aru2q3rhdbrn64twz
storage/csv/ha_tina.cc sp1f-ha_tina.cc-20040813035429-5pwcme2ehkkuei6gu6ueo4tfldeeyw7l
storage/federatedx/Makefile.am makefile.am-20091029224633-m824ql737a2j6q5a-9
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
storage/heap/hp_test2.c sp1f-hp_test2.c-19700101030959-istrlh2h6lqlrwuuixqarqmz2hgtwrlc
storage/heap/hp_write.c sp1f-hp_write.c-19700101030959-fyft5higet4kliqpr6vywernwiypjfzr
storage/innobase/dict/dict0dict.c sp1f-dict0dict.c-20010217121859-dhmp6wllhccos4vvwyuqz5dmuctjxgmm
storage/innobase/handler/ha_innodb.cc sp1f-ha_innobase.cc-20001205235417-rlet3ei56gdrss673dssnrqgug67lwno
storage/innobase/handler/ha_innodb.h sp1f-ha_innobase.h-20001205235417-hami5r4niirc73bybnkeudrtmaqghhlk
storage/innobase/os/os0proc.c sp1f-os0proc.c-20010217121911-iociah67deec5bczgjf6gr33stj75df2
storage/innobase/row/row0mysql.c sp1f-row0mysql.c-20010217121914-f6pdtzldiainoq3xyil2uwziayos4irm
storage/innodb_plugin/CMakeLists.txt cmakelists.txt-20090527093836-7v4wb2xxka10h4d0-2
storage/innodb_plugin/ChangeLog changelog-20090527093836-7v4wb2xxka10h4d0-4
storage/innodb_plugin/Makefile.am makefile.am-20090527093836-7v4wb2xxka10h4d0-5
storage/innodb_plugin/btr/btr0btr.c btr0btr.c-20090527093836-7v4wb2xxka10h4d0-46
storage/innodb_plugin/btr/btr0sea.c btr0sea.c-20090527093836-7v4wb2xxka10h4d0-49
storage/innodb_plugin/buf/buf0buf.c buf0buf.c-20090527093836-7v4wb2xxka10h4d0-51
storage/innodb_plugin/buf/buf0flu.c buf0flu.c-20090527093836-7v4wb2xxka10h4d0-52
storage/innodb_plugin/buf/buf0lru.c buf0lru.c-20090527093836-7v4wb2xxka10h4d0-53
storage/innodb_plugin/buf/buf0rea.c buf0rea.c-20090527093836-7v4wb2xxka10h4d0-54
storage/innodb_plugin/dict/dict0crea.c dict0crea.c-20090527093836-7v4wb2xxka10h4d0-58
storage/innodb_plugin/dict/dict0dict.c dict0dict.c-20090527093836-7v4wb2xxka10h4d0-59
storage/innodb_plugin/fil/fil0fil.c fil0fil.c-20090527093836-7v4wb2xxka10h4d0-65
storage/innodb_plugin/fsp/fsp0fsp.c fsp0fsp.c-20090527093836-7v4wb2xxka10h4d0-66
storage/innodb_plugin/handler/ha_innodb.cc ha_innodb.cc-20090527093836-7v4wb2xxka10h4d0-72
storage/innodb_plugin/handler/ha_innodb.h ha_innodb.h-20090527093836-7v4wb2xxka10h4d0-73
storage/innodb_plugin/handler/handler0alter.cc handler0alter.cc-20090527093836-7v4wb2xxka10h4d0-74
storage/innodb_plugin/include/buf0buf.h buf0buf.h-20090527093836-7v4wb2xxka10h4d0-92
storage/innodb_plugin/include/buf0buf.ic buf0buf.ic-20090527093836-7v4wb2xxka10h4d0-93
storage/innodb_plugin/include/buf0lru.h buf0lru.h-20090527093836-7v4wb2xxka10h4d0-96
storage/innodb_plugin/include/buf0rea.h buf0rea.h-20090527093836-7v4wb2xxka10h4d0-98
storage/innodb_plugin/include/buf0types.h buf0types.h-20090527093836-7v4wb2xxka10h4d0-99
storage/innodb_plugin/include/dict0crea.h dict0crea.h-20090527093836-7v4wb2xxka10h4d0-108
storage/innodb_plugin/include/dict0dict.h dict0dict.h-20090527093836-7v4wb2xxka10h4d0-110
storage/innodb_plugin/include/dict0mem.h dict0mem.h-20090527093836-7v4wb2xxka10h4d0-114
storage/innodb_plugin/include/fsp0fsp.h fsp0fsp.h-20090527093836-7v4wb2xxka10h4d0-124
storage/innodb_plugin/include/lock0lock.h lock0lock.h-20090527093836-7v4wb2xxka10h4d0-142
storage/innodb_plugin/include/log0log.h log0log.h-20090527093836-7v4wb2xxka10h4d0-147
storage/innodb_plugin/include/log0log.ic log0log.ic-20090527093836-7v4wb2xxka10h4d0-148
storage/innodb_plugin/include/log0recv.h log0recv.h-20090527093836-7v4wb2xxka10h4d0-149
storage/innodb_plugin/include/mtr0mtr.h mtr0mtr.h-20090527093836-7v4wb2xxka10h4d0-161
storage/innodb_plugin/include/os0file.h os0file.h-20090527093836-7v4wb2xxka10h4d0-165
storage/innodb_plugin/include/os0sync.h os0sync.h-20090527093836-7v4wb2xxka10h4d0-168
storage/innodb_plugin/include/page0page.h page0page.h-20090527093836-7v4wb2xxka10h4d0-174
storage/innodb_plugin/include/page0page.ic page0page.ic-20090527093836-7v4wb2xxka10h4d0-175
storage/innodb_plugin/include/page0zip.h page0zip.h-20090527093836-7v4wb2xxka10h4d0-177
storage/innodb_plugin/include/rem0cmp.h rem0cmp.h-20090527093836-7v4wb2xxka10h4d0-193
storage/innodb_plugin/include/rem0rec.ic rem0rec.ic-20090527093836-7v4wb2xxka10h4d0-196
storage/innodb_plugin/include/row0ins.h row0ins.h-20090527093836-7v4wb2xxka10h4d0-200
storage/innodb_plugin/include/row0mysql.h row0mysql.h-20090527093836-7v4wb2xxka10h4d0-203
storage/innodb_plugin/include/srv0srv.h srv0srv.h-20090527093836-7v4wb2xxka10h4d0-223
storage/innodb_plugin/include/trx0rec.h trx0rec.h-20090527093836-7v4wb2xxka10h4d0-238
storage/innodb_plugin/include/trx0rec.ic trx0rec.ic-20090527093836-7v4wb2xxka10h4d0-239
storage/innodb_plugin/include/trx0roll.h trx0roll.h-20090527093836-7v4wb2xxka10h4d0-240
storage/innodb_plugin/include/trx0sys.ic trx0sys.ic-20090527093836-7v4wb2xxka10h4d0-245
storage/innodb_plugin/include/trx0trx.h trx0trx.h-20090527093836-7v4wb2xxka10h4d0-246
storage/innodb_plugin/include/univ.i univ.i-20090527093836-7v4wb2xxka10h4d0-252
storage/innodb_plugin/include/ut0auxconf.h ut0auxconf.h-20090527093836-7v4wb2xxka10h4d0-256
storage/innodb_plugin/include/ut0byte.h ut0byte.h-20090527093836-7v4wb2xxka10h4d0-257
storage/innodb_plugin/include/ut0byte.ic ut0byte.ic-20090527093836-7v4wb2xxka10h4d0-258
storage/innodb_plugin/include/ut0ut.h ut0ut.h-20090527093836-7v4wb2xxka10h4d0-268
storage/innodb_plugin/lock/lock0lock.c lock0lock.c-20090527093836-7v4wb2xxka10h4d0-274
storage/innodb_plugin/log/log0log.c log0log.c-20090527093836-7v4wb2xxka10h4d0-275
storage/innodb_plugin/log/log0recv.c log0recv.c-20090527093836-7v4wb2xxka10h4d0-276
storage/innodb_plugin/mem/mem0mem.c mem0mem.c-20090527093836-7v4wb2xxka10h4d0-279
storage/innodb_plugin/mtr/mtr0mtr.c mtr0mtr.c-20090527093836-7v4wb2xxka10h4d0-282
storage/innodb_plugin/mysql-test/innodb-analyze.test innodbanalyze.test-20090527093836-7v4wb2xxka10h4d0-286
storage/innodb_plugin/mysql-test/innodb-zip.result innodbzip.result-20090527093836-7v4wb2xxka10h4d0-307
storage/innodb_plugin/mysql-test/innodb-zip.test innodbzip.test-20090527093836-7v4wb2xxka10h4d0-308
storage/innodb_plugin/mysql-test/innodb_bug34300.test innodb_bug34300.test-20090527093836-7v4wb2xxka10h4d0-314
storage/innodb_plugin/mysql-test/innodb_bug36169.test innodb_bug36169.test-20090527093836-7v4wb2xxka10h4d0-318
storage/innodb_plugin/mysql-test/innodb_bug36172.test innodb_bug36172.test-20090527093836-7v4wb2xxka10h4d0-320
storage/innodb_plugin/mysql-test/innodb_file_format.result innodb_file_format.r-20090730103340-a7df5hza0ep3xo6j-7
storage/innodb_plugin/mysql-test/innodb_file_format.test innodb_file_format.t-20090730103340-a7df5hza0ep3xo6j-8
storage/innodb_plugin/os/os0file.c os0file.c-20090527093836-7v4wb2xxka10h4d0-338
storage/innodb_plugin/os/os0proc.c os0proc.c-20090527093836-7v4wb2xxka10h4d0-339
storage/innodb_plugin/page/page0cur.c page0cur.c-20090527093836-7v4wb2xxka10h4d0-342
storage/innodb_plugin/page/page0page.c page0page.c-20090527093836-7v4wb2xxka10h4d0-343
storage/innodb_plugin/page/page0zip.c page0zip.c-20090527093836-7v4wb2xxka10h4d0-344
storage/innodb_plugin/plug.in.disabled plug.in-20090527093836-7v4wb2xxka10h4d0-32
storage/innodb_plugin/rem/rem0cmp.c rem0cmp.c-20090527093836-7v4wb2xxka10h4d0-356
storage/innodb_plugin/row/row0ins.c row0ins.c-20090527093836-7v4wb2xxka10h4d0-359
storage/innodb_plugin/row/row0merge.c row0merge.c-20090527093836-7v4wb2xxka10h4d0-360
storage/innodb_plugin/row/row0mysql.c row0mysql.c-20090527093836-7v4wb2xxka10h4d0-361
storage/innodb_plugin/srv/srv0srv.c srv0srv.c-20090527093836-7v4wb2xxka10h4d0-373
storage/innodb_plugin/srv/srv0start.c srv0start.c-20090527093836-7v4wb2xxka10h4d0-374
storage/innodb_plugin/sync/sync0rw.c sync0rw.c-20090527093836-7v4wb2xxka10h4d0-376
storage/innodb_plugin/sync/sync0sync.c sync0sync.c-20090527093836-7v4wb2xxka10h4d0-377
storage/innodb_plugin/thr/thr0loc.c thr0loc.c-20090527093836-7v4wb2xxka10h4d0-378
storage/innodb_plugin/trx/trx0rec.c trx0rec.c-20090527093836-7v4wb2xxka10h4d0-381
storage/innodb_plugin/trx/trx0roll.c trx0roll.c-20090527093836-7v4wb2xxka10h4d0-382
storage/innodb_plugin/trx/trx0trx.c trx0trx.c-20090527093836-7v4wb2xxka10h4d0-385
storage/innodb_plugin/ut/ut0auxconf_atomic_pthread_t_solaris.c ut0auxconf_atomic_pt-20090527093836-7v4wb2xxka10h4d0-389
storage/innodb_plugin/ut/ut0ut.c ut0ut.c-20090527093836-7v4wb2xxka10h4d0-397
storage/maria/ha_maria.cc sp1f-ha_maria.cc-20060411134405-dmngb4v5x5fxlxhff527ud3etiutxuxk
storage/myisam/ft_boolean_search.c sp1f-ft_boolean_search.c-20010411110351-pu6lfsyiumvnnewko2oqbyjz6g3q4xm3
storage/myisam/ha_myisam.cc sp1f-ha_myisam.cc-19700101030959-7xzssylbn7zfz3nupnsw43wws6xlltsu
storage/myisam/mi_check.c sp1f-mi_check.c-19700101030959-yzbhnjgzcmqdyj4zz5codhkkw5eedp6f
storage/myisam/mi_create.c sp1f-mi_create.c-19700101030959-i6lazhpsyf7ggr2yjukf6xxybhraxup3
storage/myisam/mi_delete.c sp1f-mi_delete.c-19700101030959-wsyh6etg25eem2d3datehyswyrebynqd
storage/myisam/mi_dynrec.c sp1f-mi_dynrec.c-19700101030959-nxljgslcvngwajcb7ibf7z5cs7kcatkz
storage/myisam/mi_open.c sp1f-mi_open.c-19700101030959-2q2rxowhivdg4hjkjxyf2wtczsod5d6a
storage/myisam/mi_packrec.c sp1f-mi_packrec.c-19700101030959-q5c7eimwd4jctgok3jwycbwjfq3qs6lj
storage/myisam/mi_search.c sp1f-mi_search.c-19700101030959-kdl3zf7h3booyy7xyrnnoejouhznu4cs
storage/myisam/mi_update.c sp1f-mi_update.c-19700101030959-pszwxgusg6ta2oatmgkr3c46yj26sloj
storage/myisam/mi_write.c sp1f-mi_write.c-19700101030959-l47ss6e3phtvbf4dlpzjkleglspv72ef
storage/myisam/myisamchk.c sp1f-myisamchk.c-19700101030959-hdnrqowbdb3ujo3qgjtzs6lgogwckvgc
storage/myisam/sort.c sp1f-sort.c-19700101030959-n36775hcenftishba6lu6m7qtninzzgb
storage/myisammrg/ha_myisammrg.cc sp1f-ha_myisammrg.cc-19700101030959-7fis6yttnmseasvj7uuicb6o6kghtqxf
storage/myisammrg/myrg_open.c sp1f-myrg_open.c-19700101030959-vmszttys66wqrvmecn2q3yr57pnxhjox
storage/myisammrg/myrg_rkey.c sp1f-myrg_rkey.c-20000807112249-knq6up7htm5ekfhj7aqhxdjpitzlfgwa
storage/mysql_storage_engine.cmake mysql_storage_engine-20090610083740-kj4pwd9fzdgs1ocd-1
storage/ndb/include/mgmapi/ndb_logevent.h sp1f-ndb_logevent.h-20050110212417-njnanfe5ghhi3pi2hauspstphgvzgcoq
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp sp1f-dbdict.cpp-20040414082418-iodilitk75ncp4kj2matmhrutqp6ztdo
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp sp1f-dblqhmain.cpp-20040414082419-5mtvgr6eg47fgddawjjch74crdnaduvi
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp sp1f-asyncfile.cpp-20040414082420-tuvysxjfmimrgddfjkno7lqa2qa4qzxr
storage/ndb/src/kernel/blocks/suma/Suma.cpp sp1f-suma.cpp-20040414082421-p4toipzza63cmyzczerf4mdsbvqbwi5r
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp sp1f-initconfigfileparser-20040414082410-njflvxf4bhl7ibktp3poawrv56imjtvz
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/xtradb/dict/dict0dict.c dict0dict.c-20081201061010-zymrrwrczns2vrex-57
storage/xtradb/handler/ha_innodb.cc ha_innodb.cc-20081201061010-zymrrwrczns2vrex-70
storage/xtradb/handler/ha_innodb.h ha_innodb.h-20081201061010-zymrrwrczns2vrex-71
storage/xtradb/handler/handler0alter.cc handler0alter.cc-20081201061010-zymrrwrczns2vrex-72
storage/xtradb/include/buf0buf.ic buf0buf.ic-20081201061010-zymrrwrczns2vrex-89
storage/xtradb/include/srv0srv.h srv0srv.h-20081201061010-zymrrwrczns2vrex-219
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
strings/ctype-simple.c sp1f-ctypesimple.c-20020312173754-2nnl6235owml5myqwzsl3uzlhz72bwho
strings/ctype-uca.c sp1f-ctypeuca.c-20040324121604-kwaskdasqzdrufymlf27j4gl3gwdy5fq
strings/ctype-ucs2.c sp1f-ctypeucs2.c-20030521102942-3fr4x6ti6jw6vqwdh7byhlxpu6oivdnn
strings/ctype-utf8.c sp1f-ctypeutf8.c-20020328133143-7ldgrkcon3ejrongwc7hy4m63qddjsal
strings/decimal.c sp1f-decimal.c-20041018120639-qqm4oeadwhbdhuxgwlc657il4tu44n6m
support-files/binary-configure.sh sp1f-binaryconfigure.sh-19700101030959-brbiq3yf2mdlmehb4p77iqvjg535f4fs
support-files/mysql.spec.sh sp1f-mysql.spec.sh-19700101030959-man6e3acwxvf62bdqvkpcpsvdtokf3ff
tests/mysql_client_test.c sp1f-client_test.c-20020614002636-eqy2zzksgelocknwbbogfuwxfwqy7q5x
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
vio/vio.c sp1f-vio.c-20010520120430-aw76h22ssarmssof7rplhty5elqiexku
vio/vio_priv.h sp1f-vio_priv.h-20030826235137-5sdl43z73qga2fo4s5g55pqqgyvkhbo7
vio/viosocket.c sp1f-viotcpip.c-20010520120437-u3pbzbt3fdfbclbmusalnzmuqh2y4nav
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
win/make_mariadb_win_dist make_mariadb_win_dis-20091011101226-jxt5k56vsnmdwseb-1
mysql-test/r/innodb_lock_wait_timeout_1.result bug40113.result-20090619150423-w3im08cym6tyzn8f-3
mysql-test/t/innodb_lock_wait_timeout_1.test bug40113.test-20090619150423-w3im08cym6tyzn8f-2
storage/federatedx/CMakeLists.txt cmakefiles.txt-20091029224633-m824ql737a2j6q5a-11
------------------------------------------------------------
revno: 2762.5.2
revision-id: igor(a)askmonty.org-20091112044531-qi0oqsdm9yg53oao
parent: monty(a)mysql.com-20091111111749-dnv4ams2mnb8b8rp
committer: Igor Babaev <igor(a)askmonty.org>
branch nick: maria-5.1-merge
timestamp: Wed 2009-11-11 20:45:31 -0800
message:
Corrected a line from the patch for table elimination (WL#17)
to fix a problem with the test case for bug#42116.
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2762.5.1
revision-id: monty(a)mysql.com-20091111111749-dnv4ams2mnb8b8rp
parent: monty(a)askmonty.org-20091107103419-28zpi3oyre6kaf2l
parent: build(a)mysql.com-20091104182209-iui387z35159aoyw
committer: Michael Widenius <monty(a)mysql.com>
branch nick: maria-5.1-merge
timestamp: Wed 2009-11-11 13:17:49 +0200
message:
Merge with MySQL 5.1, with following additions:
- Moved some code from innodb_plugin to xtradb, to ensure that all tests runs
- Did changes in pbxt and maria storage engines becasue of changes in thd->query
- Reverted wrong code in sql_table.cc for how ROW_FORMAT is used.
Todo before joining with main 5.1 tree:
- Join test fails (Igor to investigate)
- mysql-test-run shows warnings from tests; Some suppression rule is not working (Kristian to investiage)
- Run through all buildbots
removed:
mysql-test/include/have_dynamic_loading.inc have_dynamic_loading-20090522174437-1iywv3u2rmhtf5lw-1
mysys/mf_strip.c sp1f-mf_stripp.c-19700101030959-2ym735i6ydnmctuca7s77ymbqt7v66me
storage/innodb_plugin/README readme-20090527093836-7v4wb2xxka10h4d0-6
storage/innodb_plugin/handler/handler0vars.h handler0vars.h-20090730095633-tiqyypxaa0sth5gl-1
storage/innodb_plugin/handler/win_delay_loader.cc win_delay_loader.cc-20090730095633-tiqyypxaa0sth5gl-2
storage/innodb_plugin/win-plugin/ winplugin-20090527093836-7v4wb2xxka10h4d0-45
storage/innodb_plugin/win-plugin/README readme-20090527093836-7v4wb2xxka10h4d0-400
storage/innodb_plugin/win-plugin/win-plugin.diff winplugin.diff-20090527093836-7v4wb2xxka10h4d0-401
added:
mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test binlog_failure_mixin-20091006002922-iahrhss60j05ei1h-1
mysql-test/extra/rpl_tests/rpl_auto_increment_insert_view.test rpl_auto_increment_i-20090914101609-rtpx81itbaubpmgc-1
mysql-test/extra/rpl_tests/rpl_auto_increment_invoke_trigger.test rpl_auto_increment_i-20090914101534-x7z3gkpnlcvpe8tc-1
mysql-test/extra/rpl_tests/rpl_autoinc_func_invokes_trigger.test rpl_autoinc_func_inv-20090927065809-91q8o1j3cgydbnbf-1
mysql-test/include/have_case_insensitive_fs.inc have_case_insensitiv-20091027080400-j8v9m0ohbe2h6g9j-1
mysql-test/include/have_debug_sync.inc have_debug_sync.inc-20090925124518-2m0htks1bbp5jaf5-1
mysql-test/include/have_dynamic_loading.inc have_dynamic_loading-20090904194100-ugojr9bb769e3fbq-1
mysql-test/include/have_mysql_upgrade.inc have_mysql_upgrade.i-20090917092107-9hgddfty57tkdmvp-1
mysql-test/include/have_not_innodb_plugin.inc have_not_innodb_plug-20090923075831-ufghhe437p4n3lll-2
mysql-test/include/not_windows_embedded.inc not_windows_embedded-20091008083404-t3r99o2khtp7kg90-1
mysql-test/lib/v1/incompatible.tests incompatible.tests-20090716120442-nls1338ddzoeujfy-1
mysql-test/r/bug46760.result bug46760.result-20090918125958-1wth1m4e5jtlymw0-1
mysql-test/r/case_insensitive_fs.require case_insensitive_fs.-20091027080416-za7pbbn63nzc3sq1-1
mysql-test/r/debug_sync.result debug_sync.result-20090925124518-2m0htks1bbp5jaf5-2
mysql-test/r/grant_lowercase_fs.result grant_lowercase_fs.r-20091027080441-p2gwdn1qob67e2sn-1
mysql-test/r/have_debug_sync.require have_debug_sync.requ-20090925124518-2m0htks1bbp5jaf5-3
mysql-test/r/innodb_bug44369.result innodb_bug44369.resu-20091005111405-nbp5t33h95jrqha2-1
mysql-test/r/innodb_bug46000.result innodb_bug46000.resu-20091005110756-z0lgt2d7519jnym8-1
mysql-test/r/innodb_bug47777.result innodb_bug47777.resu-20091102144133-qtzn9xarzh75dlyu-1
mysql-test/r/locale.result locale.result-20091019084441-qaiek29ss4m5rftg-2
mysql-test/r/lowercase_mixed_tmpdir_innodb.result lowercase_mixed_tmpd-20090909093609-nobx9nnvim2rm4w6-1
mysql-test/r/not_true.require not_true.require-20090923075831-ufghhe437p4n3lll-1
mysql-test/r/partition_innodb_builtin.result partition_innodb_bui-20090923084042-z98c8mrrs0g20ib8-1
mysql-test/r/partition_innodb_plugin.result partition_innodb_plu-20090923084042-z98c8mrrs0g20ib8-2
mysql-test/r/partition_open_files_limit.result partition_open_files-20091007154706-q8bf9g4f8yeyzaha-1
mysql-test/r/sp-bugs.result spbugs.result-20091008145837-dfo321akug9vxs7z-2
mysql-test/r/subselect4.result subselect4.result-20090903150316-1sul3u8k29ooxm3r-2
mysql-test/std_data/binlog_transaction.000001 binlog_transaction.0-20090924075501-0p7j6mqdvkocgsqt-1
mysql-test/std_data/latin1.xml latin1.xml-20091012072835-0kzrquhyy5du9pfx-1
mysql-test/suite/binlog/r/binlog_delete_and_flush_index.result binlog_delete_and_fl-20091019225654-0f8r2m0kfopmcyv9-1
mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result binlog_mixed_failure-20091006002922-iahrhss60j05ei1h-2
mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result binlog_row_failure_m-20091006002922-iahrhss60j05ei1h-3
mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_verbose.result binlog_row_mysqlbinl-20091009083137-wijoi4v49b1btvoa-1
mysql-test/suite/binlog/r/binlog_stm_do_db.result binlog_stm_do_db.res-20090723105556-zwq0kkax3cohfix5-1
mysql-test/suite/binlog/std_data/update-full-row.binlog updatefullrow.binlog-20091009085429-osiv6twgm7nh9ra3-1
mysql-test/suite/binlog/std_data/update-partial-row.binlog updatepartialrow.bin-20091009085429-osiv6twgm7nh9ra3-2
mysql-test/suite/binlog/std_data/write-full-row.binlog writefullrow.binlog-20091009085435-3lxvujqi3h4xswim-1
mysql-test/suite/binlog/std_data/write-partial-row.binlog writepartialrow.binl-20091009085435-3lxvujqi3h4xswim-2
mysql-test/suite/binlog/t/binlog_delete_and_flush_index.test binlog_delete_and_fl-20091019225654-0f8r2m0kfopmcyv9-2
mysql-test/suite/binlog/t/binlog_mixed_failure_mixing_engines.test binlog_mixed_failure-20091006002922-iahrhss60j05ei1h-4
mysql-test/suite/binlog/t/binlog_row_failure_mixing_engines.test binlog_row_failure_m-20091006002922-iahrhss60j05ei1h-5
mysql-test/suite/binlog/t/binlog_row_mysqlbinlog_verbose.test binlog_row_mysqlbinl-20091009083137-wijoi4v49b1btvoa-2
mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt binlog_stm_do_dbmast-20090723105556-zwq0kkax3cohfix5-3
mysql-test/suite/binlog/t/binlog_stm_do_db.test binlog_stm_do_db.tes-20090723105556-zwq0kkax3cohfix5-2
mysql-test/suite/federated/federated_debug-master.opt federated_debugmaste-20090930202808-tky4roen9kpzlmdp-1
mysql-test/suite/federated/federated_debug.result federated_debug.resu-20090930202818-9otpqz3uxpfx2iv1-1
mysql-test/suite/federated/federated_debug.test federated_debug.test-20090930202805-kt19apxdz61tx0ln-1
mysql-test/suite/innodb/r/innodb-consistent.result innodbconsistent.res-20091009132519-hgdn500g0czzt422-1
mysql-test/suite/innodb/r/innodb_bug44571.result innodb_bug44571.resu-20091008104658-12126vr05wqyllai-1
mysql-test/suite/innodb/t/innodb-consistent-master.opt innodbconsistentmast-20091009132511-05q1yxchk8rz94rf-1
mysql-test/suite/innodb/t/innodb-consistent.test innodbconsistent.tes-20091009132503-a1s2ak2b3c32x2xl-1
mysql-test/suite/innodb/t/innodb_bug44571.test innodb_bug44571.test-20091008104658-12126vr05wqyllai-2
mysql-test/suite/rpl/r/rpl_auto_increment_update_failure.result rpl_auto_increment_u-20090903144503-al54eug7lpxe5bxp-1
mysql-test/suite/rpl/r/rpl_mysql_upgrade.result rpl_mysql_upgrade.re-20090915080949-vr0m9hda55fjmelr-1
mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result rpl_row_disabled_sla-20090926230521-lkpisp969kum1ko2-1
mysql-test/suite/rpl/t/rpl_auto_increment_update_failure.test rpl_auto_increment_u-20090903144442-bgwonv8p7ky8c3ze-1
mysql-test/suite/rpl/t/rpl_get_master_version_and_clock-slave.opt rpl_get_master_versi-20091022015603-0bswyro3q6eqinsm-1
mysql-test/suite/rpl/t/rpl_mysql_upgrade.test rpl_mysql_upgrade.te-20090915080946-ihj08jolsl0jiel5-1
mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test rpl_row_disabled_sla-20090926230521-lkpisp969kum1ko2-2
mysql-test/t/bug46760-master.opt bug46760master.opt-20090918125958-1wth1m4e5jtlymw0-2
mysql-test/t/bug46760.test bug46760.test-20090918125958-1wth1m4e5jtlymw0-3
mysql-test/t/debug_sync.test debug_sync.test-20090925124518-2m0htks1bbp5jaf5-4
mysql-test/t/grant_lowercase_fs.test grant_lowercase_fs.t-20091027080502-vaql5cl7hm77d4va-1
mysql-test/t/innodb_bug44369.test innodb_bug44369.test-20091005111405-nbp5t33h95jrqha2-2
mysql-test/t/innodb_bug46000.test innodb_bug46000.test-20091005110740-z4rhixe6pxtvfzwg-1
mysql-test/t/innodb_bug47777.test innodb_bug47777.test-20091102144121-in0bnk577l2r2niz-1
mysql-test/t/locale.test locale.test-20091019084441-qaiek29ss4m5rftg-1
mysql-test/t/lowercase_mixed_tmpdir_innodb-master.opt lowercase_mixed_tmpd-20090909093621-493y6grd4ycy587n-1
mysql-test/t/lowercase_mixed_tmpdir_innodb-master.sh lowercase_mixed_tmpd-20090909093706-tbaggs2flpboi335-1
mysql-test/t/lowercase_mixed_tmpdir_innodb.test lowercase_mixed_tmpd-20090909093625-zly7ha6rwwxch86u-1
mysql-test/t/partition_innodb_builtin.test partition_innodb_bui-20090923082845-g02wtqf81dvzw6gc-1
mysql-test/t/partition_innodb_plugin.test partition_innodb_plu-20090923082850-5l2dv4lq6f99lruy-1
mysql-test/t/partition_open_files_limit-master.opt partition_open_files-20091007154613-kkfm9vev52v7g5qx-1
mysql-test/t/partition_open_files_limit.test partition_open_files-20091007154613-kkfm9vev52v7g5qx-2
mysql-test/t/sp-bugs.test spbugs.test-20091008145837-dfo321akug9vxs7z-1
mysql-test/t/status-master.opt statusmaster.opt-20090827131631-hxfk90w60wdsy2hc-1
mysql-test/t/subselect4.test subselect4.test-20090903150316-1sul3u8k29ooxm3r-1
sql/debug_sync.cc debug_sync.cc-20090925124518-2m0htks1bbp5jaf5-5
sql/debug_sync.h debug_sync.h-20090925124518-2m0htks1bbp5jaf5-6
storage/innodb_plugin/mysql-test/innodb-consistent-master.opt innodbconsistentmast-20091012122637-mepyyow3z5ui6cel-1
storage/innodb_plugin/mysql-test/innodb-consistent.result innodbconsistent.res-20091012122706-h9tv41qfkzisq1b6-1
storage/innodb_plugin/mysql-test/innodb-consistent.test innodbconsistent.tes-20091012122706-h9tv41qfkzisq1b6-2
storage/innodb_plugin/mysql-test/innodb_bug44369.result innodb_bug44369.resu-20091012122706-h9tv41qfkzisq1b6-3
storage/innodb_plugin/mysql-test/innodb_bug44369.test innodb_bug44369.test-20091012122706-h9tv41qfkzisq1b6-4
storage/innodb_plugin/mysql-test/innodb_bug44571.result innodb_bug44571.resu-20091012122706-h9tv41qfkzisq1b6-5
storage/innodb_plugin/mysql-test/innodb_bug44571.test innodb_bug44571.test-20091012122706-h9tv41qfkzisq1b6-6
storage/innodb_plugin/mysql-test/innodb_bug46000.result innodb_bug46000.resu-20091012122706-h9tv41qfkzisq1b6-7
storage/innodb_plugin/mysql-test/innodb_bug46000.test innodb_bug46000.test-20091012122706-h9tv41qfkzisq1b6-8
storage/innodb_plugin/revert_gen.sh revert_gen.sh-20091012123850-w0rv1f2ijprz292d-1
storage/innodb_plugin/scripts/export.sh export.sh-20091012120743-l9z3v18op9lk6dhw-1
storage/innodb_plugin/ut/ut0auxconf_have_gcc_atomics.c ut0auxconf_have_gcc_-20091009120907-rmzjolcnf1dsprof-1
renamed:
mysql-test/r/bug40113.result => mysql-test/r/innodb_lock_wait_timeout_1.result bug40113.result-20090619150423-w3im08cym6tyzn8f-3
mysql-test/t/bug40113-master.opt => mysql-test/t/innodb_lock_wait_timeout_1-master.opt bug40113master.opt-20090619150423-w3im08cym6tyzn8f-1
mysql-test/t/bug40113.test => mysql-test/t/innodb_lock_wait_timeout_1.test bug40113.test-20090619150423-w3im08cym6tyzn8f-2
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
CMakeLists.txt sp1f-cmakelists.txt-20060831175236-433hkm7nrqfjbwios4ancgytabw354nr
Makefile.am sp1f-makefile.am-19700101030959-jbbpiygwpgybyqknlavdxxupbrjonu7h
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysql_upgrade.c sp1f-mysql_upgrade.c-20060428040559-3xcugp4nhhb6qfwfacoqw3d4ibgbeboz
client/mysqlbinlog.cc sp1f-mysqlbinlog.cc-19700101030959-b3vgyo47ljent5mhbyj6ik33bi4bukad
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqlimport.c sp1f-mysqlimport.c-19700101030959-m6nmuvl5kbp2qmdqtmu5mxafegtn7ipv
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
cmd-line-utils/readline/display.c sp1f-display.c-19700101030959-dhuvqj5evnaoid2tbnpgu7zlqrfutn7k
configure.in sp1f-configure.in-19700101030959-mgdpoxtnh2ewmvusvfpkreuhwvffkcjw
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/taocrypt/src/random.cpp sp1f-random.cpp-20050428132321-q6wudeoop6upz7agf4pmigiyw6d6d3mt
include/my_dbug.h sp1f-dbug.h-19700101030959-jbasz7hhskrakujn4b3uatfstocyueon
include/my_sys.h sp1f-my_sys.h-19700101030959-lyllvna5vzqfcjnmlcrutgqocylhtb54
include/myisamchk.h sp1f-myisamchk.h-20060411134400-oxba7mdmuzv2d62tlze6mrs5tpbmhrzw
include/mysql.h sp1f-mysql.h-19700101030959-soi7hu6ji273nui3fm25jjf4m4362pcw
include/mysql.h.pp mysql.h.pp-20080613094407-2m1760u4zdzt4dc7-1
include/violite.h sp1f-violite.h-19700101030959-jfyqeh5pmto4ncgcdcdf36bl5ininiqx
libmysql/libmysql.c sp1f-libmysql.c-19700101030959-ba4gwsjdmik5puh2qyrfpvoflwer257l
libmysql/libmysql.def sp1f-libmysql.def-20011019010014-dtnxyq3opddoys6ptxjmzhmaa2rlowmq
libmysqld/CMakeLists.txt sp1f-cmakelists.txt-20060403082523-x3vxka3k56u2wpzwcrlpykznlz2akpxd
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
libmysqld/lib_sql.cc sp1f-lib_sql.cc-20010411110351-gt5febleap73tqvapkesopvqtuht5sf5
libmysqld/libmysqld.c sp1f-libmysqld.c-20010411110351-4556sgf6vpnoounnscj2q6zw56ccl332
libmysqld/libmysqld.def sp1f-libmysqld.def-20020109073846-c3x4ovkgky3uok5h6uiaxaevadsluq6k
mysql-test/collections/README.experimental readme.experimental-20090224115153-en8qgzjquiw0dxzn-1
mysql-test/collections/default.experimental default.experimental-20090224104813-e52mxw708penxv44-1
mysql-test/extra/binlog_tests/binlog.test sp1f-binlog.test-20050223135508-76cdewwz46hwby5kk5g5wmkoxb74yv4y
mysql-test/extra/binlog_tests/drop_temp_table.test sp1f-drop_temp_table.test-20030928163144-dyfrto7gxylnrnim2c5i5wfn7mvjqtgp
mysql-test/extra/rpl_tests/rpl_auto_increment.test sp1f-rpl_auto_increment.t-20051222053450-wnlpmgbkojqq6fnvjocf5ltfbtofin7z
mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test sp1f-rpl_extraslave_col.t-20061103140340-egmkull7owd2wp7d4egg6itzef6p7g23
mysql-test/extra/rpl_tests/rpl_failed_optimize.test sp1f-rpl_failed_optimize.-20051222053450-ylhvmukj7czrgqebj3psg6xeigeaovdj
mysql-test/extra/rpl_tests/rpl_loaddata.test sp1f-rpl_loaddata.test-20051222053450-dtp64wd4tqum3ghoumeskw4aslqd3ntv
mysql-test/extra/rpl_tests/rpl_row_sp006.test sp1f-rpl_row_sp006.test-20051222053450-5432dx6ssedtpzocu66e5qdwfxa4vd3c
mysql-test/extra/rpl_tests/rpl_stm_000001.test sp1f-rpl000001.test-20001118063528-ailyrmllkfzwjx3qfvmu555ijzuk5yur
mysql-test/include/check-warnings.test sp1f-checkwarnings.test-20080408145123-h7zoaw4uh3notptmpiebbf3ot3ltza4q
mysql-test/include/concurrent.inc sp1f-innodb_concurrent.te-20051222053459-lwg5sp2ww5pt2wipchfkjjvnmslyp3g3
mysql-test/include/have_example_plugin.inc sp1f-have_example_plugin.-20061214230953-aurfxypudnc5qjcbqivskkglb5ml6ogr
mysql-test/include/have_simple_parser.inc have_simple_parser.i-20081217115927-orp35vg5f5j5mx25-1
mysql-test/include/have_udf.inc sp1f-have_udf.inc-20060215161119-xf74h7vjdqy73koybl4szdso2mj6cr5n
mysql-test/include/mix1.inc sp1f-innodb_mysql.test-20060426055153-mgtahdmgajg7vffqbq4xrmkzbhvanlaz
mysql-test/include/mtr_warnings.sql sp1f-mtr_warnings.sql-20080408145123-lhtlr627ins6hwi3hxjrcytx4t27nyjr
mysql-test/lib/My/ConfigFactory.pm sp1f-configfactory.pm-20071212171904-umibosyolpj2kzgk32rt5p6pl6vztmaq
mysql-test/lib/My/Platform.pm sp1f-platform.pm-20080220135528-i7dsgofojc7pzjnisb6y43f3kmu6j4ci
mysql-test/lib/My/SafeProcess/safe_kill_win.cc sp1f-safe_kill_win.cc-20071212171905-p26lghnyebz5xacmoguzikby3mb4dmhf
mysql-test/lib/My/SafeProcess/safe_process_win.cc sp1f-safe_process_win.cc-20071212171905-5fxmtbbzzyquscvb7nvjxobmzfwasomh
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/lib/v1/mtr_cases.pl mtr_cases.pl-20081114073900-ptb78lyx8r1awhv9-1
mysql-test/mysql-stress-test.pl sp1f-mysqlstresstest.pl-20051018162159-2oxz4uxwtkipjw3r7znlxngpg6l5vf63
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/almost_full.result sp1f-almost_full.result-20071112090021-zhr5drqqn7ijqmzeawaiwjfhnqvkfkjr
mysql-test/r/alter_table.result sp1f-alter_table.result-20001228015632-hk5kqhiea33uxdjhnqa2vnagoypjqbi3
mysql-test/r/analyse.result sp1f-analyse.result-20001228015632-2j2wtzdyfq62m65gl6nxekuosny6gy6v
mysql-test/r/archive.result sp1f-archive.result-20040525194738-teb7vr2fyyav2vmvw55tdwgvu3h65flc
mysql-test/r/bug46080.result bug46080.result-20090710115544-bi718vttwzhdrezd-3
mysql-test/r/create.result sp1f-create.result-20001228015633-uy7n6oztnd6vmqcrw6z5tloij5yxv4ov
mysql-test/r/ctype_ldml.result sp1f-ctype_ldml.result-20070607125553-fkqnsdgkmmqoecb76tjv3wzmyqfaik22
mysql-test/r/delete.result sp1f-delete.result-20010928050551-vf5sxtd554vuepifylwowaaq7k3mbilw
mysql-test/r/distinct.result sp1f-distinct.result-20001228015633-adu7puhxwf4tiwor5amegcrjobuxljra
mysql-test/r/explain.result sp1f-explain.result-20001228015633-fcck4ixyixae4yjfpahxubumufcrdc7p
mysql-test/r/func_group.result sp1f-func_group.result-20001228015633-oe57bieiww3s6erojiyha7p26m5ul5ql
mysql-test/r/func_in.result sp1f-func_in.result-20001228015633-taucsvp7ggm45m64jbcfu6nyfgdhosnc
mysql-test/r/func_str.result sp1f-strfunc.result-20001215085543-qraqxeite2ybbq4se6ojb2lwaxem3br3
mysql-test/r/gis-rtree.result sp1f-gisrtree.result-20030312125159-uqk53j6wi5kgqzfuaned6oxulziutwoz
mysql-test/r/gis.result sp1f-gis.result-20030301091631-7oyzcwsw4xnrr5tisytvtyymj3p6lvak
mysql-test/r/grant.result sp1f-grant.result-20020905131705-2gfwpyej777fcllxzcvadzd6tqdxfho3
mysql-test/r/grant3.result sp1f-grant3.result-20050322110338-ewbo53qs6fkxfzkc7u2ojzyu6bvyp7w6
mysql-test/r/group_min_max.result sp1f-group_min_max.result-20040827133611-aqzadxttbw23mkanmvdsiaambv2pcy27
mysql-test/r/information_schema_db.result sp1f-information_schema_d-20050506190605-i2emmavt52skkx7n6b5jklprebhrdrxo
mysql-test/r/innodb-autoinc.result innodbautoinc.result-20081201061010-zymrrwrczns2vrex-280
mysql-test/r/innodb_mysql.result sp1f-innodb_mysql.result-20060426055153-bychbbfnqtvmvrwccwhn24i6yi46uqjv
mysql-test/r/insert_select.result sp1f-insert_select.result-20001228015633-wih3pifcw5hofocy6banrbkyhtfy6prn
mysql-test/r/join.result sp1f-join.result-20001228015633-f4navd6fbbzksvhaaqulo5ihgevkjty2
mysql-test/r/lowercase_fs_off.result sp1f-lowercase_fs_off.res-20060504065503-e5mqzuzzst4qdncn4przr2qqszyfdhf4
mysql-test/r/lowercase_table3.result sp1f-lowercase_table3.res-20040306084333-bdleyleqjz73g4ocjm43zmbf6zkjsipm
mysql-test/r/myisam.result sp1f-myisam.result-20010411215653-pgxkk2xg4lh3nxresmfnsuszf5h3nont
mysql-test/r/myisam_crash_before_flush_keys.result myisam_crash_before_-20090402094502-ekp4zzeucx0vftta-1
mysql-test/r/mysqlbinlog.result sp1f-mysqlbinlog.result-20030924192555-7477cirsvcmvihphlv4wbcvd5dfoh3bm
mysql-test/r/mysqltest.result sp1f-mysqltest.result-20041022024801-dfor5httbrm4yhbhqtfjzpkst5hoejym
mysql-test/r/olap.result sp1f-olap.result-20020720115150-egx2d46xkyxi5dgcpyjexyj4ri6wlcvb
mysql-test/r/order_by.result sp1f-order_by.result-20001228015634-omkoitbok7pbz53pkfmplnhbifnrebic
mysql-test/r/partition.result sp1f-partition.result-20050718113029-xlmjyugiq5h2b5wjp236ipsmkmej7i62
mysql-test/r/partition_csv.result sp1f-partition_csv.result-20071022181049-b7rjlf3ifzxbwhry54tng7jif24fuapa
mysql-test/r/partition_innodb.result sp1f-partition_innodb.res-20060518171642-5muwpwnvtxepgop4yhgzzrv2xo2wjlps
mysql-test/r/partition_pruning.result sp1f-partition_pruning.re-20051222092851-tdvef3tnyhio2fj4ktnbr4ienfg7k5qr
mysql-test/r/ps_grant.result sp1f-ps_grant.result-20050330011743-myy3zlxbj2yg7thj2vovrm2sszh6yzas
mysql-test/r/query_cache.result sp1f-query_cache.result-20011205230530-qf3qzwsqsgfi67vv5ijruxeci6cbkwjl
mysql-test/r/range.result sp1f-range.result-20001228015634-6hpoyn74lnc7irf4gop2jbowgpazbbae
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/sp-error.result sp1f-sperror.result-20030305184512-euxcpn3oxmcl4dn2kqbdx73ljcbivzto
mysql-test/r/sp.result sp1f-sp.result-20030117133802-duandg3yzagzyv7zhhbbt2kcomcegpc7
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/subselect3.result sp1f-subselect3.result-20061031174245-v7hvtc7uwevifiq4lziwv5gdcxpeak7t
mysql-test/r/system_mysql_db.result sp1f-system_mysql_db.resu-20040310185404-f7br5g4442iqwxireltudlyu5ppbkijo
mysql-test/r/trigger_notembedded.result sp1f-triggergrant.result-20051110192455-2zus7d4a7l2y7ldnokefkk6ibykyn46y
mysql-test/r/type_bit.result sp1f-type_bit.result-20041217140559-ppf6bkjkl3r4tbmlt7ngn46zm6tapa46
mysql-test/r/type_newdecimal.result sp1f-type_newdecimal.resu-20050208224936-kj6dxol5i7zbbfohybib53ffje5i63mk
mysql-test/r/udf.result sp1f-udf.result-20060215161120-pm5l3nyny5gbznc2egfu4bhwgxbuc6wz
mysql-test/r/update.result sp1f-update.result-20001228015634-eddqlilwpyd255hhzq2fnktefhhgzua5
mysql-test/r/upgrade.result sp1f-upgrade.result-20060217091846-vefhbvl6q255bcptbelqp7boemlf7jyp
mysql-test/r/view_grant.result sp1f-view_grant.result-20050404194355-hbbr5ud3thpo5tn65q6eyecswq5mdhwk
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/r/windows.result sp1f-windows.result-20050901013212-d5xc5u66d6z25c2hig2xgc2zjyazfh6i
mysql-test/r/xa.result sp1f-xa.result-20050403224953-ks6zlldv2mxqgh4edidq7sdrlmj7ko4l
mysql-test/std_data/Index.xml sp1f-index.xml-20070607125553-3iauribiu2zgziawdyrtrdxne2gs5o2y
mysql-test/suite/binlog/r/binlog_killed_simulate.result sp1f-binlog_killed_simula-20071031094843-hn7c5gekip7rxgka7cic7saaqoy6afkn
mysql-test/suite/binlog/r/binlog_row_binlog.result sp1f-binlog_row_binlog.re-20051222053451-vl3rsa7i5wuxj6pjofa7aylzersn25i6
mysql-test/suite/binlog/r/binlog_row_drop_tmp_tbl.result sp1f-binlog_row_drop_tmp_-20051222053451-bsaj7qioh5jt4woxo36t7i6tvuqwdny3
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result sp1f-binlog_row_mix_innod-20051222053451-e65hkpwkx65zhmyddgnozkwk6mudqlhi
mysql-test/suite/binlog/r/binlog_stm_binlog.result sp1f-binlog.result-20050223135507-y6mkcjto5zdkpgaevaqo5epoafa3yiq5
mysql-test/suite/binlog/r/binlog_stm_blackhole.result sp1f-blackhole.result-20050323001036-qq4xfb3k4omfzzjj3to67lnds6i7m6zw
mysql-test/suite/binlog/r/binlog_stm_drop_tmp_tbl.result sp1f-drop_temp_table.resu-20030928163144-txtshow2e37lpjddhpazuhs4eulbw2dd
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result sp1f-mix_innodb_myisam_bi-20030822133916-l72xhg2oxjthj6ichxowk55lrbjebfxa
mysql-test/suite/binlog/t/binlog_row_mysqlbinlog_db_filter.test binlog_row_mysqlbinl-20090527141831-4bqcdit6efzx76qm-1
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test binlog_stm_unsafe_wa-20090627130655-dgww8l4zomxa6h9l-3
mysql-test/suite/federated/my.cnf sp1f-my.cnf-20071212171904-j7gg67dkfqjo4f5yirx3nscdzpxieqyv
mysql-test/suite/funcs_1/r/is_columns_mysql.result sp1f-is_columns_mysql.res-20080307163304-a2ymkif2vzliwqqqzr22cglbaf75tthe
mysql-test/suite/funcs_1/r/is_statistics.result sp1f-is_statistics.result-20080307163304-m5utnb3asmvn24qpbivqzlypbjibrtqv
mysql-test/suite/innodb/r/innodb-zip.result innodbzip.result-20090610132748-q9m60aph2eqy8zr6-14
mysql-test/suite/innodb/r/innodb_file_format.result innodb_file_format.r-20090730123212-ozvn639s8f71467w-1
mysql-test/suite/innodb/t/innodb-zip.test innodbzip.test-20090610132748-q9m60aph2eqy8zr6-28
mysql-test/suite/innodb/t/innodb_file_format.test innodb_file_format.t-20090730123218-e1mr6rq2zau4lsif-1
mysql-test/suite/innodb/t/innodb_information_schema.test innodb_information_s-20090610132748-q9m60aph2eqy8zr6-35
mysql-test/suite/parts/inc/partition_auto_increment.inc partition_auto_incre-20080902080504-smrqvl9x3yj3y30u-1
mysql-test/suite/parts/r/partition_auto_increment_innodb.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-1
mysql-test/suite/parts/r/partition_auto_increment_maria.result partition_auto_incre-20081121141947-lh5ecnr2v4dkwli4-3
mysql-test/suite/parts/r/partition_auto_increment_memory.result partition_auto_incre-20080902130257-psqogw2uun5wtb8c-1
mysql-test/suite/parts/r/partition_auto_increment_myisam.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-2
mysql-test/suite/parts/r/partition_auto_increment_ndb.result partition_auto_incre-20080902130251-otbifbb7638h2boy-3
mysql-test/suite/parts/r/partition_recover_myisam.result partition_repair_myi-20080609121315-mjya2e9ekn7bunzm-3
mysql-test/suite/parts/t/partition_auto_increment_archive.test partition_auto_incre-20080902130246-2kpijvsifmpe2sjo-1
mysql-test/suite/parts/t/partition_auto_increment_blackhole.test partition_auto_incre-20080902130246-2kpijvsifmpe2sjo-2
mysql-test/suite/parts/t/partition_recover_myisam.test partition_repair_myi-20080609121315-mjya2e9ekn7bunzm-2
mysql-test/suite/rpl/r/rpl_auto_increment.result sp1f-rpl_auto_increment.r-20040915191013-ch23iwok7bzpqd7wtcsf4m6mt4txcr3o
mysql-test/suite/rpl/r/rpl_bug33931.result sp1f-rpl_bug33931.result-20080213120940-oicizd2vl3efcyhgeza6sjfbgw5j6ack
mysql-test/suite/rpl/r/rpl_do_grant.result sp1f-rpl_do_grant.result-20030802214618-dy6h6p3wwcdlud4mk6ivfxsgu5celg5t
mysql-test/suite/rpl/r/rpl_extraCol_innodb.result sp1f-rpl_extracol_innodb.-20061103140439-oyaqsdcl3ymjfl5y2wvwjz3cgb36dbj3
mysql-test/suite/rpl/r/rpl_extraCol_myisam.result sp1f-rpl_extracol_myisam.-20061103140439-ipxcnvlavhkichgny6fvkejbdgnvudtd
mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result rpl_get_master_versi-20090714012948-jn3dghe3lx2bda9a-1
mysql-test/suite/rpl/r/rpl_idempotency.result sp1f-rpl_idempotency.resu-20071030201714-gapul4f6owmfen7q2slybdwkvwtonjr4
mysql-test/suite/rpl/r/rpl_init_slave_errors.result rpl_bug38197.result-20090211115331-pkf48eusdtkxwt89-1
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result sp1f-rpl_innodb_mixed_dml-20070206122521-55gg47nv2ebmatncbhfe7ihcle7wzd6n
mysql-test/suite/rpl/r/rpl_loaddata.result sp1f-rpl_loaddata.result-20030114092724-fx5ivt6tn56aiwq4siqhlaxoyw5gha66
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result sp1f-rpl_loaddata_fatal.r-20070609051931-4yb5joctyn3lsurioiijsyz4xb4r2sqj
mysql-test/suite/rpl/r/rpl_loaddata_map.result sp1f-rpl_loaddata_map.res-20071221203440-ccy2zkl5istm7qrpaydhz3lbzt355aie
mysql-test/suite/rpl/r/rpl_loaddatalocal.result sp1f-rpl_loaddatalocal.re-20030228202359-vlyqlboybbakyklqm2lhptrbwruhia2n
mysql-test/suite/rpl/r/rpl_log_pos.result sp1f-rpl000014.result-20001212220135-a5ffppjzfu3hlnpovghh4w3fdmgdmk6c
mysql-test/suite/rpl/r/rpl_packet.result sp1f-rpl_packet.result-20060911211902-zl764nrlzzu3kom3pf3rrm6eltxveylw
mysql-test/suite/rpl/r/rpl_row_create_table.result sp1f-rpl_row_create_table-20051222053452-uud3ktz3erqptqb64rkh7ftoo7bdbf6c
mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result sp1f-rpl_row_sp006_innodb-20051222053454-fadhobwa33eljoqv6iunh46xfx3f4gab
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result rpl_slave_fail_load_-20090317104308-hlm8218eqojabbnb-1
mysql-test/suite/rpl/r/rpl_stm_log.result sp1f-rpl_log.result-20010621191923-r3yiuhrqrbautxnc66pw6bzlo6qp7sds
mysql-test/suite/rpl/t/disabled.def sp1f-disabled.def-20070627122758-vdqevwzhnizicdrxrmfy4w4afgprx46x
mysql-test/suite/rpl/t/rpl_bug33931.test sp1f-rpl_bug33931.test-20080213120940-zrvpqfftvysveivghh37d77gupwv6ryc
mysql-test/suite/rpl/t/rpl_do_grant.test sp1f-rpl_do_grant.test-20030802214619-wincvjltx3w7wntnmnquss36fcszy2wa
mysql-test/suite/rpl/t/rpl_drop_temp.test sp1f-rpl_drop_temp.test-20050214224649-nglnrerjic7a76wtis7mlhcr3nzxcioi
mysql-test/suite/rpl/t/rpl_err_ignoredtable.test sp1f-rpl_error_ignored_ta-20030708095933-nrriw3pbfsfrugbgvjpriczjb3dwm4mn
mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test rpl_get_master_versi-20090714012921-gi0n2a3z1he17ht5-1
mysql-test/suite/rpl/t/rpl_idempotency.test sp1f-rpl_idempotency.test-20071030201714-dbiujbc2tp25eunlqd4msz66kri542ju
mysql-test/suite/rpl/t/rpl_init_slave_errors.test rpl_bug38197.test-20090211115331-pkf48eusdtkxwt89-2
mysql-test/suite/rpl/t/rpl_loaddatalocal.test sp1f-rpl_loaddatalocal.te-20030228202359-thkinry6nfontmohwt4ppxanoj2g2yfd
mysql-test/suite/rpl/t/rpl_log_pos.test sp1f-rpl000014.test-20001212220135-bejuuiqndvmgqdoni6j4db7qxhci65dg
mysql-test/suite/rpl/t/rpl_packet.test sp1f-rpl_packet.test-20060911211902-zxv62juvripcfcrseay32yorn6veiwfl
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test rpl_slave_fail_load_-20090316155115-ydeyw4dljkuo6vf5-1
mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result sp1f-rpl_ndb_circular_sim-20070412065801-k2ky5wpm6vtdcj53bacwmwxhhj4ofcy2
mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result sp1f-rpl_ndb_extracol.res-20061103140449-ucihyswq7mtsamyjm2whggyjxyfekxeo
mysql-test/suite/rpl_ndb/r/rpl_ndb_sp006.result sp1f-rpl_ndb_sp006.result-20060209212318-oue4xsmivduntdk47fzqt36ws5bbmhmq
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test sp1f-rpl_ndb_circular.tes-20070412141346-av6rslz2h32ovpuk3ppyehbg7dbsgcu4
mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test sp1f-rpl_ndb_circular_sim-20070412065801-khbc7ydsapuk7454j2xfa54untsyzox5
mysql-test/t/almost_full.test sp1f-almost_full.test-20071112090021-ehngu75n2rqd6mngclfwfoxrj6ipxofo
mysql-test/t/alter_table.test sp1f-alter_table.test-20001228015635-ibytgjjpm4y57rzxqoascmr2hqujnjge
mysql-test/t/analyse.test sp1f-analyse.test-20001228015635-x364ynbakdxnjmftcf6js527huqaoipj
mysql-test/t/archive.test sp1f-archive.test-20040525194738-qla5yawytktcj3tlbgrlhvf3thbo6ghq
mysql-test/t/bug46080.test bug46080.test-20090710115544-bi718vttwzhdrezd-1
mysql-test/t/create.test sp1f-create.test-20001228015635-grq5cruh7q3juapcegeza6mshjkzsxzo
mysql-test/t/ctype_ldml.test sp1f-ctype_ldml.test-20070607125553-mqkp3r7v2bep7crb3ooj7q5qxx7m2257
mysql-test/t/delete.test sp1f-delete.test-20001228015635-7lhk263y3s3wild7htgoaesssx5wdy4s
mysql-test/t/disabled.def sp1f-disabled.def-20050315184020-inpdp4hiogithilv62snllppjz2dcing
mysql-test/t/distinct.test sp1f-distinct.test-20001228015635-qewnmgwdqesya4ppb2fbev4mxjvlme2f
mysql-test/t/explain.test sp1f-explain.test-20001228015635-wk7l25cmz54vfufovxkip3auyxz2s36e
mysql-test/t/flush_read_lock_kill.test sp1f-flush_read_lock_kill-20041202220229-cx7dgk5hubrznmauw6vq6lnvahvcwew5
mysql-test/t/func_group.test sp1f-func_group.test-20001228015635-wkz277djccbddkitm63hibutxp7o4rb7
mysql-test/t/func_in.test sp1f-func_in.test-20001228015635-dykb2qebuowolk7cf6gpa4brezc4m5gk
mysql-test/t/func_str.test sp1f-strfunc.test-20001215085543-mqigcxue3chlbvewleghlo7v5ob5x6vj
mysql-test/t/gis-rtree.test sp1f-gisrtree.test-20030312125159-kg66qt2bmrgz7yscu55gymo7pqha5ra2
mysql-test/t/gis.test sp1f-gis.test-20030301091631-6xbsjkakono4hhavzhol5dhxlmcms4pj
mysql-test/t/grant3.test sp1f-grant3.test-20050322110327-afyko7s7c6kg2wqmwekxz7stzflyxe2s
mysql-test/t/information_schema_db.test sp1f-information_schema_d-20050506190606-kvrvmvgttlnqukdm6gfrtdntjs4tfjrm
mysql-test/t/innodb-autoinc.test innodbautoinc.test-20081201061010-zymrrwrczns2vrex-281
mysql-test/t/innodb_bug39438.test innodb_bug39438.test-20081214202842-57uir9gc3v9g1pge-3
mysql-test/t/innodb_mysql.test sp1f-innodb_mysql.test-20060816102624-6ymo37d3nyhvbqyzqn5ohsfuydwo426k
mysql-test/t/insert_select.test sp1f-insert_select.test-20001228015636-zjrqdr7pnvxymgj7brilmnuk2ywuj5u4
mysql-test/t/join.test sp1f-join.test-20001228015636-punt3oq3irbqswtbrlkelkxape6lttnl
mysql-test/t/kill.test sp1f-kill.test-20010314060712-batcuefxmzrvmgnamk2ljdbhvztus52g
mysql-test/t/lowercase_fs_off.test sp1f-lowercase_fs_off.tes-20060504065504-i6dehorpaxhrhthhkdl7ioqcnzsktaqa
mysql-test/t/lowercase_table3.test sp1f-lowercase_table3.tes-20040306084333-hnvnsyhtqiysn2fmfz3zkqfjy3mivo4d
mysql-test/t/myisam-system.test sp1f-myisamsystem.test-20060503125913-ozpyqynhhwo5iiwxdgyt7iljauvr2obd
mysql-test/t/myisam.test sp1f-myisam.test-20010411215653-cdmhjqbeu3xtipkauwbbirystludnac3
mysql-test/t/myisam_crash_before_flush_keys.test myisam_crash_before_-20090402094436-q8pxw24lav2lpjzk-1
mysql-test/t/mysqlbinlog.test sp1f-mysqlbinlog.test-20030924192555-wsghaldjdiuxo36sss7fu2urp47axjk7
mysql-test/t/mysqltest.test sp1f-mysqltest.test-20041022024800-v3hvkzs4236l6rpunai7xttdltot7rvz
mysql-test/t/named_pipe.test sp1f-named_pipe.test-20070924104241-daakp7etk2k4hxuzofbxrgkdkzcwmw2a
mysql-test/t/not_partition.test sp1f-not_partition.test-20061026171106-weuf2mmixpkzlidd3r3j4yme2whe35rj
mysql-test/t/olap.test sp1f-olap.test-20020720115151-u3y5qjyyz4c7hufu5vftj74rijkr7rf2
mysql-test/t/order_by.test sp1f-order_by.test-20001228015636-nr7aml75ra7mdlruhoqo5dgbfv5tcesc
mysql-test/t/partition.test sp1f-partition.test-20050718113034-pbo3ht3bf4gfa3mz44on3sqafyctwo35
mysql-test/t/partition_csv.test sp1f-partition_csv.test-20071022181049-u2nodruhqzkicgs2isvjxv5xfkj3q5hc
mysql-test/t/partition_innodb.test sp1f-partition_innodb.tes-20060518171642-twfw23mpackjkfvorfvay4dhvjxhtbfm
mysql-test/t/plugin.test sp1f-plugin.test-20061214230953-rdqkovjzpupoeypjzzvefseahkmrdz4f
mysql-test/t/plugin_load.test sp1f-plugin_load.test-20080126000459-32quuvob6bm45mqub6nydrb66zhyumvz
mysql-test/t/ps_not_windows.test sp1f-ps_not_windows.test-20061117214908-5zcao5tiy3glx2i3aqg2sn4koijafp6u
mysql-test/t/query_cache.test sp1f-query_cache.test-20011205230530-yfwho76ujeasygr3magwlmssnvwsukio
mysql-test/t/range.test sp1f-range.test-20001228015636-xfak6bsaw5p3ek36np7bznadjb3boh2q
mysql-test/t/select.test sp1f-select.test-20010103001548-tbl2ff7qehzh43qnsmf4ejhjqe66f46n
mysql-test/t/sp-error.test sp1f-sperror.test-20030305184512-aipdocqcicc6rgsz672mr32qowtm5ceb
mysql-test/t/sp.test sp1f-sp.test-20030117133803-b6pcfv2yscbqkur5fszep7acmdg7nf5k
mysql-test/t/subselect.test sp1f-subselect.test-20020512204640-lyqrayx6uwsn7zih6y7kerkenuitzbvr
mysql-test/t/subselect3.test sp1f-subselect3.test-20061031174245-pcxt5ljylerxhx2jkfhrbqfv5vqcazlz
mysql-test/t/type_bit.test sp1f-type_bit.test-20041217140559-tzpygypzmjyjiukpq75swmn6zq4ytqe4
mysql-test/t/type_newdecimal.test sp1f-type_newdecimal.test-20050208224936-e244l5ugrk3oditjqp53n6izptkrteq2
mysql-test/t/udf.test sp1f-udf.test-20060215161120-inrv7ph3327gnzcvcqk25vmihneybyhk
mysql-test/t/update.test sp1f-update.test-20001228015637-63zlejfzul4bql7vagkgrfew3bn7qdhq
mysql-test/t/upgrade.test sp1f-upgrade.test-20060217091845-b2j6eahffx256stwqu5aki5p55sq2bz3
mysql-test/t/view_grant.test sp1f-view_grant.test-20050404194355-y5ik7soywcms7xriyzo72dooviahc7cx
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
mysql-test/t/windows.test sp1f-windows.test-20050901013213-brlrkwlhdfgrngb2t563kyzyenq6gls2
mysql-test/t/xa.test sp1f-xa.test-20050403224954-lwrpyxgzlsnvmlzqdkoeuxg62yhkyecp
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
mysys/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-shgpjtu5x7rmyswxjiriviagwnm5kvpd
mysys/Makefile.am sp1f-makefile.am-19700101030959-36zaboyabq4ooqfc2jpion3pic7yhpgb
mysys/hash.c sp1f-hash.c-19700101030959-ny373x26eb7225kqbdbb7l23bjwr6pun
mysys/mf_keycache.c sp1f-mf_keycache.c-19700101030959-wtigyxt4n6zscc6ezr56wziqguyc5bds
mysys/my_copy.c sp1f-my_copy.c-19700101030959-jt6k3uijhnzawhndg4d4ocqbucojvwve
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
mysys/my_largepage.c sp1f-my_largepage.c-20041214192504-4n2x3wmc6b43qlmnfmpmjlxvtke7lrcz
mysys/my_static.c sp1f-my_static.c-19700101030959-vmmfiyygpz2awmm7d3pguy4rsuugbhcs
mysys/my_thr_init.c sp1f-my_thr_init.c-19700101030959-siwg2eavxsdwdc4kkmwxvs42rp6ntkrm
mysys/my_wincond.c sp1f-my_wincond.c-19700101030959-qdv7yylq5t4imwxjnjub6dyqcq3wqwow
mysys/thr_lock.c sp1f-thr_lock.c-19700101030959-igvxgo25qd7i2moc4pgo5eoth3xp34mh
mysys/typelib.c sp1f-typelib.c-19700101030959-yks6u7xso4ru4dpd6v7uq7ynmxg6wsgt
regex/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-6kmn7fqqj7jzzviead26v47chae5xab3
scripts/make_win_bin_dist sp1f-make_win_bin_dist-20060901123056-xnusgszvkfrrcxkqidb7zszax2ezpyto
scripts/mysql_system_tables.sql sp1f-mysql_system_tables.-20070226104923-4n5a67fuifobcyhhicfbacpsv5npohgv
scripts/mysql_system_tables_fix.sql sp1f-mysql_fix_privilege_-20030604152848-cz6lnrig5srcrvkt7d5m35bk3wsz4bdc
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
sql-common/my_time.c sp1f-my_time.c-20040624160839-c5ljhxyjpi5czybdscnldwjexwdyx3o6
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/field.cc sp1f-field.cc-19700101030959-f4imaofclsea3n4fj4ow5m7havmyxa2r
sql/field.h sp1f-field.h-19700101030959-3n6smzxcwkjl7bikm3wg4hfkjn66uvvp
sql/ha_ndbcluster.cc sp1f-ha_ndbcluster.cc-20040414175836-rvqnoxrkqexyhfu3d62s4t345ip7rez2
sql/ha_ndbcluster_binlog.cc sp1f-ha_ndbcluster_binlog-20060112185048-3hthowbxyrrly3srxavlrufjf5mmgqm6
sql/ha_partition.cc sp1f-ha_partition.cc-20050718113037-eoky4qluumb5dmdyg5z6n2fvdkgutxms
sql/ha_partition.h sp1f-ha_partition.h-20050718113038-4xxwqkuu2xgxqtrwfbc43zgfyfcwzjsq
sql/handler.cc sp1f-handler.cc-19700101030959-ta6zfrlbxzucylciyro3musjsdpocrdh
sql/handler.h sp1f-handler.h-19700101030959-mumq2hpilkpgxuf22ftyv5kbilysnzvn
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/item_func.cc sp1f-item_func.cc-19700101030959-3wmsx76yvc25sroqpfrx2n77kqdxxn3y
sql/item_func.h sp1f-item_func.h-19700101030959-fbjcbwkg66qubbzptqwh5w5evhnpukze
sql/item_geofunc.cc sp1f-item_geofunc.cc-20030530102226-vdbf2bd6tpkrzoy6q2wdibkzd3bkv2io
sql/item_strfunc.cc sp1f-item_strfunc.cc-19700101030959-yl2pwnrngmla3nmlgiuiwrztx3iu4ffl
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_timefunc.cc sp1f-item_timefunc.cc-19700101030959-rvvlgmw5b4ewpuuxuntrkiqimyrr5sw2
sql/item_xmlfunc.cc sp1f-item_xmlfunc.cc-20051221130500-wo5dgojvjjm6mmra7fay3ri7ud5ow3yl
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/log_event.cc sp1f-log_event.cc-19700101030959-msmqlflsngxosswid2hpzxly5vfqdddc
sql/log_event.h sp1f-log_event.h-19700101030959-clq6ett55tcqbpys2i4cpfrdccq7j4om
sql/log_event_old.cc sp1f-log_event_old.cc-20070412135046-uu5xq4cnpwslzif6fbmj3g65x4vdkzxu
sql/my_decimal.h sp1f-my_decimal.h-20050208224937-z6shzy3pf5uyso4mvtc2f6pckjzfeg5f
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/opt_range.cc sp1f-opt_range.cc-19700101030959-afe3wtevb7zwrg4xyibt35uamov5r7ds
sql/opt_sum.cc sp1f-opt_sum.cc-19700101030959-ygmsylwaxwx3wf77i2nv2hdupycvexro
sql/partition_info.cc sp1f-partition_info.cpp-20060216163637-eco35bnz46tcywduzmpjofzudmzlgyog
sql/records.cc sp1f-records.cc-19700101030959-xg6elqzdqhvrmobazxrjajmiyqxf7lx7
sql/repl_failsafe.cc sp1f-repl_failsafe.cc-20011010025623-k7zhoyc3smc7tbliyp7vaf3f4idq22so
sql/rpl_filter.cc sp1f-table_filter.cc-20050308201116-4anzb26smj76r56ihkpxzbtnzlzatr2k
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/slave.h sp1f-slave.h-20001111215010-k3xq56z2cul6s766om7zrdsnlwdc23y5
sql/sp.cc sp1f-sp.cc-20021212121421-6xwuvxq5bku2b4yv655kp2e5gsvautd5
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/sql_acl.cc sp1f-sql_acl.cc-19700101030959-c4hku3uqxzujthqnndeprbrhamqy6a4i
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_binlog.cc sp1f-sql_binlog.cc-20051222053449-o6vkdfrjkuledkjdwz2jx3zykz4izfsz
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_db.cc sp1f-sql_db.cc-19700101030959-hyw6zjuisjyda5cj5746a2zzuzz5yibr
sql/sql_delete.cc sp1f-sql_delete.cc-19700101030959-ch2a6r6ushvc2vfwxt7ehcjuplelwthr
sql/sql_handler.cc sp1f-sql_handler.cc-20010406221833-l4tsiortoyipmoyajcoz2tcdppvyeltl
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_load.cc sp1f-sql_load.cc-19700101030959-hoqlay5we4yslrw23xqedulkejw6a3o5
sql/sql_locale.cc sp1f-sql_locale.cc-20060704124016-q5yfdbfinszhklmgyjf4kmnepgd4biai
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_partition.cc sp1f-sql_partition.cc-20050718113038-57h5bzswps6cel2y7k7qideue3ghbg3u
sql/sql_plugin.cc sp1f-sql_plugin.cc-20051105112032-hrm64p6xfjq33ud6zy3uivpo7azm75a2
sql/sql_prepare.cc sp1f-sql_prepare.cc-20020612210720-gtqjjiu7vpmfxb5xct2qke7urmqcabli
sql/sql_rename.cc sp1f-sql_rename.cc-20000821000147-ltbepgfv52umnrkaxzycedl5p2tlr3fp
sql/sql_repl.cc sp1f-sql_repl.cc-20001002032713-xqbns5ofqsaebhgi2ypcfn7nhz7nh5rp
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/sql_table.cc sp1f-sql_table.cc-19700101030959-tzdkvgigezpuaxnldqh3fx2h7h2ggslu
sql/sql_tablespace.cc sp1f-sql_tablespace.cc-20060111103519-oyr2sz233kphdr5xpru4mqwtac2mt4uf
sql/sql_trigger.cc sp1f-sql_trigger.cc-20040907122911-35k3wamrp6g7qsupxe7hisftpobcwin5
sql/sql_udf.cc sp1f-sql_udf.cc-19700101030959-tk7ysmv4dpwkfhtdovfbqe5i6uvq67ft
sql/sql_update.cc sp1f-sql_update.cc-19700101030959-edlgskfuer2ylczbw2znrr5gzfefiyw7
sql/sql_view.cc sp1f-sql_view.cc-20040715221517-nw4p4mja6nzzlvwwhzfgfqb4umxqobe4
sql/sql_yacc.yy sp1f-sql_yacc.yy-19700101030959-wvn4qyy2drpmge7kaq3dysprbhlrv27j
sql/structs.h sp1f-structs.h-19700101030959-dqulhwijezc2pwv2x4g32qdggnybj2nc
sql/table.cc sp1f-table.cc-19700101030959-nsxtem2adyqzwe6nz4cgrpcmts3o54v7
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
sql/time.cc sp1f-time.cc-19700101030959-vhvl5k35iuojsrxbsg62xysptyi4pc64
sql/udf_example.c sp1f-udf_example.cc-19700101030959-ze6kwdimrvfxkxofoegzwby3qce75brj
sql/unireg.cc sp1f-unireg.cc-19700101030959-6a4wymwak6cmvk25gch56ctjvadrhu3v
storage/archive/ha_archive.cc sp1f-ha_archive.cc-20040521001938-uy57z43drkjeirpjafdzdpvfxruqho4q
storage/blackhole/ha_blackhole.cc sp1f-ha_blackhole.cc-20050323001036-ikllt6ts2equ6w4aru2q3rhdbrn64twz
storage/csv/ha_tina.cc sp1f-ha_tina.cc-20040813035429-5pwcme2ehkkuei6gu6ueo4tfldeeyw7l
storage/federatedx/Makefile.am makefile.am-20091029224633-m824ql737a2j6q5a-9
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
storage/heap/hp_write.c sp1f-hp_write.c-19700101030959-fyft5higet4kliqpr6vywernwiypjfzr
storage/innobase/dict/dict0dict.c sp1f-dict0dict.c-20010217121859-dhmp6wllhccos4vvwyuqz5dmuctjxgmm
storage/innobase/handler/ha_innodb.cc sp1f-ha_innobase.cc-20001205235417-rlet3ei56gdrss673dssnrqgug67lwno
storage/innobase/handler/ha_innodb.h sp1f-ha_innobase.h-20001205235417-hami5r4niirc73bybnkeudrtmaqghhlk
storage/innobase/os/os0proc.c sp1f-os0proc.c-20010217121911-iociah67deec5bczgjf6gr33stj75df2
storage/innobase/row/row0mysql.c sp1f-row0mysql.c-20010217121914-f6pdtzldiainoq3xyil2uwziayos4irm
storage/innodb_plugin/CMakeLists.txt cmakelists.txt-20090527093836-7v4wb2xxka10h4d0-2
storage/innodb_plugin/ChangeLog changelog-20090527093836-7v4wb2xxka10h4d0-4
storage/innodb_plugin/Makefile.am makefile.am-20090527093836-7v4wb2xxka10h4d0-5
storage/innodb_plugin/btr/btr0btr.c btr0btr.c-20090527093836-7v4wb2xxka10h4d0-46
storage/innodb_plugin/btr/btr0sea.c btr0sea.c-20090527093836-7v4wb2xxka10h4d0-49
storage/innodb_plugin/buf/buf0buf.c buf0buf.c-20090527093836-7v4wb2xxka10h4d0-51
storage/innodb_plugin/buf/buf0flu.c buf0flu.c-20090527093836-7v4wb2xxka10h4d0-52
storage/innodb_plugin/buf/buf0lru.c buf0lru.c-20090527093836-7v4wb2xxka10h4d0-53
storage/innodb_plugin/buf/buf0rea.c buf0rea.c-20090527093836-7v4wb2xxka10h4d0-54
storage/innodb_plugin/dict/dict0crea.c dict0crea.c-20090527093836-7v4wb2xxka10h4d0-58
storage/innodb_plugin/dict/dict0dict.c dict0dict.c-20090527093836-7v4wb2xxka10h4d0-59
storage/innodb_plugin/fil/fil0fil.c fil0fil.c-20090527093836-7v4wb2xxka10h4d0-65
storage/innodb_plugin/fsp/fsp0fsp.c fsp0fsp.c-20090527093836-7v4wb2xxka10h4d0-66
storage/innodb_plugin/handler/ha_innodb.cc ha_innodb.cc-20090527093836-7v4wb2xxka10h4d0-72
storage/innodb_plugin/handler/ha_innodb.h ha_innodb.h-20090527093836-7v4wb2xxka10h4d0-73
storage/innodb_plugin/handler/handler0alter.cc handler0alter.cc-20090527093836-7v4wb2xxka10h4d0-74
storage/innodb_plugin/include/buf0buf.h buf0buf.h-20090527093836-7v4wb2xxka10h4d0-92
storage/innodb_plugin/include/buf0buf.ic buf0buf.ic-20090527093836-7v4wb2xxka10h4d0-93
storage/innodb_plugin/include/buf0lru.h buf0lru.h-20090527093836-7v4wb2xxka10h4d0-96
storage/innodb_plugin/include/buf0rea.h buf0rea.h-20090527093836-7v4wb2xxka10h4d0-98
storage/innodb_plugin/include/buf0types.h buf0types.h-20090527093836-7v4wb2xxka10h4d0-99
storage/innodb_plugin/include/dict0crea.h dict0crea.h-20090527093836-7v4wb2xxka10h4d0-108
storage/innodb_plugin/include/dict0dict.h dict0dict.h-20090527093836-7v4wb2xxka10h4d0-110
storage/innodb_plugin/include/dict0mem.h dict0mem.h-20090527093836-7v4wb2xxka10h4d0-114
storage/innodb_plugin/include/fsp0fsp.h fsp0fsp.h-20090527093836-7v4wb2xxka10h4d0-124
storage/innodb_plugin/include/lock0lock.h lock0lock.h-20090527093836-7v4wb2xxka10h4d0-142
storage/innodb_plugin/include/log0log.h log0log.h-20090527093836-7v4wb2xxka10h4d0-147
storage/innodb_plugin/include/log0log.ic log0log.ic-20090527093836-7v4wb2xxka10h4d0-148
storage/innodb_plugin/include/log0recv.h log0recv.h-20090527093836-7v4wb2xxka10h4d0-149
storage/innodb_plugin/include/mtr0mtr.h mtr0mtr.h-20090527093836-7v4wb2xxka10h4d0-161
storage/innodb_plugin/include/os0file.h os0file.h-20090527093836-7v4wb2xxka10h4d0-165
storage/innodb_plugin/include/os0sync.h os0sync.h-20090527093836-7v4wb2xxka10h4d0-168
storage/innodb_plugin/include/page0page.h page0page.h-20090527093836-7v4wb2xxka10h4d0-174
storage/innodb_plugin/include/page0page.ic page0page.ic-20090527093836-7v4wb2xxka10h4d0-175
storage/innodb_plugin/include/page0zip.h page0zip.h-20090527093836-7v4wb2xxka10h4d0-177
storage/innodb_plugin/include/rem0cmp.h rem0cmp.h-20090527093836-7v4wb2xxka10h4d0-193
storage/innodb_plugin/include/rem0rec.ic rem0rec.ic-20090527093836-7v4wb2xxka10h4d0-196
storage/innodb_plugin/include/row0ins.h row0ins.h-20090527093836-7v4wb2xxka10h4d0-200
storage/innodb_plugin/include/row0mysql.h row0mysql.h-20090527093836-7v4wb2xxka10h4d0-203
storage/innodb_plugin/include/srv0srv.h srv0srv.h-20090527093836-7v4wb2xxka10h4d0-223
storage/innodb_plugin/include/trx0rec.h trx0rec.h-20090527093836-7v4wb2xxka10h4d0-238
storage/innodb_plugin/include/trx0rec.ic trx0rec.ic-20090527093836-7v4wb2xxka10h4d0-239
storage/innodb_plugin/include/trx0roll.h trx0roll.h-20090527093836-7v4wb2xxka10h4d0-240
storage/innodb_plugin/include/trx0sys.ic trx0sys.ic-20090527093836-7v4wb2xxka10h4d0-245
storage/innodb_plugin/include/trx0trx.h trx0trx.h-20090527093836-7v4wb2xxka10h4d0-246
storage/innodb_plugin/include/univ.i univ.i-20090527093836-7v4wb2xxka10h4d0-252
storage/innodb_plugin/include/ut0auxconf.h ut0auxconf.h-20090527093836-7v4wb2xxka10h4d0-256
storage/innodb_plugin/include/ut0byte.h ut0byte.h-20090527093836-7v4wb2xxka10h4d0-257
storage/innodb_plugin/include/ut0byte.ic ut0byte.ic-20090527093836-7v4wb2xxka10h4d0-258
storage/innodb_plugin/include/ut0ut.h ut0ut.h-20090527093836-7v4wb2xxka10h4d0-268
storage/innodb_plugin/lock/lock0lock.c lock0lock.c-20090527093836-7v4wb2xxka10h4d0-274
storage/innodb_plugin/log/log0log.c log0log.c-20090527093836-7v4wb2xxka10h4d0-275
storage/innodb_plugin/log/log0recv.c log0recv.c-20090527093836-7v4wb2xxka10h4d0-276
storage/innodb_plugin/mem/mem0mem.c mem0mem.c-20090527093836-7v4wb2xxka10h4d0-279
storage/innodb_plugin/mtr/mtr0mtr.c mtr0mtr.c-20090527093836-7v4wb2xxka10h4d0-282
storage/innodb_plugin/mysql-test/innodb-analyze.test innodbanalyze.test-20090527093836-7v4wb2xxka10h4d0-286
storage/innodb_plugin/mysql-test/innodb-zip.result innodbzip.result-20090527093836-7v4wb2xxka10h4d0-307
storage/innodb_plugin/mysql-test/innodb-zip.test innodbzip.test-20090527093836-7v4wb2xxka10h4d0-308
storage/innodb_plugin/mysql-test/innodb_bug34300.test innodb_bug34300.test-20090527093836-7v4wb2xxka10h4d0-314
storage/innodb_plugin/mysql-test/innodb_bug36169.test innodb_bug36169.test-20090527093836-7v4wb2xxka10h4d0-318
storage/innodb_plugin/mysql-test/innodb_bug36172.test innodb_bug36172.test-20090527093836-7v4wb2xxka10h4d0-320
storage/innodb_plugin/mysql-test/innodb_file_format.result innodb_file_format.r-20090730103340-a7df5hza0ep3xo6j-7
storage/innodb_plugin/mysql-test/innodb_file_format.test innodb_file_format.t-20090730103340-a7df5hza0ep3xo6j-8
storage/innodb_plugin/os/os0file.c os0file.c-20090527093836-7v4wb2xxka10h4d0-338
storage/innodb_plugin/os/os0proc.c os0proc.c-20090527093836-7v4wb2xxka10h4d0-339
storage/innodb_plugin/page/page0cur.c page0cur.c-20090527093836-7v4wb2xxka10h4d0-342
storage/innodb_plugin/page/page0page.c page0page.c-20090527093836-7v4wb2xxka10h4d0-343
storage/innodb_plugin/page/page0zip.c page0zip.c-20090527093836-7v4wb2xxka10h4d0-344
storage/innodb_plugin/plug.in.disabled plug.in-20090527093836-7v4wb2xxka10h4d0-32
storage/innodb_plugin/rem/rem0cmp.c rem0cmp.c-20090527093836-7v4wb2xxka10h4d0-356
storage/innodb_plugin/row/row0ins.c row0ins.c-20090527093836-7v4wb2xxka10h4d0-359
storage/innodb_plugin/row/row0merge.c row0merge.c-20090527093836-7v4wb2xxka10h4d0-360
storage/innodb_plugin/row/row0mysql.c row0mysql.c-20090527093836-7v4wb2xxka10h4d0-361
storage/innodb_plugin/srv/srv0srv.c srv0srv.c-20090527093836-7v4wb2xxka10h4d0-373
storage/innodb_plugin/srv/srv0start.c srv0start.c-20090527093836-7v4wb2xxka10h4d0-374
storage/innodb_plugin/sync/sync0rw.c sync0rw.c-20090527093836-7v4wb2xxka10h4d0-376
storage/innodb_plugin/sync/sync0sync.c sync0sync.c-20090527093836-7v4wb2xxka10h4d0-377
storage/innodb_plugin/thr/thr0loc.c thr0loc.c-20090527093836-7v4wb2xxka10h4d0-378
storage/innodb_plugin/trx/trx0rec.c trx0rec.c-20090527093836-7v4wb2xxka10h4d0-381
storage/innodb_plugin/trx/trx0roll.c trx0roll.c-20090527093836-7v4wb2xxka10h4d0-382
storage/innodb_plugin/trx/trx0trx.c trx0trx.c-20090527093836-7v4wb2xxka10h4d0-385
storage/innodb_plugin/ut/ut0auxconf_atomic_pthread_t_solaris.c ut0auxconf_atomic_pt-20090527093836-7v4wb2xxka10h4d0-389
storage/innodb_plugin/ut/ut0ut.c ut0ut.c-20090527093836-7v4wb2xxka10h4d0-397
storage/maria/ha_maria.cc sp1f-ha_maria.cc-20060411134405-dmngb4v5x5fxlxhff527ud3etiutxuxk
storage/myisam/ha_myisam.cc sp1f-ha_myisam.cc-19700101030959-7xzssylbn7zfz3nupnsw43wws6xlltsu
storage/myisam/mi_check.c sp1f-mi_check.c-19700101030959-yzbhnjgzcmqdyj4zz5codhkkw5eedp6f
storage/myisam/mi_search.c sp1f-mi_search.c-19700101030959-kdl3zf7h3booyy7xyrnnoejouhznu4cs
storage/myisam/mi_write.c sp1f-mi_write.c-19700101030959-l47ss6e3phtvbf4dlpzjkleglspv72ef
storage/myisam/myisamchk.c sp1f-myisamchk.c-19700101030959-hdnrqowbdb3ujo3qgjtzs6lgogwckvgc
storage/myisam/sort.c sp1f-sort.c-19700101030959-n36775hcenftishba6lu6m7qtninzzgb
storage/myisammrg/myrg_open.c sp1f-myrg_open.c-19700101030959-vmszttys66wqrvmecn2q3yr57pnxhjox
storage/mysql_storage_engine.cmake mysql_storage_engine-20090610083740-kj4pwd9fzdgs1ocd-1
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp sp1f-dblqhmain.cpp-20040414082419-5mtvgr6eg47fgddawjjch74crdnaduvi
storage/ndb/src/kernel/blocks/suma/Suma.cpp sp1f-suma.cpp-20040414082421-p4toipzza63cmyzczerf4mdsbvqbwi5r
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/xtradb/dict/dict0dict.c dict0dict.c-20081201061010-zymrrwrczns2vrex-57
storage/xtradb/handler/ha_innodb.cc ha_innodb.cc-20081201061010-zymrrwrczns2vrex-70
storage/xtradb/handler/ha_innodb.h ha_innodb.h-20081201061010-zymrrwrczns2vrex-71
storage/xtradb/handler/handler0alter.cc handler0alter.cc-20081201061010-zymrrwrczns2vrex-72
strings/ctype-simple.c sp1f-ctypesimple.c-20020312173754-2nnl6235owml5myqwzsl3uzlhz72bwho
strings/ctype-uca.c sp1f-ctypeuca.c-20040324121604-kwaskdasqzdrufymlf27j4gl3gwdy5fq
support-files/binary-configure.sh sp1f-binaryconfigure.sh-19700101030959-brbiq3yf2mdlmehb4p77iqvjg535f4fs
tests/mysql_client_test.c sp1f-client_test.c-20020614002636-eqy2zzksgelocknwbbogfuwxfwqy7q5x
unittest/mysys/Makefile.am sp1f-makefile.am-20060404161610-vihzdr4qjuef3o5tlkhxxs3o74qy7bln
vio/vio.c sp1f-vio.c-20010520120430-aw76h22ssarmssof7rplhty5elqiexku
vio/vio_priv.h sp1f-vio_priv.h-20030826235137-5sdl43z73qga2fo4s5g55pqqgyvkhbo7
vio/viosocket.c sp1f-viotcpip.c-20010520120437-u3pbzbt3fdfbclbmusalnzmuqh2y4nav
vio/viosslfactories.c sp1f-viosslfactories.c-20010520120431-walfvbsc6adzg7cj5g6xl3r73ycxspmb
mysql-test/r/innodb_lock_wait_timeout_1.result bug40113.result-20090619150423-w3im08cym6tyzn8f-3
mysql-test/t/innodb_lock_wait_timeout_1.test bug40113.test-20090619150423-w3im08cym6tyzn8f-2
------------------------------------------------------------
revno: 2502.852.1
revision-id: build(a)mysql.com-20091104182209-iui387z35159aoyw
parent: joro(a)sun.com-20091104092152-qz96bzlf2o1japwc
author: hery.ramilison(a)sun.com
committer: MySQL Build Team <build(a)mysql.com>
branch nick: mysql-5.1
timestamp: Wed 2009-11-04 19:22:09 +0100
message:
Raise version number after cloning 5.1.41
modified:
configure.in sp1f-configure.in-19700101030959-mgdpoxtnh2ewmvusvfpkreuhwvffkcjw
------------------------------------------------------------
revno: 2751.2.3
revision-id: antony(a)xiphis.org-20091104114730-o0mva3otafctpr0x
parent: antony(a)xiphis.org-20091104111104-5921mp270x3hh2rz
committer: Antony T Curtis <antony(a)xiphis.org>
branch nick: 5.1-federatedx
timestamp: Wed 2009-11-04 03:47:30 -0800
message:
Add missing sources to cmake build.
modified:
storage/federatedx/CMakeFiles.txt cmakefiles.txt-20091029224633-m824ql737a2j6q5a-11
------------------------------------------------------------
revno: 2751.2.2
revision-id: antony(a)xiphis.org-20091104111104-5921mp270x3hh2rz
parent: monty(a)askmonty.org-20091029230551-u5zeny3u4lmutoiz
committer: Antony T Curtis <antony(a)xiphis.org>
branch nick: 5.1-federatedx
timestamp: Wed 2009-11-04 03:11:04 -0800
message:
fix federated_server test, possible null ptr deref
modified:
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
------------------------------------------------------------
revno: 2751.2.1
revision-id: monty(a)askmonty.org-20091029230551-u5zeny3u4lmutoiz
parent: monty(a)askmonty.org-20091029000456-polv2cg8dp7zauj1
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: mysql-maria
timestamp: Fri 2009-10-30 01:05:51 +0200
message:
Added federatedx storage engine
Fixed compiler warnings
added:
storage/federated/README readme-20091029224507-5872h2r3jre0rm4e-1
storage/federatedx/ federatedx-20091029224633-m824ql737a2j6q5a-1
storage/federatedx/AUTHORS authors-20091029224633-m824ql737a2j6q5a-10
storage/federatedx/CMakeFiles.txt cmakefiles.txt-20091029224633-m824ql737a2j6q5a-11
storage/federatedx/ChangeLog changelog-20091029224734-rn5zpk06uoa5wzwa-1
storage/federatedx/FAQ faq-20091029224633-m824ql737a2j6q5a-12
storage/federatedx/Makefile.am makefile.am-20091029224633-m824ql737a2j6q5a-9
storage/federatedx/README readme-20091029224633-m824ql737a2j6q5a-13
storage/federatedx/README.windows readme.windows-20091029224633-m824ql737a2j6q5a-14
storage/federatedx/TODO todo-20091029224633-m824ql737a2j6q5a-15
storage/federatedx/federatedx_io.cc federatedx_io.cc-20091029224633-m824ql737a2j6q5a-2
storage/federatedx/federatedx_io_mysql.cc federatedx_io_mysql.-20091029224633-m824ql737a2j6q5a-3
storage/federatedx/federatedx_io_null.cc federatedx_io_null.c-20091029224633-m824ql737a2j6q5a-4
storage/federatedx/federatedx_probes.h federatedx_probes.h-20091029224633-m824ql737a2j6q5a-7
storage/federatedx/federatedx_txn.cc federatedx_txn.cc-20091029224633-m824ql737a2j6q5a-5
storage/federatedx/ha_federatedx.cc ha_federatedx.cc-20091029224633-m824ql737a2j6q5a-6
storage/federatedx/ha_federatedx.h ha_federatedx.h-20091029224633-m824ql737a2j6q5a-8
storage/federatedx/plug.in plug.in-20091029224734-rn5zpk06uoa5wzwa-2
renamed:
storage/federated/plug.in => storage/federated/plug.in.disabled sp1f-plug.in-20060819041916-p5uvuyd4fqati3b55alx3ll5m5bbzqso
modified:
client/mysqladmin.cc sp1f-mysqladmin.c-19700101030959-ud6encjcx2oypzvp7ptmojbi3xdos2fs
extra/yassl/taocrypt/src/twofish.cpp sp1f-twofish.cpp-20060406222010-2kl46zuqro6t3ys6enrgmpbqg6xyyj4g
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/suite/federated/disabled.def sp1f-disabled.def-20071212171904-pmuy45bfadht6mm7ig3qvzqc5tfvwfjy
mysql-test/suite/federated/federated.result sp1f-federated.result-20041211200117-zbuxe4bh3vyrane2ehku7szsgbfbhkvd
mysql-test/suite/federated/federated.test sp1f-federated.test-20041211200119-aht6hujozcouca6joz5eaiq55jk6psb5
mysql-test/suite/federated/federated_archive.result sp1f-federated_archive.re-20050902184011-fdphgunjfqerjqxn2kmybo5t6qtsywpf
mysql-test/suite/federated/federated_bug_13118.result sp1f-federated_bug_13118.-20050916231730-ituveqy54ja3aosdri7bj52dslxt3nol
mysql-test/suite/federated/federated_bug_25714.result sp1f-federated_bug_25714.-20070724063540-e7hiz3xpdbtmrtgccwmyx4ypusiamnw6
mysql-test/suite/federated/federated_cleanup.inc sp1f-federated_cleanup.in-20050715234237-umi6dcbw4iddewrgdfttonz62cg7io35
mysql-test/suite/federated/federated_innodb.result sp1f-federated_innodb.res-20070628230258-j3ct5c4hpigdhfrh7e626liiaphklt6h
mysql-test/suite/federated/federated_server.result sp1f-federated_server.res-20061202004729-hi4tlt4wdwlni7gwjyolgiey4bwt4ehp
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
mysql-test/suite/federated/federated_transactions.result sp1f-federated_transactio-20051109135140-4kznh3jucomk4en2jdp4fy57hxbdd3e5
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
Diff too large for email (1771 lines, the limit is 1000).
1
0

[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2786: Fix test suite so that it works when doing configure --without-uca
by noreplyīŧ launchpad.net 27 Dec '09
by noreplyīŧ launchpad.net 27 Dec '09
27 Dec '09
------------------------------------------------------------
revno: 2786
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-5.1
timestamp: Sun 2009-12-27 15:54:41 +0200
message:
Fix test suite so that it works when doing configure --without-uca
Simplify testing of needed characterset
Remove ndb from --with-plugins=max build
mysqlbug now sends email to maria-developers(a)lists.launchpad.net
removed:
mysql-test/r/have_big5.require
mysql-test/r/have_cp1250_ch.require
mysql-test/r/have_cp1251.require
mysql-test/r/have_cp866.require
mysql-test/r/have_cp932.require
mysql-test/r/have_eucjpms.require
mysql-test/r/have_euckr.require
mysql-test/r/have_gb2312.require
mysql-test/r/have_gbk.require
mysql-test/r/have_koi8r.require
mysql-test/r/have_latin2_ch.require
mysql-test/r/have_sjis.require
mysql-test/r/have_tis620.require
mysql-test/r/have_ucs2.require
mysql-test/r/have_ujis.require
mysql-test/r/have_utf8.require
added:
mysql-test/include/have_collation.inc
mysql-test/r/create-uca.result
mysql-test/r/innodb_utf8.result
mysql-test/t/create-uca.test
mysql-test/t/innodb_utf8.test
modified:
client/mysqltest.cc
mysql-test/include/have_big5.inc
mysql-test/include/have_cp1250_ch.inc
mysql-test/include/have_cp1251.inc
mysql-test/include/have_cp866.inc
mysql-test/include/have_cp932.inc
mysql-test/include/have_eucjpms.inc
mysql-test/include/have_euckr.inc
mysql-test/include/have_gb2312.inc
mysql-test/include/have_gbk.inc
mysql-test/include/have_koi8r.inc
mysql-test/include/have_latin2_ch.inc
mysql-test/include/have_sjis.inc
mysql-test/include/have_tis620.inc
mysql-test/include/have_ucs2.inc
mysql-test/include/have_ujis.inc
mysql-test/include/have_utf8.inc
mysql-test/r/create.result
mysql-test/r/innodb.result
mysql-test/suite/rpl/t/rpl_ignore_table.test
mysql-test/t/create.test
mysql-test/t/ctype_utf8.test
mysql-test/t/ddl_i18n_koi8r.test
mysql-test/t/ddl_i18n_utf8.test
mysql-test/t/fulltext.test
mysql-test/t/fulltext2.test
mysql-test/t/innodb.test
mysql-test/t/query_cache_ps_no_prot.test
mysql-test/t/query_cache_ps_ps_prot.test
scripts/mysqlbug.sh
storage/ndb/plug.in
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0

[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2781)
by Michael Widenius 23 Dec '09
by Michael Widenius 23 Dec '09
23 Dec '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20091222135020-aslh0unzz9mrzqjc
2781 Michael Widenius 2009-12-23
Changed tag to RC. It's time.
modified:
configure.in
=== modified file 'configure.in'
--- a/configure.in 2009-12-03 11:34:11 +0000
+++ b/configure.in 2009-12-23 08:32:14 +0000
@@ -15,7 +15,7 @@ AC_CANONICAL_SYSTEM
# MySQL version number.
#
# Note: the following line must be parseable by win/configure.js:GetVersion()
-AM_INIT_AUTOMAKE(mysql, 5.1.41-MariaDB-beta)
+AM_INIT_AUTOMAKE(mysql, 5.1.41-MariaDB-rc)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
1
0

[Maria-developers] bzr commit into Mariadb 5.2, with Maria 2.0:maria/5.2 branch (igor:2742)
by Igor Babaev 22 Dec '09
by Igor Babaev 22 Dec '09
22 Dec '09
#At lp:maria/5.2 based on revid:igor@askmonty.org-20091222151209-8ijjadlltdvmr1dy
2742 Igor Babaev 2009-12-22 [merge]
Merge
removed:
sql/ds_mrr.cc
sql/ds_mrr.h
added:
sql/multi_range_read.cc
sql/multi_range_read.h
sql/opt_index_cond_pushdown.cc
sql/opt_range_mrr.cc
modified:
include/my_handler.h
libmysqld/Makefile.am
mysql-test/include/common-tests.inc
mysql-test/r/ctype_cp1251.result
mysql-test/r/index_merge_myisam.result
mysql-test/r/innodb_mrr.result
mysql-test/r/myisam_mrr.result
mysql-test/t/ctype_cp1251.test
mysql-test/t/innodb_mrr.test
mysql-test/t/myisam_mrr.test
sql/Makefile.am
sql/handler.h
sql/mysql_priv.h
sql/mysqld.cc
sql/opt_range.cc
sql/opt_range.h
sql/set_var.cc
sql/sql_class.h
storage/maria/ha_maria.cc
storage/maria/ha_maria.h
storage/maria/ma_key.c
storage/maria/maria_def.h
storage/myisam/mi_key.c
storage/myisam/mi_rkey.c
storage/myisam/mi_rnext.c
storage/myisam/mi_rnext_same.c
storage/xtradb/handler/ha_innodb.cc
storage/xtradb/include/row0mysql.h
storage/xtradb/row/row0sel.c
=== modified file 'include/my_handler.h'
--- a/include/my_handler.h 2009-12-15 07:16:46 +0000
+++ b/include/my_handler.h 2009-12-22 12:33:21 +0000
@@ -138,11 +138,13 @@ extern void my_handler_error_unregister(
*/
typedef enum icp_result {
- ICP_NO_MATCH,
- ICP_MATCH,
- ICP_OUT_OF_RANGE
+ ICP_ERROR=-1,
+ ICP_NO_MATCH=0,
+ ICP_MATCH=1,
+ ICP_OUT_OF_RANGE=2
} ICP_RESULT;
+
#ifdef __cplusplus
}
#endif
=== modified file 'libmysqld/Makefile.am'
--- a/libmysqld/Makefile.am 2009-12-21 02:26:15 +0000
+++ b/libmysqld/Makefile.am 2009-12-22 12:49:15 +0000
@@ -45,7 +45,7 @@ libmysqlsources = errmsg.c get_password.
noinst_HEADERS = embedded_priv.h emb_qcache.h
-sqlsources = ds_mrr.cc derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
+sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
ha_ndbcluster.cc ha_ndbcluster_cond.cc \
ha_ndbcluster_binlog.cc ha_partition.cc \
handler.cc sql_handler.cc \
@@ -77,7 +77,8 @@ sqlsources = ds_mrr.cc derror.cc field.c
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
sql_tablespace.cc \
rpl_injector.cc my_user.c partition_info.cc \
- sql_servers.cc event_parse_data.cc opt_table_elimination.cc
+ sql_servers.cc event_parse_data.cc opt_table_elimination.cc \
+ multi_range_read.cc opt_index_cond_pushdown.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources)
nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources)
=== modified file 'mysql-test/include/common-tests.inc'
--- a/mysql-test/include/common-tests.inc 2006-06-09 07:23:59 +0000
+++ b/mysql-test/include/common-tests.inc 2009-12-22 12:33:21 +0000
@@ -1332,7 +1332,7 @@ explain select fld1 from t2 where fld1=2
# Search with a key with LIKE constant
# If the like starts with a certain letter key will be used.
#
-
+--sorted_result
select fld1,fld3 from t2 where companynr = 37 and fld3 like 'f%';
select fld3 from t2 where fld3 like "L%" and fld3 = "ok";
select fld3 from t2 where (fld3 like "C%" and fld3 = "Chantilly");
=== modified file 'mysql-test/r/ctype_cp1251.result'
--- a/mysql-test/r/ctype_cp1251.result 2009-12-15 07:16:46 +0000
+++ b/mysql-test/r/ctype_cp1251.result 2009-12-22 12:33:21 +0000
@@ -65,8 +65,8 @@ insert into t1 (a) values ('air'),
('tn_fakira'),('vw_silvia'),('vw_starshi'),('vw_geo'),('vw_b0x1');
select * from t1 where a like 'we_%';
a b
-we_toshko NULL
-we_ivo NULL
we_iliyan NULL
+we_ivo NULL
we_martin NULL
+we_toshko NULL
drop table t1;
=== modified file 'mysql-test/r/index_merge_myisam.result'
--- a/mysql-test/r/index_merge_myisam.result 2009-12-21 02:26:15 +0000
+++ b/mysql-test/r/index_merge_myisam.result 2009-12-22 12:49:15 +0000
@@ -1419,19 +1419,19 @@ drop table t1;
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
set optimizer_switch='index_merge=off,index_merge_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
set optimizer_switch='index_merge_union=on';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
set optimizer_switch='default,index_merge_sort_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_condition_pushdown=on
set optimizer_switch=4;
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of '4'
set optimizer_switch=NULL;
@@ -1458,21 +1458,21 @@ set optimizer_switch=default;
set optimizer_switch='index_merge=off,index_merge_union=off,default';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
set optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
set @@global.optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
#
# Check index_merge's @@optimizer_switch flags
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, b int, c int, filler char(100),
@@ -1582,5 +1582,5 @@ id select_type table type possible_keys
set optimizer_switch=default;
show variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
drop table t0, t1;
=== modified file 'mysql-test/r/innodb_mrr.result'
--- a/mysql-test/r/innodb_mrr.result 2009-12-19 19:54:54 +0000
+++ b/mysql-test/r/innodb_mrr.result 2009-12-22 12:33:21 +0000
@@ -292,10 +292,10 @@ NULL 9 0
NULL 9 0
drop table t1, t2;
set storage_engine= @save_storage_engine;
-set @read_rnd_buffer_size_save= @@read_rnd_buffer_size;
-set read_rnd_buffer_size=64;
+set @mrr_buffer_size_save= @@mrr_buffer_size;
+set mrr_buffer_size=64;
Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '64'
+Warning 1292 Truncated incorrect mrr_buffer_size value: '64'
create table t1(a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t2(a char(8), b char(8), c char(8), filler char(100), key(a,b,c) ) engine=InnoDB;
@@ -318,10 +318,10 @@ filler char(10), key(d), primary key (a,
insert into t2 select A.a, B.a, B.a, A.a, 'filler' from t1 A, t1 B;
explain select * from t2 force index (d) where d < 10;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 range d d 5 NULL 53 Using index condition; Using MRR
+1 SIMPLE t2 range d d 5 NULL # Using index condition; Using MRR
drop table t2;
drop table t1;
-set @@read_rnd_buffer_size= @read_rnd_buffer_size_save;
+set @@mrr_buffer_size= @mrr_buffer_size_save;
create table t1 (f1 int not null, f2 int not null,f3 int not null, f4 char(1), primary key (f1,f2), key ix(f3))Engine=InnoDB;
select * from t1 where (f3>=5 and f3<=10) or (f3>=1 and f3<=4);
f1 f2 f3 f4
=== modified file 'mysql-test/r/myisam_mrr.result'
--- a/mysql-test/r/myisam_mrr.result 2009-12-15 17:23:55 +0000
+++ b/mysql-test/r/myisam_mrr.result 2009-12-22 14:43:00 +0000
@@ -1,8 +1,8 @@
drop table if exists t1, t2, t3;
-set @read_rnd_buffer_size_save= @@read_rnd_buffer_size;
-set read_rnd_buffer_size=79;
+set @mrr_buffer_size_save= @@mrr_buffer_size;
+set mrr_buffer_size=79;
Warnings:
-Warning 1292 Truncated incorrect read_rnd_buffer_size value: '79'
+Warning 1292 Truncated incorrect mrr_buffer_size value: '79'
create table t1(a int);
show create table t1;
Table Create Table
@@ -293,7 +293,7 @@ NULL 7 0
NULL 9 0
NULL 9 0
drop table t1, t2;
-set @@read_rnd_buffer_size= @read_rnd_buffer_size_save;
+set @@mrr_buffer_size= @mrr_buffer_size_save;
CREATE TABLE t1 (
ID int(10) unsigned NOT NULL AUTO_INCREMENT,
col1 int(10) unsigned DEFAULT NULL,
@@ -388,3 +388,29 @@ explain select * from t1 where a < 20 o
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a a 5 NULL 20 Using index condition
drop table t0, t1;
+#
+# Part of MWL#67: DS-MRR backport: add an @@optimizer_switch flag for
+# index_condition pushdown:
+# - engine_condition_pushdown does not affect ICP
+select @@optimizer_switch;
+@@optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1 (a int, b int, key(a));
+insert into t1 select A.a + 10 *(B.a + 10*C.a), A.a + 10 *(B.a + 10*C.a) from t0 A, t0 B, t0 C;
+A query that will use ICP:
+explain select * from t1 where a < 20;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 20 Using index condition; Using MRR
+set @save_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='index_condition_pushdown=off';
+explain select * from t1 where a < 20;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 20 Using where; Using MRR
+set optimizer_switch='index_condition_pushdown=on';
+explain select * from t1 where a < 20;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 20 Using index condition; Using MRR
+set optimizer_switch=@save_optimizer_switch;
+drop table t0, t1;
=== modified file 'mysql-test/t/ctype_cp1251.test'
--- a/mysql-test/t/ctype_cp1251.test 2005-10-13 14:16:19 +0000
+++ b/mysql-test/t/ctype_cp1251.test 2009-12-22 12:33:21 +0000
@@ -44,6 +44,7 @@ insert into t1 (a) values ('air'),
('we_martin'),('vw_grado'),('vw_vasko'),('tn_vili'),('tn_kalina'),
('tn_fakira'),('vw_silvia'),('vw_starshi'),('vw_geo'),('vw_b0x1');
+--sorted_result
select * from t1 where a like 'we_%';
drop table t1;
=== modified file 'mysql-test/t/innodb_mrr.test'
--- a/mysql-test/t/innodb_mrr.test 2009-12-15 07:16:46 +0000
+++ b/mysql-test/t/innodb_mrr.test 2009-12-22 12:33:21 +0000
@@ -12,8 +12,8 @@ set storage_engine=InnoDB;
set storage_engine= @save_storage_engine;
# Try big rowid sizes
-set @read_rnd_buffer_size_save= @@read_rnd_buffer_size;
-set read_rnd_buffer_size=64;
+set @mrr_buffer_size_save= @@mrr_buffer_size;
+set mrr_buffer_size=64;
# By default InnoDB will fill values only for key parts used by the query,
# which will cause DS-MRR to supply an invalid tuple on scan restoration.
@@ -38,11 +38,12 @@ drop table t2;
create table t2 (a char(100), b char(100), c char(100), d int,
filler char(10), key(d), primary key (a,b,c)) engine= innodb;
insert into t2 select A.a, B.a, B.a, A.a, 'filler' from t1 A, t1 B;
+--replace_column 9 #
explain select * from t2 force index (d) where d < 10;
drop table t2;
drop table t1;
-set @@read_rnd_buffer_size= @read_rnd_buffer_size_save;
+set @@mrr_buffer_size= @mrr_buffer_size_save;
#
# BUG#33033 "MySQL/InnoDB crashes with simple select range query"
=== modified file 'mysql-test/t/myisam_mrr.test'
--- a/mysql-test/t/myisam_mrr.test 2009-12-15 17:23:55 +0000
+++ b/mysql-test/t/myisam_mrr.test 2009-12-22 14:43:00 +0000
@@ -6,12 +6,12 @@
drop table if exists t1, t2, t3;
--enable_warnings
-set @read_rnd_buffer_size_save= @@read_rnd_buffer_size;
-set read_rnd_buffer_size=79;
+set @mrr_buffer_size_save= @@mrr_buffer_size;
+set mrr_buffer_size=79;
-- source include/mrr_tests.inc
-set @@read_rnd_buffer_size= @read_rnd_buffer_size_save;
+set @@mrr_buffer_size= @mrr_buffer_size_save;
#
# BUG#30622: Incorrect query results for MRR + filesort
@@ -96,3 +96,32 @@ insert into t1 select A.a + 10 *(B.a + 1
explain select * from t1 where a < 20 order by a;
drop table t0, t1;
+-- echo #
+-- echo # Part of MWL#67: DS-MRR backport: add an @@optimizer_switch flag for
+-- echo # index_condition pushdown:
+-- echo # - engine_condition_pushdown does not affect ICP
+
+
+# Check that optimizer_switch is present
+--replace_regex /,table_elimination=o[nf]*//
+select @@optimizer_switch;
+
+# Check if it affects ICP
+create table t0 (a int);
+insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1 (a int, b int, key(a));
+insert into t1 select A.a + 10 *(B.a + 10*C.a), A.a + 10 *(B.a + 10*C.a) from t0 A, t0 B, t0 C;
+
+-- echo A query that will use ICP:
+explain select * from t1 where a < 20;
+
+set @save_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='index_condition_pushdown=off';
+explain select * from t1 where a < 20;
+
+set optimizer_switch='index_condition_pushdown=on';
+explain select * from t1 where a < 20;
+
+set optimizer_switch=@save_optimizer_switch;
+
+drop table t0, t1;
=== modified file 'sql/Makefile.am'
--- a/sql/Makefile.am 2009-12-21 02:26:15 +0000
+++ b/sql/Makefile.am 2009-12-22 14:43:00 +0000
@@ -47,7 +47,7 @@ mysqld_LDADD = libndb.la \
$(LDADD) $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \
$(yassl_libs) $(openssl_libs) @MYSQLD_EXTRA_LIBS@
-noinst_HEADERS = ds_mrr.h item.h item_func.h item_sum.h item_cmpfunc.h \
+noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
item_strfunc.h item_timefunc.h \
item_xmlfunc.h \
item_create.h item_subselect.h item_row.h \
@@ -77,9 +77,10 @@ noinst_HEADERS = ds_mrr.h item.h item_fu
sql_plugin.h authors.h event_parse_data.h \
event_data_objects.h event_scheduler.h \
sql_partition.h partition_info.h partition_element.h \
- contributors.h sql_servers.h
+ contributors.h sql_servers.h \
+ multi_range_read.h
-mysqld_SOURCES = ds_mrr.cc sql_lex.cc sql_handler.cc sql_partition.cc \
+mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
item.cc item_sum.cc item_buff.cc item_func.cc \
item_cmpfunc.cc item_strfunc.cc item_timefunc.cc \
thr_malloc.cc item_create.cc item_subselect.cc \
@@ -123,7 +124,9 @@ mysqld_SOURCES = ds_mrr.cc sql_lex.cc sq
sql_plugin.cc sql_binlog.cc \
sql_builtin.cc sql_tablespace.cc partition_info.cc \
sql_servers.cc event_parse_data.cc \
- opt_table_elimination.cc
+ opt_table_elimination.cc \
+ multi_range_read.cc \
+ opt_index_cond_pushdown.cc
nodist_mysqld_SOURCES = mini_client_errors.c pack.c client.c my_time.c my_user.c
@@ -151,7 +154,7 @@ BUILT_SOURCES = $(BUILT_MAINT_SRC) lex_
EXTRA_DIST = udf_example.c udf_example.def $(BUILT_MAINT_SRC) \
nt_servc.cc nt_servc.h \
message.mc message.h message.rc MSG00001.bin \
- CMakeLists.txt
+ CMakeLists.txt opt_range_mrr.cc
CLEANFILES = lex_hash.h sql_yacc.output link_sources
DISTCLEANFILES = $(EXTRA_PROGRAMS)
=== removed file 'sql/ds_mrr.cc'
--- a/sql/ds_mrr.cc 2009-12-21 02:26:15 +0000
+++ b/sql/ds_mrr.cc 1970-01-01 00:00:00 +0000
@@ -1,1337 +0,0 @@
-#include "mysql_priv.h"
-#include "sql_select.h"
-
-/* **************************************************************************
- * DS-MRR implementation
- ***************************************************************************/
-
-/**
- DS-MRR: Initialize and start MRR scan
-
- Initialize and start the MRR scan. Depending on the mode parameter, this
- may use default or DS-MRR implementation.
-
- @param h Table handler to be used
- @param key Index to be used
- @param seq_funcs Interval sequence enumeration functions
- @param seq_init_param Interval sequence enumeration parameter
- @param n_ranges Number of ranges in the sequence.
- @param mode HA_MRR_* modes to use
- @param buf INOUT Buffer to use
-
- @retval 0 Ok, Scan started.
- @retval other Error
-*/
-
-int DsMrr_impl::dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs,
- void *seq_init_param, uint n_ranges, uint mode,
- HANDLER_BUFFER *buf)
-{
- uint elem_size;
- Item *pushed_cond= NULL;
- handler *new_h2= 0;
- DBUG_ENTER("DsMrr_impl::dsmrr_init");
-
- /*
- index_merge may invoke a scan on an object for which dsmrr_info[_const]
- has not been called, so set the owner handler here as well.
- */
- h= h_arg;
- if (mode & HA_MRR_USE_DEFAULT_IMPL || mode & HA_MRR_SORTED)
- {
- use_default_impl= TRUE;
- const int retval=
- h->handler::multi_range_read_init(seq_funcs, seq_init_param,
- n_ranges, mode, buf);
- DBUG_RETURN(retval);
- }
- rowids_buf= buf->buffer;
-
- is_mrr_assoc= !test(mode & HA_MRR_NO_ASSOCIATION);
-
- if (is_mrr_assoc)
- status_var_increment(table->in_use->status_var.ha_multi_range_read_init_count);
-
- rowids_buf_end= buf->buffer_end;
- elem_size= h->ref_length + (int)is_mrr_assoc * sizeof(void*);
- rowids_buf_last= rowids_buf +
- ((rowids_buf_end - rowids_buf)/ elem_size)*
- elem_size;
- rowids_buf_end= rowids_buf_last;
-
- /*
- There can be two cases:
- - This is the first call since index_init(), h2==NULL
- Need to setup h2 then.
- - This is not the first call, h2 is initalized and set up appropriately.
- The caller might have called h->index_init(), need to switch h to
- rnd_pos calls.
- */
- if (!h2)
- {
- /* Create a separate handler object to do rndpos() calls. */
- THD *thd= current_thd;
- /*
- ::clone() takes up a lot of stack, especially on 64 bit platforms.
- The constant 5 is an empiric result.
- */
- if (check_stack_overrun(thd, 5*STACK_MIN_SIZE, (uchar*) &new_h2))
- DBUG_RETURN(1);
- DBUG_ASSERT(h->active_index != MAX_KEY);
- uint mrr_keyno= h->active_index;
-
- /* Create a separate handler object to do rndpos() calls. */
- if (!(new_h2= h->clone(thd->mem_root)) ||
- new_h2->ha_external_lock(thd, F_RDLCK))
- {
- delete new_h2;
- DBUG_RETURN(1);
- }
-
- if (mrr_keyno == h->pushed_idx_cond_keyno)
- pushed_cond= h->pushed_idx_cond;
-
- /*
- Caution: this call will invoke this->dsmrr_close(). Do not put the
- created secondary table handler into this->h2 or it will delete it.
- */
- if (h->ha_index_end())
- {
- h2=new_h2;
- goto error;
- }
-
- h2= new_h2; /* Ok, now can put it into h2 */
- table->prepare_for_position();
- h2->extra(HA_EXTRA_KEYREAD);
-
- if (h2->ha_index_init(mrr_keyno, FALSE))
- goto error;
-
- use_default_impl= FALSE;
- if (pushed_cond)
- h2->idx_cond_push(mrr_keyno, pushed_cond);
- }
- else
- {
- /*
- We get here when the access alternates betwen MRR scan(s) and non-MRR
- scans.
-
- Calling h->index_end() will invoke dsmrr_close() for this object,
- which will delete h2. We need to keep it, so save put it away and dont
- let it be deleted:
- */
- handler *save_h2= h2;
- h2= NULL;
- int res= (h->inited == handler::INDEX && h->ha_index_end());
- h2= save_h2;
- use_default_impl= FALSE;
- if (res)
- goto error;
- }
-
- if (h2->handler::multi_range_read_init(seq_funcs, seq_init_param, n_ranges,
- mode, buf) ||
- dsmrr_fill_buffer())
- {
- goto error;
- }
- /*
- If the above call has scanned through all intervals in *seq, then
- adjust *buf to indicate that the remaining buffer space will not be used.
- */
- if (dsmrr_eof)
- buf->end_of_used_area= rowids_buf_last;
-
- /*
- h->inited == INDEX may occur when 'range checked for each record' is
- used.
- */
- if ((h->inited != handler::RND) &&
- ((h->inited==handler::INDEX? h->ha_index_end(): FALSE) ||
- (h->ha_rnd_init(FALSE))))
- goto error;
-
- use_default_impl= FALSE;
- h->mrr_funcs= *seq_funcs;
-
- DBUG_RETURN(0);
-error:
- h2->ha_index_or_rnd_end();
- h2->ha_external_lock(current_thd, F_UNLCK);
- h2->close();
- delete h2;
- h2= NULL;
- DBUG_RETURN(1);
-}
-
-
-void DsMrr_impl::dsmrr_close()
-{
- DBUG_ENTER("DsMrr_impl::dsmrr_close");
- if (h2)
- {
- h2->ha_index_or_rnd_end();
- h2->ha_external_lock(current_thd, F_UNLCK);
- h2->close();
- delete h2;
- h2= NULL;
- }
- use_default_impl= TRUE;
- DBUG_VOID_RETURN;
-}
-
-
-static int rowid_cmp(void *h, uchar *a, uchar *b)
-{
- return ((handler*)h)->cmp_ref(a, b);
-}
-
-
-/**
- DS-MRR: Fill the buffer with rowids and sort it by rowid
-
- {This is an internal function of DiskSweep MRR implementation}
- Scan the MRR ranges and collect ROWIDs (or {ROWID, range_id} pairs) into
- buffer. When the buffer is full or scan is completed, sort the buffer by
- rowid and return.
-
- The function assumes that rowids buffer is empty when it is invoked.
-
- @param h Table handler
-
- @retval 0 OK, the next portion of rowids is in the buffer,
- properly ordered
- @retval other Error
-*/
-
-int DsMrr_impl::dsmrr_fill_buffer()
-{
- char *range_info;
- int res;
- DBUG_ENTER("DsMrr_impl::dsmrr_fill_buffer");
-
- rowids_buf_cur= rowids_buf;
- while ((rowids_buf_cur < rowids_buf_end) &&
- !(res= h2->handler::multi_range_read_next(&range_info)))
- {
- KEY_MULTI_RANGE *curr_range= &h2->handler::mrr_cur_range;
- if (h2->mrr_funcs.skip_index_tuple &&
- h2->mrr_funcs.skip_index_tuple(h2->mrr_iter, curr_range->ptr))
- continue;
-
- /* Put rowid, or {rowid, range_id} pair into the buffer */
- h2->position(table->record[0]);
- memcpy(rowids_buf_cur, h2->ref, h2->ref_length);
- rowids_buf_cur += h2->ref_length;
-
- if (is_mrr_assoc)
- {
- memcpy(rowids_buf_cur, &range_info, sizeof(void*));
- rowids_buf_cur += sizeof(void*);
- }
- }
-
- if (res && res != HA_ERR_END_OF_FILE)
- DBUG_RETURN(res);
- dsmrr_eof= test(res == HA_ERR_END_OF_FILE);
-
- /* Sort the buffer contents by rowid */
- uint elem_size= h->ref_length + (int)is_mrr_assoc * sizeof(void*);
- uint n_rowids= (rowids_buf_cur - rowids_buf) / elem_size;
-
- my_qsort2(rowids_buf, n_rowids, elem_size, (qsort2_cmp)rowid_cmp,
- (void*)h);
- rowids_buf_last= rowids_buf_cur;
- rowids_buf_cur= rowids_buf;
- DBUG_RETURN(0);
-}
-
-
-/**
- DS-MRR implementation: multi_range_read_next() function
-*/
-
-int DsMrr_impl::dsmrr_next(char **range_info)
-{
- int res;
- uchar *cur_range_info= 0;
- uchar *rowid;
-
- if (use_default_impl)
- return h->handler::multi_range_read_next(range_info);
-
- do
- {
- if (rowids_buf_cur == rowids_buf_last)
- {
- if (dsmrr_eof)
- {
- res= HA_ERR_END_OF_FILE;
- goto end;
- }
- res= dsmrr_fill_buffer();
- if (res)
- goto end;
- }
-
- /* return eof if there are no rowids in the buffer after re-fill attempt */
- if (rowids_buf_cur == rowids_buf_last)
- {
- res= HA_ERR_END_OF_FILE;
- goto end;
- }
- rowid= rowids_buf_cur;
-
- if (is_mrr_assoc)
- memcpy(&cur_range_info, rowids_buf_cur + h->ref_length, sizeof(uchar**));
-
- rowids_buf_cur += h->ref_length + sizeof(void*) * test(is_mrr_assoc);
- if (h2->mrr_funcs.skip_record &&
- h2->mrr_funcs.skip_record(h2->mrr_iter, (char *) cur_range_info, rowid))
- continue;
- res= h->rnd_pos(table->record[0], rowid);
- break;
- } while (true);
-
- if (is_mrr_assoc)
- {
- memcpy(range_info, rowid + h->ref_length, sizeof(void*));
- }
-end:
- return res;
-}
-
-
-/**
- DS-MRR implementation: multi_range_read_info() function
-*/
-ha_rows DsMrr_impl::dsmrr_info(uint keyno, uint n_ranges, uint rows,
- uint *bufsz, uint *flags, COST_VECT *cost)
-{
- ha_rows res;
- uint def_flags= *flags;
- uint def_bufsz= *bufsz;
-
- /* Get cost/flags/mem_usage of default MRR implementation */
- res= h->handler::multi_range_read_info(keyno, n_ranges, rows, &def_bufsz,
- &def_flags, cost);
- DBUG_ASSERT(!res);
-
- if ((*flags & HA_MRR_USE_DEFAULT_IMPL) ||
- choose_mrr_impl(keyno, rows, &def_flags, &def_bufsz, cost))
- {
- /* Default implementation is choosen */
- DBUG_PRINT("info", ("Default MRR implementation choosen"));
- *flags= def_flags;
- *bufsz= def_bufsz;
- }
- else
- {
- /* *flags and *bufsz were set by choose_mrr_impl */
- DBUG_PRINT("info", ("DS-MRR implementation choosen"));
- }
- return 0;
-}
-
-
-/**
- DS-MRR Implementation: multi_range_read_info_const() function
-*/
-
-ha_rows DsMrr_impl::dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
- void *seq_init_param, uint n_ranges,
- uint *bufsz, uint *flags, COST_VECT *cost)
-{
- ha_rows rows;
- uint def_flags= *flags;
- uint def_bufsz= *bufsz;
- /* Get cost/flags/mem_usage of default MRR implementation */
- rows= h->handler::multi_range_read_info_const(keyno, seq, seq_init_param,
- n_ranges, &def_bufsz,
- &def_flags, cost);
- if (rows == HA_POS_ERROR)
- {
- /* Default implementation can't perform MRR scan => we can't either */
- return rows;
- }
-
- /*
- If HA_MRR_USE_DEFAULT_IMPL has been passed to us, that is an order to
- use the default MRR implementation (we need it for UPDATE/DELETE).
- Otherwise, make a choice based on cost and @@optimizer_use_mrr.
- */
- if ((*flags & HA_MRR_USE_DEFAULT_IMPL) ||
- choose_mrr_impl(keyno, rows, flags, bufsz, cost))
- {
- DBUG_PRINT("info", ("Default MRR implementation choosen"));
- *flags= def_flags;
- *bufsz= def_bufsz;
- }
- else
- {
- /* *flags and *bufsz were set by choose_mrr_impl */
- DBUG_PRINT("info", ("DS-MRR implementation choosen"));
- }
- return rows;
-}
-
-
-/**
- Check if key has partially-covered columns
-
- We can't use DS-MRR to perform range scans when the ranges are over
- partially-covered keys, because we'll not have full key part values
- (we'll have their prefixes from the index) and will not be able to check
- if we've reached the end the range.
-
- @param keyno Key to check
-
- @todo
- Allow use of DS-MRR in cases where the index has partially-covered
- components but they are not used for scanning.
-
- @retval TRUE Yes
- @retval FALSE No
-*/
-
-bool key_uses_partial_cols(TABLE *table, uint keyno)
-{
- KEY_PART_INFO *kp= table->key_info[keyno].key_part;
- KEY_PART_INFO *kp_end= kp + table->key_info[keyno].key_parts;
- for (; kp != kp_end; kp++)
- {
- if (!kp->field->part_of_key.is_set(keyno))
- return TRUE;
- }
- return FALSE;
-}
-
-/**
- DS-MRR Internals: Choose between Default MRR implementation and DS-MRR
-
- Make the choice between using Default MRR implementation and DS-MRR.
- This function contains common functionality factored out of dsmrr_info()
- and dsmrr_info_const(). The function assumes that the default MRR
- implementation's applicability requirements are satisfied.
-
- @param keyno Index number
- @param rows E(full rows to be retrieved)
- @param flags IN MRR flags provided by the MRR user
- OUT If DS-MRR is choosen, flags of DS-MRR implementation
- else the value is not modified
- @param bufsz IN If DS-MRR is choosen, buffer use of DS-MRR implementation
- else the value is not modified
- @param cost IN Cost of default MRR implementation
- OUT If DS-MRR is choosen, cost of DS-MRR scan
- else the value is not modified
-
- @retval TRUE Default MRR implementation should be used
- @retval FALSE DS-MRR implementation should be used
-*/
-
-bool DsMrr_impl::choose_mrr_impl(uint keyno, ha_rows rows, uint *flags,
- uint *bufsz, COST_VECT *cost)
-{
- COST_VECT dsmrr_cost;
- bool res;
- THD *thd= current_thd;
- if (thd->variables.optimizer_use_mrr == 2 || *flags & HA_MRR_INDEX_ONLY ||
- (keyno == table->s->primary_key && h->primary_key_is_clustered()) ||
- key_uses_partial_cols(table, keyno))
- {
- /* Use the default implementation */
- *flags |= HA_MRR_USE_DEFAULT_IMPL;
- return TRUE;
- }
-
- uint add_len= table->key_info[keyno].key_length + h->ref_length;
- *bufsz -= add_len;
- if (get_disk_sweep_mrr_cost(keyno, rows, *flags, bufsz, &dsmrr_cost))
- return TRUE;
- *bufsz += add_len;
-
- bool force_dsmrr;
- /*
- If @@optimizer_use_mrr==force, then set cost of DS-MRR to be minimum of
- DS-MRR and Default implementations cost. This allows one to force use of
- DS-MRR whenever it is applicable without affecting other cost-based
- choices.
- */
- if ((force_dsmrr= (thd->variables.optimizer_use_mrr == 1)) &&
- dsmrr_cost.total_cost() > cost->total_cost())
- dsmrr_cost= *cost;
-
- if (force_dsmrr || dsmrr_cost.total_cost() <= cost->total_cost())
- {
- *flags &= ~HA_MRR_USE_DEFAULT_IMPL; /* Use the DS-MRR implementation */
- *flags &= ~HA_MRR_SORTED; /* We will return unordered output */
- *cost= dsmrr_cost;
- res= FALSE;
- }
- else
- {
- /* Use the default MRR implementation */
- res= TRUE;
- }
- return res;
-}
-
-
-static void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, COST_VECT *cost);
-
-
-/**
- Get cost of DS-MRR scan
-
- @param keynr Index to be used
- @param rows E(Number of rows to be scanned)
- @param flags Scan parameters (HA_MRR_* flags)
- @param buffer_size INOUT Buffer size
- @param cost OUT The cost
-
- @retval FALSE OK
- @retval TRUE Error, DS-MRR cannot be used (the buffer is too small
- for even 1 rowid)
-*/
-
-bool DsMrr_impl::get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
- uint *buffer_size, COST_VECT *cost)
-{
- ulong max_buff_entries, elem_size;
- ha_rows rows_in_full_step, rows_in_last_step;
- uint n_full_steps;
- double index_read_cost;
-
- elem_size= h->ref_length + sizeof(void*) * (!test(flags & HA_MRR_NO_ASSOCIATION));
- max_buff_entries = *buffer_size / elem_size;
-
- if (!max_buff_entries)
- return TRUE; /* Buffer has not enough space for even 1 rowid */
-
- /* Number of iterations we'll make with full buffer */
- n_full_steps= (uint)floor(rows2double(rows) / max_buff_entries);
-
- /*
- Get numbers of rows we'll be processing in
- - non-last sweep, with full buffer
- - last iteration, with non-full buffer
- */
- rows_in_full_step= max_buff_entries;
- rows_in_last_step= rows % max_buff_entries;
-
- /* Adjust buffer size if we expect to use only part of the buffer */
- if (n_full_steps)
- {
- get_sort_and_sweep_cost(table, rows, cost);
- cost->multiply(n_full_steps);
- }
- else
- {
- cost->zero();
- *buffer_size= max(*buffer_size,
- (size_t)(1.2*rows_in_last_step) * elem_size +
- h->ref_length + table->key_info[keynr].key_length);
- }
-
- COST_VECT last_step_cost;
- get_sort_and_sweep_cost(table, rows_in_last_step, &last_step_cost);
- cost->add(&last_step_cost);
-
- if (n_full_steps != 0)
- cost->mem_cost= *buffer_size;
- else
- cost->mem_cost= (double)rows_in_last_step * elem_size;
-
- /* Total cost of all index accesses */
- index_read_cost= h->index_only_read_time(keynr, (double)rows);
- cost->add_io(index_read_cost, 1 /* Random seeks */);
- return FALSE;
-}
-
-
-/*
- Get cost of one sort-and-sweep step
-
- SYNOPSIS
- get_sort_and_sweep_cost()
- table Table being accessed
- nrows Number of rows to be sorted and retrieved
- cost OUT The cost
-
- DESCRIPTION
- Get cost of these operations:
- - sort an array of #nrows ROWIDs using qsort
- - read #nrows records from table in a sweep.
-*/
-
-static
-void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, COST_VECT *cost)
-{
- if (nrows)
- {
- get_sweep_read_cost(table, nrows, FALSE, cost);
- /* Add cost of qsort call: n * log2(n) * cost(rowid_comparison) */
- double cmp_op= rows2double(nrows) * (1.0 / TIME_FOR_COMPARE_ROWID);
- if (cmp_op < 3)
- cmp_op= 3;
- cost->cpu_cost += cmp_op * log2(cmp_op);
- }
- else
- cost->zero();
-}
-
-
-/**
- Get cost of reading nrows table records in a "disk sweep"
-
- A disk sweep read is a sequence of handler->rnd_pos(rowid) calls that made
- for an ordered sequence of rowids.
-
- We assume hard disk IO. The read is performed as follows:
-
- 1. The disk head is moved to the needed cylinder
- 2. The controller waits for the plate to rotate
- 3. The data is transferred
-
- Time to do #3 is insignificant compared to #2+#1.
-
- Time to move the disk head is proportional to head travel distance.
-
- Time to wait for the plate to rotate depends on whether the disk head
- was moved or not.
-
- If disk head wasn't moved, the wait time is proportional to distance
- between the previous block and the block we're reading.
-
- If the head was moved, we don't know how much we'll need to wait for the
- plate to rotate. We assume the wait time to be a variate with a mean of
- 0.5 of full rotation time.
-
- Our cost units are "random disk seeks". The cost of random disk seek is
- actually not a constant, it depends one range of cylinders we're going
- to access. We make it constant by introducing a fuzzy concept of "typical
- datafile length" (it's fuzzy as it's hard to tell whether it should
- include index file, temp.tables etc). Then random seek cost is:
-
- 1 = half_rotation_cost + move_cost * 1/3 * typical_data_file_length
-
- We define half_rotation_cost as DISK_SEEK_BASE_COST=0.9.
-
- @param table Table to be accessed
- @param nrows Number of rows to retrieve
- @param interrupted TRUE <=> Assume that the disk sweep will be
- interrupted by other disk IO. FALSE - otherwise.
- @param cost OUT The cost.
-*/
-
-void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
- COST_VECT *cost)
-{
- DBUG_ENTER("get_sweep_read_cost");
-
- cost->zero();
- if (table->file->primary_key_is_clustered())
- {
- cost->io_count= table->file->read_time(table->s->primary_key,
- (uint) nrows, nrows);
- }
- else
- {
- double n_blocks=
- ceil(ulonglong2double(table->file->stats.data_file_length) / IO_SIZE);
- double busy_blocks=
- n_blocks * (1.0 - pow(1.0 - 1.0/n_blocks, rows2double(nrows)));
- if (busy_blocks < 1.0)
- busy_blocks= 1.0;
-
- DBUG_PRINT("info",("sweep: nblocks=%g, busy_blocks=%g", n_blocks,
- busy_blocks));
- cost->io_count= busy_blocks;
-
- if (!interrupted)
- {
- /* Assume reading is done in one 'sweep' */
- cost->avg_io_cost= (DISK_SEEK_BASE_COST +
- DISK_SEEK_PROP_COST*n_blocks/busy_blocks);
- }
- }
- DBUG_PRINT("info",("returning cost=%g", cost->total_cost()));
- DBUG_VOID_RETURN;
-}
-
-
-/* **************************************************************************
- * DS-MRR implementation ends
- ***************************************************************************/
-
-/* **************************************************************************
- * Index Condition Pushdown code starts
- ***************************************************************************/
-/*
- Check if given expression uses only table fields covered by the given index
-
- SYNOPSIS
- uses_index_fields_only()
- item Expression to check
- tbl The table having the index
- keyno The index number
- other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
-
- DESCRIPTION
- Check if given expression only uses fields covered by index #keyno in the
- table tbl. The expression can use any fields in any other tables.
-
- The expression is guaranteed not to be AND or OR - those constructs are
- handled outside of this function.
-
- RETURN
- TRUE Yes
- FALSE No
-*/
-
-bool uses_index_fields_only(Item *item, TABLE *tbl, uint keyno,
- bool other_tbls_ok)
-{
- if (item->const_item())
- return TRUE;
-
- /*
- Don't push down the triggered conditions. Nested outer joins execution
- code may need to evaluate a condition several times (both triggered and
- untriggered), and there is no way to put thi
- TODO: Consider cloning the triggered condition and using the copies for:
- 1. push the first copy down, to have most restrictive index condition
- possible
- 2. Put the second copy into tab->select_cond.
- */
- if (item->type() == Item::FUNC_ITEM &&
- ((Item_func*)item)->functype() == Item_func::TRIG_COND_FUNC)
- return FALSE;
-
- if (!(item->used_tables() & tbl->map))
- return other_tbls_ok;
-
- Item::Type item_type= item->type();
- switch (item_type) {
- case Item::FUNC_ITEM:
- {
- /* This is a function, apply condition recursively to arguments */
- Item_func *item_func= (Item_func*)item;
- Item **child;
- Item **item_end= (item_func->arguments()) + item_func->argument_count();
- for (child= item_func->arguments(); child != item_end; child++)
- {
- if (!uses_index_fields_only(*child, tbl, keyno, other_tbls_ok))
- return FALSE;
- }
- return TRUE;
- }
- case Item::COND_ITEM:
- {
- /*
- This is a AND/OR condition. Regular AND/OR clauses are handled by
- make_cond_for_index() which will chop off the part that can be
- checked with index. This code is for handling non-top-level AND/ORs,
- e.g. func(x AND y).
- */
- List_iterator<Item> li(*((Item_cond*)item)->argument_list());
- Item *item;
- while ((item=li++))
- {
- if (!uses_index_fields_only(item, tbl, keyno, other_tbls_ok))
- return FALSE;
- }
- return TRUE;
- }
- case Item::FIELD_ITEM:
- {
- Item_field *item_field= (Item_field*)item;
- if (item_field->field->table != tbl)
- return TRUE;
- /*
- The below is probably a repetition - the first part checks the
- other two, but let's play it safe:
- */
- return item_field->field->part_of_key.is_set(keyno) &&
- item_field->field->type() != MYSQL_TYPE_GEOMETRY &&
- item_field->field->type() != MYSQL_TYPE_BLOB;
- }
- case Item::REF_ITEM:
- return uses_index_fields_only(item->real_item(), tbl, keyno,
- other_tbls_ok);
- default:
- return FALSE; /* Play it safe, don't push unknown non-const items */
- }
-}
-
-#define ICP_COND_USES_INDEX_ONLY 10
-
-/*
- Get a part of the condition that can be checked using only index fields
-
- SYNOPSIS
- make_cond_for_index()
- cond The source condition
- table The table that is partially available
- keyno The index in the above table. Only fields covered by the index
- are available
- other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
-
- DESCRIPTION
- Get a part of the condition that can be checked when for the given table
- we have values only of fields covered by some index. The condition may
- refer to other tables, it is assumed that we have values of all of their
- fields.
-
- Example:
- make_cond_for_index(
- "cond(t1.field) AND cond(t2.key1) AND cond(t2.non_key) AND cond(t2.key2)",
- t2, keyno(t2.key1))
- will return
- "cond(t1.field) AND cond(t2.key2)"
-
- RETURN
- Index condition, or NULL if no condition could be inferred.
-*/
-
-Item *make_cond_for_index(Item *cond, TABLE *table, uint keyno,
- bool other_tbls_ok)
-{
- if (!cond)
- return NULL;
- if (cond->type() == Item::COND_ITEM)
- {
- uint n_marked= 0;
- if (((Item_cond*) cond)->functype() == Item_func::COND_AND_FUNC)
- {
- table_map used_tables= 0;
- Item_cond_and *new_cond=new Item_cond_and;
- if (!new_cond)
- return (COND*) 0;
- List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
- Item *item;
- while ((item=li++))
- {
- Item *fix= make_cond_for_index(item, table, keyno, other_tbls_ok);
- if (fix)
- {
- new_cond->argument_list()->push_back(fix);
- used_tables|= fix->used_tables();
- }
- n_marked += test(item->marker == ICP_COND_USES_INDEX_ONLY);
- }
- if (n_marked ==((Item_cond*)cond)->argument_list()->elements)
- cond->marker= ICP_COND_USES_INDEX_ONLY;
- switch (new_cond->argument_list()->elements) {
- case 0:
- return (COND*) 0;
- case 1:
- new_cond->used_tables_cache= used_tables;
- return new_cond->argument_list()->head();
- default:
- new_cond->quick_fix_field();
- new_cond->used_tables_cache= used_tables;
- return new_cond;
- }
- }
- else /* It's OR */
- {
- Item_cond_or *new_cond=new Item_cond_or;
- if (!new_cond)
- return (COND*) 0;
- List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
- Item *item;
- while ((item=li++))
- {
- Item *fix= make_cond_for_index(item, table, keyno, other_tbls_ok);
- if (!fix)
- return (COND*) 0;
- new_cond->argument_list()->push_back(fix);
- n_marked += test(item->marker == ICP_COND_USES_INDEX_ONLY);
- }
- if (n_marked ==((Item_cond*)cond)->argument_list()->elements)
- cond->marker= ICP_COND_USES_INDEX_ONLY;
- new_cond->quick_fix_field();
- new_cond->used_tables_cache= ((Item_cond_or*) cond)->used_tables_cache;
- new_cond->top_level_item();
- return new_cond;
- }
- }
-
- if (!uses_index_fields_only(cond, table, keyno, other_tbls_ok))
- return (COND*) 0;
- cond->marker= ICP_COND_USES_INDEX_ONLY;
- return cond;
-}
-
-
-Item *make_cond_remainder(Item *cond, bool exclude_index)
-{
- if (exclude_index && cond->marker == ICP_COND_USES_INDEX_ONLY)
- return 0; /* Already checked */
-
- if (cond->type() == Item::COND_ITEM)
- {
- table_map tbl_map= 0;
- if (((Item_cond*) cond)->functype() == Item_func::COND_AND_FUNC)
- {
- /* Create new top level AND item */
- Item_cond_and *new_cond=new Item_cond_and;
- if (!new_cond)
- return (COND*) 0;
- List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
- Item *item;
- while ((item=li++))
- {
- Item *fix= make_cond_remainder(item, exclude_index);
- if (fix)
- {
- new_cond->argument_list()->push_back(fix);
- tbl_map |= fix->used_tables();
- }
- }
- switch (new_cond->argument_list()->elements) {
- case 0:
- return (COND*) 0;
- case 1:
- return new_cond->argument_list()->head();
- default:
- new_cond->quick_fix_field();
- ((Item_cond*)new_cond)->used_tables_cache= tbl_map;
- return new_cond;
- }
- }
- else /* It's OR */
- {
- Item_cond_or *new_cond=new Item_cond_or;
- if (!new_cond)
- return (COND*) 0;
- List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
- Item *item;
- while ((item=li++))
- {
- Item *fix= make_cond_remainder(item, FALSE);
- if (!fix)
- return (COND*) 0;
- new_cond->argument_list()->push_back(fix);
- tbl_map |= fix->used_tables();
- }
- new_cond->quick_fix_field();
- ((Item_cond*)new_cond)->used_tables_cache= tbl_map;
- new_cond->top_level_item();
- return new_cond;
- }
- }
- return cond;
-}
-
-
-/*
- Try to extract and push the index condition
-
- SYNOPSIS
- push_index_cond()
- tab A join tab that has tab->table->file and its condition
- in tab->select_cond
- keyno Index for which extract and push the condition
- other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
-
- DESCRIPTION
- Try to extract and push the index condition down to table handler
-*/
-
-void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok)
-{
- DBUG_ENTER("push_index_cond");
- Item *idx_cond;
- bool do_index_cond_pushdown=
- ((tab->table->file->index_flags(keyno, 0, 1) &
- HA_DO_INDEX_COND_PUSHDOWN) &&
- tab->join->thd->variables.engine_condition_pushdown);
-
- /*
- Do not try index condition pushdown on indexes which have partially-covered
- columns. Unpacking from a column prefix into index tuple is not a supported
- operation in some engines, see e.g. MySQL BUG#42991.
- TODO: a better solution would be not to consider partially-covered columns
- as parts of the index and still produce/check index condition for
- fully-covered index columns.
- */
- KEY *key_info= tab->table->key_info + keyno;
- for (uint kp= 0; kp < key_info->key_parts; kp++)
- {
- if ((key_info->key_part[kp].key_part_flag & HA_PART_KEY_SEG))
- {
- do_index_cond_pushdown= FALSE;
- break;
- }
- }
-
- /*
- When WL#5116 is done this DBUG statement must be removed. It's just a
- temporary hack to allow us to discriminate whether a test failure relates
- to *Engine* or *Index* Condition Pushdown.
- */
- DBUG_EXECUTE_IF("optimizer_no_icp", do_index_cond_pushdown= false;);
- if (do_index_cond_pushdown)
- {
- DBUG_EXECUTE("where",
- print_where(tab->select_cond, "full cond", QT_ORDINARY););
-
- idx_cond= make_cond_for_index(tab->select_cond, tab->table, keyno,
- other_tbls_ok);
-
- DBUG_EXECUTE("where",
- print_where(idx_cond, "idx cond", QT_ORDINARY););
-
- if (idx_cond)
- {
- Item *idx_remainder_cond= 0;
- tab->pre_idx_push_select_cond= tab->select_cond;
- /*
- For BKA cache we store condition to special BKA cache field
- because evaluation of the condition requires additional operations
- before the evaluation. This condition is used in
- JOIN_CACHE_BKA[_UNIQUE]::skip_index_tuple() functions.
- */
- if (tab->use_join_cache &&
- /*
- if cache is used then the value is TRUE only
- for BKA[_UNIQUE] cache (see check_join_cache_usage func).
- In this case other_tbls_ok is an equivalent of
- cache->is_key_access().
- */
- other_tbls_ok &&
- (idx_cond->used_tables() &
- ~(tab->table->map | tab->join->const_table_map)))
- tab->cache_idx_cond= idx_cond;
- else
- idx_remainder_cond= tab->table->file->idx_cond_push(keyno, idx_cond);
-
- /*
- Disable eq_ref's "lookup cache" if we've pushed down an index
- condition.
- TODO: This check happens to work on current ICP implementations, but
- there may exist a compliant implementation that will not work
- correctly with it. Sort this out when we stabilize the condition
- pushdown APIs.
- */
- if (idx_remainder_cond != idx_cond)
- tab->ref.disable_cache= TRUE;
-
- Item *row_cond= make_cond_remainder(tab->select_cond, TRUE);
-
- DBUG_EXECUTE("where",
- print_where(row_cond, "remainder cond", QT_ORDINARY););
-
- if (row_cond)
- {
- if (!idx_remainder_cond)
- tab->select_cond= row_cond;
- else
- {
- COND *new_cond= new Item_cond_and(row_cond, idx_remainder_cond);
- tab->select_cond= new_cond;
- tab->select_cond->quick_fix_field();
- ((Item_cond_and*)tab->select_cond)->used_tables_cache=
- row_cond->used_tables() | idx_remainder_cond->used_tables();
- }
- }
- else
- tab->select_cond= idx_remainder_cond;
- if (tab->select)
- {
- DBUG_EXECUTE("where",
- print_where(tab->select->cond,
- "select_cond",
- QT_ORDINARY););
-
- tab->select->cond= tab->select_cond;
- }
- }
- }
- DBUG_VOID_RETURN;
-}
-
-/* **************************************************************************
- * Default MRR implementation starts
- ***************************************************************************/
-
-
-/****************************************************************************
- * Default MRR implementation (MRR to non-MRR converter)
- ***************************************************************************/
-
-/**
- Get cost and other information about MRR scan over a known list of ranges
-
- Calculate estimated cost and other information about an MRR scan for given
- sequence of ranges.
-
- @param keyno Index number
- @param seq Range sequence to be traversed
- @param seq_init_param First parameter for seq->init()
- @param n_ranges_arg Number of ranges in the sequence, or 0 if the caller
- can't efficiently determine it
- @param bufsz INOUT IN: Size of the buffer available for use
- OUT: Size of the buffer that is expected to be actually
- used, or 0 if buffer is not needed.
- @param flags INOUT A combination of HA_MRR_* flags
- @param cost OUT Estimated cost of MRR access
-
- @note
- This method (or an overriding one in a derived class) must check for
- thd->killed and return HA_POS_ERROR if it is not zero. This is required
- for a user to be able to interrupt the calculation by killing the
- connection/query.
-
- @retval
- HA_POS_ERROR Error or the engine is unable to perform the requested
- scan. Values of OUT parameters are undefined.
- @retval
- other OK, *cost contains cost of the scan, *bufsz and *flags
- contain scan parameters.
-*/
-
-ha_rows
-handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
- void *seq_init_param, uint n_ranges_arg,
- uint *bufsz, uint *flags, COST_VECT *cost)
-{
- KEY_MULTI_RANGE range;
- range_seq_t seq_it;
- ha_rows rows, total_rows= 0;
- uint n_ranges=0;
- THD *thd= current_thd;
-
- /* Default MRR implementation doesn't need buffer */
- *bufsz= 0;
-
- seq_it= seq->init(seq_init_param, n_ranges, *flags);
- while (!seq->next(seq_it, &range))
- {
- if (unlikely(thd->killed != 0))
- return HA_POS_ERROR;
-
- n_ranges++;
- key_range *min_endp, *max_endp;
- if (range.range_flag & GEOM_FLAG)
- {
- /* In this case tmp_min_flag contains the handler-read-function */
- range.start_key.flag= (ha_rkey_function) (range.range_flag ^ GEOM_FLAG);
- min_endp= &range.start_key;
- max_endp= NULL;
- }
- else
- {
- min_endp= range.start_key.length? &range.start_key : NULL;
- max_endp= range.end_key.length? &range.end_key : NULL;
- }
- if ((range.range_flag & UNIQUE_RANGE) && !(range.range_flag & NULL_RANGE))
- rows= 1; /* there can be at most one row */
- else
- {
- if (HA_POS_ERROR == (rows= this->records_in_range(keyno, min_endp,
- max_endp)))
- {
- /* Can't scan one range => can't do MRR scan at all */
- total_rows= HA_POS_ERROR;
- break;
- }
- }
- total_rows += rows;
- }
-
- if (total_rows != HA_POS_ERROR)
- {
- /* The following calculation is the same as in multi_range_read_info(): */
- *flags |= HA_MRR_USE_DEFAULT_IMPL;
- cost->zero();
- cost->avg_io_cost= 1; /* assume random seeks */
- if ((*flags & HA_MRR_INDEX_ONLY) && total_rows > 2)
- cost->io_count= index_only_read_time(keyno, (uint)total_rows);
- else
- cost->io_count= read_time(keyno, n_ranges, total_rows);
- cost->cpu_cost= (double) total_rows / TIME_FOR_COMPARE + 0.01;
- }
- return total_rows;
-}
-
-
-/**
- Get cost and other information about MRR scan over some sequence of ranges
-
- Calculate estimated cost and other information about an MRR scan for some
- sequence of ranges.
-
- The ranges themselves will be known only at execution phase. When this
- function is called we only know number of ranges and a (rough) E(#records)
- within those ranges.
-
- Currently this function is only called for "n-keypart singlepoint" ranges,
- i.e. each range is "keypart1=someconst1 AND ... AND keypartN=someconstN"
-
- The flags parameter is a combination of those flags: HA_MRR_SORTED,
- HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION, HA_MRR_LIMITS.
-
- @param keyno Index number
- @param n_ranges Estimated number of ranges (i.e. intervals) in the
- range sequence.
- @param n_rows Estimated total number of records contained within all
- of the ranges
- @param bufsz INOUT IN: Size of the buffer available for use
- OUT: Size of the buffer that will be actually used, or
- 0 if buffer is not needed.
- @param flags INOUT A combination of HA_MRR_* flags
- @param cost OUT Estimated cost of MRR access
-
- @retval
- 0 OK, *cost contains cost of the scan, *bufsz and *flags contain scan
- parameters.
- @retval
- other Error or can't perform the requested scan
-*/
-
-ha_rows handler::multi_range_read_info(uint keyno, uint n_ranges, uint n_rows,
- uint *bufsz, uint *flags, COST_VECT *cost)
-{
- *bufsz= 0; /* Default implementation doesn't need a buffer */
-
- *flags |= HA_MRR_USE_DEFAULT_IMPL;
-
- cost->zero();
- cost->avg_io_cost= 1; /* assume random seeks */
-
- /* Produce the same cost as non-MRR code does */
- if (*flags & HA_MRR_INDEX_ONLY)
- cost->io_count= index_only_read_time(keyno, n_rows);
- else
- cost->io_count= read_time(keyno, n_ranges, n_rows);
- return 0;
-}
-
-
-/**
- Initialize the MRR scan
-
- Initialize the MRR scan. This function may do heavyweight scan
- initialization like row prefetching/sorting/etc (NOTE: but better not do
- it here as we may not need it, e.g. if we never satisfy WHERE clause on
- previous tables. For many implementations it would be natural to do such
- initializations in the first multi_read_range_next() call)
-
- mode is a combination of the following flags: HA_MRR_SORTED,
- HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION
-
- @param seq Range sequence to be traversed
- @param seq_init_param First parameter for seq->init()
- @param n_ranges Number of ranges in the sequence
- @param mode Flags, see the description section for the details
- @param buf INOUT: memory buffer to be used
-
- @note
- One must have called index_init() before calling this function. Several
- multi_range_read_init() calls may be made in course of one query.
-
- Until WL#2623 is done (see its text, section 3.2), the following will
- also hold:
- The caller will guarantee that if "seq->init == mrr_ranges_array_init"
- then seq_init_param is an array of n_ranges KEY_MULTI_RANGE structures.
- This property will only be used by NDB handler until WL#2623 is done.
-
- Buffer memory management is done according to the following scenario:
- The caller allocates the buffer and provides it to the callee by filling
- the members of HANDLER_BUFFER structure.
- The callee consumes all or some fraction of the provided buffer space, and
- sets the HANDLER_BUFFER members accordingly.
- The callee may use the buffer memory until the next multi_range_read_init()
- call is made, all records have been read, or until index_end() call is
- made, whichever comes first.
-
- @retval 0 OK
- @retval 1 Error
-*/
-
-int
-handler::multi_range_read_init(RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
- uint n_ranges, uint mode, HANDLER_BUFFER *buf)
-{
- DBUG_ENTER("handler::multi_range_read_init");
- mrr_iter= seq_funcs->init(seq_init_param, n_ranges, mode);
- mrr_funcs= *seq_funcs;
- mrr_is_output_sorted= test(mode & HA_MRR_SORTED);
- mrr_have_range= FALSE;
- DBUG_RETURN(0);
-}
-
-
-/**
- Get next record in MRR scan
-
- Default MRR implementation: read the next record
-
- @param range_info OUT Undefined if HA_MRR_NO_ASSOCIATION flag is in effect
- Otherwise, the opaque value associated with the range
- that contains the returned record.
-
- @retval 0 OK
- @retval other Error code
-*/
-
-int handler::multi_range_read_next(char **range_info)
-{
- int UNINIT_VAR(result);
- int range_res;
- DBUG_ENTER("handler::multi_range_read_next");
-
- if (!mrr_have_range)
- {
- mrr_have_range= TRUE;
- goto start;
- }
-
- do
- {
- /* Save a call if there can be only one row in range. */
- if (mrr_cur_range.range_flag != (UNIQUE_RANGE | EQ_RANGE))
- {
- result= read_range_next();
- /* On success or non-EOF errors jump to the end. */
- if (result != HA_ERR_END_OF_FILE)
- break;
- }
- else
- {
- if (was_semi_consistent_read())
- goto scan_it_again;
- /*
- We need to set this for the last range only, but checking this
- condition is more expensive than just setting the result code.
- */
- result= HA_ERR_END_OF_FILE;
- }
-
-start:
- /* Try the next range(s) until one matches a record. */
- while (!(range_res= mrr_funcs.next(mrr_iter, &mrr_cur_range)))
- {
-scan_it_again:
- result= read_range_first(mrr_cur_range.start_key.keypart_map ?
- &mrr_cur_range.start_key : 0,
- mrr_cur_range.end_key.keypart_map ?
- &mrr_cur_range.end_key : 0,
- test(mrr_cur_range.range_flag & EQ_RANGE),
- mrr_is_output_sorted);
- if (result != HA_ERR_END_OF_FILE)
- break;
- }
- }
- while ((result == HA_ERR_END_OF_FILE) && !range_res);
-
- *range_info= mrr_cur_range.ptr;
- DBUG_PRINT("exit",("handler::multi_range_read_next result %d", result));
- DBUG_RETURN(result);
-}
-
=== removed file 'sql/ds_mrr.h'
--- a/sql/ds_mrr.h 2009-12-15 21:35:55 +0000
+++ b/sql/ds_mrr.h 1970-01-01 00:00:00 +0000
@@ -1,71 +0,0 @@
-/*
- This file contains declarations for
- - Disk-Sweep MultiRangeRead (DS-MRR) implementation
- - Index Condition Pushdown helper functions
-*/
-
-/**
- A Disk-Sweep MRR interface implementation
-
- This implementation makes range (and, in the future, 'ref') scans to read
- table rows in disk sweeps.
-
- Currently it is used by MyISAM and InnoDB. Potentially it can be used with
- any table handler that has non-clustered indexes and on-disk rows.
-*/
-
-class DsMrr_impl
-{
-public:
- typedef void (handler::*range_check_toggle_func_t)(bool on);
-
- DsMrr_impl()
- : h2(NULL) {};
-
- /*
- The "owner" handler object (the one that calls dsmrr_XXX functions.
- It is used to retrieve full table rows by calling rnd_pos().
- */
- handler *h;
- TABLE *table; /* Always equal to h->table */
-private:
- /* Secondary handler object. It is used for scanning the index */
- handler *h2;
-
- /* Buffer to store rowids, or (rowid, range_id) pairs */
- uchar *rowids_buf;
- uchar *rowids_buf_cur; /* Current position when reading/writing */
- uchar *rowids_buf_last; /* When reading: end of used buffer space */
- uchar *rowids_buf_end; /* End of the buffer */
-
- bool dsmrr_eof; /* TRUE <=> We have reached EOF when reading index tuples */
-
- /* TRUE <=> need range association, buffer holds {rowid, range_id} pairs */
- bool is_mrr_assoc;
-
- bool use_default_impl; /* TRUE <=> shortcut all calls to default MRR impl */
-public:
- void init(handler *h_arg, TABLE *table_arg)
- {
- h= h_arg;
- table= table_arg;
- }
- int dsmrr_init(handler *h, RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
- uint n_ranges, uint mode, HANDLER_BUFFER *buf);
- void dsmrr_close();
- int dsmrr_fill_buffer();
- int dsmrr_next(char **range_info);
-
- ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint *bufsz,
- uint *flags, COST_VECT *cost);
-
- ha_rows dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
- void *seq_init_param, uint n_ranges, uint *bufsz,
- uint *flags, COST_VECT *cost);
-private:
- bool choose_mrr_impl(uint keyno, ha_rows rows, uint *flags, uint *bufsz,
- COST_VECT *cost);
- bool get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
- uint *buffer_size, COST_VECT *cost);
-};
-
=== modified file 'sql/handler.h'
--- a/sql/handler.h 2009-12-15 17:23:55 +0000
+++ b/sql/handler.h 2009-12-22 12:33:21 +0000
@@ -2314,7 +2314,7 @@ private:
friend class DsMrr_impl;
};
-#include "ds_mrr.h"
+#include "multi_range_read.h"
/* Some extern variables used with handlers */
=== added file 'sql/multi_range_read.cc'
--- a/sql/multi_range_read.cc 1970-01-01 00:00:00 +0000
+++ b/sql/multi_range_read.cc 2009-12-22 12:33:21 +0000
@@ -0,0 +1,944 @@
+#include "mysql_priv.h"
+#include "sql_select.h"
+
+/****************************************************************************
+ * Default MRR implementation (MRR to non-MRR converter)
+ ***************************************************************************/
+
+/**
+ Get cost and other information about MRR scan over a known list of ranges
+
+ Calculate estimated cost and other information about an MRR scan for given
+ sequence of ranges.
+
+ @param keyno Index number
+ @param seq Range sequence to be traversed
+ @param seq_init_param First parameter for seq->init()
+ @param n_ranges_arg Number of ranges in the sequence, or 0 if the caller
+ can't efficiently determine it
+ @param bufsz INOUT IN: Size of the buffer available for use
+ OUT: Size of the buffer that is expected to be actually
+ used, or 0 if buffer is not needed.
+ @param flags INOUT A combination of HA_MRR_* flags
+ @param cost OUT Estimated cost of MRR access
+
+ @note
+ This method (or an overriding one in a derived class) must check for
+ thd->killed and return HA_POS_ERROR if it is not zero. This is required
+ for a user to be able to interrupt the calculation by killing the
+ connection/query.
+
+ @retval
+ HA_POS_ERROR Error or the engine is unable to perform the requested
+ scan. Values of OUT parameters are undefined.
+ @retval
+ other OK, *cost contains cost of the scan, *bufsz and *flags
+ contain scan parameters.
+*/
+
+ha_rows
+handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
+ void *seq_init_param, uint n_ranges_arg,
+ uint *bufsz, uint *flags, COST_VECT *cost)
+{
+ KEY_MULTI_RANGE range;
+ range_seq_t seq_it;
+ ha_rows rows, total_rows= 0;
+ uint n_ranges=0;
+ THD *thd= current_thd;
+
+ /* Default MRR implementation doesn't need buffer */
+ *bufsz= 0;
+
+ seq_it= seq->init(seq_init_param, n_ranges, *flags);
+ while (!seq->next(seq_it, &range))
+ {
+ if (unlikely(thd->killed != 0))
+ return HA_POS_ERROR;
+
+ n_ranges++;
+ key_range *min_endp, *max_endp;
+ if (range.range_flag & GEOM_FLAG)
+ {
+ /* In this case tmp_min_flag contains the handler-read-function */
+ range.start_key.flag= (ha_rkey_function) (range.range_flag ^ GEOM_FLAG);
+ min_endp= &range.start_key;
+ max_endp= NULL;
+ }
+ else
+ {
+ min_endp= range.start_key.length? &range.start_key : NULL;
+ max_endp= range.end_key.length? &range.end_key : NULL;
+ }
+ if ((range.range_flag & UNIQUE_RANGE) && !(range.range_flag & NULL_RANGE))
+ rows= 1; /* there can be at most one row */
+ else
+ {
+ if (HA_POS_ERROR == (rows= this->records_in_range(keyno, min_endp,
+ max_endp)))
+ {
+ /* Can't scan one range => can't do MRR scan at all */
+ total_rows= HA_POS_ERROR;
+ break;
+ }
+ }
+ total_rows += rows;
+ }
+
+ if (total_rows != HA_POS_ERROR)
+ {
+ /* The following calculation is the same as in multi_range_read_info(): */
+ *flags |= HA_MRR_USE_DEFAULT_IMPL;
+ cost->zero();
+ cost->avg_io_cost= 1; /* assume random seeks */
+ if ((*flags & HA_MRR_INDEX_ONLY) && total_rows > 2)
+ cost->io_count= index_only_read_time(keyno, (uint)total_rows);
+ else
+ cost->io_count= read_time(keyno, n_ranges, total_rows);
+ cost->cpu_cost= (double) total_rows / TIME_FOR_COMPARE + 0.01;
+ }
+ return total_rows;
+}
+
+
+/**
+ Get cost and other information about MRR scan over some sequence of ranges
+
+ Calculate estimated cost and other information about an MRR scan for some
+ sequence of ranges.
+
+ The ranges themselves will be known only at execution phase. When this
+ function is called we only know number of ranges and a (rough) E(#records)
+ within those ranges.
+
+ Currently this function is only called for "n-keypart singlepoint" ranges,
+ i.e. each range is "keypart1=someconst1 AND ... AND keypartN=someconstN"
+
+ The flags parameter is a combination of those flags: HA_MRR_SORTED,
+ HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION, HA_MRR_LIMITS.
+
+ @param keyno Index number
+ @param n_ranges Estimated number of ranges (i.e. intervals) in the
+ range sequence.
+ @param n_rows Estimated total number of records contained within all
+ of the ranges
+ @param bufsz INOUT IN: Size of the buffer available for use
+ OUT: Size of the buffer that will be actually used, or
+ 0 if buffer is not needed.
+ @param flags INOUT A combination of HA_MRR_* flags
+ @param cost OUT Estimated cost of MRR access
+
+ @retval
+ 0 OK, *cost contains cost of the scan, *bufsz and *flags contain scan
+ parameters.
+ @retval
+ other Error or can't perform the requested scan
+*/
+
+ha_rows handler::multi_range_read_info(uint keyno, uint n_ranges, uint n_rows,
+ uint *bufsz, uint *flags, COST_VECT *cost)
+{
+ *bufsz= 0; /* Default implementation doesn't need a buffer */
+
+ *flags |= HA_MRR_USE_DEFAULT_IMPL;
+
+ cost->zero();
+ cost->avg_io_cost= 1; /* assume random seeks */
+
+ /* Produce the same cost as non-MRR code does */
+ if (*flags & HA_MRR_INDEX_ONLY)
+ cost->io_count= index_only_read_time(keyno, n_rows);
+ else
+ cost->io_count= read_time(keyno, n_ranges, n_rows);
+ return 0;
+}
+
+
+/**
+ Initialize the MRR scan
+
+ Initialize the MRR scan. This function may do heavyweight scan
+ initialization like row prefetching/sorting/etc (NOTE: but better not do
+ it here as we may not need it, e.g. if we never satisfy WHERE clause on
+ previous tables. For many implementations it would be natural to do such
+ initializations in the first multi_read_range_next() call)
+
+ mode is a combination of the following flags: HA_MRR_SORTED,
+ HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION
+
+ @param seq Range sequence to be traversed
+ @param seq_init_param First parameter for seq->init()
+ @param n_ranges Number of ranges in the sequence
+ @param mode Flags, see the description section for the details
+ @param buf INOUT: memory buffer to be used
+
+ @note
+ One must have called index_init() before calling this function. Several
+ multi_range_read_init() calls may be made in course of one query.
+
+ Until WL#2623 is done (see its text, section 3.2), the following will
+ also hold:
+ The caller will guarantee that if "seq->init == mrr_ranges_array_init"
+ then seq_init_param is an array of n_ranges KEY_MULTI_RANGE structures.
+ This property will only be used by NDB handler until WL#2623 is done.
+
+ Buffer memory management is done according to the following scenario:
+ The caller allocates the buffer and provides it to the callee by filling
+ the members of HANDLER_BUFFER structure.
+ The callee consumes all or some fraction of the provided buffer space, and
+ sets the HANDLER_BUFFER members accordingly.
+ The callee may use the buffer memory until the next multi_range_read_init()
+ call is made, all records have been read, or until index_end() call is
+ made, whichever comes first.
+
+ @retval 0 OK
+ @retval 1 Error
+*/
+
+int
+handler::multi_range_read_init(RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
+ uint n_ranges, uint mode, HANDLER_BUFFER *buf)
+{
+ DBUG_ENTER("handler::multi_range_read_init");
+ mrr_iter= seq_funcs->init(seq_init_param, n_ranges, mode);
+ mrr_funcs= *seq_funcs;
+ mrr_is_output_sorted= test(mode & HA_MRR_SORTED);
+ mrr_have_range= FALSE;
+ DBUG_RETURN(0);
+}
+
+
+/**
+ Get next record in MRR scan
+
+ Default MRR implementation: read the next record
+
+ @param range_info OUT Undefined if HA_MRR_NO_ASSOCIATION flag is in effect
+ Otherwise, the opaque value associated with the range
+ that contains the returned record.
+
+ @retval 0 OK
+ @retval other Error code
+*/
+
+int handler::multi_range_read_next(char **range_info)
+{
+ int UNINIT_VAR(result);
+ int range_res;
+ DBUG_ENTER("handler::multi_range_read_next");
+
+ if (!mrr_have_range)
+ {
+ mrr_have_range= TRUE;
+ goto start;
+ }
+
+ do
+ {
+ /* Save a call if there can be only one row in range. */
+ if (mrr_cur_range.range_flag != (UNIQUE_RANGE | EQ_RANGE))
+ {
+ result= read_range_next();
+ /* On success or non-EOF errors jump to the end. */
+ if (result != HA_ERR_END_OF_FILE)
+ break;
+ }
+ else
+ {
+ if (was_semi_consistent_read())
+ goto scan_it_again;
+ /*
+ We need to set this for the last range only, but checking this
+ condition is more expensive than just setting the result code.
+ */
+ result= HA_ERR_END_OF_FILE;
+ }
+
+start:
+ /* Try the next range(s) until one matches a record. */
+ while (!(range_res= mrr_funcs.next(mrr_iter, &mrr_cur_range)))
+ {
+scan_it_again:
+ result= read_range_first(mrr_cur_range.start_key.keypart_map ?
+ &mrr_cur_range.start_key : 0,
+ mrr_cur_range.end_key.keypart_map ?
+ &mrr_cur_range.end_key : 0,
+ test(mrr_cur_range.range_flag & EQ_RANGE),
+ mrr_is_output_sorted);
+ if (result != HA_ERR_END_OF_FILE)
+ break;
+ }
+ }
+ while ((result == HA_ERR_END_OF_FILE) && !range_res);
+
+ *range_info= mrr_cur_range.ptr;
+ DBUG_PRINT("exit",("handler::multi_range_read_next result %d", result));
+ DBUG_RETURN(result);
+}
+
+/****************************************************************************
+ * DS-MRR implementation
+ ***************************************************************************/
+
+/**
+ DS-MRR: Initialize and start MRR scan
+
+ Initialize and start the MRR scan. Depending on the mode parameter, this
+ may use default or DS-MRR implementation.
+
+ @param h Table handler to be used
+ @param key Index to be used
+ @param seq_funcs Interval sequence enumeration functions
+ @param seq_init_param Interval sequence enumeration parameter
+ @param n_ranges Number of ranges in the sequence.
+ @param mode HA_MRR_* modes to use
+ @param buf INOUT Buffer to use
+
+ @retval 0 Ok, Scan started.
+ @retval other Error
+*/
+
+int DsMrr_impl::dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs,
+ void *seq_init_param, uint n_ranges, uint mode,
+ HANDLER_BUFFER *buf)
+{
+ uint elem_size;
+ Item *pushed_cond= NULL;
+ handler *new_h2= 0;
+ DBUG_ENTER("DsMrr_impl::dsmrr_init");
+
+ /*
+ index_merge may invoke a scan on an object for which dsmrr_info[_const]
+ has not been called, so set the owner handler here as well.
+ */
+ h= h_arg;
+ if (mode & HA_MRR_USE_DEFAULT_IMPL || mode & HA_MRR_SORTED)
+ {
+ use_default_impl= TRUE;
+ const int retval=
+ h->handler::multi_range_read_init(seq_funcs, seq_init_param,
+ n_ranges, mode, buf);
+ DBUG_RETURN(retval);
+ }
+ rowids_buf= buf->buffer;
+
+ is_mrr_assoc= !test(mode & HA_MRR_NO_ASSOCIATION);
+
+ if (is_mrr_assoc)
+ status_var_increment(table->in_use->status_var.ha_multi_range_read_init_count);
+
+ rowids_buf_end= buf->buffer_end;
+ elem_size= h->ref_length + (int)is_mrr_assoc * sizeof(void*);
+ rowids_buf_last= rowids_buf +
+ ((rowids_buf_end - rowids_buf)/ elem_size)*
+ elem_size;
+ rowids_buf_end= rowids_buf_last;
+
+ /*
+ There can be two cases:
+ - This is the first call since index_init(), h2==NULL
+ Need to setup h2 then.
+ - This is not the first call, h2 is initalized and set up appropriately.
+ The caller might have called h->index_init(), need to switch h to
+ rnd_pos calls.
+ */
+ if (!h2)
+ {
+ /* Create a separate handler object to do rndpos() calls. */
+ THD *thd= current_thd;
+ /*
+ ::clone() takes up a lot of stack, especially on 64 bit platforms.
+ The constant 5 is an empiric result.
+ */
+ if (check_stack_overrun(thd, 5*STACK_MIN_SIZE, (uchar*) &new_h2))
+ DBUG_RETURN(1);
+ DBUG_ASSERT(h->active_index != MAX_KEY);
+ uint mrr_keyno= h->active_index;
+
+ /* Create a separate handler object to do rndpos() calls. */
+ if (!(new_h2= h->clone(thd->mem_root)) ||
+ new_h2->ha_external_lock(thd, F_RDLCK))
+ {
+ delete new_h2;
+ DBUG_RETURN(1);
+ }
+
+ if (mrr_keyno == h->pushed_idx_cond_keyno)
+ pushed_cond= h->pushed_idx_cond;
+
+ /*
+ Caution: this call will invoke this->dsmrr_close(). Do not put the
+ created secondary table handler into this->h2 or it will delete it.
+ */
+ if (h->ha_index_end())
+ {
+ h2=new_h2;
+ goto error;
+ }
+
+ h2= new_h2; /* Ok, now can put it into h2 */
+ table->prepare_for_position();
+ h2->extra(HA_EXTRA_KEYREAD);
+
+ if (h2->ha_index_init(mrr_keyno, FALSE))
+ goto error;
+
+ use_default_impl= FALSE;
+ if (pushed_cond)
+ h2->idx_cond_push(mrr_keyno, pushed_cond);
+ }
+ else
+ {
+ /*
+ We get here when the access alternates betwen MRR scan(s) and non-MRR
+ scans.
+
+ Calling h->index_end() will invoke dsmrr_close() for this object,
+ which will delete h2. We need to keep it, so save put it away and dont
+ let it be deleted:
+ */
+ handler *save_h2= h2;
+ h2= NULL;
+ int res= (h->inited == handler::INDEX && h->ha_index_end());
+ h2= save_h2;
+ use_default_impl= FALSE;
+ if (res)
+ goto error;
+ }
+
+ if (h2->handler::multi_range_read_init(seq_funcs, seq_init_param, n_ranges,
+ mode, buf) ||
+ dsmrr_fill_buffer())
+ {
+ goto error;
+ }
+ /*
+ If the above call has scanned through all intervals in *seq, then
+ adjust *buf to indicate that the remaining buffer space will not be used.
+ */
+ if (dsmrr_eof)
+ buf->end_of_used_area= rowids_buf_last;
+
+ /*
+ h->inited == INDEX may occur when 'range checked for each record' is
+ used.
+ */
+ if ((h->inited != handler::RND) &&
+ ((h->inited==handler::INDEX? h->ha_index_end(): FALSE) ||
+ (h->ha_rnd_init(FALSE))))
+ goto error;
+
+ use_default_impl= FALSE;
+ h->mrr_funcs= *seq_funcs;
+
+ DBUG_RETURN(0);
+error:
+ h2->ha_index_or_rnd_end();
+ h2->ha_external_lock(current_thd, F_UNLCK);
+ h2->close();
+ delete h2;
+ h2= NULL;
+ DBUG_RETURN(1);
+}
+
+
+void DsMrr_impl::dsmrr_close()
+{
+ DBUG_ENTER("DsMrr_impl::dsmrr_close");
+ if (h2)
+ {
+ h2->ha_index_or_rnd_end();
+ h2->ha_external_lock(current_thd, F_UNLCK);
+ h2->close();
+ delete h2;
+ h2= NULL;
+ }
+ use_default_impl= TRUE;
+ DBUG_VOID_RETURN;
+}
+
+
+static int rowid_cmp(void *h, uchar *a, uchar *b)
+{
+ return ((handler*)h)->cmp_ref(a, b);
+}
+
+
+/**
+ DS-MRR: Fill the buffer with rowids and sort it by rowid
+
+ {This is an internal function of DiskSweep MRR implementation}
+ Scan the MRR ranges and collect ROWIDs (or {ROWID, range_id} pairs) into
+ buffer. When the buffer is full or scan is completed, sort the buffer by
+ rowid and return.
+
+ The function assumes that rowids buffer is empty when it is invoked.
+
+ @param h Table handler
+
+ @retval 0 OK, the next portion of rowids is in the buffer,
+ properly ordered
+ @retval other Error
+*/
+
+int DsMrr_impl::dsmrr_fill_buffer()
+{
+ char *range_info;
+ int res;
+ DBUG_ENTER("DsMrr_impl::dsmrr_fill_buffer");
+
+ rowids_buf_cur= rowids_buf;
+ while ((rowids_buf_cur < rowids_buf_end) &&
+ !(res= h2->handler::multi_range_read_next(&range_info)))
+ {
+ KEY_MULTI_RANGE *curr_range= &h2->handler::mrr_cur_range;
+ if (h2->mrr_funcs.skip_index_tuple &&
+ h2->mrr_funcs.skip_index_tuple(h2->mrr_iter, curr_range->ptr))
+ continue;
+
+ /* Put rowid, or {rowid, range_id} pair into the buffer */
+ h2->position(table->record[0]);
+ memcpy(rowids_buf_cur, h2->ref, h2->ref_length);
+ rowids_buf_cur += h2->ref_length;
+
+ if (is_mrr_assoc)
+ {
+ memcpy(rowids_buf_cur, &range_info, sizeof(void*));
+ rowids_buf_cur += sizeof(void*);
+ }
+ }
+
+ if (res && res != HA_ERR_END_OF_FILE)
+ DBUG_RETURN(res);
+ dsmrr_eof= test(res == HA_ERR_END_OF_FILE);
+
+ /* Sort the buffer contents by rowid */
+ uint elem_size= h->ref_length + (int)is_mrr_assoc * sizeof(void*);
+ uint n_rowids= (rowids_buf_cur - rowids_buf) / elem_size;
+
+ my_qsort2(rowids_buf, n_rowids, elem_size, (qsort2_cmp)rowid_cmp,
+ (void*)h);
+ rowids_buf_last= rowids_buf_cur;
+ rowids_buf_cur= rowids_buf;
+ DBUG_RETURN(0);
+}
+
+
+/**
+ DS-MRR implementation: multi_range_read_next() function
+*/
+
+int DsMrr_impl::dsmrr_next(char **range_info)
+{
+ int res;
+ uchar *cur_range_info= 0;
+ uchar *rowid;
+
+ if (use_default_impl)
+ return h->handler::multi_range_read_next(range_info);
+
+ do
+ {
+ if (rowids_buf_cur == rowids_buf_last)
+ {
+ if (dsmrr_eof)
+ {
+ res= HA_ERR_END_OF_FILE;
+ goto end;
+ }
+ res= dsmrr_fill_buffer();
+ if (res)
+ goto end;
+ }
+
+ /* return eof if there are no rowids in the buffer after re-fill attempt */
+ if (rowids_buf_cur == rowids_buf_last)
+ {
+ res= HA_ERR_END_OF_FILE;
+ goto end;
+ }
+ rowid= rowids_buf_cur;
+
+ if (is_mrr_assoc)
+ memcpy(&cur_range_info, rowids_buf_cur + h->ref_length, sizeof(uchar**));
+
+ rowids_buf_cur += h->ref_length + sizeof(void*) * test(is_mrr_assoc);
+ if (h2->mrr_funcs.skip_record &&
+ h2->mrr_funcs.skip_record(h2->mrr_iter, (char *) cur_range_info, rowid))
+ continue;
+ res= h->rnd_pos(table->record[0], rowid);
+ break;
+ } while (true);
+
+ if (is_mrr_assoc)
+ {
+ memcpy(range_info, rowid + h->ref_length, sizeof(void*));
+ }
+end:
+ return res;
+}
+
+
+/**
+ DS-MRR implementation: multi_range_read_info() function
+*/
+ha_rows DsMrr_impl::dsmrr_info(uint keyno, uint n_ranges, uint rows,
+ uint *bufsz, uint *flags, COST_VECT *cost)
+{
+ ha_rows res;
+ uint def_flags= *flags;
+ uint def_bufsz= *bufsz;
+
+ /* Get cost/flags/mem_usage of default MRR implementation */
+ res= h->handler::multi_range_read_info(keyno, n_ranges, rows, &def_bufsz,
+ &def_flags, cost);
+ DBUG_ASSERT(!res);
+
+ if ((*flags & HA_MRR_USE_DEFAULT_IMPL) ||
+ choose_mrr_impl(keyno, rows, &def_flags, &def_bufsz, cost))
+ {
+ /* Default implementation is choosen */
+ DBUG_PRINT("info", ("Default MRR implementation choosen"));
+ *flags= def_flags;
+ *bufsz= def_bufsz;
+ }
+ else
+ {
+ /* *flags and *bufsz were set by choose_mrr_impl */
+ DBUG_PRINT("info", ("DS-MRR implementation choosen"));
+ }
+ return 0;
+}
+
+
+/**
+ DS-MRR Implementation: multi_range_read_info_const() function
+*/
+
+ha_rows DsMrr_impl::dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
+ void *seq_init_param, uint n_ranges,
+ uint *bufsz, uint *flags, COST_VECT *cost)
+{
+ ha_rows rows;
+ uint def_flags= *flags;
+ uint def_bufsz= *bufsz;
+ /* Get cost/flags/mem_usage of default MRR implementation */
+ rows= h->handler::multi_range_read_info_const(keyno, seq, seq_init_param,
+ n_ranges, &def_bufsz,
+ &def_flags, cost);
+ if (rows == HA_POS_ERROR)
+ {
+ /* Default implementation can't perform MRR scan => we can't either */
+ return rows;
+ }
+
+ /*
+ If HA_MRR_USE_DEFAULT_IMPL has been passed to us, that is an order to
+ use the default MRR implementation (we need it for UPDATE/DELETE).
+ Otherwise, make a choice based on cost and @@optimizer_use_mrr.
+ */
+ if ((*flags & HA_MRR_USE_DEFAULT_IMPL) ||
+ choose_mrr_impl(keyno, rows, flags, bufsz, cost))
+ {
+ DBUG_PRINT("info", ("Default MRR implementation choosen"));
+ *flags= def_flags;
+ *bufsz= def_bufsz;
+ }
+ else
+ {
+ /* *flags and *bufsz were set by choose_mrr_impl */
+ DBUG_PRINT("info", ("DS-MRR implementation choosen"));
+ }
+ return rows;
+}
+
+
+/**
+ Check if key has partially-covered columns
+
+ We can't use DS-MRR to perform range scans when the ranges are over
+ partially-covered keys, because we'll not have full key part values
+ (we'll have their prefixes from the index) and will not be able to check
+ if we've reached the end the range.
+
+ @param keyno Key to check
+
+ @todo
+ Allow use of DS-MRR in cases where the index has partially-covered
+ components but they are not used for scanning.
+
+ @retval TRUE Yes
+ @retval FALSE No
+*/
+
+bool key_uses_partial_cols(TABLE *table, uint keyno)
+{
+ KEY_PART_INFO *kp= table->key_info[keyno].key_part;
+ KEY_PART_INFO *kp_end= kp + table->key_info[keyno].key_parts;
+ for (; kp != kp_end; kp++)
+ {
+ if (!kp->field->part_of_key.is_set(keyno))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
+ DS-MRR Internals: Choose between Default MRR implementation and DS-MRR
+
+ Make the choice between using Default MRR implementation and DS-MRR.
+ This function contains common functionality factored out of dsmrr_info()
+ and dsmrr_info_const(). The function assumes that the default MRR
+ implementation's applicability requirements are satisfied.
+
+ @param keyno Index number
+ @param rows E(full rows to be retrieved)
+ @param flags IN MRR flags provided by the MRR user
+ OUT If DS-MRR is choosen, flags of DS-MRR implementation
+ else the value is not modified
+ @param bufsz IN If DS-MRR is choosen, buffer use of DS-MRR implementation
+ else the value is not modified
+ @param cost IN Cost of default MRR implementation
+ OUT If DS-MRR is choosen, cost of DS-MRR scan
+ else the value is not modified
+
+ @retval TRUE Default MRR implementation should be used
+ @retval FALSE DS-MRR implementation should be used
+*/
+
+bool DsMrr_impl::choose_mrr_impl(uint keyno, ha_rows rows, uint *flags,
+ uint *bufsz, COST_VECT *cost)
+{
+ COST_VECT dsmrr_cost;
+ bool res;
+ THD *thd= current_thd;
+ if (thd->variables.optimizer_use_mrr == 2 || *flags & HA_MRR_INDEX_ONLY ||
+ (keyno == table->s->primary_key && h->primary_key_is_clustered()) ||
+ key_uses_partial_cols(table, keyno))
+ {
+ /* Use the default implementation */
+ *flags |= HA_MRR_USE_DEFAULT_IMPL;
+ return TRUE;
+ }
+
+ uint add_len= table->key_info[keyno].key_length + h->ref_length;
+ *bufsz -= add_len;
+ if (get_disk_sweep_mrr_cost(keyno, rows, *flags, bufsz, &dsmrr_cost))
+ return TRUE;
+ *bufsz += add_len;
+
+ bool force_dsmrr;
+ /*
+ If @@optimizer_use_mrr==force, then set cost of DS-MRR to be minimum of
+ DS-MRR and Default implementations cost. This allows one to force use of
+ DS-MRR whenever it is applicable without affecting other cost-based
+ choices.
+ */
+ if ((force_dsmrr= (thd->variables.optimizer_use_mrr == 1)) &&
+ dsmrr_cost.total_cost() > cost->total_cost())
+ dsmrr_cost= *cost;
+
+ if (force_dsmrr || dsmrr_cost.total_cost() <= cost->total_cost())
+ {
+ *flags &= ~HA_MRR_USE_DEFAULT_IMPL; /* Use the DS-MRR implementation */
+ *flags &= ~HA_MRR_SORTED; /* We will return unordered output */
+ *cost= dsmrr_cost;
+ res= FALSE;
+ }
+ else
+ {
+ /* Use the default MRR implementation */
+ res= TRUE;
+ }
+ return res;
+}
+
+
+static void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, COST_VECT *cost);
+
+
+/**
+ Get cost of DS-MRR scan
+
+ @param keynr Index to be used
+ @param rows E(Number of rows to be scanned)
+ @param flags Scan parameters (HA_MRR_* flags)
+ @param buffer_size INOUT Buffer size
+ @param cost OUT The cost
+
+ @retval FALSE OK
+ @retval TRUE Error, DS-MRR cannot be used (the buffer is too small
+ for even 1 rowid)
+*/
+
+bool DsMrr_impl::get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
+ uint *buffer_size, COST_VECT *cost)
+{
+ ulong max_buff_entries, elem_size;
+ ha_rows rows_in_full_step, rows_in_last_step;
+ uint n_full_steps;
+ double index_read_cost;
+
+ elem_size= h->ref_length + sizeof(void*) * (!test(flags & HA_MRR_NO_ASSOCIATION));
+ max_buff_entries = *buffer_size / elem_size;
+
+ if (!max_buff_entries)
+ return TRUE; /* Buffer has not enough space for even 1 rowid */
+
+ /* Number of iterations we'll make with full buffer */
+ n_full_steps= (uint)floor(rows2double(rows) / max_buff_entries);
+
+ /*
+ Get numbers of rows we'll be processing in
+ - non-last sweep, with full buffer
+ - last iteration, with non-full buffer
+ */
+ rows_in_full_step= max_buff_entries;
+ rows_in_last_step= rows % max_buff_entries;
+
+ /* Adjust buffer size if we expect to use only part of the buffer */
+ if (n_full_steps)
+ {
+ get_sort_and_sweep_cost(table, rows, cost);
+ cost->multiply(n_full_steps);
+ }
+ else
+ {
+ cost->zero();
+ *buffer_size= max(*buffer_size,
+ (size_t)(1.2*rows_in_last_step) * elem_size +
+ h->ref_length + table->key_info[keynr].key_length);
+ }
+
+ COST_VECT last_step_cost;
+ get_sort_and_sweep_cost(table, rows_in_last_step, &last_step_cost);
+ cost->add(&last_step_cost);
+
+ if (n_full_steps != 0)
+ cost->mem_cost= *buffer_size;
+ else
+ cost->mem_cost= (double)rows_in_last_step * elem_size;
+
+ /* Total cost of all index accesses */
+ index_read_cost= h->index_only_read_time(keynr, (double)rows);
+ cost->add_io(index_read_cost, 1 /* Random seeks */);
+ return FALSE;
+}
+
+
+/*
+ Get cost of one sort-and-sweep step
+
+ SYNOPSIS
+ get_sort_and_sweep_cost()
+ table Table being accessed
+ nrows Number of rows to be sorted and retrieved
+ cost OUT The cost
+
+ DESCRIPTION
+ Get cost of these operations:
+ - sort an array of #nrows ROWIDs using qsort
+ - read #nrows records from table in a sweep.
+*/
+
+static
+void get_sort_and_sweep_cost(TABLE *table, ha_rows nrows, COST_VECT *cost)
+{
+ if (nrows)
+ {
+ get_sweep_read_cost(table, nrows, FALSE, cost);
+ /* Add cost of qsort call: n * log2(n) * cost(rowid_comparison) */
+ double cmp_op= rows2double(nrows) * (1.0 / TIME_FOR_COMPARE_ROWID);
+ if (cmp_op < 3)
+ cmp_op= 3;
+ cost->cpu_cost += cmp_op * log2(cmp_op);
+ }
+ else
+ cost->zero();
+}
+
+
+/**
+ Get cost of reading nrows table records in a "disk sweep"
+
+ A disk sweep read is a sequence of handler->rnd_pos(rowid) calls that made
+ for an ordered sequence of rowids.
+
+ We assume hard disk IO. The read is performed as follows:
+
+ 1. The disk head is moved to the needed cylinder
+ 2. The controller waits for the plate to rotate
+ 3. The data is transferred
+
+ Time to do #3 is insignificant compared to #2+#1.
+
+ Time to move the disk head is proportional to head travel distance.
+
+ Time to wait for the plate to rotate depends on whether the disk head
+ was moved or not.
+
+ If disk head wasn't moved, the wait time is proportional to distance
+ between the previous block and the block we're reading.
+
+ If the head was moved, we don't know how much we'll need to wait for the
+ plate to rotate. We assume the wait time to be a variate with a mean of
+ 0.5 of full rotation time.
+
+ Our cost units are "random disk seeks". The cost of random disk seek is
+ actually not a constant, it depends one range of cylinders we're going
+ to access. We make it constant by introducing a fuzzy concept of "typical
+ datafile length" (it's fuzzy as it's hard to tell whether it should
+ include index file, temp.tables etc). Then random seek cost is:
+
+ 1 = half_rotation_cost + move_cost * 1/3 * typical_data_file_length
+
+ We define half_rotation_cost as DISK_SEEK_BASE_COST=0.9.
+
+ @param table Table to be accessed
+ @param nrows Number of rows to retrieve
+ @param interrupted TRUE <=> Assume that the disk sweep will be
+ interrupted by other disk IO. FALSE - otherwise.
+ @param cost OUT The cost.
+*/
+
+void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted,
+ COST_VECT *cost)
+{
+ DBUG_ENTER("get_sweep_read_cost");
+
+ cost->zero();
+ if (table->file->primary_key_is_clustered())
+ {
+ cost->io_count= table->file->read_time(table->s->primary_key,
+ (uint) nrows, nrows);
+ }
+ else
+ {
+ double n_blocks=
+ ceil(ulonglong2double(table->file->stats.data_file_length) / IO_SIZE);
+ double busy_blocks=
+ n_blocks * (1.0 - pow(1.0 - 1.0/n_blocks, rows2double(nrows)));
+ if (busy_blocks < 1.0)
+ busy_blocks= 1.0;
+
+ DBUG_PRINT("info",("sweep: nblocks=%g, busy_blocks=%g", n_blocks,
+ busy_blocks));
+ cost->io_count= busy_blocks;
+
+ if (!interrupted)
+ {
+ /* Assume reading is done in one 'sweep' */
+ cost->avg_io_cost= (DISK_SEEK_BASE_COST +
+ DISK_SEEK_PROP_COST*n_blocks/busy_blocks);
+ }
+ }
+ DBUG_PRINT("info",("returning cost=%g", cost->total_cost()));
+ DBUG_VOID_RETURN;
+}
+
+
+/* **************************************************************************
+ * DS-MRR implementation ends
+ ***************************************************************************/
+
+
=== added file 'sql/multi_range_read.h'
--- a/sql/multi_range_read.h 1970-01-01 00:00:00 +0000
+++ b/sql/multi_range_read.h 2009-12-22 12:33:21 +0000
@@ -0,0 +1,70 @@
+/*
+ This file contains declarations for
+ - Disk-Sweep MultiRangeRead (DS-MRR) implementation
+*/
+
+/**
+ A Disk-Sweep MRR interface implementation
+
+ This implementation makes range (and, in the future, 'ref') scans to read
+ table rows in disk sweeps.
+
+ Currently it is used by MyISAM and InnoDB. Potentially it can be used with
+ any table handler that has non-clustered indexes and on-disk rows.
+*/
+
+class DsMrr_impl
+{
+public:
+ typedef void (handler::*range_check_toggle_func_t)(bool on);
+
+ DsMrr_impl()
+ : h2(NULL) {};
+
+ /*
+ The "owner" handler object (the one that calls dsmrr_XXX functions.
+ It is used to retrieve full table rows by calling rnd_pos().
+ */
+ handler *h;
+ TABLE *table; /* Always equal to h->table */
+private:
+ /* Secondary handler object. It is used for scanning the index */
+ handler *h2;
+
+ /* Buffer to store rowids, or (rowid, range_id) pairs */
+ uchar *rowids_buf;
+ uchar *rowids_buf_cur; /* Current position when reading/writing */
+ uchar *rowids_buf_last; /* When reading: end of used buffer space */
+ uchar *rowids_buf_end; /* End of the buffer */
+
+ bool dsmrr_eof; /* TRUE <=> We have reached EOF when reading index tuples */
+
+ /* TRUE <=> need range association, buffer holds {rowid, range_id} pairs */
+ bool is_mrr_assoc;
+
+ bool use_default_impl; /* TRUE <=> shortcut all calls to default MRR impl */
+public:
+ void init(handler *h_arg, TABLE *table_arg)
+ {
+ h= h_arg;
+ table= table_arg;
+ }
+ int dsmrr_init(handler *h, RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
+ uint n_ranges, uint mode, HANDLER_BUFFER *buf);
+ void dsmrr_close();
+ int dsmrr_fill_buffer();
+ int dsmrr_next(char **range_info);
+
+ ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint *bufsz,
+ uint *flags, COST_VECT *cost);
+
+ ha_rows dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq,
+ void *seq_init_param, uint n_ranges, uint *bufsz,
+ uint *flags, COST_VECT *cost);
+private:
+ bool choose_mrr_impl(uint keyno, ha_rows rows, uint *flags, uint *bufsz,
+ COST_VECT *cost);
+ bool get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags,
+ uint *buffer_size, COST_VECT *cost);
+};
+
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-12-15 07:16:46 +0000
+++ b/sql/mysql_priv.h 2009-12-22 12:33:21 +0000
@@ -540,12 +540,13 @@ protected:
#define OPTIMIZER_SWITCH_INDEX_MERGE_UNION 2
#define OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION 4
#define OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT 8
+#define OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN 16
#ifdef DBUG_OFF
-# define OPTIMIZER_SWITCH_LAST 16
-#else
-# define OPTIMIZER_SWITCH_TABLE_ELIMINATION 16
# define OPTIMIZER_SWITCH_LAST 32
+#else
+# define OPTIMIZER_SWITCH_TABLE_ELIMINATION 32
+# define OPTIMIZER_SWITCH_LAST 64
#endif
#ifdef DBUG_OFF
@@ -553,12 +554,14 @@ protected:
# define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
- OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT)
+ OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT | \
+ OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN)
#else
# define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT | \
+ OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN | \
OPTIMIZER_SWITCH_TABLE_ELIMINATION)
#endif
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-12-21 02:26:15 +0000
+++ b/sql/mysqld.cc 2009-12-22 12:49:15 +0000
@@ -300,6 +300,7 @@ static const char *optimizer_switch_name
{
"index_merge","index_merge_union","index_merge_sort_union",
"index_merge_intersection",
+ "index_condition_pushdown",
#ifndef DBUG_OFF
"table_elimination",
#endif
@@ -313,6 +314,7 @@ static const unsigned int optimizer_swit
sizeof("index_merge_union") - 1,
sizeof("index_merge_sort_union") - 1,
sizeof("index_merge_intersection") - 1,
+ sizeof("index_condition_pushdown") - 1,
#ifndef DBUG_OFF
sizeof("table_elimination") - 1,
#endif
@@ -391,7 +393,8 @@ static const char *sql_mode_str= "OFF";
/* Text representation for OPTIMIZER_SWITCH_DEFAULT */
static const char *optimizer_switch_str="index_merge=on,index_merge_union=on,"
"index_merge_sort_union=on,"
- "index_merge_intersection=on"
+ "index_merge_intersection=on,"
+ "index_condition_pushdown=on"
#ifndef DBUG_OFF
",table_elimination=on";
#else
@@ -5767,7 +5770,7 @@ enum options_mysqld
OPT_MAX_SEEKS_FOR_KEY, OPT_MAX_TMP_TABLES, OPT_MAX_USER_CONNECTIONS,
OPT_MAX_LENGTH_FOR_SORT_DATA,
OPT_MAX_WRITE_LOCK_COUNT, OPT_BULK_INSERT_BUFFER_SIZE,
- OPT_MAX_ERROR_COUNT, OPT_MULTI_RANGE_COUNT, OPT_MYISAM_DATA_POINTER_SIZE,
+ OPT_MAX_ERROR_COUNT, OPT_MRR_BUFFER_SIZE, OPT_MYISAM_DATA_POINTER_SIZE,
OPT_MYISAM_BLOCK_SIZE, OPT_MYISAM_MAX_EXTRA_SORT_FILE_SIZE,
OPT_MYISAM_MAX_SORT_FILE_SIZE, OPT_MYISAM_SORT_BUFFER_SIZE,
@@ -6968,6 +6971,12 @@ The minimum value for this variable is 4
(uchar**) &global_system_variables.min_examined_row_limit,
(uchar**) &max_system_variables.min_examined_row_limit, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, (longlong) ULONG_MAX, 0, 1L, 0},
+ {"mrr_buffer_size", OPT_MRR_BUFFER_SIZE,
+ "Size of buffer to use when using MRR with range access",
+ (uchar**) &global_system_variables.mrr_buff_size,
+ (uchar**) &max_system_variables.mrr_buff_size, 0,
+ GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD,
+ INT_MAX32, MALLOC_OVERHEAD, 1 /* Small to be able to do tests */ , 0},
{"myisam_block_size", OPT_MYISAM_BLOCK_SIZE,
"Block size to be used for MyISAM index pages.",
(uchar**) &opt_myisam_block_size,
@@ -7047,7 +7056,8 @@ The minimum value for this variable is 4
0, GET_ULONG, OPT_ARG, MAX_TABLES+1, 0, MAX_TABLES+2, 0, 1, 0},
{"optimizer_switch", OPT_OPTIMIZER_SWITCH,
"optimizer_switch=option=val[,option=val...], where option={index_merge, "
- "index_merge_union, index_merge_sort_union, index_merge_intersection"
+ "index_merge_union, index_merge_sort_union, index_merge_intersection, "
+ "index_condition_pushdown"
#ifndef DBUG_OFF
", table_elimination"
#endif
@@ -7131,7 +7141,7 @@ The minimum value for this variable is 4
(uchar**) &global_system_variables.read_rnd_buff_size,
(uchar**) &max_system_variables.read_rnd_buff_size, 0,
GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD,
- INT_MAX32, MALLOC_OVERHEAD, 1 /* Small overhead to be able to test MRR, was: IO_SIZE*/ , 0},
+ INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0},
{"record_buffer", OPT_RECORD_BUFFER,
"Alias for read_buffer_size",
(uchar**) &global_system_variables.read_buff_size,
=== added file 'sql/opt_index_cond_pushdown.cc'
--- a/sql/opt_index_cond_pushdown.cc 1970-01-01 00:00:00 +0000
+++ b/sql/opt_index_cond_pushdown.cc 2009-12-22 12:49:15 +0000
@@ -0,0 +1,387 @@
+#include "mysql_priv.h"
+#include "sql_select.h"
+
+/****************************************************************************
+ * Index Condition Pushdown code starts
+ ***************************************************************************/
+/*
+ Check if given expression uses only table fields covered by the given index
+
+ SYNOPSIS
+ uses_index_fields_only()
+ item Expression to check
+ tbl The table having the index
+ keyno The index number
+ other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
+
+ DESCRIPTION
+ Check if given expression only uses fields covered by index #keyno in the
+ table tbl. The expression can use any fields in any other tables.
+
+ The expression is guaranteed not to be AND or OR - those constructs are
+ handled outside of this function.
+
+ RETURN
+ TRUE Yes
+ FALSE No
+*/
+
+bool uses_index_fields_only(Item *item, TABLE *tbl, uint keyno,
+ bool other_tbls_ok)
+{
+ if (item->const_item())
+ return TRUE;
+
+ /*
+ Don't push down the triggered conditions. Nested outer joins execution
+ code may need to evaluate a condition several times (both triggered and
+ untriggered), and there is no way to put thi
+ TODO: Consider cloning the triggered condition and using the copies for:
+ 1. push the first copy down, to have most restrictive index condition
+ possible
+ 2. Put the second copy into tab->select_cond.
+ */
+ if (item->type() == Item::FUNC_ITEM &&
+ ((Item_func*)item)->functype() == Item_func::TRIG_COND_FUNC)
+ return FALSE;
+
+ if (!(item->used_tables() & tbl->map))
+ return other_tbls_ok;
+
+ Item::Type item_type= item->type();
+ switch (item_type) {
+ case Item::FUNC_ITEM:
+ {
+ /* This is a function, apply condition recursively to arguments */
+ Item_func *item_func= (Item_func*)item;
+ Item **child;
+ Item **item_end= (item_func->arguments()) + item_func->argument_count();
+ for (child= item_func->arguments(); child != item_end; child++)
+ {
+ if (!uses_index_fields_only(*child, tbl, keyno, other_tbls_ok))
+ return FALSE;
+ }
+ return TRUE;
+ }
+ case Item::COND_ITEM:
+ {
+ /*
+ This is a AND/OR condition. Regular AND/OR clauses are handled by
+ make_cond_for_index() which will chop off the part that can be
+ checked with index. This code is for handling non-top-level AND/ORs,
+ e.g. func(x AND y).
+ */
+ List_iterator<Item> li(*((Item_cond*)item)->argument_list());
+ Item *item;
+ while ((item=li++))
+ {
+ if (!uses_index_fields_only(item, tbl, keyno, other_tbls_ok))
+ return FALSE;
+ }
+ return TRUE;
+ }
+ case Item::FIELD_ITEM:
+ {
+ Item_field *item_field= (Item_field*)item;
+ if (item_field->field->table != tbl)
+ return TRUE;
+ /*
+ The below is probably a repetition - the first part checks the
+ other two, but let's play it safe:
+ */
+ return item_field->field->part_of_key.is_set(keyno) &&
+ item_field->field->type() != MYSQL_TYPE_GEOMETRY &&
+ item_field->field->type() != MYSQL_TYPE_BLOB;
+ }
+ case Item::REF_ITEM:
+ return uses_index_fields_only(item->real_item(), tbl, keyno,
+ other_tbls_ok);
+ default:
+ return FALSE; /* Play it safe, don't push unknown non-const items */
+ }
+}
+
+#define ICP_COND_USES_INDEX_ONLY 10
+
+/*
+ Get a part of the condition that can be checked using only index fields
+
+ SYNOPSIS
+ make_cond_for_index()
+ cond The source condition
+ table The table that is partially available
+ keyno The index in the above table. Only fields covered by the index
+ are available
+ other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
+
+ DESCRIPTION
+ Get a part of the condition that can be checked when for the given table
+ we have values only of fields covered by some index. The condition may
+ refer to other tables, it is assumed that we have values of all of their
+ fields.
+
+ Example:
+ make_cond_for_index(
+ "cond(t1.field) AND cond(t2.key1) AND cond(t2.non_key) AND cond(t2.key2)",
+ t2, keyno(t2.key1))
+ will return
+ "cond(t1.field) AND cond(t2.key2)"
+
+ RETURN
+ Index condition, or NULL if no condition could be inferred.
+*/
+
+Item *make_cond_for_index(Item *cond, TABLE *table, uint keyno,
+ bool other_tbls_ok)
+{
+ if (!cond)
+ return NULL;
+ if (cond->type() == Item::COND_ITEM)
+ {
+ uint n_marked= 0;
+ if (((Item_cond*) cond)->functype() == Item_func::COND_AND_FUNC)
+ {
+ table_map used_tables= 0;
+ Item_cond_and *new_cond=new Item_cond_and;
+ if (!new_cond)
+ return (COND*) 0;
+ List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
+ Item *item;
+ while ((item=li++))
+ {
+ Item *fix= make_cond_for_index(item, table, keyno, other_tbls_ok);
+ if (fix)
+ {
+ new_cond->argument_list()->push_back(fix);
+ used_tables|= fix->used_tables();
+ }
+ n_marked += test(item->marker == ICP_COND_USES_INDEX_ONLY);
+ }
+ if (n_marked ==((Item_cond*)cond)->argument_list()->elements)
+ cond->marker= ICP_COND_USES_INDEX_ONLY;
+ switch (new_cond->argument_list()->elements) {
+ case 0:
+ return (COND*) 0;
+ case 1:
+ new_cond->used_tables_cache= used_tables;
+ return new_cond->argument_list()->head();
+ default:
+ new_cond->quick_fix_field();
+ new_cond->used_tables_cache= used_tables;
+ return new_cond;
+ }
+ }
+ else /* It's OR */
+ {
+ Item_cond_or *new_cond=new Item_cond_or;
+ if (!new_cond)
+ return (COND*) 0;
+ List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
+ Item *item;
+ while ((item=li++))
+ {
+ Item *fix= make_cond_for_index(item, table, keyno, other_tbls_ok);
+ if (!fix)
+ return (COND*) 0;
+ new_cond->argument_list()->push_back(fix);
+ n_marked += test(item->marker == ICP_COND_USES_INDEX_ONLY);
+ }
+ if (n_marked ==((Item_cond*)cond)->argument_list()->elements)
+ cond->marker= ICP_COND_USES_INDEX_ONLY;
+ new_cond->quick_fix_field();
+ new_cond->used_tables_cache= ((Item_cond_or*) cond)->used_tables_cache;
+ new_cond->top_level_item();
+ return new_cond;
+ }
+ }
+
+ if (!uses_index_fields_only(cond, table, keyno, other_tbls_ok))
+ return (COND*) 0;
+ cond->marker= ICP_COND_USES_INDEX_ONLY;
+ return cond;
+}
+
+
+Item *make_cond_remainder(Item *cond, bool exclude_index)
+{
+ if (exclude_index && cond->marker == ICP_COND_USES_INDEX_ONLY)
+ return 0; /* Already checked */
+
+ if (cond->type() == Item::COND_ITEM)
+ {
+ table_map tbl_map= 0;
+ if (((Item_cond*) cond)->functype() == Item_func::COND_AND_FUNC)
+ {
+ /* Create new top level AND item */
+ Item_cond_and *new_cond=new Item_cond_and;
+ if (!new_cond)
+ return (COND*) 0;
+ List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
+ Item *item;
+ while ((item=li++))
+ {
+ Item *fix= make_cond_remainder(item, exclude_index);
+ if (fix)
+ {
+ new_cond->argument_list()->push_back(fix);
+ tbl_map |= fix->used_tables();
+ }
+ }
+ switch (new_cond->argument_list()->elements) {
+ case 0:
+ return (COND*) 0;
+ case 1:
+ return new_cond->argument_list()->head();
+ default:
+ new_cond->quick_fix_field();
+ ((Item_cond*)new_cond)->used_tables_cache= tbl_map;
+ return new_cond;
+ }
+ }
+ else /* It's OR */
+ {
+ Item_cond_or *new_cond=new Item_cond_or;
+ if (!new_cond)
+ return (COND*) 0;
+ List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
+ Item *item;
+ while ((item=li++))
+ {
+ Item *fix= make_cond_remainder(item, FALSE);
+ if (!fix)
+ return (COND*) 0;
+ new_cond->argument_list()->push_back(fix);
+ tbl_map |= fix->used_tables();
+ }
+ new_cond->quick_fix_field();
+ ((Item_cond*)new_cond)->used_tables_cache= tbl_map;
+ new_cond->top_level_item();
+ return new_cond;
+ }
+ }
+ return cond;
+}
+
+
+/*
+ Try to extract and push the index condition
+
+ SYNOPSIS
+ push_index_cond()
+ tab A join tab that has tab->table->file and its condition
+ in tab->select_cond
+ keyno Index for which extract and push the condition
+ other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
+
+ DESCRIPTION
+ Try to extract and push the index condition down to table handler
+*/
+
+void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok)
+{
+ DBUG_ENTER("push_index_cond");
+ Item *idx_cond;
+ bool do_index_cond_pushdown=
+ ((tab->table->file->index_flags(keyno, 0, 1) &
+ HA_DO_INDEX_COND_PUSHDOWN) &&
+ optimizer_flag(tab->join->thd, OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN));
+
+ /*
+ Do not try index condition pushdown on indexes which have partially-covered
+ columns. Unpacking from a column prefix into index tuple is not a supported
+ operation in some engines, see e.g. MySQL BUG#42991.
+ TODO: a better solution would be not to consider partially-covered columns
+ as parts of the index and still produce/check index condition for
+ fully-covered index columns.
+ */
+ KEY *key_info= tab->table->key_info + keyno;
+ for (uint kp= 0; kp < key_info->key_parts; kp++)
+ {
+ if ((key_info->key_part[kp].key_part_flag & HA_PART_KEY_SEG))
+ {
+ do_index_cond_pushdown= FALSE;
+ break;
+ }
+ }
+
+ if (do_index_cond_pushdown)
+ {
+ DBUG_EXECUTE("where",
+ print_where(tab->select_cond, "full cond", QT_ORDINARY););
+
+ idx_cond= make_cond_for_index(tab->select_cond, tab->table, keyno,
+ other_tbls_ok);
+
+ DBUG_EXECUTE("where",
+ print_where(idx_cond, "idx cond", QT_ORDINARY););
+
+ if (idx_cond)
+ {
+ Item *idx_remainder_cond= 0;
+ tab->pre_idx_push_select_cond= tab->select_cond;
+ /*
+ For BKA cache we store condition to special BKA cache field
+ because evaluation of the condition requires additional operations
+ before the evaluation. This condition is used in
+ JOIN_CACHE_BKA[_UNIQUE]::skip_index_tuple() functions.
+ */
+ if (tab->use_join_cache &&
+ /*
+ if cache is used then the value is TRUE only
+ for BKA[_UNIQUE] cache (see check_join_cache_usage func).
+ In this case other_tbls_ok is an equivalent of
+ cache->is_key_access().
+ */
+ other_tbls_ok &&
+ (idx_cond->used_tables() &
+ ~(tab->table->map | tab->join->const_table_map)))
+ tab->cache_idx_cond= idx_cond;
+ else
+ idx_remainder_cond= tab->table->file->idx_cond_push(keyno, idx_cond);
+
+ /*
+ Disable eq_ref's "lookup cache" if we've pushed down an index
+ condition.
+ TODO: This check happens to work on current ICP implementations, but
+ there may exist a compliant implementation that will not work
+ correctly with it. Sort this out when we stabilize the condition
+ pushdown APIs.
+ */
+ if (idx_remainder_cond != idx_cond)
+ tab->ref.disable_cache= TRUE;
+
+ Item *row_cond= make_cond_remainder(tab->select_cond, TRUE);
+
+ DBUG_EXECUTE("where",
+ print_where(row_cond, "remainder cond", QT_ORDINARY););
+
+ if (row_cond)
+ {
+ if (!idx_remainder_cond)
+ tab->select_cond= row_cond;
+ else
+ {
+ COND *new_cond= new Item_cond_and(row_cond, idx_remainder_cond);
+ tab->select_cond= new_cond;
+ tab->select_cond->quick_fix_field();
+ ((Item_cond_and*)tab->select_cond)->used_tables_cache=
+ row_cond->used_tables() | idx_remainder_cond->used_tables();
+ }
+ }
+ else
+ tab->select_cond= idx_remainder_cond;
+ if (tab->select)
+ {
+ DBUG_EXECUTE("where",
+ print_where(tab->select->cond,
+ "select_cond",
+ QT_ORDINARY););
+
+ tab->select->cond= tab->select_cond;
+ }
+ }
+ }
+ DBUG_VOID_RETURN;
+}
+
+
=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc 2009-12-15 07:16:46 +0000
+++ b/sql/opt_range.cc 2009-12-22 12:33:21 +0000
@@ -720,6 +720,7 @@ public:
uint8 first_null_comp; /* first null component if any, 0 - otherwise */
};
+
class TABLE_READ_PLAN;
class TRP_RANGE;
class TRP_ROR_INTERSECT;
@@ -789,7 +790,9 @@ static SEL_ARG null_element(SEL_ARG::IMP
static bool null_part_in_key(KEY_PART *key_part, const uchar *key,
uint length);
bool sel_trees_can_be_ored(SEL_TREE *tree1, SEL_TREE *tree2, RANGE_OPT_PARAM* param);
+static bool is_key_scan_ror(PARAM *param, uint keynr, uint8 nparts);
+#include "opt_range_mrr.cc"
/*
SEL_IMERGE is a list of possible ways to do index merge, i.e. it is
@@ -1165,7 +1168,7 @@ QUICK_RANGE_SELECT::QUICK_RANGE_SELECT(T
my_init_dynamic_array(&ranges, sizeof(QUICK_RANGE*), 16, 16);
/* 'thd' is not accessible in QUICK_RANGE_SELECT::reset(). */
- mrr_buf_size= thd->variables.read_rnd_buff_size;
+ mrr_buf_size= thd->variables.mrr_buff_size;
mrr_buf_desc= NULL;
if (!no_alloc && !parent_alloc)
@@ -4875,7 +4878,6 @@ static TRP_RANGE *get_key_scans_params(P
uint UNINIT_VAR(best_mrr_flags), /* protected by key_to_read */
UNINIT_VAR(best_buf_size); /* protected by key_to_read */
TRP_RANGE* read_plan= NULL;
- bool pk_is_clustered= param->table->file->primary_key_is_clustered();
DBUG_ENTER("get_key_scans_params");
/*
Note that there may be trees that have type SEL_TREE::KEY but contain no
@@ -7281,284 +7283,6 @@ void SEL_ARG::test_use_count(SEL_ARG *ro
}
#endif
-
-/****************************************************************************
- MRR Range Sequence Interface implementation that walks a SEL_ARG* tree.
- ****************************************************************************/
-
-/* MRR range sequence, SEL_ARG* implementation: stack entry */
-typedef struct st_range_seq_entry
-{
- /*
- Pointers in min and max keys. They point to right-after-end of key
- images. The 0-th entry has these pointing to key tuple start.
- */
- uchar *min_key, *max_key;
-
- /*
- Flags, for {keypart0, keypart1, ... this_keypart} subtuple.
- min_key_flag may have NULL_RANGE set.
- */
- uint min_key_flag, max_key_flag;
-
- /* Number of key parts */
- uint min_key_parts, max_key_parts;
- SEL_ARG *key_tree;
-} RANGE_SEQ_ENTRY;
-
-
-/*
- MRR range sequence, SEL_ARG* implementation: SEL_ARG graph traversal context
-*/
-typedef struct st_sel_arg_range_seq
-{
- uint keyno; /* index of used tree in SEL_TREE structure */
- uint real_keyno; /* Number of the index in tables */
- PARAM *param;
- SEL_ARG *start; /* Root node of the traversed SEL_ARG* graph */
-
- RANGE_SEQ_ENTRY stack[MAX_REF_PARTS];
- int i; /* Index of last used element in the above array */
-
- bool at_start; /* TRUE <=> The traversal has just started */
-} SEL_ARG_RANGE_SEQ;
-
-
-/*
- Range sequence interface, SEL_ARG* implementation: Initialize the traversal
-
- SYNOPSIS
- init()
- init_params SEL_ARG tree traversal context
- n_ranges [ignored] The number of ranges obtained
- flags [ignored] HA_MRR_SINGLE_POINT, HA_MRR_FIXED_KEY
-
- RETURN
- Value of init_param
-*/
-
-range_seq_t sel_arg_range_seq_init(void *init_param, uint n_ranges, uint flags)
-{
- SEL_ARG_RANGE_SEQ *seq= (SEL_ARG_RANGE_SEQ*)init_param;
- seq->at_start= TRUE;
- seq->stack[0].key_tree= NULL;
- seq->stack[0].min_key= seq->param->min_key;
- seq->stack[0].min_key_flag= 0;
- seq->stack[0].min_key_parts= 0;
-
- seq->stack[0].max_key= seq->param->max_key;
- seq->stack[0].max_key_flag= 0;
- seq->stack[0].max_key_parts= 0;
- seq->i= 0;
- return init_param;
-}
-
-
-static void step_down_to(SEL_ARG_RANGE_SEQ *arg, SEL_ARG *key_tree)
-{
- RANGE_SEQ_ENTRY *cur= &arg->stack[arg->i+1];
- RANGE_SEQ_ENTRY *prev= &arg->stack[arg->i];
-
- cur->key_tree= key_tree;
- cur->min_key= prev->min_key;
- cur->max_key= prev->max_key;
- cur->min_key_parts= prev->min_key_parts;
- cur->max_key_parts= prev->max_key_parts;
-
- uint16 stor_length= arg->param->key[arg->keyno][key_tree->part].store_length;
- cur->min_key_parts += key_tree->store_min(stor_length, &cur->min_key,
- prev->min_key_flag);
- cur->max_key_parts += key_tree->store_max(stor_length, &cur->max_key,
- prev->max_key_flag);
-
- cur->min_key_flag= prev->min_key_flag | key_tree->min_flag;
- cur->max_key_flag= prev->max_key_flag | key_tree->max_flag;
-
- if (key_tree->is_null_interval())
- cur->min_key_flag |= NULL_RANGE;
- (arg->i)++;
-}
-
-
-/*
- Range sequence interface, SEL_ARG* implementation: get the next interval
-
- SYNOPSIS
- sel_arg_range_seq_next()
- rseq Value returned from sel_arg_range_seq_init
- range OUT Store information about the range here
-
- DESCRIPTION
- This is "get_next" function for Range sequence interface implementation
- for SEL_ARG* tree.
-
- IMPLEMENTATION
- The traversal also updates those param members:
- - is_ror_scan
- - range_count
- - max_key_part
-
- RETURN
- 0 Ok
- 1 No more ranges in the sequence
-*/
-
-//psergey-merge-todo: support check_quick_keys:max_keypart
-uint sel_arg_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
-{
- SEL_ARG *key_tree;
- SEL_ARG_RANGE_SEQ *seq= (SEL_ARG_RANGE_SEQ*)rseq;
- if (seq->at_start)
- {
- key_tree= seq->start;
- seq->at_start= FALSE;
- goto walk_up_n_right;
- }
-
- key_tree= seq->stack[seq->i].key_tree;
- /* Ok, we're at some "full tuple" position in the tree */
-
- /* Step down if we can */
- if (key_tree->next && key_tree->next != &null_element)
- {
- //step down; (update the tuple, we'll step right and stay there)
- seq->i--;
- step_down_to(seq, key_tree->next);
- key_tree= key_tree->next;
- seq->param->is_ror_scan= FALSE;
- goto walk_right_n_up;
- }
-
- /* Ok, can't step down, walk left until we can step down */
- while (1)
- {
- if (seq->i == 1) // can't step left
- return 1;
- /* Step left */
- seq->i--;
- key_tree= seq->stack[seq->i].key_tree;
-
- /* Step down if we can */
- if (key_tree->next && key_tree->next != &null_element)
- {
- // Step down; update the tuple
- seq->i--;
- step_down_to(seq, key_tree->next);
- key_tree= key_tree->next;
- break;
- }
- }
-
- /*
- Ok, we've stepped down from the path to previous tuple.
- Walk right-up while we can
- */
-walk_right_n_up:
- while (key_tree->next_key_part && key_tree->next_key_part != &null_element &&
- key_tree->next_key_part->part == key_tree->part + 1 &&
- key_tree->next_key_part->type == SEL_ARG::KEY_RANGE)
- {
- {
- RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i];
- uint min_key_length= cur->min_key - seq->param->min_key;
- uint max_key_length= cur->max_key - seq->param->max_key;
- uint len= cur->min_key - cur[-1].min_key;
- if (!(min_key_length == max_key_length &&
- !memcmp(cur[-1].min_key, cur[-1].max_key, len) &&
- !key_tree->min_flag && !key_tree->max_flag))
- {
- seq->param->is_ror_scan= FALSE;
- if (!key_tree->min_flag)
- cur->min_key_parts +=
- key_tree->next_key_part->store_min_key(seq->param->key[seq->keyno],
- &cur->min_key,
- &cur->min_key_flag);
- if (!key_tree->max_flag)
- cur->max_key_parts +=
- key_tree->next_key_part->store_max_key(seq->param->key[seq->keyno],
- &cur->max_key,
- &cur->max_key_flag);
- break;
- }
- }
-
- /*
- Ok, current atomic interval is in form "t.field=const" and there is
- next_key_part interval. Step right, and walk up from there.
- */
- key_tree= key_tree->next_key_part;
-
-walk_up_n_right:
- while (key_tree->prev && key_tree->prev != &null_element)
- {
- /* Step up */
- key_tree= key_tree->prev;
- }
- step_down_to(seq, key_tree);
- }
-
- /* Ok got a tuple */
- RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i];
- uint min_key_length= cur->min_key - seq->param->min_key;
-
- range->ptr= (char*)(int)(key_tree->part);
- if (cur->min_key_flag & GEOM_FLAG)
- {
- range->range_flag= cur->min_key_flag;
-
- /* Here minimum contains also function code bits, and maximum is +inf */
- range->start_key.key= seq->param->min_key;
- range->start_key.length= min_key_length;
- range->start_key.flag= (ha_rkey_function) (cur->min_key_flag ^ GEOM_FLAG);
- }
- else
- {
- range->range_flag= cur->min_key_flag | cur->max_key_flag;
-
- range->start_key.key= seq->param->min_key;
- range->start_key.length= cur->min_key - seq->param->min_key;
- range->start_key.keypart_map= make_prev_keypart_map(cur->min_key_parts);
- range->start_key.flag= (cur->min_key_flag & NEAR_MIN ? HA_READ_AFTER_KEY :
- HA_READ_KEY_EXACT);
-
- range->end_key.key= seq->param->max_key;
- range->end_key.length= cur->max_key - seq->param->max_key;
- range->end_key.flag= (cur->max_key_flag & NEAR_MAX ? HA_READ_BEFORE_KEY :
- HA_READ_AFTER_KEY);
- range->end_key.keypart_map= make_prev_keypart_map(cur->max_key_parts);
-
- if (!(cur->min_key_flag & ~NULL_RANGE) && !cur->max_key_flag &&
- (uint)key_tree->part+1 == seq->param->table->key_info[seq->real_keyno].key_parts &&
- (seq->param->table->key_info[seq->real_keyno].flags & (HA_NOSAME | HA_END_SPACE_KEY)) ==
- HA_NOSAME &&
- range->start_key.length == range->end_key.length &&
- !memcmp(seq->param->min_key,seq->param->max_key,range->start_key.length))
- range->range_flag= UNIQUE_RANGE | (cur->min_key_flag & NULL_RANGE);
-
- if (seq->param->is_ror_scan)
- {
- /*
- If we get here, the condition on the key was converted to form
- "(keyXpart1 = c1) AND ... AND (keyXpart{key_tree->part - 1} = cN) AND
- somecond(keyXpart{key_tree->part})"
- Check if
- somecond is "keyXpart{key_tree->part} = const" and
- uncovered "tail" of KeyX parts is either empty or is identical to
- first members of clustered primary key.
- */
- if (!(!(cur->min_key_flag & ~NULL_RANGE) && !cur->max_key_flag &&
- (range->start_key.length == range->end_key.length) &&
- !memcmp(range->start_key.key, range->end_key.key, range->start_key.length) &&
- is_key_scan_ror(seq->param, seq->real_keyno, key_tree->part + 1)))
- seq->param->is_ror_scan= FALSE;
- }
- }
- seq->param->range_count++;
- seq->param->max_key_part=max(seq->param->max_key_part,key_tree->part);
- return 0;
-}
-
-
/*
Calculate cost and E(#rows) for a given index and intervals tree
@@ -7633,7 +7357,7 @@ ha_rows check_quick_select(PARAM *param,
if (current_thd->lex->sql_command != SQLCOM_SELECT)
*mrr_flags |= HA_MRR_USE_DEFAULT_IMPL;
- *bufsize= param->thd->variables.read_rnd_buff_size;
+ *bufsize= param->thd->variables.mrr_buff_size;
rows= file->multi_range_read_info_const(keynr, &seq_if, (void*)&seq, 0,
bufsize, mrr_flags, cost);
if (rows != HA_POS_ERROR)
@@ -8148,7 +7872,7 @@ QUICK_RANGE_SELECT *get_quick_select_for
quick->mrr_flags |= HA_MRR_NO_NULL_ENDPOINTS;
#endif
- quick->mrr_buf_size= thd->variables.read_rnd_buff_size;
+ quick->mrr_buf_size= thd->variables.mrr_buff_size;
if (table->file->multi_range_read_info(quick->index, 1, (uint)records,
&quick->mrr_buf_size,
&quick->mrr_flags, &cost))
@@ -8518,75 +8242,6 @@ int QUICK_RANGE_SELECT::reset()
/*
- Range sequence interface implementation for array<QUICK_RANGE>: initialize
-
- SYNOPSIS
- quick_range_seq_init()
- init_param Caller-opaque paramenter: QUICK_RANGE_SELECT* pointer
- n_ranges Number of ranges in the sequence (ignored)
- flags MRR flags (currently not used)
-
- RETURN
- Opaque value to be passed to quick_range_seq_next
-*/
-
-range_seq_t quick_range_seq_init(void *init_param, uint n_ranges, uint flags)
-{
- QUICK_RANGE_SELECT *quick= (QUICK_RANGE_SELECT*)init_param;
- quick->qr_traversal_ctx.first= (QUICK_RANGE**)quick->ranges.buffer;
- quick->qr_traversal_ctx.cur= (QUICK_RANGE**)quick->ranges.buffer;
- quick->qr_traversal_ctx.last= quick->qr_traversal_ctx.cur +
- quick->ranges.elements;
- return &quick->qr_traversal_ctx;
-}
-
-
-/*
- Range sequence interface implementation for array<QUICK_RANGE>: get next
-
- SYNOPSIS
- quick_range_seq_next()
- rseq Value returned from quick_range_seq_init
- range OUT Store information about the range here
-
- RETURN
- 0 Ok
- 1 No more ranges in the sequence
-*/
-
-uint quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
-{
- QUICK_RANGE_SEQ_CTX *ctx= (QUICK_RANGE_SEQ_CTX*)rseq;
-
- if (ctx->cur == ctx->last)
- return 1; /* no more ranges */
-
- QUICK_RANGE *cur= *(ctx->cur);
- key_range *start_key= &range->start_key;
- key_range *end_key= &range->end_key;
-
- start_key->key= cur->min_key;
- start_key->length= cur->min_length;
- start_key->keypart_map= cur->min_keypart_map;
- start_key->flag= ((cur->flag & NEAR_MIN) ? HA_READ_AFTER_KEY :
- (cur->flag & EQ_RANGE) ?
- HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT);
- end_key->key= cur->max_key;
- end_key->length= cur->max_length;
- end_key->keypart_map= cur->max_keypart_map;
- /*
- We use HA_READ_AFTER_KEY here because if we are reading on a key
- prefix. We want to find all keys with this prefix.
- */
- end_key->flag= (cur->flag & NEAR_MAX ? HA_READ_BEFORE_KEY :
- HA_READ_AFTER_KEY);
- range->range_flag= cur->flag;
- ctx->cur++;
- return 0;
-}
-
-
-/*
Get next possible record using quick-struct.
SYNOPSIS
@@ -9658,7 +9313,7 @@ get_best_group_min_max(PARAM *param, SEL
uint mrr_flags= HA_MRR_USE_DEFAULT_IMPL;
uint mrr_bufsize=0;
cur_quick_prefix_records= check_quick_select(param, cur_param_idx,
- FALSE /*don't care(*/,
+ FALSE /*don't care*/,
cur_index_tree, TRUE,
&mrr_flags, &mrr_bufsize,
&dummy_cost);
=== modified file 'sql/opt_range.h'
--- a/sql/opt_range.h 2009-12-15 07:16:46 +0000
+++ b/sql/opt_range.h 2009-12-22 12:33:21 +0000
@@ -317,7 +317,7 @@ protected:
public:
uint mrr_flags; /* Flags to be used with MRR interface */
protected:
- uint mrr_buf_size; /* copy from thd->variables.read_rnd_buff_size */
+ uint mrr_buf_size; /* copy from thd->variables.mrr_buff_size */
HANDLER_BUFFER *mrr_buf_desc; /* the handler buffer */
/* Info about index we're scanning */
=== added file 'sql/opt_range_mrr.cc'
--- a/sql/opt_range_mrr.cc 1970-01-01 00:00:00 +0000
+++ b/sql/opt_range_mrr.cc 2009-12-22 12:33:21 +0000
@@ -0,0 +1,349 @@
+
+/****************************************************************************
+ MRR Range Sequence Interface implementation that walks a SEL_ARG* tree.
+ ****************************************************************************/
+
+/* MRR range sequence, SEL_ARG* implementation: stack entry */
+typedef struct st_range_seq_entry
+{
+ /*
+ Pointers in min and max keys. They point to right-after-end of key
+ images. The 0-th entry has these pointing to key tuple start.
+ */
+ uchar *min_key, *max_key;
+
+ /*
+ Flags, for {keypart0, keypart1, ... this_keypart} subtuple.
+ min_key_flag may have NULL_RANGE set.
+ */
+ uint min_key_flag, max_key_flag;
+
+ /* Number of key parts */
+ uint min_key_parts, max_key_parts;
+ SEL_ARG *key_tree;
+} RANGE_SEQ_ENTRY;
+
+
+/*
+ MRR range sequence, SEL_ARG* implementation: SEL_ARG graph traversal context
+*/
+typedef struct st_sel_arg_range_seq
+{
+ uint keyno; /* index of used tree in SEL_TREE structure */
+ uint real_keyno; /* Number of the index in tables */
+ PARAM *param;
+ SEL_ARG *start; /* Root node of the traversed SEL_ARG* graph */
+
+ RANGE_SEQ_ENTRY stack[MAX_REF_PARTS];
+ int i; /* Index of last used element in the above array */
+
+ bool at_start; /* TRUE <=> The traversal has just started */
+} SEL_ARG_RANGE_SEQ;
+
+
+/*
+ Range sequence interface, SEL_ARG* implementation: Initialize the traversal
+
+ SYNOPSIS
+ init()
+ init_params SEL_ARG tree traversal context
+ n_ranges [ignored] The number of ranges obtained
+ flags [ignored] HA_MRR_SINGLE_POINT, HA_MRR_FIXED_KEY
+
+ RETURN
+ Value of init_param
+*/
+
+range_seq_t sel_arg_range_seq_init(void *init_param, uint n_ranges, uint flags)
+{
+ SEL_ARG_RANGE_SEQ *seq= (SEL_ARG_RANGE_SEQ*)init_param;
+ seq->at_start= TRUE;
+ seq->stack[0].key_tree= NULL;
+ seq->stack[0].min_key= seq->param->min_key;
+ seq->stack[0].min_key_flag= 0;
+ seq->stack[0].min_key_parts= 0;
+
+ seq->stack[0].max_key= seq->param->max_key;
+ seq->stack[0].max_key_flag= 0;
+ seq->stack[0].max_key_parts= 0;
+ seq->i= 0;
+ return init_param;
+}
+
+
+static void step_down_to(SEL_ARG_RANGE_SEQ *arg, SEL_ARG *key_tree)
+{
+ RANGE_SEQ_ENTRY *cur= &arg->stack[arg->i+1];
+ RANGE_SEQ_ENTRY *prev= &arg->stack[arg->i];
+
+ cur->key_tree= key_tree;
+ cur->min_key= prev->min_key;
+ cur->max_key= prev->max_key;
+ cur->min_key_parts= prev->min_key_parts;
+ cur->max_key_parts= prev->max_key_parts;
+
+ uint16 stor_length= arg->param->key[arg->keyno][key_tree->part].store_length;
+ cur->min_key_parts += key_tree->store_min(stor_length, &cur->min_key,
+ prev->min_key_flag);
+ cur->max_key_parts += key_tree->store_max(stor_length, &cur->max_key,
+ prev->max_key_flag);
+
+ cur->min_key_flag= prev->min_key_flag | key_tree->min_flag;
+ cur->max_key_flag= prev->max_key_flag | key_tree->max_flag;
+
+ if (key_tree->is_null_interval())
+ cur->min_key_flag |= NULL_RANGE;
+ (arg->i)++;
+}
+
+
+/*
+ Range sequence interface, SEL_ARG* implementation: get the next interval
+
+ SYNOPSIS
+ sel_arg_range_seq_next()
+ rseq Value returned from sel_arg_range_seq_init
+ range OUT Store information about the range here
+
+ DESCRIPTION
+ This is "get_next" function for Range sequence interface implementation
+ for SEL_ARG* tree.
+
+ IMPLEMENTATION
+ The traversal also updates those param members:
+ - is_ror_scan
+ - range_count
+ - max_key_part
+
+ RETURN
+ 0 Ok
+ 1 No more ranges in the sequence
+*/
+
+uint sel_arg_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
+{
+ SEL_ARG *key_tree;
+ SEL_ARG_RANGE_SEQ *seq= (SEL_ARG_RANGE_SEQ*)rseq;
+ if (seq->at_start)
+ {
+ key_tree= seq->start;
+ seq->at_start= FALSE;
+ goto walk_up_n_right;
+ }
+
+ key_tree= seq->stack[seq->i].key_tree;
+ /* Ok, we're at some "full tuple" position in the tree */
+
+ /* Step down if we can */
+ if (key_tree->next && key_tree->next != &null_element)
+ {
+ //step down; (update the tuple, we'll step right and stay there)
+ seq->i--;
+ step_down_to(seq, key_tree->next);
+ key_tree= key_tree->next;
+ seq->param->is_ror_scan= FALSE;
+ goto walk_right_n_up;
+ }
+
+ /* Ok, can't step down, walk left until we can step down */
+ while (1)
+ {
+ if (seq->i == 1) // can't step left
+ return 1;
+ /* Step left */
+ seq->i--;
+ key_tree= seq->stack[seq->i].key_tree;
+
+ /* Step down if we can */
+ if (key_tree->next && key_tree->next != &null_element)
+ {
+ // Step down; update the tuple
+ seq->i--;
+ step_down_to(seq, key_tree->next);
+ key_tree= key_tree->next;
+ break;
+ }
+ }
+
+ /*
+ Ok, we've stepped down from the path to previous tuple.
+ Walk right-up while we can
+ */
+walk_right_n_up:
+ while (key_tree->next_key_part && key_tree->next_key_part != &null_element &&
+ key_tree->next_key_part->part == key_tree->part + 1 &&
+ key_tree->next_key_part->type == SEL_ARG::KEY_RANGE)
+ {
+ {
+ RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i];
+ uint min_key_length= cur->min_key - seq->param->min_key;
+ uint max_key_length= cur->max_key - seq->param->max_key;
+ uint len= cur->min_key - cur[-1].min_key;
+ if (!(min_key_length == max_key_length &&
+ !memcmp(cur[-1].min_key, cur[-1].max_key, len) &&
+ !key_tree->min_flag && !key_tree->max_flag))
+ {
+ seq->param->is_ror_scan= FALSE;
+ if (!key_tree->min_flag)
+ cur->min_key_parts +=
+ key_tree->next_key_part->store_min_key(seq->param->key[seq->keyno],
+ &cur->min_key,
+ &cur->min_key_flag);
+ if (!key_tree->max_flag)
+ cur->max_key_parts +=
+ key_tree->next_key_part->store_max_key(seq->param->key[seq->keyno],
+ &cur->max_key,
+ &cur->max_key_flag);
+ break;
+ }
+ }
+
+ /*
+ Ok, current atomic interval is in form "t.field=const" and there is
+ next_key_part interval. Step right, and walk up from there.
+ */
+ key_tree= key_tree->next_key_part;
+
+walk_up_n_right:
+ while (key_tree->prev && key_tree->prev != &null_element)
+ {
+ /* Step up */
+ key_tree= key_tree->prev;
+ }
+ step_down_to(seq, key_tree);
+ }
+
+ /* Ok got a tuple */
+ RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i];
+ uint min_key_length= cur->min_key - seq->param->min_key;
+
+ range->ptr= (char*)(int)(key_tree->part);
+ if (cur->min_key_flag & GEOM_FLAG)
+ {
+ range->range_flag= cur->min_key_flag;
+
+ /* Here minimum contains also function code bits, and maximum is +inf */
+ range->start_key.key= seq->param->min_key;
+ range->start_key.length= min_key_length;
+ range->start_key.flag= (ha_rkey_function) (cur->min_key_flag ^ GEOM_FLAG);
+ }
+ else
+ {
+ range->range_flag= cur->min_key_flag | cur->max_key_flag;
+
+ range->start_key.key= seq->param->min_key;
+ range->start_key.length= cur->min_key - seq->param->min_key;
+ range->start_key.keypart_map= make_prev_keypart_map(cur->min_key_parts);
+ range->start_key.flag= (cur->min_key_flag & NEAR_MIN ? HA_READ_AFTER_KEY :
+ HA_READ_KEY_EXACT);
+
+ range->end_key.key= seq->param->max_key;
+ range->end_key.length= cur->max_key - seq->param->max_key;
+ range->end_key.flag= (cur->max_key_flag & NEAR_MAX ? HA_READ_BEFORE_KEY :
+ HA_READ_AFTER_KEY);
+ range->end_key.keypart_map= make_prev_keypart_map(cur->max_key_parts);
+
+ if (!(cur->min_key_flag & ~NULL_RANGE) && !cur->max_key_flag &&
+ (uint)key_tree->part+1 == seq->param->table->key_info[seq->real_keyno].key_parts &&
+ (seq->param->table->key_info[seq->real_keyno].flags & (HA_NOSAME | HA_END_SPACE_KEY)) ==
+ HA_NOSAME &&
+ range->start_key.length == range->end_key.length &&
+ !memcmp(seq->param->min_key,seq->param->max_key,range->start_key.length))
+ range->range_flag= UNIQUE_RANGE | (cur->min_key_flag & NULL_RANGE);
+
+ if (seq->param->is_ror_scan)
+ {
+ /*
+ If we get here, the condition on the key was converted to form
+ "(keyXpart1 = c1) AND ... AND (keyXpart{key_tree->part - 1} = cN) AND
+ somecond(keyXpart{key_tree->part})"
+ Check if
+ somecond is "keyXpart{key_tree->part} = const" and
+ uncovered "tail" of KeyX parts is either empty or is identical to
+ first members of clustered primary key.
+ */
+ if (!(!(cur->min_key_flag & ~NULL_RANGE) && !cur->max_key_flag &&
+ (range->start_key.length == range->end_key.length) &&
+ !memcmp(range->start_key.key, range->end_key.key, range->start_key.length) &&
+ is_key_scan_ror(seq->param, seq->real_keyno, key_tree->part + 1)))
+ seq->param->is_ror_scan= FALSE;
+ }
+ }
+ seq->param->range_count++;
+ seq->param->max_key_part=max(seq->param->max_key_part,key_tree->part);
+ return 0;
+}
+
+/****************************************************************************
+ MRR Range Sequence Interface implementation that walks array<QUICK_RANGE>
+ ****************************************************************************/
+
+/*
+ Range sequence interface implementation for array<QUICK_RANGE>: initialize
+
+ SYNOPSIS
+ quick_range_seq_init()
+ init_param Caller-opaque paramenter: QUICK_RANGE_SELECT* pointer
+ n_ranges Number of ranges in the sequence (ignored)
+ flags MRR flags (currently not used)
+
+ RETURN
+ Opaque value to be passed to quick_range_seq_next
+*/
+
+range_seq_t quick_range_seq_init(void *init_param, uint n_ranges, uint flags)
+{
+ QUICK_RANGE_SELECT *quick= (QUICK_RANGE_SELECT*)init_param;
+ quick->qr_traversal_ctx.first= (QUICK_RANGE**)quick->ranges.buffer;
+ quick->qr_traversal_ctx.cur= (QUICK_RANGE**)quick->ranges.buffer;
+ quick->qr_traversal_ctx.last= quick->qr_traversal_ctx.cur +
+ quick->ranges.elements;
+ return &quick->qr_traversal_ctx;
+}
+
+
+/*
+ Range sequence interface implementation for array<QUICK_RANGE>: get next
+
+ SYNOPSIS
+ quick_range_seq_next()
+ rseq Value returned from quick_range_seq_init
+ range OUT Store information about the range here
+
+ RETURN
+ 0 Ok
+ 1 No more ranges in the sequence
+*/
+
+uint quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
+{
+ QUICK_RANGE_SEQ_CTX *ctx= (QUICK_RANGE_SEQ_CTX*)rseq;
+
+ if (ctx->cur == ctx->last)
+ return 1; /* no more ranges */
+
+ QUICK_RANGE *cur= *(ctx->cur);
+ key_range *start_key= &range->start_key;
+ key_range *end_key= &range->end_key;
+
+ start_key->key= cur->min_key;
+ start_key->length= cur->min_length;
+ start_key->keypart_map= cur->min_keypart_map;
+ start_key->flag= ((cur->flag & NEAR_MIN) ? HA_READ_AFTER_KEY :
+ (cur->flag & EQ_RANGE) ?
+ HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT);
+ end_key->key= cur->max_key;
+ end_key->length= cur->max_length;
+ end_key->keypart_map= cur->max_keypart_map;
+ /*
+ We use HA_READ_AFTER_KEY here because if we are reading on a key
+ prefix. We want to find all keys with this prefix.
+ */
+ end_key->flag= (cur->flag & NEAR_MAX ? HA_READ_BEFORE_KEY :
+ HA_READ_AFTER_KEY);
+ range->range_flag= cur->flag;
+ ctx->cur++;
+ return 0;
+}
+
+
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2009-12-21 02:26:15 +0000
+++ b/sql/set_var.cc 2009-12-22 12:49:15 +0000
@@ -528,6 +528,8 @@ static sys_var_bool_ptr sys_user
static sys_var_thd_ulong sys_read_rnd_buff_size(&vars, "read_rnd_buffer_size",
&SV::read_rnd_buff_size);
+static sys_var_thd_ulong sys_mrr_buff_size(&vars, "mrr_buffer_size",
+ &SV::mrr_buff_size);
static sys_var_thd_ulong sys_div_precincrement(&vars, "div_precision_increment",
&SV::div_precincrement);
static sys_var_long_ptr sys_rpl_recovery_rank(&vars, "rpl_recovery_rank",
=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h 2009-12-21 02:26:15 +0000
+++ b/sql/sql_class.h 2009-12-22 12:49:15 +0000
@@ -340,6 +340,7 @@ struct system_variables
ulong query_cache_type;
ulong read_buff_size;
ulong read_rnd_buff_size;
+ ulong mrr_buff_size;
ulong div_precincrement;
ulong sortbuff_size;
ulong thread_handling;
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-12-15 07:16:46 +0000
+++ b/storage/maria/ha_maria.cc 2009-12-22 12:33:21 +0000
@@ -2022,16 +2022,15 @@ int ha_maria::delete_row(const uchar * b
C_MODE_START
-my_bool index_cond_func_maria(void *arg)
+ICP_RESULT index_cond_func_maria(void *arg)
{
ha_maria *h= (ha_maria*)arg;
- /*if (h->in_range_read)*/
if (h->end_range)
{
if (h->compare_key2(h->end_range) > 0)
- return 2; /* caller should return HA_ERR_END_OF_FILE already */
+ return ICP_OUT_OF_RANGE; /* caller should return HA_ERR_END_OF_FILE already */
}
- return (my_bool)h->pushed_idx_cond->val_int();
+ return h->pushed_idx_cond->val_int() ? ICP_MATCH : ICP_NO_MATCH;
}
C_MODE_END
=== modified file 'storage/maria/ha_maria.h'
--- a/storage/maria/ha_maria.h 2009-12-15 07:16:46 +0000
+++ b/storage/maria/ha_maria.h 2009-12-22 12:33:21 +0000
@@ -29,7 +29,7 @@
#define HA_RECOVER_QUICK 8 /* Don't check rows in data file */
C_MODE_START
-my_bool index_cond_func_maria(void *arg);
+ICP_RESULT index_cond_func_maria(void *arg);
C_MODE_END
extern ulong maria_sort_buffer_size;
@@ -187,5 +187,5 @@ public:
Item *idx_cond_push(uint keyno, Item* idx_cond);
private:
DsMrr_impl ds_mrr;
- friend my_bool index_cond_func_maria(void *arg);
+ friend ICP_RESULT index_cond_func_maria(void *arg);
};
=== modified file 'storage/maria/ma_key.c'
--- a/storage/maria/ma_key.c 2009-12-15 07:16:46 +0000
+++ b/storage/maria/ma_key.c 2009-12-22 12:33:21 +0000
@@ -669,10 +669,10 @@ int _ma_read_key_record(MARIA_HA *info,
will look for column values there)
RETURN
- -1 Error
- 0 Index condition is not satisfied, continue scanning
- 1 Index condition is satisfied
- 2 Index condition is not satisfied, end the scan.
+ ICP_ERROR Error
+ ICP_NO_MATCH Index condition is not satisfied, continue scanning
+ ICP_MATCH Index condition is satisfied
+ ICP_OUT_OF_RANGE Index condition is not satisfied, end the scan.
*/
int ma_check_index_cond(register MARIA_HA *info, uint keynr, uchar *record)
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-12-15 07:16:46 +0000
+++ b/storage/maria/maria_def.h 2009-12-22 12:33:21 +0000
@@ -477,8 +477,7 @@ typedef struct st_maria_block_scan
MARIA_RECORD_POS row_base_page;
} MARIA_BLOCK_SCAN;
-/*psergey-todo: do really need to have copies of this all over the place?*/
-typedef my_bool (*index_cond_func_t)(void *param);
+typedef ICP_RESULT (*index_cond_func_t)(void *param);
struct st_maria_handler
{
=== modified file 'storage/myisam/mi_key.c'
--- a/storage/myisam/mi_key.c 2009-12-15 07:16:46 +0000
+++ b/storage/myisam/mi_key.c 2009-12-22 12:33:21 +0000
@@ -504,10 +504,10 @@ int _mi_read_key_record(MI_INFO *info, m
will look for column values there)
RETURN
- -1 Error
- 0 Index condition is not satisfied, continue scanning
- 1 Index condition is satisfied
- 2 Index condition is not satisfied, end the scan.
+ ICP_ERROR Error
+ ICP_NO_MATCH Index condition is not satisfied, continue scanning
+ ICP_MATCH Index condition is satisfied
+ ICP_OUT_OF_RANGE Index condition is not satisfied, end the scan.
*/
int mi_check_index_cond(register MI_INFO *info, uint keynr, uchar *record)
@@ -516,7 +516,7 @@ int mi_check_index_cond(register MI_INFO
{
mi_print_error(info->s, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED;
- return -1;
+ return ICP_ERROR;
}
return info->index_cond_func(info->index_cond_func_arg);
}
=== modified file 'storage/myisam/mi_rkey.c'
--- a/storage/myisam/mi_rkey.c 2009-12-15 07:16:46 +0000
+++ b/storage/myisam/mi_rkey.c 2009-12-22 12:33:21 +0000
@@ -29,7 +29,7 @@ int mi_rkey(MI_INFO *info, uchar *buf, i
MI_KEYDEF *keyinfo;
HA_KEYSEG *last_used_keyseg;
uint pack_key_length, use_key_length, nextflag;
- int res= 0;
+ ICP_RESULT res= ICP_NO_MATCH;
DBUG_ENTER("mi_rkey");
DBUG_PRINT("enter", ("base: 0x%lx buf: 0x%lx inx: %d search_flag: %d",
(long) info, (long) buf, inx, search_flag));
@@ -118,7 +118,7 @@ int mi_rkey(MI_INFO *info, uchar *buf, i
(search_flag != HA_READ_KEY_EXACT ||
last_used_keyseg != keyinfo->seg + keyinfo->keysegs)) ||
(info->index_cond_func &&
- !(res= mi_check_index_cond(info, inx, buf))))
+ (res= mi_check_index_cond(info, inx, buf)) == ICP_NO_MATCH))
{
uint not_used[2];
/*
@@ -146,7 +146,7 @@ int mi_rkey(MI_INFO *info, uchar *buf, i
break;
}
}
- if (res == 2)
+ if (res == ICP_OUT_OF_RANGE)
{
info->lastpos= HA_OFFSET_ERROR;
if (share->concurrent_insert)
=== modified file 'storage/myisam/mi_rnext.c'
--- a/storage/myisam/mi_rnext.c 2009-12-15 07:16:46 +0000
+++ b/storage/myisam/mi_rnext.c 2009-12-22 12:33:21 +0000
@@ -28,7 +28,7 @@ int mi_rnext(MI_INFO *info, uchar *buf,
{
int error,changed;
uint flag;
- int res= 0;
+ ICP_RESULT res= 0;
DBUG_ENTER("mi_rnext");
if ((inx = _mi_check_index(info,inx)) < 0)
@@ -87,7 +87,7 @@ int mi_rnext(MI_INFO *info, uchar *buf,
while ((info->s->concurrent_insert &&
info->lastpos >= info->state->data_file_length) ||
(info->index_cond_func &&
- !(res= mi_check_index_cond(info, inx, buf))))
+ (res= mi_check_index_cond(info, inx, buf)) == ICP_NO_MATCH))
{
/*
Skip rows that are either inserted by other threads since
@@ -100,7 +100,7 @@ int mi_rnext(MI_INFO *info, uchar *buf,
info->s->state.key_root[inx])))
break;
}
- if (!error && res == 2)
+ if (!error && res == ICP_OUT_OF_RANGE)
{
if (info->s->concurrent_insert)
rw_unlock(&info->s->key_root_lock[inx]);
=== modified file 'storage/myisam/mi_rnext_same.c'
--- a/storage/myisam/mi_rnext_same.c 2009-12-15 07:16:46 +0000
+++ b/storage/myisam/mi_rnext_same.c 2009-12-22 12:33:21 +0000
@@ -75,9 +75,13 @@ int mi_rnext_same(MI_INFO *info, uchar *
info->lastpos= HA_OFFSET_ERROR;
break;
}
- /* Skip rows that are inserted by other threads since we got a lock */
+ /*
+ Skip
+ - rows that are inserted by other threads since we got a lock
+ - rows that don't match index condition */
if (info->lastpos < info->state->data_file_length &&
- (!info->index_cond_func || mi_check_index_cond(info, inx, buf)))
+ (!info->index_cond_func ||
+ mi_check_index_cond(info, inx, buf) != ICP_NO_MATCH))
break;
}
}
=== modified file 'storage/xtradb/handler/ha_innodb.cc'
--- a/storage/xtradb/handler/ha_innodb.cc 2009-12-15 07:16:46 +0000
+++ b/storage/xtradb/handler/ha_innodb.cc 2009-12-22 12:33:21 +0000
@@ -114,7 +114,7 @@ static pthread_mutex_t commit_cond_m;
static bool innodb_inited = 0;
C_MODE_START
-static uint index_cond_func_innodb(void *arg);
+static int index_cond_func_innodb(void *arg);
C_MODE_END
@@ -10765,24 +10765,12 @@ ha_rows ha_innobase::multi_range_read_in
{
/* See comments in ha_myisam::multi_range_read_info_const */
ds_mrr.init(this, table);
- //psergey-mrr-fix:
+
if (prebuilt->select_lock_type != LOCK_NONE)
*flags |= HA_MRR_USE_DEFAULT_IMPL;
- uint orig_flags= *flags;
-
ha_rows res= ds_mrr.dsmrr_info_const(keyno, seq, seq_init_param, n_ranges,
bufsz, flags, cost);
-
- bool disable_ds_mrr= true;
- disable_ds_mrr= false;
-// DBUG_EXECUTE_IF("optimizer_innodb_ds_mrr", disable_ds_mrr= false;);
- if (!disable_ds_mrr)
- return res;
-
- /* Disable DS-MRR: enable MS-MRR only after critical bugs are fixed */
- *bufsz= 0;
- *flags = orig_flags | HA_MRR_USE_DEFAULT_IMPL;
return res;
}
@@ -10791,17 +10779,7 @@ ha_rows ha_innobase::multi_range_read_in
uint *flags, COST_VECT *cost)
{
ds_mrr.init(this, table);
- uint orig_flags= *flags;
-
ha_rows res= ds_mrr.dsmrr_info(keyno, n_ranges, keys, bufsz, flags, cost);
- bool disable_ds_mrr= false;
- // DBUG_EXECUTE_IF("optimizer_innodb_ds_mrr", disable_ds_mrr= false;);
- if (!disable_ds_mrr)
- return res;
-
- /* Disable DS-MRR: enable MS-MRR only after critical bugs are fixed */
- *bufsz= 0;
- *flags = orig_flags | HA_MRR_USE_DEFAULT_IMPL;
return res;
}
@@ -10818,15 +10796,15 @@ C_MODE_START
See note on ICP_RESULT for return values description.
*/
-static uint index_cond_func_innodb(void *arg)
+static int index_cond_func_innodb(void *arg)
{
ha_innobase *h= (ha_innobase*)arg;
if (h->end_range)
{
if (h->compare_key2(h->end_range) > 0)
- return 2; /* caller should return HA_ERR_END_OF_FILE already */
+ return ICP_OUT_OF_RANGE; /* caller should return HA_ERR_END_OF_FILE already */
}
- return test(h->pushed_idx_cond->val_int());
+ return h->pushed_idx_cond->val_int()? ICP_MATCH : ICP_NO_MATCH;
}
C_MODE_END
@@ -10834,8 +10812,7 @@ C_MODE_END
Item *ha_innobase::idx_cond_push(uint keyno_arg, Item* idx_cond_arg)
{
- // V :psergey-mrrr-merge: V
- if (keyno_arg != primary_key && (prebuilt->select_lock_type == LOCK_NONE))
+ if ((keyno_arg != primary_key) && (prebuilt->select_lock_type == LOCK_NONE))
{
pushed_idx_cond_keyno= keyno_arg;
pushed_idx_cond= idx_cond_arg;
=== modified file 'storage/xtradb/include/row0mysql.h'
--- a/storage/xtradb/include/row0mysql.h 2009-12-15 07:16:46 +0000
+++ b/storage/xtradb/include/row0mysql.h 2009-12-22 12:33:21 +0000
@@ -564,7 +564,7 @@ struct mysql_row_templ_struct {
#define ROW_PREBUILT_ALLOCATED 78540783
#define ROW_PREBUILT_FREED 26423527
-typedef uint (*index_cond_func_t)(void *param);
+typedef int (*index_cond_func_t)(void *param);
/* A struct for (sometimes lazily) prebuilt structures in an Innobase table
handle used within MySQL; these are used to save CPU time. */
=== modified file 'storage/xtradb/row/row0sel.c'
--- a/storage/xtradb/row/row0sel.c 2009-12-15 07:16:46 +0000
+++ b/storage/xtradb/row/row0sel.c 2009-12-22 12:33:21 +0000
@@ -3116,10 +3116,14 @@ row_sel_pop_cached_row_for_mysql(
/* Copy NULL bit of the current field from cached_rec
to buf */
if (templ->mysql_null_bit_mask) {
- buf[templ->mysql_null_byte_offset]
+ /*buf[templ->mysql_null_byte_offset]
^= (buf[templ->mysql_null_byte_offset]
^ cached_rec[templ->mysql_null_byte_offset])
- & (byte)templ->mysql_null_bit_mask;
+ & (byte)templ->mysql_null_bit_mask;*/
+ byte *null_byte= buf + templ->mysql_null_byte_offset;
+ (*null_byte)&= ~templ->mysql_null_bit_mask;
+ (*null_byte)|= cached_rec[templ->mysql_null_byte_offset] &
+ templ->mysql_null_bit_mask;
}
}
}
@@ -3354,10 +3358,8 @@ row_search_for_mysql(
mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
- /*psergey-mrr:*/
ibool some_fields_in_buffer;
ibool get_clust_rec = 0;
- /*:psergey-mrr*/
rec_offs_init(offsets_);
@@ -4210,11 +4212,8 @@ no_gap_lock:
information via the clustered index record. */
ut_ad(index != clust_index);
- /*psergey-mrr:*/
get_clust_rec = TRUE;
goto idx_cond_check;
- /**goto requires_clust_rec;**/
- /*:psergey-mrr*/
}
}
@@ -4260,22 +4259,20 @@ no_gap_lock:
idx_cond_check:
- if (prebuilt->idx_cond_func)
- {
- int res;
- ut_ad(prebuilt->template_type != ROW_MYSQL_DUMMY_TEMPLATE);
- offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, &heap);
- row_sel_store_mysql_rec(buf, prebuilt, rec,
- offsets, 0, prebuilt->n_index_fields);
- res= prebuilt->idx_cond_func(prebuilt->idx_cond_func_arg);
- if (res == 0)
- goto next_rec;
- if (res == 2)
- {
- err = DB_RECORD_NOT_FOUND;
- goto idx_cond_failed;
- }
- }
+ if (prebuilt->idx_cond_func) {
+ int res;
+ ut_ad(prebuilt->template_type != ROW_MYSQL_DUMMY_TEMPLATE);
+ offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, &heap);
+ row_sel_store_mysql_rec(buf, prebuilt, rec,
+ offsets, 0, prebuilt->n_index_fields);
+ res= prebuilt->idx_cond_func(prebuilt->idx_cond_func_arg);
+ if (res == 0)
+ goto next_rec;
+ if (res == 2) {
+ err = DB_RECORD_NOT_FOUND;
+ goto idx_cond_failed;
+ }
+ }
/* Get the clustered index record if needed, if we did not do the
search using the clustered index. */
1
0

[Maria-developers] bzr commit into Mariadb 5.2, with Maria 2.0:maria/5.2 branch (igor:2741)
by Igor Babaev 22 Dec '09
by Igor Babaev 22 Dec '09
22 Dec '09
#At lp:maria/5.2 based on revid:igor@askmonty.org-20091221183447-z0shnu5ev2bie8re
2741 Igor Babaev 2009-12-22
Added the include files needed for join_cache.test.
added:
mysql-test/include/world.inc
mysql-test/include/world_schema.inc
mysql-test/include/world_schema1.inc
=== added file 'mysql-test/include/world.inc'
--- a/mysql-test/include/world.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/world.inc 2009-12-22 15:12:09 +0000
@@ -0,0 +1,5343 @@
+#
+# Populate the world database
+#
+
+# Table Country
+
+INSERT INTO Country VALUES
+('AFG','Afghanistan',652090.00,22720000,1),
+('NLD','Netherlands',41526.00,15864000,5),
+('ANT','Netherlands Antilles',800.00,217000,33),
+('ALB','Albania',28748.00,3401200,34),
+('DZA','Algeria',2381741.00,31471000,35),
+('ASM','American Samoa',199.00,68000,54),
+('AND','Andorra',468.00,78000,55),
+('AGO','Angola',1246700.00,12878000,56),
+('AIA','Anguilla',96.00,8000,62),
+('ATG','Antigua and Barbuda',442.00,68000,63),
+('ARE','United Arab Emirates',83600.00,2441000,65),
+('ARG','Argentina',2780400.00,37032000,69),
+('ARM','Armenia',29800.00,3520000,126),
+('ABW','Aruba',193.00,103000,129),
+('AUS','Australia',7741220.00,18886000,135),
+('AZE','Azerbaijan',86600.00,7734000,144),
+('BHS','Bahamas',13878.00,307000,148),
+('BHR','Bahrain',694.00,617000,149),
+('BGD','Bangladesh',143998.00,129155000,150),
+('BRB','Barbados',430.00,270000,174),
+('BEL','Belgium',30518.00,10239000,179),
+('BLZ','Belize',22696.00,241000,185),
+('BEN','Benin',112622.00,6097000,187),
+('BMU','Bermuda',53.00,65000,191),
+('BTN','Bhutan',47000.00,2124000,192),
+('BOL','Bolivia',1098581.00,8329000,194),
+('BIH','Bosnia and Herzegovina',51197.00,3972000,201),
+('BWA','Botswana',581730.00,1622000,204),
+('BRA','Brazil',8547403.00,170115000,211),
+('GBR','United Kingdom',242900.00,59623400,456),
+('VGB','Virgin Islands, British',151.00,21000,537),
+('BRN','Brunei',5765.00,328000,538),
+('BGR','Bulgaria',110994.00,8190900,539),
+('BFA','Burkina Faso',274000.00,11937000,549),
+('BDI','Burundi',27834.00,6695000,552),
+('CYM','Cayman Islands',264.00,38000,553),
+('CHL','Chile',756626.00,15211000,554),
+('COK','Cook Islands',236.00,20000,583),
+('CRI','Costa Rica',51100.00,4023000,584),
+('DJI','Djibouti',23200.00,638000,585),
+('DMA','Dominica',751.00,71000,586),
+('DOM','Dominican Republic',48511.00,8495000,587),
+('ECU','Ecuador',283561.00,12646000,594),
+('EGY','Egypt',1001449.00,68470000,608),
+('SLV','El Salvador',21041.00,6276000,645),
+('ERI','Eritrea',117600.00,3850000,652),
+('ESP','Spain',505992.00,39441700,653),
+('ZAF','South Africa',1221037.00,40377000,716),
+('ETH','Ethiopia',1104300.00,62565000,756),
+('FLK','Falkland Islands',12173.00,2000,763),
+('FJI','Fiji Islands',18274.00,817000,764),
+('PHL','Philippines',300000.00,75967000,766),
+('FRO','Faroe Islands',1399.00,43000,901),
+('GAB','Gabon',267668.00,1226000,902),
+('GMB','Gambia',11295.00,1305000,904),
+('GEO','Georgia',69700.00,4968000,905),
+('GHA','Ghana',238533.00,20212000,910),
+('GIB','Gibraltar',6.00,25000,915),
+('GRD','Grenada',344.00,94000,916),
+('GRL','Greenland',2166090.00,56000,917),
+('GLP','Guadeloupe',1705.00,456000,919),
+('GUM','Guam',549.00,168000,921),
+('GTM','Guatemala',108889.00,11385000,922),
+('GIN','Guinea',245857.00,7430000,926),
+('GNB','Guinea-Bissau',36125.00,1213000,927),
+('GUY','Guyana',214969.00,861000,928),
+('HTI','Haiti',27750.00,8222000,929),
+('HND','Honduras',112088.00,6485000,933),
+('HKG','Hong Kong',1075.00,6782000,937),
+('SJM','Svalbard and Jan Mayen',62422.00,3200,938),
+('IDN','Indonesia',1904569.00,212107000,939),
+('IND','India',3287263.00,1013662000,1109),
+('IRQ','Iraq',438317.00,23115000,1365),
+('IRN','Iran',1648195.00,67702000,1380),
+('IRL','Ireland',70273.00,3775100,1447),
+('ISL','Iceland',103000.00,279000,1449),
+('ISR','Israel',21056.00,6217000,1450),
+('ITA','Italy',301316.00,57680000,1464),
+('TMP','East Timor',14874.00,885000,1522),
+('AUT','Austria',83859.00,8091800,1523),
+('JAM','Jamaica',10990.00,2583000,1530),
+('JPN','Japan',377829.00,126714000,1532),
+('YEM','Yemen',527968.00,18112000,1780),
+('JOR','Jordan',88946.00,5083000,1786),
+('CXR','Christmas Island',135.00,2500,1791),
+('YUG','Yugoslavia',102173.00,10640000,1792),
+('KHM','Cambodia',181035.00,11168000,1800),
+('CMR','Cameroon',475442.00,15085000,1804),
+('CAN','Canada',9970610.00,31147000,1822),
+('CPV','Cape Verde',4033.00,428000,1859),
+('KAZ','Kazakstan',2724900.00,16223000,1864),
+('KEN','Kenya',580367.00,30080000,1881),
+('CAF','Central African Republic',622984.00,3615000,1889),
+('CHN','China',9572900.00,1277558000,1891),
+('KGZ','Kyrgyzstan',199900.00,4699000,2253),
+('KIR','Kiribati',726.00,83000,2256),
+('COL','Colombia',1138914.00,42321000,2257),
+('COM','Comoros',1862.00,578000,2295),
+('COG','Congo',342000.00,2943000,2296),
+('COD','Congo, The Democratic Republic of the',2344858.00,51654000,2298),
+('CCK','Cocos (Keeling) Islands',14.00,600,2317),
+('PRK','North Korea',120538.00,24039000,2318),
+('KOR','South Korea',99434.00,46844000,2331),
+('GRC','Greece',131626.00,10545700,2401),
+('HRV','Croatia',56538.00,4473000,2409),
+('CUB','Cuba',110861.00,11201000,2413),
+('KWT','Kuwait',17818.00,1972000,2429),
+('CYP','Cyprus',9251.00,754700,2430),
+('LAO','Laos',236800.00,5433000,2432),
+('LVA','Latvia',64589.00,2424200,2434),
+('LSO','Lesotho',30355.00,2153000,2437),
+('LBN','Lebanon',10400.00,3282000,2438),
+('LBR','Liberia',111369.00,3154000,2440),
+('LBY','Libyan Arab Jamahiriya',1759540.00,5605000,2441),
+('LIE','Liechtenstein',160.00,32300,2446),
+('LTU','Lithuania',65301.00,3698500,2447),
+('LUX','Luxembourg',2586.00,435700,2452),
+('ESH','Western Sahara',266000.00,293000,2453),
+('MAC','Macao',18.00,473000,2454),
+('MDG','Madagascar',587041.00,15942000,2455),
+('MKD','Macedonia',25713.00,2024000,2460),
+('MWI','Malawi',118484.00,10925000,2462),
+('MDV','Maldives',298.00,286000,2463),
+('MYS','Malaysia',329758.00,22244000,2464),
+('MLI','Mali',1240192.00,11234000,2482),
+('MLT','Malta',316.00,380200,2484),
+('MAR','Morocco',446550.00,28351000,2486),
+('MHL','Marshall Islands',181.00,64000,2507),
+('MTQ','Martinique',1102.00,395000,2508),
+('MRT','Mauritania',1025520.00,2670000,2509),
+('MUS','Mauritius',2040.00,1158000,2511),
+('MYT','Mayotte',373.00,149000,2514),
+('MEX','Mexico',1958201.00,98881000,2515),
+('FSM','Micronesia, Federated States of',702.00,119000,2689),
+('MDA','Moldova',33851.00,4380000,2690),
+('MCO','Monaco',1.50,34000,2695),
+('MNG','Mongolia',1566500.00,2662000,2696),
+('MSR','Montserrat',102.00,11000,2697),
+('MOZ','Mozambique',801590.00,19680000,2698),
+('MMR','Myanmar',676578.00,45611000,2710),
+('NAM','Namibia',824292.00,1726000,2726),
+('NRU','Nauru',21.00,12000,2728),
+('NPL','Nepal',147181.00,23930000,2729),
+('NIC','Nicaragua',130000.00,5074000,2734),
+('NER','Niger',1267000.00,10730000,2738),
+('NGA','Nigeria',923768.00,111506000,2754),
+('NIU','Niue',260.00,2000,2805),
+('NFK','Norfolk Island',36.00,2000,2806),
+('NOR','Norway',323877.00,4478500,2807),
+('CIV','Côte dÂIvoire',322463.00,14786000,2814),
+('OMN','Oman',309500.00,2542000,2821),
+('PAK','Pakistan',796095.00,156483000,2831),
+('PLW','Palau',459.00,19000,2881),
+('PAN','Panama',75517.00,2856000,2882),
+('PNG','Papua New Guinea',462840.00,4807000,2884),
+('PRY','Paraguay',406752.00,5496000,2885),
+('PER','Peru',1285216.00,25662000,2890),
+('PCN','Pitcairn',49.00,50,2912),
+('MNP','Northern Mariana Islands',464.00,78000,2913),
+('PRT','Portugal',91982.00,9997600,2914),
+('PRI','Puerto Rico',8875.00,3869000,2919),
+('POL','Poland',323250.00,38653600,2928),
+('GNQ','Equatorial Guinea',28051.00,453000,2972),
+('QAT','Qatar',11000.00,599000,2973),
+('FRA','France',551500.00,59225700,2974),
+('GUF','French Guiana',90000.00,181000,3014),
+('PYF','French Polynesia',4000.00,235000,3016),
+('REU','RÊunion',2510.00,699000,3017),
+('ROM','Romania',238391.00,22455500,3018),
+('RWA','Rwanda',26338.00,7733000,3047),
+('SWE','Sweden',449964.00,8861400,3048),
+('SHN','Saint Helena',314.00,6000,3063),
+('KNA','Saint Kitts and Nevis',261.00,38000,3064),
+('LCA','Saint Lucia',622.00,154000,3065),
+('VCT','Saint Vincent and the Grenadines',388.00,114000,3066),
+('SPM','Saint Pierre and Miquelon',242.00,7000,3067),
+('DEU','Germany',357022.00,82164700,3068),
+('SLB','Solomon Islands',28896.00,444000,3161),
+('ZMB','Zambia',752618.00,9169000,3162),
+('WSM','Samoa',2831.00,180000,3169),
+('SMR','San Marino',61.00,27000,3171),
+('STP','Sao Tome and Principe',964.00,147000,3172),
+('SAU','Saudi Arabia',2149690.00,21607000,3173),
+('SEN','Senegal',196722.00,9481000,3198),
+('SYC','Seychelles',455.00,77000,3206),
+('SLE','Sierra Leone',71740.00,4854000,3207),
+('SGP','Singapore',618.00,3567000,3208),
+('SVK','Slovakia',49012.00,5398700,3209),
+('SVN','Slovenia',20256.00,1987800,3212),
+('SOM','Somalia',637657.00,10097000,3214),
+('LKA','Sri Lanka',65610.00,18827000,3217),
+('SDN','Sudan',2505813.00,29490000,3225),
+('FIN','Finland',338145.00,5171300,3236),
+('SUR','Suriname',163265.00,417000,3243),
+('SWZ','Swaziland',17364.00,1008000,3244),
+('CHE','Switzerland',41284.00,7160400,3248),
+('SYR','Syria',185180.00,16125000,3250),
+('TJK','Tajikistan',143100.00,6188000,3261),
+('TWN','Taiwan',36188.00,22256000,3263),
+('TZA','Tanzania',883749.00,33517000,3306),
+('DNK','Denmark',43094.00,5330000,3315),
+('THA','Thailand',513115.00,61399000,3320),
+('TGO','Togo',56785.00,4629000,3332),
+('TKL','Tokelau',12.00,2000,3333),
+('TON','Tonga',650.00,99000,3334),
+('TTO','Trinidad and Tobago',5130.00,1295000,3336),
+('TCD','Chad',1284000.00,7651000,3337),
+('CZE','Czech Republic',78866.00,10278100,3339),
+('TUN','Tunisia',163610.00,9586000,3349),
+('TUR','Turkey',774815.00,66591000,3358),
+('TKM','Turkmenistan',488100.00,4459000,3419),
+('TCA','Turks and Caicos Islands',430.00,17000,3423),
+('TUV','Tuvalu',26.00,12000,3424),
+('UGA','Uganda',241038.00,21778000,3425),
+('UKR','Ukraine',603700.00,50456000,3426),
+('HUN','Hungary',93030.00,10043200,3483),
+('URY','Uruguay',175016.00,3337000,3492),
+('NCL','New Caledonia',18575.00,214000,3493),
+('NZL','New Zealand',270534.00,3862000,3499),
+('UZB','Uzbekistan',447400.00,24318000,3503),
+('BLR','Belarus',207600.00,10236000,3520),
+('WLF','Wallis and Futuna',200.00,15000,3536),
+('VUT','Vanuatu',12189.00,190000,3537),
+('VAT','Holy See (Vatican City State)',0.40,1000,3538),
+('VEN','Venezuela',912050.00,24170000,3539),
+('RUS','Russian Federation',17075400.00,146934000,3580),
+('VNM','Vietnam',331689.00,79832000,3770),
+('EST','Estonia',45227.00,1439200,3791),
+('USA','United States',9363520.00,278357000,3813),
+('VIR','Virgin Islands, U.S.',347.00,93000,4067),
+('ZWE','Zimbabwe',390757.00,11669000,4068),
+('PSE','Palestine',6257.00,3101000,4074),
+('ATA','Antarctica',13120000.00,0,NULL),
+('BVT','Bouvet Island',59.00,0,NULL),
+('IOT','British Indian Ocean Territory',78.00,0,NULL),
+('SGS','South Georgia and the South Sandwich Islands',3903.00,0,NULL),
+('HMD','Heard Island and McDonald Islands',359.00,0,NULL),
+('ATF','French Southern territories',7780.00,0,NULL),
+('UMI','United States Minor Outlying Islands',16.00,0,NULL);
+
+# Table City
+
+INSERT INTO City VALUES
+(1,'Kabul','AFG',1780000),
+(2,'Qandahar','AFG',237500),
+(3,'Herat','AFG',186800),
+(4,'Mazar-e-Sharif','AFG',127800),
+(5,'Amsterdam','NLD',731200),
+(6,'Rotterdam','NLD',593321),
+(7,'Haag','NLD',440900),
+(8,'Utrecht','NLD',234323),
+(9,'Eindhoven','NLD',201843),
+(10,'Tilburg','NLD',193238),
+(11,'Groningen','NLD',172701),
+(12,'Breda','NLD',160398),
+(13,'Apeldoorn','NLD',153491),
+(14,'Nijmegen','NLD',152463),
+(15,'Enschede','NLD',149544),
+(16,'Haarlem','NLD',148772),
+(17,'Almere','NLD',142465),
+(18,'Arnhem','NLD',138020),
+(19,'Zaanstad','NLD',135621),
+(20,'´s-Hertogenbosch','NLD',129170),
+(21,'Amersfoort','NLD',126270),
+(22,'Maastricht','NLD',122087),
+(23,'Dordrecht','NLD',119811),
+(24,'Leiden','NLD',117196),
+(25,'Haarlemmermeer','NLD',110722),
+(26,'Zoetermeer','NLD',110214),
+(27,'Emmen','NLD',105853),
+(28,'Zwolle','NLD',105819),
+(29,'Ede','NLD',101574),
+(30,'Delft','NLD',95268),
+(31,'Heerlen','NLD',95052),
+(32,'Alkmaar','NLD',92713),
+(33,'Willemstad','ANT',2345),
+(34,'Tirana','ALB',270000),
+(35,'Alger','DZA',2168000),
+(36,'Oran','DZA',609823),
+(37,'Constantine','DZA',443727),
+(38,'Annaba','DZA',222518),
+(39,'Batna','DZA',183377),
+(40,'SÊtif','DZA',179055),
+(41,'Sidi Bel Abbès','DZA',153106),
+(42,'Skikda','DZA',128747),
+(43,'Biskra','DZA',128281),
+(44,'Blida (el-Boulaida)','DZA',127284),
+(45,'BÊjaïa','DZA',117162),
+(46,'Mostaganem','DZA',115212),
+(47,'TÊbessa','DZA',112007),
+(48,'Tlemcen (Tilimsen)','DZA',110242),
+(49,'BÊchar','DZA',107311),
+(50,'Tiaret','DZA',100118),
+(51,'Ech-Chleff (el-Asnam)','DZA',96794),
+(52,'Ghardaïa','DZA',89415),
+(53,'Tafuna','ASM',5200),
+(54,'Fagatogo','ASM',2323),
+(55,'Andorra la Vella','AND',21189),
+(56,'Luanda','AGO',2022000),
+(57,'Huambo','AGO',163100),
+(58,'Lobito','AGO',130000),
+(59,'Benguela','AGO',128300),
+(60,'Namibe','AGO',118200),
+(61,'South Hill','AIA',961),
+(62,'The Valley','AIA',595),
+(63,'Saint John´s','ATG',24000),
+(64,'Dubai','ARE',669181),
+(65,'Abu Dhabi','ARE',398695),
+(66,'Sharja','ARE',320095),
+(67,'al-Ayn','ARE',225970),
+(68,'Ajman','ARE',114395),
+(69,'Buenos Aires','ARG',2982146),
+(70,'La Matanza','ARG',1266461),
+(71,'CÃŗrdoba','ARG',1157507),
+(72,'Rosario','ARG',907718),
+(73,'Lomas de Zamora','ARG',622013),
+(74,'Quilmes','ARG',559249),
+(75,'Almirante Brown','ARG',538918),
+(76,'La Plata','ARG',521936),
+(77,'Mar del Plata','ARG',512880),
+(78,'San Miguel de TucumÃĄn','ARG',470809),
+(79,'LanÃēs','ARG',469735),
+(80,'Merlo','ARG',463846),
+(81,'General San MartÃn','ARG',422542),
+(82,'Salta','ARG',367550),
+(83,'Moreno','ARG',356993),
+(84,'Santa FÊ','ARG',353063),
+(85,'Avellaneda','ARG',353046),
+(86,'Tres de Febrero','ARG',352311),
+(87,'MorÃŗn','ARG',349246),
+(88,'Florencio Varela','ARG',315432),
+(89,'San Isidro','ARG',306341),
+(90,'Tigre','ARG',296226),
+(91,'Malvinas Argentinas','ARG',290335),
+(92,'Vicente LÃŗpez','ARG',288341),
+(93,'Berazategui','ARG',276916),
+(94,'Corrientes','ARG',258103),
+(95,'San Miguel','ARG',248700),
+(96,'BahÃa Blanca','ARG',239810),
+(97,'Esteban EcheverrÃa','ARG',235760),
+(98,'Resistencia','ARG',229212),
+(99,'JosÊ C. Paz','ARG',221754),
+(100,'ParanÃĄ','ARG',207041),
+(101,'Godoy Cruz','ARG',206998),
+(102,'Posadas','ARG',201273),
+(103,'GuaymallÊn','ARG',200595),
+(104,'Santiago del Estero','ARG',189947),
+(105,'San Salvador de Jujuy','ARG',178748),
+(106,'Hurlingham','ARG',170028),
+(107,'NeuquÊn','ARG',167296),
+(108,'ItuzaingÃŗ','ARG',158197),
+(109,'San Fernando','ARG',153036),
+(110,'Formosa','ARG',147636),
+(111,'Las Heras','ARG',145823),
+(112,'La Rioja','ARG',138117),
+(113,'San Fernando del Valle de Cata','ARG',134935),
+(114,'RÃo Cuarto','ARG',134355),
+(115,'Comodoro Rivadavia','ARG',124104),
+(116,'Mendoza','ARG',123027),
+(117,'San NicolÃĄs de los Arroyos','ARG',119302),
+(118,'San Juan','ARG',119152),
+(119,'Escobar','ARG',116675),
+(120,'Concordia','ARG',116485),
+(121,'Pilar','ARG',113428),
+(122,'San Luis','ARG',110136),
+(123,'Ezeiza','ARG',99578),
+(124,'San Rafael','ARG',94651),
+(125,'Tandil','ARG',91101),
+(126,'Yerevan','ARM',1248700),
+(127,'Gjumri','ARM',211700),
+(128,'Vanadzor','ARM',172700),
+(129,'Oranjestad','ABW',29034),
+(130,'Sydney','AUS',3276207),
+(131,'Melbourne','AUS',2865329),
+(132,'Brisbane','AUS',1291117),
+(133,'Perth','AUS',1096829),
+(134,'Adelaide','AUS',978100),
+(135,'Canberra','AUS',322723),
+(136,'Gold Coast','AUS',311932),
+(137,'Newcastle','AUS',270324),
+(138,'Central Coast','AUS',227657),
+(139,'Wollongong','AUS',219761),
+(140,'Hobart','AUS',126118),
+(141,'Geelong','AUS',125382),
+(142,'Townsville','AUS',109914),
+(143,'Cairns','AUS',92273),
+(144,'Baku','AZE',1787800),
+(145,'Gäncä','AZE',299300),
+(146,'Sumqayit','AZE',283000),
+(147,'Mingäçevir','AZE',93900),
+(148,'Nassau','BHS',172000),
+(149,'al-Manama','BHR',148000),
+(150,'Dhaka','BGD',3612850),
+(151,'Chittagong','BGD',1392860),
+(152,'Khulna','BGD',663340),
+(153,'Rajshahi','BGD',294056),
+(154,'Narayanganj','BGD',202134),
+(155,'Rangpur','BGD',191398),
+(156,'Mymensingh','BGD',188713),
+(157,'Barisal','BGD',170232),
+(158,'Tungi','BGD',168702),
+(159,'Jessore','BGD',139710),
+(160,'Comilla','BGD',135313),
+(161,'Nawabganj','BGD',130577),
+(162,'Dinajpur','BGD',127815),
+(163,'Bogra','BGD',120170),
+(164,'Sylhet','BGD',117396),
+(165,'Brahmanbaria','BGD',109032),
+(166,'Tangail','BGD',106004),
+(167,'Jamalpur','BGD',103556),
+(168,'Pabna','BGD',103277),
+(169,'Naogaon','BGD',101266),
+(170,'Sirajganj','BGD',99669),
+(171,'Narsinghdi','BGD',98342),
+(172,'Saidpur','BGD',96777),
+(173,'Gazipur','BGD',96717),
+(174,'Bridgetown','BRB',6070),
+(175,'Antwerpen','BEL',446525),
+(176,'Gent','BEL',224180),
+(177,'Charleroi','BEL',200827),
+(178,'Liège','BEL',185639),
+(179,'Bruxelles [Brussel]','BEL',133859),
+(180,'Brugge','BEL',116246),
+(181,'Schaerbeek','BEL',105692),
+(182,'Namur','BEL',105419),
+(183,'Mons','BEL',90935),
+(184,'Belize City','BLZ',55810),
+(185,'Belmopan','BLZ',7105),
+(186,'Cotonou','BEN',536827),
+(187,'Porto-Novo','BEN',194000),
+(188,'Djougou','BEN',134099),
+(189,'Parakou','BEN',103577),
+(190,'Saint George','BMU',1800),
+(191,'Hamilton','BMU',1200),
+(192,'Thimphu','BTN',22000),
+(193,'Santa Cruz de la Sierra','BOL',935361),
+(194,'La Paz','BOL',758141),
+(195,'El Alto','BOL',534466),
+(196,'Cochabamba','BOL',482800),
+(197,'Oruro','BOL',223553),
+(198,'Sucre','BOL',178426),
+(199,'PotosÃ','BOL',140642),
+(200,'Tarija','BOL',125255);
+INSERT INTO City VALUES
+(201,'Sarajevo','BIH',360000),
+(202,'Banja Luka','BIH',143079),
+(203,'Zenica','BIH',96027),
+(204,'Gaborone','BWA',213017),
+(205,'Francistown','BWA',101805),
+(206,'SÃŖo Paulo','BRA',9968485),
+(207,'Rio de Janeiro','BRA',5598953),
+(208,'Salvador','BRA',2302832),
+(209,'Belo Horizonte','BRA',2139125),
+(210,'Fortaleza','BRA',2097757),
+(211,'BrasÃlia','BRA',1969868),
+(212,'Curitiba','BRA',1584232),
+(213,'Recife','BRA',1378087),
+(214,'Porto Alegre','BRA',1314032),
+(215,'Manaus','BRA',1255049),
+(216,'BelÊm','BRA',1186926),
+(217,'Guarulhos','BRA',1095874),
+(218,'GoiÃĸnia','BRA',1056330),
+(219,'Campinas','BRA',950043),
+(220,'SÃŖo Gonçalo','BRA',869254),
+(221,'Nova Iguaçu','BRA',862225),
+(222,'SÃŖo LuÃs','BRA',837588),
+(223,'MaceiÃŗ','BRA',786288),
+(224,'Duque de Caxias','BRA',746758),
+(225,'SÃŖo Bernardo do Campo','BRA',723132),
+(226,'Teresina','BRA',691942),
+(227,'Natal','BRA',688955),
+(228,'Osasco','BRA',659604),
+(229,'Campo Grande','BRA',649593),
+(230,'Santo AndrÊ','BRA',630073),
+(231,'JoÃŖo Pessoa','BRA',584029),
+(232,'JaboatÃŖo dos Guararapes','BRA',558680),
+(233,'Contagem','BRA',520801),
+(234,'SÃŖo JosÊ dos Campos','BRA',515553),
+(235,'UberlÃĸndia','BRA',487222),
+(236,'Feira de Santana','BRA',479992),
+(237,'RibeirÃŖo Preto','BRA',473276),
+(238,'Sorocaba','BRA',466823),
+(239,'NiterÃŗi','BRA',459884),
+(240,'CuiabÃĄ','BRA',453813),
+(241,'Juiz de Fora','BRA',450288),
+(242,'Aracaju','BRA',445555),
+(243,'SÃŖo JoÃŖo de Meriti','BRA',440052),
+(244,'Londrina','BRA',432257),
+(245,'Joinville','BRA',428011),
+(246,'Belford Roxo','BRA',425194),
+(247,'Santos','BRA',408748),
+(248,'Ananindeua','BRA',400940),
+(249,'Campos dos Goytacazes','BRA',398418),
+(250,'MauÃĄ','BRA',375055),
+(251,'CarapicuÃba','BRA',357552),
+(252,'Olinda','BRA',354732),
+(253,'Campina Grande','BRA',352497),
+(254,'SÃŖo JosÊ do Rio Preto','BRA',351944),
+(255,'Caxias do Sul','BRA',349581),
+(256,'Moji das Cruzes','BRA',339194),
+(257,'Diadema','BRA',335078),
+(258,'Aparecida de GoiÃĸnia','BRA',324662),
+(259,'Piracicaba','BRA',319104),
+(260,'Cariacica','BRA',319033),
+(261,'Vila Velha','BRA',318758),
+(262,'Pelotas','BRA',315415),
+(263,'Bauru','BRA',313670),
+(264,'Porto Velho','BRA',309750),
+(265,'Serra','BRA',302666),
+(266,'Betim','BRA',302108),
+(267,'JundÃaÃ','BRA',296127),
+(268,'Canoas','BRA',294125),
+(269,'Franca','BRA',290139),
+(270,'SÃŖo Vicente','BRA',286848),
+(271,'MaringÃĄ','BRA',286461),
+(272,'Montes Claros','BRA',286058),
+(273,'AnÃĄpolis','BRA',282197),
+(274,'FlorianÃŗpolis','BRA',281928),
+(275,'PetrÃŗpolis','BRA',279183),
+(276,'Itaquaquecetuba','BRA',270874),
+(277,'VitÃŗria','BRA',270626),
+(278,'Ponta Grossa','BRA',268013),
+(279,'Rio Branco','BRA',259537),
+(280,'Foz do Iguaçu','BRA',259425),
+(281,'MacapÃĄ','BRA',256033),
+(282,'IlhÊus','BRA',254970),
+(283,'VitÃŗria da Conquista','BRA',253587),
+(284,'Uberaba','BRA',249225),
+(285,'Paulista','BRA',248473),
+(286,'Limeira','BRA',245497),
+(287,'Blumenau','BRA',244379),
+(288,'Caruaru','BRA',244247),
+(289,'SantarÊm','BRA',241771),
+(290,'Volta Redonda','BRA',240315),
+(291,'Novo Hamburgo','BRA',239940),
+(292,'Caucaia','BRA',238738),
+(293,'Santa Maria','BRA',238473),
+(294,'Cascavel','BRA',237510),
+(295,'GuarujÃĄ','BRA',237206),
+(296,'RibeirÃŖo das Neves','BRA',232685),
+(297,'Governador Valadares','BRA',231724),
+(298,'TaubatÊ','BRA',229130),
+(299,'Imperatriz','BRA',224564),
+(300,'GravataÃ','BRA',223011),
+(301,'Embu','BRA',222223),
+(302,'MossorÃŗ','BRA',214901),
+(303,'VÃĄrzea Grande','BRA',214435),
+(304,'Petrolina','BRA',210540),
+(305,'Barueri','BRA',208426),
+(306,'ViamÃŖo','BRA',207557),
+(307,'Ipatinga','BRA',206338),
+(308,'Juazeiro','BRA',201073),
+(309,'Juazeiro do Norte','BRA',199636),
+(310,'TaboÃŖo da Serra','BRA',197550),
+(311,'SÃŖo JosÊ dos Pinhais','BRA',196884),
+(312,'MagÊ','BRA',196147),
+(313,'Suzano','BRA',195434),
+(314,'SÃŖo Leopoldo','BRA',189258),
+(315,'MarÃlia','BRA',188691),
+(316,'SÃŖo Carlos','BRA',187122),
+(317,'SumarÊ','BRA',186205),
+(318,'Presidente Prudente','BRA',185340),
+(319,'DivinÃŗpolis','BRA',185047),
+(320,'Sete Lagoas','BRA',182984),
+(321,'Rio Grande','BRA',182222),
+(322,'Itabuna','BRA',182148),
+(323,'JequiÊ','BRA',179128),
+(324,'Arapiraca','BRA',178988),
+(325,'Colombo','BRA',177764),
+(326,'Americana','BRA',177409),
+(327,'Alvorada','BRA',175574),
+(328,'Araraquara','BRA',174381),
+(329,'ItaboraÃ','BRA',173977),
+(330,'Santa BÃĄrbara d´Oeste','BRA',171657),
+(331,'Nova Friburgo','BRA',170697),
+(332,'JacareÃ','BRA',170356),
+(333,'Araçatuba','BRA',169303),
+(334,'Barra Mansa','BRA',168953),
+(335,'Praia Grande','BRA',168434),
+(336,'MarabÃĄ','BRA',167795),
+(337,'CriciÃēma','BRA',167661),
+(338,'Boa Vista','BRA',167185),
+(339,'Passo Fundo','BRA',166343),
+(340,'Dourados','BRA',164716),
+(341,'Santa Luzia','BRA',164704),
+(342,'Rio Claro','BRA',163551),
+(343,'MaracanaÃē','BRA',162022),
+(344,'Guarapuava','BRA',160510),
+(345,'RondonÃŗpolis','BRA',155115),
+(346,'SÃŖo JosÊ','BRA',155105),
+(347,'Cachoeiro de Itapemirim','BRA',155024),
+(348,'NilÃŗpolis','BRA',153383),
+(349,'Itapevi','BRA',150664),
+(350,'Cabo de Santo Agostinho','BRA',149964),
+(351,'Camaçari','BRA',149146),
+(352,'Sobral','BRA',146005),
+(353,'ItajaÃ','BRA',145197),
+(354,'ChapecÃŗ','BRA',144158),
+(355,'Cotia','BRA',140042),
+(356,'Lages','BRA',139570),
+(357,'Ferraz de Vasconcelos','BRA',139283),
+(358,'Indaiatuba','BRA',135968),
+(359,'HortolÃĸndia','BRA',135755),
+(360,'Caxias','BRA',133980),
+(361,'SÃŖo Caetano do Sul','BRA',133321),
+(362,'Itu','BRA',132736),
+(363,'Nossa Senhora do Socorro','BRA',131351),
+(364,'ParnaÃba','BRA',129756),
+(365,'Poços de Caldas','BRA',129683),
+(366,'TeresÃŗpolis','BRA',128079),
+(367,'Barreiras','BRA',127801),
+(368,'Castanhal','BRA',127634),
+(369,'Alagoinhas','BRA',126820),
+(370,'Itapecerica da Serra','BRA',126672),
+(371,'Uruguaiana','BRA',126305),
+(372,'ParanaguÃĄ','BRA',126076),
+(373,'IbiritÊ','BRA',125982),
+(374,'Timon','BRA',125812),
+(375,'LuziÃĸnia','BRA',125597),
+(376,'MacaÊ','BRA',125597),
+(377,'TeÃŗfilo Otoni','BRA',124489),
+(378,'Moji-Guaçu','BRA',123782),
+(379,'Palmas','BRA',121919),
+(380,'Pindamonhangaba','BRA',121904),
+(381,'Francisco Morato','BRA',121197),
+(382,'BagÊ','BRA',120793),
+(383,'Sapucaia do Sul','BRA',120217),
+(384,'Cabo Frio','BRA',119503),
+(385,'Itapetininga','BRA',119391),
+(386,'Patos de Minas','BRA',119262),
+(387,'Camaragibe','BRA',118968),
+(388,'Bragança Paulista','BRA',116929),
+(389,'Queimados','BRA',115020),
+(390,'AraguaÃna','BRA',114948),
+(391,'Garanhuns','BRA',114603),
+(392,'VitÃŗria de Santo AntÃŖo','BRA',113595),
+(393,'Santa Rita','BRA',113135),
+(394,'Barbacena','BRA',113079),
+(395,'Abaetetuba','BRA',111258),
+(396,'JaÃē','BRA',109965),
+(397,'Lauro de Freitas','BRA',109236),
+(398,'Franco da Rocha','BRA',108964),
+(399,'Teixeira de Freitas','BRA',108441),
+(400,'Varginha','BRA',108314);
+INSERT INTO City VALUES
+(401,'RibeirÃŖo Pires','BRA',108121),
+(402,'SabarÃĄ','BRA',107781),
+(403,'Catanduva','BRA',107761),
+(404,'Rio Verde','BRA',107755),
+(405,'Botucatu','BRA',107663),
+(406,'Colatina','BRA',107354),
+(407,'Santa Cruz do Sul','BRA',106734),
+(408,'Linhares','BRA',106278),
+(409,'Apucarana','BRA',105114),
+(410,'Barretos','BRA',104156),
+(411,'GuaratinguetÃĄ','BRA',103433),
+(412,'Cachoeirinha','BRA',103240),
+(413,'CodÃŗ','BRA',103153),
+(414,'JaraguÃĄ do Sul','BRA',102580),
+(415,'CubatÃŖo','BRA',102372),
+(416,'Itabira','BRA',102217),
+(417,'Itaituba','BRA',101320),
+(418,'Araras','BRA',101046),
+(419,'Resende','BRA',100627),
+(420,'Atibaia','BRA',100356),
+(421,'Pouso Alegre','BRA',100028),
+(422,'Toledo','BRA',99387),
+(423,'Crato','BRA',98965),
+(424,'Passos','BRA',98570),
+(425,'Araguari','BRA',98399),
+(426,'SÃŖo JosÊ de Ribamar','BRA',98318),
+(427,'Pinhais','BRA',98198),
+(428,'SertÃŖozinho','BRA',98140),
+(429,'Conselheiro Lafaiete','BRA',97507),
+(430,'Paulo Afonso','BRA',97291),
+(431,'Angra dos Reis','BRA',96864),
+(432,'EunÃĄpolis','BRA',96610),
+(433,'Salto','BRA',96348),
+(434,'Ourinhos','BRA',96291),
+(435,'Parnamirim','BRA',96210),
+(436,'Jacobina','BRA',96131),
+(437,'Coronel Fabriciano','BRA',95933),
+(438,'Birigui','BRA',94685),
+(439,'TatuÃ','BRA',93897),
+(440,'Ji-ParanÃĄ','BRA',93346),
+(441,'Bacabal','BRA',93121),
+(442,'CametÃĄ','BRA',92779),
+(443,'GuaÃba','BRA',92224),
+(444,'SÃŖo Lourenço da Mata','BRA',91999),
+(445,'Santana do Livramento','BRA',91779),
+(446,'Votorantim','BRA',91777),
+(447,'Campo Largo','BRA',91203),
+(448,'Patos','BRA',90519),
+(449,'Ituiutaba','BRA',90507),
+(450,'CorumbÃĄ','BRA',90111),
+(451,'Palhoça','BRA',89465),
+(452,'Barra do PiraÃ','BRA',89388),
+(453,'Bento Gonçalves','BRA',89254),
+(454,'PoÃĄ','BRA',89236),
+(455,'Ãguas Lindas de GoiÃĄs','BRA',89200),
+(456,'London','GBR',7285000),
+(457,'Birmingham','GBR',1013000),
+(458,'Glasgow','GBR',619680),
+(459,'Liverpool','GBR',461000),
+(460,'Edinburgh','GBR',450180),
+(461,'Sheffield','GBR',431607),
+(462,'Manchester','GBR',430000),
+(463,'Leeds','GBR',424194),
+(464,'Bristol','GBR',402000),
+(465,'Cardiff','GBR',321000),
+(466,'Coventry','GBR',304000),
+(467,'Leicester','GBR',294000),
+(468,'Bradford','GBR',289376),
+(469,'Belfast','GBR',287500),
+(470,'Nottingham','GBR',287000),
+(471,'Kingston upon Hull','GBR',262000),
+(472,'Plymouth','GBR',253000),
+(473,'Stoke-on-Trent','GBR',252000),
+(474,'Wolverhampton','GBR',242000),
+(475,'Derby','GBR',236000),
+(476,'Swansea','GBR',230000),
+(477,'Southampton','GBR',216000),
+(478,'Aberdeen','GBR',213070),
+(479,'Northampton','GBR',196000),
+(480,'Dudley','GBR',192171),
+(481,'Portsmouth','GBR',190000),
+(482,'Newcastle upon Tyne','GBR',189150),
+(483,'Sunderland','GBR',183310),
+(484,'Luton','GBR',183000),
+(485,'Swindon','GBR',180000),
+(486,'Southend-on-Sea','GBR',176000),
+(487,'Walsall','GBR',174739),
+(488,'Bournemouth','GBR',162000),
+(489,'Peterborough','GBR',156000),
+(490,'Brighton','GBR',156124),
+(491,'Blackpool','GBR',151000),
+(492,'Dundee','GBR',146690),
+(493,'West Bromwich','GBR',146386),
+(494,'Reading','GBR',148000),
+(495,'Oldbury/Smethwick (Warley)','GBR',145542),
+(496,'Middlesbrough','GBR',145000),
+(497,'Huddersfield','GBR',143726),
+(498,'Oxford','GBR',144000),
+(499,'Poole','GBR',141000),
+(500,'Bolton','GBR',139020),
+(501,'Blackburn','GBR',140000),
+(502,'Newport','GBR',139000),
+(503,'Preston','GBR',135000),
+(504,'Stockport','GBR',132813),
+(505,'Norwich','GBR',124000),
+(506,'Rotherham','GBR',121380),
+(507,'Cambridge','GBR',121000),
+(508,'Watford','GBR',113080),
+(509,'Ipswich','GBR',114000),
+(510,'Slough','GBR',112000),
+(511,'Exeter','GBR',111000),
+(512,'Cheltenham','GBR',106000),
+(513,'Gloucester','GBR',107000),
+(514,'Saint Helens','GBR',106293),
+(515,'Sutton Coldfield','GBR',106001),
+(516,'York','GBR',104425),
+(517,'Oldham','GBR',103931),
+(518,'Basildon','GBR',100924),
+(519,'Worthing','GBR',100000),
+(520,'Chelmsford','GBR',97451),
+(521,'Colchester','GBR',96063),
+(522,'Crawley','GBR',97000),
+(523,'Gillingham','GBR',92000),
+(524,'Solihull','GBR',94531),
+(525,'Rochdale','GBR',94313),
+(526,'Birkenhead','GBR',93087),
+(527,'Worcester','GBR',95000),
+(528,'Hartlepool','GBR',92000),
+(529,'Halifax','GBR',91069),
+(530,'Woking/Byfleet','GBR',92000),
+(531,'Southport','GBR',90959),
+(532,'Maidstone','GBR',90878),
+(533,'Eastbourne','GBR',90000),
+(534,'Grimsby','GBR',89000),
+(535,'Saint Helier','GBR',27523),
+(536,'Douglas','GBR',23487),
+(537,'Road Town','VGB',8000),
+(538,'Bandar Seri Begawan','BRN',21484),
+(539,'Sofija','BGR',1122302),
+(540,'Plovdiv','BGR',342584),
+(541,'Varna','BGR',299801),
+(542,'Burgas','BGR',195255),
+(543,'Ruse','BGR',166467),
+(544,'Stara Zagora','BGR',147939),
+(545,'Pleven','BGR',121952),
+(546,'Sliven','BGR',105530),
+(547,'Dobric','BGR',100399),
+(548,'Âumen','BGR',94686),
+(549,'Ouagadougou','BFA',824000),
+(550,'Bobo-Dioulasso','BFA',300000),
+(551,'Koudougou','BFA',105000),
+(552,'Bujumbura','BDI',300000),
+(553,'George Town','CYM',19600),
+(554,'Santiago de Chile','CHL',4703954),
+(555,'Puente Alto','CHL',386236),
+(556,'ViÃąa del Mar','CHL',312493),
+(557,'ValparaÃso','CHL',293800),
+(558,'Talcahuano','CHL',277752),
+(559,'Antofagasta','CHL',251429),
+(560,'San Bernardo','CHL',241910),
+(561,'Temuco','CHL',233041),
+(562,'ConcepciÃŗn','CHL',217664),
+(563,'Rancagua','CHL',212977),
+(564,'Arica','CHL',189036),
+(565,'Talca','CHL',187557),
+(566,'ChillÃĄn','CHL',178182),
+(567,'Iquique','CHL',177892),
+(568,'Los Angeles','CHL',158215),
+(569,'Puerto Montt','CHL',152194),
+(570,'Coquimbo','CHL',143353),
+(571,'Osorno','CHL',141468),
+(572,'La Serena','CHL',137409),
+(573,'Calama','CHL',137265),
+(574,'Valdivia','CHL',133106),
+(575,'Punta Arenas','CHL',125631),
+(576,'CopiapÃŗ','CHL',120128),
+(577,'QuilpuÊ','CHL',118857),
+(578,'CuricÃŗ','CHL',115766),
+(579,'Ovalle','CHL',94854),
+(580,'Coronel','CHL',93061),
+(581,'San Pedro de la Paz','CHL',91684),
+(582,'Melipilla','CHL',91056),
+(583,'Avarua','COK',11900),
+(584,'San JosÊ','CRI',339131),
+(585,'Djibouti','DJI',383000),
+(586,'Roseau','DMA',16243),
+(587,'Santo Domingo de GuzmÃĄn','DOM',1609966),
+(588,'Santiago de los Caballeros','DOM',365463),
+(589,'La Romana','DOM',140204),
+(590,'San Pedro de MacorÃs','DOM',124735),
+(591,'San Francisco de MacorÃs','DOM',108485),
+(592,'San Felipe de Puerto Plata','DOM',89423),
+(593,'Guayaquil','ECU',2070040),
+(594,'Quito','ECU',1573458),
+(595,'Cuenca','ECU',270353),
+(596,'Machala','ECU',210368),
+(597,'Santo Domingo de los Colorados','ECU',202111),
+(598,'Portoviejo','ECU',176413),
+(599,'Ambato','ECU',169612),
+(600,'Manta','ECU',164739);
+INSERT INTO City VALUES
+(601,'Duran [Eloy Alfaro]','ECU',152514),
+(602,'Ibarra','ECU',130643),
+(603,'Quevedo','ECU',129631),
+(604,'Milagro','ECU',124177),
+(605,'Loja','ECU',123875),
+(606,'RÃobamba','ECU',123163),
+(607,'Esmeraldas','ECU',123045),
+(608,'Cairo','EGY',6789479),
+(609,'Alexandria','EGY',3328196),
+(610,'Giza','EGY',2221868),
+(611,'Shubra al-Khayma','EGY',870716),
+(612,'Port Said','EGY',469533),
+(613,'Suez','EGY',417610),
+(614,'al-Mahallat al-Kubra','EGY',395402),
+(615,'Tanta','EGY',371010),
+(616,'al-Mansura','EGY',369621),
+(617,'Luxor','EGY',360503),
+(618,'Asyut','EGY',343498),
+(619,'Bahtim','EGY',275807),
+(620,'Zagazig','EGY',267351),
+(621,'al-Faiyum','EGY',260964),
+(622,'Ismailia','EGY',254477),
+(623,'Kafr al-Dawwar','EGY',231978),
+(624,'Assuan','EGY',219017),
+(625,'Damanhur','EGY',212203),
+(626,'al-Minya','EGY',201360),
+(627,'Bani Suwayf','EGY',172032),
+(628,'Qina','EGY',171275),
+(629,'Sawhaj','EGY',170125),
+(630,'Shibin al-Kawm','EGY',159909),
+(631,'Bulaq al-Dakrur','EGY',148787),
+(632,'Banha','EGY',145792),
+(633,'Warraq al-Arab','EGY',127108),
+(634,'Kafr al-Shaykh','EGY',124819),
+(635,'Mallawi','EGY',119283),
+(636,'Bilbays','EGY',113608),
+(637,'Mit Ghamr','EGY',101801),
+(638,'al-Arish','EGY',100447),
+(639,'Talkha','EGY',97700),
+(640,'Qalyub','EGY',97200),
+(641,'Jirja','EGY',95400),
+(642,'Idfu','EGY',94200),
+(643,'al-Hawamidiya','EGY',91700),
+(644,'Disuq','EGY',91300),
+(645,'San Salvador','SLV',415346),
+(646,'Santa Ana','SLV',139389),
+(647,'Mejicanos','SLV',138800),
+(648,'Soyapango','SLV',129800),
+(649,'San Miguel','SLV',127696),
+(650,'Nueva San Salvador','SLV',98400),
+(651,'Apopa','SLV',88800),
+(652,'Asmara','ERI',431000),
+(653,'Madrid','ESP',2879052),
+(654,'Barcelona','ESP',1503451),
+(655,'Valencia','ESP',739412),
+(656,'Sevilla','ESP',701927),
+(657,'Zaragoza','ESP',603367),
+(658,'MÃĄlaga','ESP',530553),
+(659,'Bilbao','ESP',357589),
+(660,'Las Palmas de Gran Canaria','ESP',354757),
+(661,'Murcia','ESP',353504),
+(662,'Palma de Mallorca','ESP',326993),
+(663,'Valladolid','ESP',319998),
+(664,'CÃŗrdoba','ESP',311708),
+(665,'Vigo','ESP',283670),
+(666,'Alicante [Alacant]','ESP',272432),
+(667,'GijÃŗn','ESP',267980),
+(668,'L´Hospitalet de Llobregat','ESP',247986),
+(669,'Granada','ESP',244767),
+(670,'A CoruÃąa (La CoruÃąa)','ESP',243402),
+(671,'Vitoria-Gasteiz','ESP',217154),
+(672,'Santa Cruz de Tenerife','ESP',213050),
+(673,'Badalona','ESP',209635),
+(674,'Oviedo','ESP',200453),
+(675,'MÃŗstoles','ESP',195351),
+(676,'Elche [Elx]','ESP',193174),
+(677,'Sabadell','ESP',184859),
+(678,'Santander','ESP',184165),
+(679,'Jerez de la Frontera','ESP',182660),
+(680,'Pamplona [IruÃąa]','ESP',180483),
+(681,'Donostia-San SebastiÃĄn','ESP',179208),
+(682,'Cartagena','ESP',177709),
+(683,'LeganÊs','ESP',173163),
+(684,'Fuenlabrada','ESP',171173),
+(685,'AlmerÃa','ESP',169027),
+(686,'Terrassa','ESP',168695),
+(687,'AlcalÃĄ de Henares','ESP',164463),
+(688,'Burgos','ESP',162802),
+(689,'Salamanca','ESP',158720),
+(690,'Albacete','ESP',147527),
+(691,'Getafe','ESP',145371),
+(692,'CÃĄdiz','ESP',142449),
+(693,'AlcorcÃŗn','ESP',142048),
+(694,'Huelva','ESP',140583),
+(695,'LeÃŗn','ESP',139809),
+(696,'CastellÃŗn de la Plana [Castell','ESP',139712),
+(697,'Badajoz','ESP',136613),
+(698,'[San CristÃŗbal de] la Laguna','ESP',127945),
+(699,'LogroÃąo','ESP',127093),
+(700,'Santa Coloma de Gramenet','ESP',120802),
+(701,'Tarragona','ESP',113016),
+(702,'Lleida (LÊrida)','ESP',112207),
+(703,'JaÊn','ESP',109247),
+(704,'Ourense (Orense)','ESP',109120),
+(705,'MatarÃŗ','ESP',104095),
+(706,'Algeciras','ESP',103106),
+(707,'Marbella','ESP',101144),
+(708,'Barakaldo','ESP',98212),
+(709,'Dos Hermanas','ESP',94591),
+(710,'Santiago de Compostela','ESP',93745),
+(711,'TorrejÃŗn de Ardoz','ESP',92262),
+(712,'Cape Town','ZAF',2352121),
+(713,'Soweto','ZAF',904165),
+(714,'Johannesburg','ZAF',756653),
+(715,'Port Elizabeth','ZAF',752319),
+(716,'Pretoria','ZAF',658630),
+(717,'Inanda','ZAF',634065),
+(718,'Durban','ZAF',566120),
+(719,'Vanderbijlpark','ZAF',468931),
+(720,'Kempton Park','ZAF',442633),
+(721,'Alberton','ZAF',410102),
+(722,'Pinetown','ZAF',378810),
+(723,'Pietermaritzburg','ZAF',370190),
+(724,'Benoni','ZAF',365467),
+(725,'Randburg','ZAF',341288),
+(726,'Umlazi','ZAF',339233),
+(727,'Bloemfontein','ZAF',334341),
+(728,'Vereeniging','ZAF',328535),
+(729,'Wonderboom','ZAF',283289),
+(730,'Roodepoort','ZAF',279340),
+(731,'Boksburg','ZAF',262648),
+(732,'Klerksdorp','ZAF',261911),
+(733,'Soshanguve','ZAF',242727),
+(734,'Newcastle','ZAF',222993),
+(735,'East London','ZAF',221047),
+(736,'Welkom','ZAF',203296),
+(737,'Kimberley','ZAF',197254),
+(738,'Uitenhage','ZAF',192120),
+(739,'Chatsworth','ZAF',189885),
+(740,'Mdantsane','ZAF',182639),
+(741,'Krugersdorp','ZAF',181503),
+(742,'Botshabelo','ZAF',177971),
+(743,'Brakpan','ZAF',171363),
+(744,'Witbank','ZAF',167183),
+(745,'Oberholzer','ZAF',164367),
+(746,'Germiston','ZAF',164252),
+(747,'Springs','ZAF',162072),
+(748,'Westonaria','ZAF',159632),
+(749,'Randfontein','ZAF',120838),
+(750,'Paarl','ZAF',105768),
+(751,'Potchefstroom','ZAF',101817),
+(752,'Rustenburg','ZAF',97008),
+(753,'Nigel','ZAF',96734),
+(754,'George','ZAF',93818),
+(755,'Ladysmith','ZAF',89292),
+(756,'Addis Abeba','ETH',2495000),
+(757,'Dire Dawa','ETH',164851),
+(758,'Nazret','ETH',127842),
+(759,'Gonder','ETH',112249),
+(760,'Dese','ETH',97314),
+(761,'Mekele','ETH',96938),
+(762,'Bahir Dar','ETH',96140),
+(763,'Stanley','FLK',1636),
+(764,'Suva','FJI',77366),
+(765,'Quezon','PHL',2173831),
+(766,'Manila','PHL',1581082),
+(767,'Kalookan','PHL',1177604),
+(768,'Davao','PHL',1147116),
+(769,'Cebu','PHL',718821),
+(770,'Zamboanga','PHL',601794),
+(771,'Pasig','PHL',505058),
+(772,'Valenzuela','PHL',485433),
+(773,'Las PiÃąas','PHL',472780),
+(774,'Antipolo','PHL',470866),
+(775,'Taguig','PHL',467375),
+(776,'Cagayan de Oro','PHL',461877),
+(777,'ParaÃąaque','PHL',449811),
+(778,'Makati','PHL',444867),
+(779,'Bacolod','PHL',429076),
+(780,'General Santos','PHL',411822),
+(781,'Marikina','PHL',391170),
+(782,'DasmariÃąas','PHL',379520),
+(783,'Muntinlupa','PHL',379310),
+(784,'Iloilo','PHL',365820),
+(785,'Pasay','PHL',354908),
+(786,'Malabon','PHL',338855),
+(787,'San JosÊ del Monte','PHL',315807),
+(788,'Bacoor','PHL',305699),
+(789,'Iligan','PHL',285061),
+(790,'Calamba','PHL',281146),
+(791,'Mandaluyong','PHL',278474),
+(792,'Butuan','PHL',267279),
+(793,'Angeles','PHL',263971),
+(794,'Tarlac','PHL',262481),
+(795,'Mandaue','PHL',259728),
+(796,'Baguio','PHL',252386),
+(797,'Batangas','PHL',247588),
+(798,'Cainta','PHL',242511),
+(799,'San Pedro','PHL',231403),
+ (800,'Navotas','PHL',230403);
+INSERT INTO City VALUES
+(801,'Cabanatuan','PHL',222859),
+(802,'San Fernando','PHL',221857),
+(803,'Lipa','PHL',218447),
+(804,'Lapu-Lapu','PHL',217019),
+(805,'San Pablo','PHL',207927),
+(806,'BiÃąan','PHL',201186),
+(807,'Taytay','PHL',198183),
+(808,'Lucena','PHL',196075),
+(809,'Imus','PHL',195482),
+(810,'Olongapo','PHL',194260),
+(811,'Binangonan','PHL',187691),
+(812,'Santa Rosa','PHL',185633),
+(813,'Tagum','PHL',179531),
+(814,'Tacloban','PHL',178639),
+(815,'Malolos','PHL',175291),
+(816,'Mabalacat','PHL',171045),
+(817,'Cotabato','PHL',163849),
+(818,'Meycauayan','PHL',163037),
+(819,'Puerto Princesa','PHL',161912),
+(820,'Legazpi','PHL',157010),
+(821,'Silang','PHL',156137),
+(822,'Ormoc','PHL',154297),
+(823,'San Carlos','PHL',154264),
+(824,'Kabankalan','PHL',149769),
+(825,'Talisay','PHL',148110),
+(826,'Valencia','PHL',147924),
+(827,'Calbayog','PHL',147187),
+(828,'Santa Maria','PHL',144282),
+(829,'Pagadian','PHL',142515),
+(830,'Cadiz','PHL',141954),
+(831,'Bago','PHL',141721),
+(832,'Toledo','PHL',141174),
+(833,'Naga','PHL',137810),
+(834,'San Mateo','PHL',135603),
+(835,'Panabo','PHL',133950),
+(836,'Koronadal','PHL',133786),
+(837,'Marawi','PHL',131090),
+(838,'Dagupan','PHL',130328),
+(839,'Sagay','PHL',129765),
+(840,'Roxas','PHL',126352),
+(841,'Lubao','PHL',125699),
+(842,'Digos','PHL',125171),
+(843,'San Miguel','PHL',123824),
+(844,'Malaybalay','PHL',123672),
+(845,'Tuguegarao','PHL',120645),
+(846,'Ilagan','PHL',119990),
+(847,'Baliuag','PHL',119675),
+(848,'Surigao','PHL',118534),
+(849,'San Carlos','PHL',118259),
+(850,'San Juan del Monte','PHL',117680),
+(851,'Tanauan','PHL',117539),
+(852,'Concepcion','PHL',115171),
+(853,'Rodriguez (Montalban)','PHL',115167),
+(854,'Sariaya','PHL',114568),
+(855,'Malasiqui','PHL',113190),
+(856,'General Mariano Alvarez','PHL',112446),
+(857,'Urdaneta','PHL',111582),
+(858,'Hagonoy','PHL',111425),
+(859,'San Jose','PHL',111009),
+(860,'Polomolok','PHL',110709),
+(861,'Santiago','PHL',110531),
+(862,'Tanza','PHL',110517),
+(863,'Ozamis','PHL',110420),
+(864,'Mexico','PHL',109481),
+(865,'San Jose','PHL',108254),
+(866,'Silay','PHL',107722),
+(867,'General Trias','PHL',107691),
+(868,'Tabaco','PHL',107166),
+(869,'Cabuyao','PHL',106630),
+(870,'Calapan','PHL',105910),
+(871,'Mati','PHL',105908),
+(872,'Midsayap','PHL',105760),
+(873,'Cauayan','PHL',103952),
+(874,'Gingoog','PHL',102379),
+(875,'Dumaguete','PHL',102265),
+(876,'San Fernando','PHL',102082),
+(877,'Arayat','PHL',101792),
+(878,'Bayawan (Tulong)','PHL',101391),
+(879,'Kidapawan','PHL',101205),
+(880,'Daraga (Locsin)','PHL',101031),
+(881,'Marilao','PHL',101017),
+(882,'Malita','PHL',100000),
+(883,'Dipolog','PHL',99862),
+(884,'Cavite','PHL',99367),
+(885,'Danao','PHL',98781),
+(886,'Bislig','PHL',97860),
+(887,'Talavera','PHL',97329),
+(888,'Guagua','PHL',96858),
+(889,'Bayambang','PHL',96609),
+(890,'Nasugbu','PHL',96113),
+(891,'Baybay','PHL',95630),
+(892,'Capas','PHL',95219),
+(893,'Sultan Kudarat','PHL',94861),
+(894,'Laoag','PHL',94466),
+(895,'Bayugan','PHL',93623),
+(896,'Malungon','PHL',93232),
+(897,'Santa Cruz','PHL',92694),
+(898,'Sorsogon','PHL',92512),
+(899,'Candelaria','PHL',92429),
+(900,'Ligao','PHL',90603),
+(901,'TÃŗrshavn','FRO',14542),
+(902,'Libreville','GAB',419000),
+(903,'Serekunda','GMB',102600),
+(904,'Banjul','GMB',42326),
+(905,'Tbilisi','GEO',1235200),
+(906,'Kutaisi','GEO',240900),
+(907,'Rustavi','GEO',155400),
+(908,'Batumi','GEO',137700),
+(909,'Sohumi','GEO',111700),
+(910,'Accra','GHA',1070000),
+(911,'Kumasi','GHA',385192),
+(912,'Tamale','GHA',151069),
+(913,'Tema','GHA',109975),
+(914,'Sekondi-Takoradi','GHA',103653),
+(915,'Gibraltar','GIB',27025),
+(916,'Saint George´s','GRD',4621),
+(917,'Nuuk','GRL',13445),
+(918,'Les Abymes','GLP',62947),
+(919,'Basse-Terre','GLP',12433),
+(920,'Tamuning','GUM',9500),
+(921,'AgaÃąa','GUM',1139),
+(922,'Ciudad de Guatemala','GTM',823301),
+(923,'Mixco','GTM',209791),
+(924,'Villa Nueva','GTM',101295),
+(925,'Quetzaltenango','GTM',90801),
+(926,'Conakry','GIN',1090610),
+(927,'Bissau','GNB',241000),
+(928,'Georgetown','GUY',254000),
+(929,'Port-au-Prince','HTI',884472),
+(930,'Carrefour','HTI',290204),
+(931,'Delmas','HTI',240429),
+(932,'Le-Cap-Haïtien','HTI',102233),
+(933,'Tegucigalpa','HND',813900),
+(934,'San Pedro Sula','HND',383900),
+(935,'La Ceiba','HND',89200),
+(936,'Kowloon and New Kowloon','HKG',1987996),
+(937,'Victoria','HKG',1312637),
+(938,'Longyearbyen','SJM',1438),
+(939,'Jakarta','IDN',9604900),
+(940,'Surabaya','IDN',2663820),
+(941,'Bandung','IDN',2429000),
+(942,'Medan','IDN',1843919),
+(943,'Palembang','IDN',1222764),
+(944,'Tangerang','IDN',1198300),
+(945,'Semarang','IDN',1104405),
+(946,'Ujung Pandang','IDN',1060257),
+(947,'Malang','IDN',716862),
+(948,'Bandar Lampung','IDN',680332),
+(949,'Bekasi','IDN',644300),
+(950,'Padang','IDN',534474),
+(951,'Surakarta','IDN',518600),
+(952,'Banjarmasin','IDN',482931),
+(953,'Pekan Baru','IDN',438638),
+(954,'Denpasar','IDN',435000),
+(955,'Yogyakarta','IDN',418944),
+(956,'Pontianak','IDN',409632),
+(957,'Samarinda','IDN',399175),
+(958,'Jambi','IDN',385201),
+(959,'Depok','IDN',365200),
+(960,'Cimahi','IDN',344600),
+(961,'Balikpapan','IDN',338752),
+(962,'Manado','IDN',332288),
+(963,'Mataram','IDN',306600),
+(964,'Pekalongan','IDN',301504),
+(965,'Tegal','IDN',289744),
+(966,'Bogor','IDN',285114),
+(967,'Ciputat','IDN',270800),
+(968,'Pondokgede','IDN',263200),
+(969,'Cirebon','IDN',254406),
+(970,'Kediri','IDN',253760),
+(971,'Ambon','IDN',249312),
+(972,'Jember','IDN',218500),
+(973,'Cilacap','IDN',206900),
+(974,'Cimanggis','IDN',205100),
+(975,'Pematang Siantar','IDN',203056),
+(976,'Purwokerto','IDN',202500),
+(977,'Ciomas','IDN',187400),
+(978,'Tasikmalaya','IDN',179800),
+(979,'Madiun','IDN',171532),
+(980,'Bengkulu','IDN',146439),
+(981,'Karawang','IDN',145000),
+(982,'Banda Aceh','IDN',143409),
+(983,'Palu','IDN',142800),
+(984,'Pasuruan','IDN',134019),
+(985,'Kupang','IDN',129300),
+(986,'Tebing Tinggi','IDN',129300),
+(987,'Percut Sei Tuan','IDN',129000),
+(988,'Binjai','IDN',127222),
+(989,'Sukabumi','IDN',125766),
+(990,'Waru','IDN',124300),
+(991,'Pangkal Pinang','IDN',124000),
+(992,'Magelang','IDN',123800),
+(993,'Blitar','IDN',122600),
+(994,'Serang','IDN',122400),
+(995,'Probolinggo','IDN',120770),
+(996,'Cilegon','IDN',117000),
+(997,'Cianjur','IDN',114300),
+(998,'Ciparay','IDN',111500),
+(999,'Lhokseumawe','IDN',109600),
+(1000,'Taman','IDN',107000);
+INSERT INTO City VALUES
+(1001,'Depok','IDN',106800),
+(1002,'Citeureup','IDN',105100),
+(1003,'Pemalang','IDN',103500),
+(1004,'Klaten','IDN',103300),
+(1005,'Salatiga','IDN',103000),
+(1006,'Cibinong','IDN',101300),
+(1007,'Palangka Raya','IDN',99693),
+(1008,'Mojokerto','IDN',96626),
+(1009,'Purwakarta','IDN',95900),
+(1010,'Garut','IDN',95800),
+(1011,'Kudus','IDN',95300),
+(1012,'Kendari','IDN',94800),
+(1013,'Jaya Pura','IDN',94700),
+(1014,'Gorontalo','IDN',94058),
+(1015,'Majalaya','IDN',93200),
+(1016,'Pondok Aren','IDN',92700),
+(1017,'Jombang','IDN',92600),
+(1018,'Sunggal','IDN',92300),
+(1019,'Batam','IDN',91871),
+(1020,'Padang Sidempuan','IDN',91200),
+(1021,'Sawangan','IDN',91100),
+(1022,'Banyuwangi','IDN',89900),
+(1023,'Tanjung Pinang','IDN',89900),
+(1024,'Mumbai (Bombay)','IND',10500000),
+(1025,'Delhi','IND',7206704),
+(1026,'Calcutta [Kolkata]','IND',4399819),
+(1027,'Chennai (Madras)','IND',3841396),
+(1028,'Hyderabad','IND',2964638),
+(1029,'Ahmedabad','IND',2876710),
+(1030,'Bangalore','IND',2660088),
+(1031,'Kanpur','IND',1874409),
+(1032,'Nagpur','IND',1624752),
+(1033,'Lucknow','IND',1619115),
+(1034,'Pune','IND',1566651),
+(1035,'Surat','IND',1498817),
+(1036,'Jaipur','IND',1458483),
+(1037,'Indore','IND',1091674),
+(1038,'Bhopal','IND',1062771),
+(1039,'Ludhiana','IND',1042740),
+(1040,'Vadodara (Baroda)','IND',1031346),
+(1041,'Kalyan','IND',1014557),
+(1042,'Madurai','IND',977856),
+(1043,'Haora (Howrah)','IND',950435),
+(1044,'Varanasi (Benares)','IND',929270),
+(1045,'Patna','IND',917243),
+(1046,'Srinagar','IND',892506),
+(1047,'Agra','IND',891790),
+(1048,'Coimbatore','IND',816321),
+(1049,'Thane (Thana)','IND',803389),
+(1050,'Allahabad','IND',792858),
+(1051,'Meerut','IND',753778),
+(1052,'Vishakhapatnam','IND',752037),
+(1053,'Jabalpur','IND',741927),
+(1054,'Amritsar','IND',708835),
+(1055,'Faridabad','IND',703592),
+(1056,'Vijayawada','IND',701827),
+(1057,'Gwalior','IND',690765),
+(1058,'Jodhpur','IND',666279),
+(1059,'Nashik (Nasik)','IND',656925),
+(1060,'Hubli-Dharwad','IND',648298),
+(1061,'Solapur (Sholapur)','IND',604215),
+(1062,'Ranchi','IND',599306),
+(1063,'Bareilly','IND',587211),
+(1064,'Guwahati (Gauhati)','IND',584342),
+(1065,'Shambajinagar (Aurangabad)','IND',573272),
+(1066,'Cochin (Kochi)','IND',564589),
+(1067,'Rajkot','IND',559407),
+(1068,'Kota','IND',537371),
+(1069,'Thiruvananthapuram (Trivandrum','IND',524006),
+(1070,'Pimpri-Chinchwad','IND',517083),
+(1071,'Jalandhar (Jullundur)','IND',509510),
+(1072,'Gorakhpur','IND',505566),
+(1073,'Chandigarh','IND',504094),
+(1074,'Mysore','IND',480692),
+(1075,'Aligarh','IND',480520),
+(1076,'Guntur','IND',471051),
+(1077,'Jamshedpur','IND',460577),
+(1078,'Ghaziabad','IND',454156),
+(1079,'Warangal','IND',447657),
+(1080,'Raipur','IND',438639),
+(1081,'Moradabad','IND',429214),
+(1082,'Durgapur','IND',425836),
+(1083,'Amravati','IND',421576),
+(1084,'Calicut (Kozhikode)','IND',419831),
+(1085,'Bikaner','IND',416289),
+(1086,'Bhubaneswar','IND',411542),
+(1087,'Kolhapur','IND',406370),
+(1088,'Kataka (Cuttack)','IND',403418),
+(1089,'Ajmer','IND',402700),
+(1090,'Bhavnagar','IND',402338),
+(1091,'Tiruchirapalli','IND',387223),
+(1092,'Bhilai','IND',386159),
+(1093,'Bhiwandi','IND',379070),
+(1094,'Saharanpur','IND',374945),
+(1095,'Ulhasnagar','IND',369077),
+(1096,'Salem','IND',366712),
+(1097,'Ujjain','IND',362266),
+(1098,'Malegaon','IND',342595),
+(1099,'Jamnagar','IND',341637),
+(1100,'Bokaro Steel City','IND',333683),
+(1101,'Akola','IND',328034),
+(1102,'Belgaum','IND',326399),
+(1103,'Rajahmundry','IND',324851),
+(1104,'Nellore','IND',316606),
+(1105,'Udaipur','IND',308571),
+(1106,'New Bombay','IND',307297),
+(1107,'Bhatpara','IND',304952),
+(1108,'Gulbarga','IND',304099),
+(1109,'New Delhi','IND',301297),
+(1110,'Jhansi','IND',300850),
+(1111,'Gaya','IND',291675),
+(1112,'Kakinada','IND',279980),
+(1113,'Dhule (Dhulia)','IND',278317),
+(1114,'Panihati','IND',275990),
+(1115,'Nanded (Nander)','IND',275083),
+(1116,'Mangalore','IND',273304),
+(1117,'Dehra Dun','IND',270159),
+(1118,'Kamarhati','IND',266889),
+(1119,'Davangere','IND',266082),
+(1120,'Asansol','IND',262188),
+(1121,'Bhagalpur','IND',253225),
+(1122,'Bellary','IND',245391),
+(1123,'Barddhaman (Burdwan)','IND',245079),
+(1124,'Rampur','IND',243742),
+(1125,'Jalgaon','IND',242193),
+(1126,'Muzaffarpur','IND',241107),
+(1127,'Nizamabad','IND',241034),
+(1128,'Muzaffarnagar','IND',240609),
+(1129,'Patiala','IND',238368),
+(1130,'Shahjahanpur','IND',237713),
+(1131,'Kurnool','IND',236800),
+(1132,'Tiruppur (Tirupper)','IND',235661),
+(1133,'Rohtak','IND',233400),
+(1134,'South Dum Dum','IND',232811),
+(1135,'Mathura','IND',226691),
+(1136,'Chandrapur','IND',226105),
+(1137,'Barahanagar (Baranagar)','IND',224821),
+(1138,'Darbhanga','IND',218391),
+(1139,'Siliguri (Shiliguri)','IND',216950),
+(1140,'Raurkela','IND',215489),
+(1141,'Ambattur','IND',215424),
+(1142,'Panipat','IND',215218),
+(1143,'Firozabad','IND',215128),
+(1144,'Ichalkaranji','IND',214950),
+(1145,'Jammu','IND',214737),
+(1146,'Ramagundam','IND',214384),
+(1147,'Eluru','IND',212866),
+(1148,'Brahmapur','IND',210418),
+(1149,'Alwar','IND',205086),
+(1150,'Pondicherry','IND',203065),
+(1151,'Thanjavur','IND',202013),
+(1152,'Bihar Sharif','IND',201323),
+(1153,'Tuticorin','IND',199854),
+(1154,'Imphal','IND',198535),
+(1155,'Latur','IND',197408),
+(1156,'Sagar','IND',195346),
+(1157,'Farrukhabad-cum-Fatehgarh','IND',194567),
+(1158,'Sangli','IND',193197),
+(1159,'Parbhani','IND',190255),
+(1160,'Nagar Coil','IND',190084),
+(1161,'Bijapur','IND',186939),
+(1162,'Kukatpalle','IND',185378),
+(1163,'Bally','IND',184474),
+(1164,'Bhilwara','IND',183965),
+(1165,'Ratlam','IND',183375),
+(1166,'Avadi','IND',183215),
+(1167,'Dindigul','IND',182477),
+(1168,'Ahmadnagar','IND',181339),
+(1169,'Bilaspur','IND',179833),
+(1170,'Shimoga','IND',179258),
+(1171,'Kharagpur','IND',177989),
+(1172,'Mira Bhayandar','IND',175372),
+(1173,'Vellore','IND',175061),
+(1174,'Jalna','IND',174985),
+(1175,'Burnpur','IND',174933),
+(1176,'Anantapur','IND',174924),
+(1177,'Allappuzha (Alleppey)','IND',174666),
+(1178,'Tirupati','IND',174369),
+(1179,'Karnal','IND',173751),
+(1180,'Burhanpur','IND',172710),
+(1181,'Hisar (Hissar)','IND',172677),
+(1182,'Tiruvottiyur','IND',172562),
+(1183,'Mirzapur-cum-Vindhyachal','IND',169336),
+(1184,'Secunderabad','IND',167461),
+(1185,'Nadiad','IND',167051),
+(1186,'Dewas','IND',164364),
+(1187,'Murwara (Katni)','IND',163431),
+(1188,'Ganganagar','IND',161482),
+(1189,'Vizianagaram','IND',160359),
+(1190,'Erode','IND',159232),
+(1191,'Machilipatnam (Masulipatam)','IND',159110),
+(1192,'Bhatinda (Bathinda)','IND',159042),
+(1193,'Raichur','IND',157551),
+(1194,'Agartala','IND',157358),
+(1195,'Arrah (Ara)','IND',157082),
+(1196,'Satna','IND',156630),
+(1197,'Lalbahadur Nagar','IND',155500),
+(1198,'Aizawl','IND',155240),
+(1199,'Uluberia','IND',155172),
+(1200,'Katihar','IND',154367);
+INSERT INTO City VALUES
+(1201,'Cuddalore','IND',153086),
+(1202,'Hugli-Chinsurah','IND',151806),
+(1203,'Dhanbad','IND',151789),
+(1204,'Raiganj','IND',151045),
+(1205,'Sambhal','IND',150869),
+(1206,'Durg','IND',150645),
+(1207,'Munger (Monghyr)','IND',150112),
+(1208,'Kanchipuram','IND',150100),
+(1209,'North Dum Dum','IND',149965),
+(1210,'Karimnagar','IND',148583),
+(1211,'Bharatpur','IND',148519),
+(1212,'Sikar','IND',148272),
+(1213,'Hardwar (Haridwar)','IND',147305),
+(1214,'Dabgram','IND',147217),
+(1215,'Morena','IND',147124),
+(1216,'Noida','IND',146514),
+(1217,'Hapur','IND',146262),
+(1218,'Bhusawal','IND',145143),
+(1219,'Khandwa','IND',145133),
+(1220,'Yamuna Nagar','IND',144346),
+(1221,'Sonipat (Sonepat)','IND',143922),
+(1222,'Tenali','IND',143726),
+(1223,'Raurkela Civil Township','IND',140408),
+(1224,'Kollam (Quilon)','IND',139852),
+(1225,'Kumbakonam','IND',139483),
+(1226,'Ingraj Bazar (English Bazar)','IND',139204),
+(1227,'Timkur','IND',138903),
+(1228,'Amroha','IND',137061),
+(1229,'Serampore','IND',137028),
+(1230,'Chapra','IND',136877),
+(1231,'Pali','IND',136842),
+(1232,'Maunath Bhanjan','IND',136697),
+(1233,'Adoni','IND',136182),
+(1234,'Jaunpur','IND',136062),
+(1235,'Tirunelveli','IND',135825),
+(1236,'Bahraich','IND',135400),
+(1237,'Gadag Betigeri','IND',134051),
+(1238,'Proddatur','IND',133914),
+(1239,'Chittoor','IND',133462),
+(1240,'Barrackpur','IND',133265),
+(1241,'Bharuch (Broach)','IND',133102),
+(1242,'Naihati','IND',132701),
+(1243,'Shillong','IND',131719),
+(1244,'Sambalpur','IND',131138),
+(1245,'Junagadh','IND',130484),
+(1246,'Rae Bareli','IND',129904),
+(1247,'Rewa','IND',128981),
+(1248,'Gurgaon','IND',128608),
+(1249,'Khammam','IND',127992),
+(1250,'Bulandshahr','IND',127201),
+(1251,'Navsari','IND',126089),
+(1252,'Malkajgiri','IND',126066),
+(1253,'Midnapore (Medinipur)','IND',125498),
+(1254,'Miraj','IND',125407),
+(1255,'Raj Nandgaon','IND',125371),
+(1256,'Alandur','IND',125244),
+(1257,'Puri','IND',125199),
+(1258,'Navadwip','IND',125037),
+(1259,'Sirsa','IND',125000),
+(1260,'Korba','IND',124501),
+(1261,'Faizabad','IND',124437),
+(1262,'Etawah','IND',124072),
+(1263,'Pathankot','IND',123930),
+(1264,'Gandhinagar','IND',123359),
+(1265,'Palghat (Palakkad)','IND',123289),
+(1266,'Veraval','IND',123000),
+(1267,'Hoshiarpur','IND',122705),
+(1268,'Ambala','IND',122596),
+(1269,'Sitapur','IND',121842),
+(1270,'Bhiwani','IND',121629),
+(1271,'Cuddapah','IND',121463),
+(1272,'Bhimavaram','IND',121314),
+(1273,'Krishnanagar','IND',121110),
+(1274,'Chandannagar','IND',120378),
+(1275,'Mandya','IND',120265),
+(1276,'Dibrugarh','IND',120127),
+(1277,'Nandyal','IND',119813),
+(1278,'Balurghat','IND',119796),
+(1279,'Neyveli','IND',118080),
+(1280,'Fatehpur','IND',117675),
+(1281,'Mahbubnagar','IND',116833),
+(1282,'Budaun','IND',116695),
+(1283,'Porbandar','IND',116671),
+(1284,'Silchar','IND',115483),
+(1285,'Berhampore (Baharampur)','IND',115144),
+(1286,'Purnea (Purnia)','IND',114912),
+(1287,'Bankura','IND',114876),
+(1288,'Rajapalaiyam','IND',114202),
+(1289,'Titagarh','IND',114085),
+(1290,'Halisahar','IND',114028),
+(1291,'Hathras','IND',113285),
+(1292,'Bhir (Bid)','IND',112434),
+(1293,'Pallavaram','IND',111866),
+(1294,'Anand','IND',110266),
+(1295,'Mango','IND',110024),
+(1296,'Santipur','IND',109956),
+(1297,'Bhind','IND',109755),
+(1298,'Gondiya','IND',109470),
+(1299,'Tiruvannamalai','IND',109196),
+(1300,'Yeotmal (Yavatmal)','IND',108578),
+(1301,'Kulti-Barakar','IND',108518),
+(1302,'Moga','IND',108304),
+(1303,'Shivapuri','IND',108277),
+(1304,'Bidar','IND',108016),
+(1305,'Guntakal','IND',107592),
+(1306,'Unnao','IND',107425),
+(1307,'Barasat','IND',107365),
+(1308,'Tambaram','IND',107187),
+(1309,'Abohar','IND',107163),
+(1310,'Pilibhit','IND',106605),
+(1311,'Valparai','IND',106523),
+(1312,'Gonda','IND',106078),
+(1313,'Surendranagar','IND',105973),
+(1314,'Qutubullapur','IND',105380),
+(1315,'Beawar','IND',105363),
+(1316,'Hindupur','IND',104651),
+(1317,'Gandhidham','IND',104585),
+(1318,'Haldwani-cum-Kathgodam','IND',104195),
+(1319,'Tellicherry (Thalassery)','IND',103579),
+(1320,'Wardha','IND',102985),
+(1321,'Rishra','IND',102649),
+(1322,'Bhuj','IND',102176),
+(1323,'Modinagar','IND',101660),
+(1324,'Gudivada','IND',101656),
+(1325,'Basirhat','IND',101409),
+(1326,'Uttarpara-Kotrung','IND',100867),
+(1327,'Ongole','IND',100836),
+(1328,'North Barrackpur','IND',100513),
+(1329,'Guna','IND',100490),
+(1330,'Haldia','IND',100347),
+(1331,'Habra','IND',100223),
+(1332,'Kanchrapara','IND',100194),
+(1333,'Tonk','IND',100079),
+(1334,'Champdani','IND',98818),
+(1335,'Orai','IND',98640),
+(1336,'Pudukkottai','IND',98619),
+(1337,'Sasaram','IND',98220),
+(1338,'Hazaribag','IND',97712),
+(1339,'Palayankottai','IND',97662),
+(1340,'Banda','IND',97227),
+(1341,'Godhra','IND',96813),
+(1342,'Hospet','IND',96322),
+(1343,'Ashoknagar-Kalyangarh','IND',96315),
+(1344,'Achalpur','IND',96216),
+(1345,'Patan','IND',96109),
+(1346,'Mandasor','IND',95758),
+(1347,'Damoh','IND',95661),
+(1348,'Satara','IND',95133),
+(1349,'Meerut Cantonment','IND',94876),
+(1350,'Dehri','IND',94526),
+(1351,'Delhi Cantonment','IND',94326),
+(1352,'Chhindwara','IND',93731),
+(1353,'Bansberia','IND',93447),
+(1354,'Nagaon','IND',93350),
+(1355,'Kanpur Cantonment','IND',93109),
+(1356,'Vidisha','IND',92917),
+(1357,'Bettiah','IND',92583),
+(1358,'Purulia','IND',92574),
+(1359,'Hassan','IND',90803),
+(1360,'Ambala Sadar','IND',90712),
+(1361,'Baidyabati','IND',90601),
+(1362,'Morvi','IND',90357),
+(1363,'Raigarh','IND',89166),
+(1364,'Vejalpur','IND',89053),
+(1365,'Baghdad','IRQ',4336000),
+(1366,'Mosul','IRQ',879000),
+(1367,'Irbil','IRQ',485968),
+(1368,'Kirkuk','IRQ',418624),
+(1369,'Basra','IRQ',406296),
+(1370,'al-Sulaymaniya','IRQ',364096),
+(1371,'al-Najaf','IRQ',309010),
+(1372,'Karbala','IRQ',296705),
+(1373,'al-Hilla','IRQ',268834),
+(1374,'al-Nasiriya','IRQ',265937),
+(1375,'al-Amara','IRQ',208797),
+(1376,'al-Diwaniya','IRQ',196519),
+(1377,'al-Ramadi','IRQ',192556),
+(1378,'al-Kut','IRQ',183183),
+(1379,'Baquba','IRQ',114516),
+(1380,'Teheran','IRN',6758845),
+(1381,'Mashhad','IRN',1887405),
+(1382,'Esfahan','IRN',1266072),
+(1383,'Tabriz','IRN',1191043),
+(1384,'Shiraz','IRN',1053025),
+(1385,'Karaj','IRN',940968),
+(1386,'Ahvaz','IRN',804980),
+(1387,'Qom','IRN',777677),
+(1388,'Kermanshah','IRN',692986),
+(1389,'Urmia','IRN',435200),
+(1390,'Zahedan','IRN',419518),
+(1391,'Rasht','IRN',417748),
+(1392,'Hamadan','IRN',401281),
+(1393,'Kerman','IRN',384991),
+(1394,'Arak','IRN',380755),
+(1395,'Ardebil','IRN',340386),
+(1396,'Yazd','IRN',326776),
+(1397,'Qazvin','IRN',291117),
+(1398,'Zanjan','IRN',286295),
+(1399,'Sanandaj','IRN',277808),
+(1400,'Bandar-e-Abbas','IRN',273578);
+INSERT INTO City VALUES
+(1401,'Khorramabad','IRN',272815),
+(1402,'Eslamshahr','IRN',265450),
+(1403,'Borujerd','IRN',217804),
+(1404,'Abadan','IRN',206073),
+(1405,'Dezful','IRN',202639),
+(1406,'Kashan','IRN',201372),
+(1407,'Sari','IRN',195882),
+(1408,'Gorgan','IRN',188710),
+(1409,'Najafabad','IRN',178498),
+(1410,'Sabzevar','IRN',170738),
+(1411,'Khomeynishahr','IRN',165888),
+(1412,'Amol','IRN',159092),
+(1413,'Neyshabur','IRN',158847),
+(1414,'Babol','IRN',158346),
+(1415,'Khoy','IRN',148944),
+(1416,'Malayer','IRN',144373),
+(1417,'Bushehr','IRN',143641),
+(1418,'Qaemshahr','IRN',143286),
+(1419,'Qarchak','IRN',142690),
+(1420,'Qods','IRN',138278),
+(1421,'Sirjan','IRN',135024),
+(1422,'Bojnurd','IRN',134835),
+(1423,'Maragheh','IRN',132318),
+(1424,'Birjand','IRN',127608),
+(1425,'Ilam','IRN',126346),
+(1426,'Bukan','IRN',120020),
+(1427,'Masjed-e-Soleyman','IRN',116883),
+(1428,'Saqqez','IRN',115394),
+(1429,'Gonbad-e Qabus','IRN',111253),
+(1430,'Saveh','IRN',111245),
+(1431,'Mahabad','IRN',107799),
+(1432,'Varamin','IRN',107233),
+(1433,'Andimeshk','IRN',106923),
+(1434,'Khorramshahr','IRN',105636),
+(1435,'Shahrud','IRN',104765),
+(1436,'Marv Dasht','IRN',103579),
+(1437,'Zabol','IRN',100887),
+(1438,'Shahr-e Kord','IRN',100477),
+(1439,'Bandar-e Anzali','IRN',98500),
+(1440,'Rafsanjan','IRN',98300),
+(1441,'Marand','IRN',96400),
+(1442,'Torbat-e Heydariyeh','IRN',94600),
+(1443,'Jahrom','IRN',94200),
+(1444,'Semnan','IRN',91045),
+(1445,'Miandoab','IRN',90100),
+(1446,'Qomsheh','IRN',89800),
+(1447,'Dublin','IRL',481854),
+(1448,'Cork','IRL',127187),
+(1449,'ReykjavÃk','ISL',109184),
+(1450,'Jerusalem','ISR',633700),
+(1451,'Tel Aviv-Jaffa','ISR',348100),
+(1452,'Haifa','ISR',265700),
+(1453,'Rishon Le Ziyyon','ISR',188200),
+(1454,'Beerseba','ISR',163700),
+(1455,'Holon','ISR',163100),
+(1456,'Petah Tiqwa','ISR',159400),
+(1457,'Ashdod','ISR',155800),
+(1458,'Netanya','ISR',154900),
+(1459,'Bat Yam','ISR',137000),
+(1460,'Bene Beraq','ISR',133900),
+(1461,'Ramat Gan','ISR',126900),
+(1462,'Ashqelon','ISR',92300),
+(1463,'Rehovot','ISR',90300),
+(1464,'Roma','ITA',2643581),
+(1465,'Milano','ITA',1300977),
+(1466,'Napoli','ITA',1002619),
+(1467,'Torino','ITA',903705),
+(1468,'Palermo','ITA',683794),
+(1469,'Genova','ITA',636104),
+(1470,'Bologna','ITA',381161),
+(1471,'Firenze','ITA',376662),
+(1472,'Catania','ITA',337862),
+(1473,'Bari','ITA',331848),
+(1474,'Venezia','ITA',277305),
+(1475,'Messina','ITA',259156),
+(1476,'Verona','ITA',255268),
+(1477,'Trieste','ITA',216459),
+(1478,'Padova','ITA',211391),
+(1479,'Taranto','ITA',208214),
+(1480,'Brescia','ITA',191317),
+(1481,'Reggio di Calabria','ITA',179617),
+(1482,'Modena','ITA',176022),
+(1483,'Prato','ITA',172473),
+(1484,'Parma','ITA',168717),
+(1485,'Cagliari','ITA',165926),
+(1486,'Livorno','ITA',161673),
+(1487,'Perugia','ITA',156673),
+(1488,'Foggia','ITA',154891),
+(1489,'Reggio nell´ Emilia','ITA',143664),
+(1490,'Salerno','ITA',142055),
+(1491,'Ravenna','ITA',138418),
+(1492,'Ferrara','ITA',132127),
+(1493,'Rimini','ITA',131062),
+(1494,'Syrakusa','ITA',126282),
+(1495,'Sassari','ITA',120803),
+(1496,'Monza','ITA',119516),
+(1497,'Bergamo','ITA',117837),
+(1498,'Pescara','ITA',115698),
+(1499,'Latina','ITA',114099),
+(1500,'Vicenza','ITA',109738),
+(1501,'Terni','ITA',107770),
+(1502,'ForlÃŦ','ITA',107475),
+(1503,'Trento','ITA',104906),
+(1504,'Novara','ITA',102037),
+(1505,'Piacenza','ITA',98384),
+(1506,'Ancona','ITA',98329),
+(1507,'Lecce','ITA',98208),
+(1508,'Bolzano','ITA',97232),
+(1509,'Catanzaro','ITA',96700),
+(1510,'La Spezia','ITA',95504),
+(1511,'Udine','ITA',94932),
+(1512,'Torre del Greco','ITA',94505),
+(1513,'Andria','ITA',94443),
+(1514,'Brindisi','ITA',93454),
+(1515,'Giugliano in Campania','ITA',93286),
+(1516,'Pisa','ITA',92379),
+(1517,'Barletta','ITA',91904),
+(1518,'Arezzo','ITA',91729),
+(1519,'Alessandria','ITA',90289),
+(1520,'Cesena','ITA',89852),
+(1521,'Pesaro','ITA',88987),
+(1522,'Dili','TMP',47900),
+(1523,'Wien','AUT',1608144),
+(1524,'Graz','AUT',240967),
+(1525,'Linz','AUT',188022),
+(1526,'Salzburg','AUT',144247),
+(1527,'Innsbruck','AUT',111752),
+(1528,'Klagenfurt','AUT',91141),
+(1529,'Spanish Town','JAM',110379),
+(1530,'Kingston','JAM',103962),
+(1531,'Portmore','JAM',99799),
+(1532,'Tokyo','JPN',7980230),
+(1533,'Jokohama [Yokohama]','JPN',3339594),
+(1534,'Osaka','JPN',2595674),
+(1535,'Nagoya','JPN',2154376),
+(1536,'Sapporo','JPN',1790886),
+(1537,'Kioto','JPN',1461974),
+(1538,'Kobe','JPN',1425139),
+(1539,'Fukuoka','JPN',1308379),
+(1540,'Kawasaki','JPN',1217359),
+(1541,'Hiroshima','JPN',1119117),
+(1542,'Kitakyushu','JPN',1016264),
+(1543,'Sendai','JPN',989975),
+(1544,'Chiba','JPN',863930),
+(1545,'Sakai','JPN',797735),
+(1546,'Kumamoto','JPN',656734),
+(1547,'Okayama','JPN',624269),
+(1548,'Sagamihara','JPN',586300),
+(1549,'Hamamatsu','JPN',568796),
+(1550,'Kagoshima','JPN',549977),
+(1551,'Funabashi','JPN',545299),
+(1552,'Higashiosaka','JPN',517785),
+(1553,'Hachioji','JPN',513451),
+(1554,'Niigata','JPN',497464),
+(1555,'Amagasaki','JPN',481434),
+(1556,'Himeji','JPN',475167),
+(1557,'Shizuoka','JPN',473854),
+(1558,'Urawa','JPN',469675),
+(1559,'Matsuyama','JPN',466133),
+(1560,'Matsudo','JPN',461126),
+(1561,'Kanazawa','JPN',455386),
+(1562,'Kawaguchi','JPN',452155),
+(1563,'Ichikawa','JPN',441893),
+(1564,'Omiya','JPN',441649),
+(1565,'Utsunomiya','JPN',440353),
+(1566,'Oita','JPN',433401),
+(1567,'Nagasaki','JPN',432759),
+(1568,'Yokosuka','JPN',430200),
+(1569,'Kurashiki','JPN',425103),
+(1570,'Gifu','JPN',408007),
+(1571,'Hirakata','JPN',403151),
+(1572,'Nishinomiya','JPN',397618),
+(1573,'Toyonaka','JPN',396689),
+(1574,'Wakayama','JPN',391233),
+(1575,'Fukuyama','JPN',376921),
+(1576,'Fujisawa','JPN',372840),
+(1577,'Asahikawa','JPN',364813),
+(1578,'Machida','JPN',364197),
+(1579,'Nara','JPN',362812),
+(1580,'Takatsuki','JPN',361747),
+(1581,'Iwaki','JPN',361737),
+(1582,'Nagano','JPN',361391),
+(1583,'Toyohashi','JPN',360066),
+(1584,'Toyota','JPN',346090),
+(1585,'Suita','JPN',345750),
+(1586,'Takamatsu','JPN',332471),
+(1587,'Koriyama','JPN',330335),
+(1588,'Okazaki','JPN',328711),
+(1589,'Kawagoe','JPN',327211),
+(1590,'Tokorozawa','JPN',325809),
+(1591,'Toyama','JPN',325790),
+(1592,'Kochi','JPN',324710),
+(1593,'Kashiwa','JPN',320296),
+(1594,'Akita','JPN',314440),
+(1595,'Miyazaki','JPN',303784),
+(1596,'Koshigaya','JPN',301446),
+(1597,'Naha','JPN',299851),
+(1598,'Aomori','JPN',295969),
+(1599,'Hakodate','JPN',294788),
+(1600,'Akashi','JPN',292253);
+INSERT INTO City VALUES
+(1601,'Yokkaichi','JPN',288173),
+(1602,'Fukushima','JPN',287525),
+(1603,'Morioka','JPN',287353),
+(1604,'Maebashi','JPN',284473),
+(1605,'Kasugai','JPN',282348),
+(1606,'Otsu','JPN',282070),
+(1607,'Ichihara','JPN',279280),
+(1608,'Yao','JPN',276421),
+(1609,'Ichinomiya','JPN',270828),
+(1610,'Tokushima','JPN',269649),
+(1611,'Kakogawa','JPN',266281),
+(1612,'Ibaraki','JPN',261020),
+(1613,'Neyagawa','JPN',257315),
+(1614,'Shimonoseki','JPN',257263),
+(1615,'Yamagata','JPN',255617),
+(1616,'Fukui','JPN',254818),
+(1617,'Hiratsuka','JPN',254207),
+(1618,'Mito','JPN',246559),
+(1619,'Sasebo','JPN',244240),
+(1620,'Hachinohe','JPN',242979),
+(1621,'Takasaki','JPN',239124),
+(1622,'Shimizu','JPN',239123),
+(1623,'Kurume','JPN',235611),
+(1624,'Fuji','JPN',231527),
+(1625,'Soka','JPN',222768),
+(1626,'Fuchu','JPN',220576),
+(1627,'Chigasaki','JPN',216015),
+(1628,'Atsugi','JPN',212407),
+(1629,'Numazu','JPN',211382),
+(1630,'Ageo','JPN',209442),
+(1631,'Yamato','JPN',208234),
+(1632,'Matsumoto','JPN',206801),
+(1633,'Kure','JPN',206504),
+(1634,'Takarazuka','JPN',205993),
+(1635,'Kasukabe','JPN',201838),
+(1636,'Chofu','JPN',201585),
+(1637,'Odawara','JPN',200171),
+(1638,'Kofu','JPN',199753),
+(1639,'Kushiro','JPN',197608),
+(1640,'Kishiwada','JPN',197276),
+(1641,'Hitachi','JPN',196622),
+(1642,'Nagaoka','JPN',192407),
+(1643,'Itami','JPN',190886),
+(1644,'Uji','JPN',188735),
+(1645,'Suzuka','JPN',184061),
+(1646,'Hirosaki','JPN',177522),
+(1647,'Ube','JPN',175206),
+(1648,'Kodaira','JPN',174984),
+(1649,'Takaoka','JPN',174380),
+(1650,'Obihiro','JPN',173685),
+(1651,'Tomakomai','JPN',171958),
+(1652,'Saga','JPN',170034),
+(1653,'Sakura','JPN',168072),
+(1654,'Kamakura','JPN',167661),
+(1655,'Mitaka','JPN',167268),
+(1656,'Izumi','JPN',166979),
+(1657,'Hino','JPN',166770),
+(1658,'Hadano','JPN',166512),
+(1659,'Ashikaga','JPN',165243),
+(1660,'Tsu','JPN',164543),
+(1661,'Sayama','JPN',162472),
+(1662,'Yachiyo','JPN',161222),
+(1663,'Tsukuba','JPN',160768),
+(1664,'Tachikawa','JPN',159430),
+(1665,'Kumagaya','JPN',157171),
+(1666,'Moriguchi','JPN',155941),
+(1667,'Otaru','JPN',155784),
+(1668,'Anjo','JPN',153823),
+(1669,'Narashino','JPN',152849),
+(1670,'Oyama','JPN',152820),
+(1671,'Ogaki','JPN',151758),
+(1672,'Matsue','JPN',149821),
+(1673,'Kawanishi','JPN',149794),
+(1674,'Hitachinaka','JPN',148006),
+(1675,'Niiza','JPN',147744),
+(1676,'Nagareyama','JPN',147738),
+(1677,'Tottori','JPN',147523),
+(1678,'Tama','JPN',146712),
+(1679,'Iruma','JPN',145922),
+(1680,'Ota','JPN',145317),
+(1681,'Omuta','JPN',142889),
+(1682,'Komaki','JPN',139827),
+(1683,'Ome','JPN',139216),
+(1684,'Kadoma','JPN',138953),
+(1685,'Yamaguchi','JPN',138210),
+(1686,'Higashimurayama','JPN',136970),
+(1687,'Yonago','JPN',136461),
+(1688,'Matsubara','JPN',135010),
+(1689,'Musashino','JPN',134426),
+(1690,'Tsuchiura','JPN',134072),
+(1691,'Joetsu','JPN',133505),
+(1692,'Miyakonojo','JPN',133183),
+(1693,'Misato','JPN',132957),
+(1694,'Kakamigahara','JPN',131831),
+(1695,'Daito','JPN',130594),
+(1696,'Seto','JPN',130470),
+(1697,'Kariya','JPN',127969),
+(1698,'Urayasu','JPN',127550),
+(1699,'Beppu','JPN',127486),
+(1700,'Niihama','JPN',127207),
+(1701,'Minoo','JPN',127026),
+(1702,'Fujieda','JPN',126897),
+(1703,'Abiko','JPN',126670),
+(1704,'Nobeoka','JPN',125547),
+(1705,'Tondabayashi','JPN',125094),
+(1706,'Ueda','JPN',124217),
+(1707,'Kashihara','JPN',124013),
+(1708,'Matsusaka','JPN',123582),
+(1709,'Isesaki','JPN',123285),
+(1710,'Zama','JPN',122046),
+(1711,'Kisarazu','JPN',121967),
+(1712,'Noda','JPN',121030),
+(1713,'Ishinomaki','JPN',120963),
+(1714,'Fujinomiya','JPN',119714),
+(1715,'Kawachinagano','JPN',119666),
+(1716,'Imabari','JPN',119357),
+(1717,'Aizuwakamatsu','JPN',119287),
+(1718,'Higashihiroshima','JPN',119166),
+(1719,'Habikino','JPN',118968),
+(1720,'Ebetsu','JPN',118805),
+(1721,'Hofu','JPN',118751),
+(1722,'Kiryu','JPN',118326),
+(1723,'Okinawa','JPN',117748),
+(1724,'Yaizu','JPN',117258),
+(1725,'Toyokawa','JPN',115781),
+(1726,'Ebina','JPN',115571),
+(1727,'Asaka','JPN',114815),
+(1728,'Higashikurume','JPN',111666),
+(1729,'Ikoma','JPN',111645),
+(1730,'Kitami','JPN',111295),
+(1731,'Koganei','JPN',110969),
+(1732,'Iwatsuki','JPN',110034),
+(1733,'Mishima','JPN',109699),
+(1734,'Handa','JPN',108600),
+(1735,'Muroran','JPN',108275),
+(1736,'Komatsu','JPN',107937),
+(1737,'Yatsushiro','JPN',107661),
+(1738,'Iida','JPN',107583),
+(1739,'Tokuyama','JPN',107078),
+(1740,'Kokubunji','JPN',106996),
+(1741,'Akishima','JPN',106914),
+(1742,'Iwakuni','JPN',106647),
+(1743,'Kusatsu','JPN',106232),
+(1744,'Kuwana','JPN',106121),
+(1745,'Sanda','JPN',105643),
+(1746,'Hikone','JPN',105508),
+(1747,'Toda','JPN',103969),
+(1748,'Tajimi','JPN',103171),
+(1749,'Ikeda','JPN',102710),
+(1750,'Fukaya','JPN',102156),
+(1751,'Ise','JPN',101732),
+(1752,'Sakata','JPN',101651),
+(1753,'Kasuga','JPN',101344),
+(1754,'Kamagaya','JPN',100821),
+(1755,'Tsuruoka','JPN',100713),
+(1756,'Hoya','JPN',100313),
+(1757,'Nishio','JPN',100032),
+(1758,'Tokai','JPN',99738),
+(1759,'Inazawa','JPN',98746),
+(1760,'Sakado','JPN',98221),
+(1761,'Isehara','JPN',98123),
+(1762,'Takasago','JPN',97632),
+(1763,'Fujimi','JPN',96972),
+(1764,'Urasoe','JPN',96002),
+(1765,'Yonezawa','JPN',95592),
+(1766,'Konan','JPN',95521),
+(1767,'Yamatokoriyama','JPN',95165),
+(1768,'Maizuru','JPN',94784),
+(1769,'Onomichi','JPN',93756),
+(1770,'Higashimatsuyama','JPN',93342),
+(1771,'Kimitsu','JPN',93216),
+(1772,'Isahaya','JPN',93058),
+(1773,'Kanuma','JPN',93053),
+(1774,'Izumisano','JPN',92583),
+(1775,'Kameoka','JPN',92398),
+(1776,'Mobara','JPN',91664),
+(1777,'Narita','JPN',91470),
+(1778,'Kashiwazaki','JPN',91229),
+(1779,'Tsuyama','JPN',91170),
+(1780,'Sanaa','YEM',503600),
+(1781,'Aden','YEM',398300),
+(1782,'Taizz','YEM',317600),
+(1783,'Hodeida','YEM',298500),
+(1784,'al-Mukalla','YEM',122400),
+(1785,'Ibb','YEM',103300),
+(1786,'Amman','JOR',1000000),
+(1787,'al-Zarqa','JOR',389815),
+(1788,'Irbid','JOR',231511),
+(1789,'al-Rusayfa','JOR',137247),
+(1790,'Wadi al-Sir','JOR',89104),
+(1791,'Flying Fish Cove','CXR',700),
+(1792,'Beograd','YUG',1204000),
+(1793,'Novi Sad','YUG',179626),
+(1794,'NiÂ','YUG',175391),
+(1795,'PriÂtina','YUG',155496),
+(1796,'Kragujevac','YUG',147305),
+(1797,'Podgorica','YUG',135000),
+(1798,'Subotica','YUG',100386),
+(1799,'Prizren','YUG',92303),
+(1800,'Phnom Penh','KHM',570155);
+INSERT INTO City VALUES
+(1801,'Battambang','KHM',129800),
+(1802,'Siem Reap','KHM',105100),
+(1803,'Douala','CMR',1448300),
+(1804,'YaoundÊ','CMR',1372800),
+(1805,'Garoua','CMR',177000),
+(1806,'Maroua','CMR',143000),
+(1807,'Bamenda','CMR',138000),
+(1808,'Bafoussam','CMR',131000),
+(1809,'Nkongsamba','CMR',112454),
+(1810,'MontrÊal','CAN',1016376),
+(1811,'Calgary','CAN',768082),
+(1812,'Toronto','CAN',688275),
+(1813,'North York','CAN',622632),
+(1814,'Winnipeg','CAN',618477),
+(1815,'Edmonton','CAN',616306),
+(1816,'Mississauga','CAN',608072),
+(1817,'Scarborough','CAN',594501),
+(1818,'Vancouver','CAN',514008),
+(1819,'Etobicoke','CAN',348845),
+(1820,'London','CAN',339917),
+(1821,'Hamilton','CAN',335614),
+(1822,'Ottawa','CAN',335277),
+(1823,'Laval','CAN',330393),
+(1824,'Surrey','CAN',304477),
+(1825,'Brampton','CAN',296711),
+(1826,'Windsor','CAN',207588),
+(1827,'Saskatoon','CAN',193647),
+(1828,'Kitchener','CAN',189959),
+(1829,'Markham','CAN',189098),
+(1830,'Regina','CAN',180400),
+(1831,'Burnaby','CAN',179209),
+(1832,'QuÊbec','CAN',167264),
+(1833,'York','CAN',154980),
+(1834,'Richmond','CAN',148867),
+(1835,'Vaughan','CAN',147889),
+(1836,'Burlington','CAN',145150),
+(1837,'Oshawa','CAN',140173),
+(1838,'Oakville','CAN',139192),
+(1839,'Saint Catharines','CAN',136216),
+(1840,'Longueuil','CAN',127977),
+(1841,'Richmond Hill','CAN',116428),
+(1842,'Thunder Bay','CAN',115913),
+(1843,'Nepean','CAN',115100),
+(1844,'Cape Breton','CAN',114733),
+(1845,'East York','CAN',114034),
+(1846,'Halifax','CAN',113910),
+(1847,'Cambridge','CAN',109186),
+(1848,'Gloucester','CAN',107314),
+(1849,'Abbotsford','CAN',105403),
+(1850,'Guelph','CAN',103593),
+(1851,'Saint John´s','CAN',101936),
+(1852,'Coquitlam','CAN',101820),
+(1853,'Saanich','CAN',101388),
+(1854,'Gatineau','CAN',100702),
+(1855,'Delta','CAN',95411),
+(1856,'Sudbury','CAN',92686),
+(1857,'Kelowna','CAN',89442),
+(1858,'Barrie','CAN',89269),
+(1859,'Praia','CPV',94800),
+(1860,'Almaty','KAZ',1129400),
+(1861,'Qaraghandy','KAZ',436900),
+(1862,'Shymkent','KAZ',360100),
+(1863,'Taraz','KAZ',330100),
+(1864,'Astana','KAZ',311200),
+(1865,'Ãskemen','KAZ',311000),
+(1866,'Pavlodar','KAZ',300500),
+(1867,'Semey','KAZ',269600),
+(1868,'AqtÃļbe','KAZ',253100),
+(1869,'Qostanay','KAZ',221400),
+(1870,'Petropavl','KAZ',203500),
+(1871,'Oral','KAZ',195500),
+(1872,'Temirtau','KAZ',170500),
+(1873,'Qyzylorda','KAZ',157400),
+(1874,'Aqtau','KAZ',143400),
+(1875,'Atyrau','KAZ',142500),
+(1876,'Ekibastuz','KAZ',127200),
+(1877,'KÃļkshetau','KAZ',123400),
+(1878,'Rudnyy','KAZ',109500),
+(1879,'Taldyqorghan','KAZ',98000),
+(1880,'Zhezqazghan','KAZ',90000),
+(1881,'Nairobi','KEN',2290000),
+(1882,'Mombasa','KEN',461753),
+(1883,'Kisumu','KEN',192733),
+(1884,'Nakuru','KEN',163927),
+(1885,'Machakos','KEN',116293),
+(1886,'Eldoret','KEN',111882),
+(1887,'Meru','KEN',94947),
+(1888,'Nyeri','KEN',91258),
+(1889,'Bangui','CAF',524000),
+(1890,'Shanghai','CHN',9696300),
+(1891,'Peking','CHN',7472000),
+(1892,'Chongqing','CHN',6351600),
+(1893,'Tianjin','CHN',5286800),
+(1894,'Wuhan','CHN',4344600),
+(1895,'Harbin','CHN',4289800),
+(1896,'Shenyang','CHN',4265200),
+(1897,'Kanton [Guangzhou]','CHN',4256300),
+(1898,'Chengdu','CHN',3361500),
+(1899,'Nanking [Nanjing]','CHN',2870300),
+(1900,'Changchun','CHN',2812000),
+(1901,'Xi´an','CHN',2761400),
+(1902,'Dalian','CHN',2697000),
+(1903,'Qingdao','CHN',2596000),
+(1904,'Jinan','CHN',2278100),
+(1905,'Hangzhou','CHN',2190500),
+(1906,'Zhengzhou','CHN',2107200),
+(1907,'Shijiazhuang','CHN',2041500),
+(1908,'Taiyuan','CHN',1968400),
+(1909,'Kunming','CHN',1829500),
+(1910,'Changsha','CHN',1809800),
+(1911,'Nanchang','CHN',1691600),
+(1912,'Fuzhou','CHN',1593800),
+(1913,'Lanzhou','CHN',1565800),
+(1914,'Guiyang','CHN',1465200),
+(1915,'Ningbo','CHN',1371200),
+(1916,'Hefei','CHN',1369100),
+(1917,'UrumtÂi [ÃrÃŧmqi]','CHN',1310100),
+(1918,'Anshan','CHN',1200000),
+(1919,'Fushun','CHN',1200000),
+(1920,'Nanning','CHN',1161800),
+(1921,'Zibo','CHN',1140000),
+(1922,'Qiqihar','CHN',1070000),
+(1923,'Jilin','CHN',1040000),
+(1924,'Tangshan','CHN',1040000),
+(1925,'Baotou','CHN',980000),
+(1926,'Shenzhen','CHN',950500),
+(1927,'Hohhot','CHN',916700),
+(1928,'Handan','CHN',840000),
+(1929,'Wuxi','CHN',830000),
+(1930,'Xuzhou','CHN',810000),
+(1931,'Datong','CHN',800000),
+(1932,'Yichun','CHN',800000),
+(1933,'Benxi','CHN',770000),
+(1934,'Luoyang','CHN',760000),
+(1935,'Suzhou','CHN',710000),
+(1936,'Xining','CHN',700200),
+(1937,'Huainan','CHN',700000),
+(1938,'Jixi','CHN',683885),
+(1939,'Daqing','CHN',660000),
+(1940,'Fuxin','CHN',640000),
+(1941,'Amoy [Xiamen]','CHN',627500),
+(1942,'Liuzhou','CHN',610000),
+(1943,'Shantou','CHN',580000),
+(1944,'Jinzhou','CHN',570000),
+(1945,'Mudanjiang','CHN',570000),
+(1946,'Yinchuan','CHN',544500),
+(1947,'Changzhou','CHN',530000),
+(1948,'Zhangjiakou','CHN',530000),
+(1949,'Dandong','CHN',520000),
+(1950,'Hegang','CHN',520000),
+(1951,'Kaifeng','CHN',510000),
+(1952,'Jiamusi','CHN',493409),
+(1953,'Liaoyang','CHN',492559),
+(1954,'Hengyang','CHN',487148),
+(1955,'Baoding','CHN',483155),
+(1956,'Hunjiang','CHN',482043),
+(1957,'Xinxiang','CHN',473762),
+(1958,'Huangshi','CHN',457601),
+(1959,'Haikou','CHN',454300),
+(1960,'Yantai','CHN',452127),
+(1961,'Bengbu','CHN',449245),
+(1962,'Xiangtan','CHN',441968),
+(1963,'Weifang','CHN',428522),
+ (1964,'Wuhu','CHN',425740),
+(1965,'Pingxiang','CHN',425579),
+(1966,'Yingkou','CHN',421589),
+(1967,'Anyang','CHN',420332),
+(1968,'Panzhihua','CHN',415466),
+(1969,'Pingdingshan','CHN',410775),
+(1970,'Xiangfan','CHN',410407),
+(1971,'Zhuzhou','CHN',409924),
+(1972,'Jiaozuo','CHN',409100),
+(1973,'Wenzhou','CHN',401871),
+(1974,'Zhangjiang','CHN',400997),
+(1975,'Zigong','CHN',393184),
+(1976,'Shuangyashan','CHN',386081),
+(1977,'Zaozhuang','CHN',380846),
+(1978,'Yakeshi','CHN',377869),
+(1979,'Yichang','CHN',371601),
+(1980,'Zhenjiang','CHN',368316),
+(1981,'Huaibei','CHN',366549),
+(1982,'Qinhuangdao','CHN',364972),
+(1983,'Guilin','CHN',364130),
+(1984,'Liupanshui','CHN',363954),
+(1985,'Panjin','CHN',362773),
+(1986,'Yangquan','CHN',362268),
+(1987,'Jinxi','CHN',357052),
+(1988,'Liaoyuan','CHN',354141),
+(1989,'Lianyungang','CHN',354139),
+(1990,'Xianyang','CHN',352125),
+(1991,'Tai´an','CHN',350696),
+(1992,'Chifeng','CHN',350077),
+(1993,'Shaoguan','CHN',350043),
+(1994,'Nantong','CHN',343341),
+(1995,'Leshan','CHN',341128),
+(1996,'Baoji','CHN',337765),
+(1997,'Linyi','CHN',324720),
+(1998,'Tonghua','CHN',324600),
+(1999,'Siping','CHN',317223),
+(2000,'Changzhi','CHN',317144);
+INSERT INTO City VALUES
+(2001,'Tengzhou','CHN',315083),
+(2002,'Chaozhou','CHN',313469),
+(2003,'Yangzhou','CHN',312892),
+(2004,'Dongwan','CHN',308669),
+(2005,'Ma´anshan','CHN',305421),
+(2006,'Foshan','CHN',303160),
+(2007,'Yueyang','CHN',302800),
+(2008,'Xingtai','CHN',302789),
+(2009,'Changde','CHN',301276),
+(2010,'Shihezi','CHN',299676),
+(2011,'Yancheng','CHN',296831),
+(2012,'Jiujiang','CHN',291187),
+(2013,'Dongying','CHN',281728),
+(2014,'Shashi','CHN',281352),
+(2015,'Xintai','CHN',281248),
+(2016,'Jingdezhen','CHN',281183),
+(2017,'Tongchuan','CHN',280657),
+(2018,'Zhongshan','CHN',278829),
+(2019,'Shiyan','CHN',273786),
+(2020,'Tieli','CHN',265683),
+(2021,'Jining','CHN',265248),
+(2022,'Wuhai','CHN',264081),
+(2023,'Mianyang','CHN',262947),
+(2024,'Luzhou','CHN',262892),
+(2025,'Zunyi','CHN',261862),
+(2026,'Shizuishan','CHN',257862),
+(2027,'Neijiang','CHN',256012),
+(2028,'Tongliao','CHN',255129),
+(2029,'Tieling','CHN',254842),
+(2030,'Wafangdian','CHN',251733),
+(2031,'Anqing','CHN',250718),
+(2032,'Shaoyang','CHN',247227),
+(2033,'Laiwu','CHN',246833),
+(2034,'Chengde','CHN',246799),
+(2035,'Tianshui','CHN',244974),
+(2036,'Nanyang','CHN',243303),
+(2037,'Cangzhou','CHN',242708),
+(2038,'Yibin','CHN',241019),
+(2039,'Huaiyin','CHN',239675),
+(2040,'Dunhua','CHN',235100),
+(2041,'Yanji','CHN',230892),
+(2042,'Jiangmen','CHN',230587),
+(2043,'Tongling','CHN',228017),
+(2044,'Suihua','CHN',227881),
+(2045,'Gongziling','CHN',226569),
+(2046,'Xiantao','CHN',222884),
+(2047,'Chaoyang','CHN',222394),
+(2048,'Ganzhou','CHN',220129),
+(2049,'Huzhou','CHN',218071),
+(2050,'Baicheng','CHN',217987),
+(2051,'Shangzi','CHN',215373),
+(2052,'Yangjiang','CHN',215196),
+(2053,'Qitaihe','CHN',214957),
+(2054,'Gejiu','CHN',214294),
+(2055,'Jiangyin','CHN',213659),
+(2056,'Hebi','CHN',212976),
+(2057,'Jiaxing','CHN',211526),
+(2058,'Wuzhou','CHN',210452),
+(2059,'Meihekou','CHN',209038),
+(2060,'Xuchang','CHN',208815),
+(2061,'Liaocheng','CHN',207844),
+(2062,'Haicheng','CHN',205560),
+(2063,'Qianjiang','CHN',205504),
+(2064,'Baiyin','CHN',204970),
+(2065,'Bei´an','CHN',204899),
+(2066,'Yixing','CHN',200824),
+(2067,'Laizhou','CHN',198664),
+(2068,'Qaramay','CHN',197602),
+(2069,'Acheng','CHN',197595),
+(2070,'Dezhou','CHN',195485),
+(2071,'Nanping','CHN',195064),
+(2072,'Zhaoqing','CHN',194784),
+(2073,'Beipiao','CHN',194301),
+(2074,'Fengcheng','CHN',193784),
+(2075,'Fuyu','CHN',192981),
+(2076,'Xinyang','CHN',192509),
+(2077,'Dongtai','CHN',192247),
+(2078,'Yuci','CHN',191356),
+(2079,'Honghu','CHN',190772),
+(2080,'Ezhou','CHN',190123),
+(2081,'Heze','CHN',189293),
+(2082,'Daxian','CHN',188101),
+(2083,'Linfen','CHN',187309),
+(2084,'Tianmen','CHN',186332),
+(2085,'Yiyang','CHN',185818),
+(2086,'Quanzhou','CHN',185154),
+(2087,'Rizhao','CHN',185048),
+(2088,'Deyang','CHN',182488),
+(2089,'Guangyuan','CHN',182241),
+(2090,'Changshu','CHN',181805),
+(2091,'Zhangzhou','CHN',181424),
+(2092,'Hailar','CHN',180650),
+(2093,'Nanchong','CHN',180273),
+(2094,'Jiutai','CHN',180130),
+(2095,'Zhaodong','CHN',179976),
+(2096,'Shaoxing','CHN',179818),
+(2097,'Fuyang','CHN',179572),
+(2098,'Maoming','CHN',178683),
+(2099,'Qujing','CHN',178669),
+(2100,'Ghulja','CHN',177193),
+(2101,'Jiaohe','CHN',176367),
+(2102,'Puyang','CHN',175988),
+(2103,'Huadian','CHN',175873),
+(2104,'Jiangyou','CHN',175753),
+(2105,'Qashqar','CHN',174570),
+(2106,'Anshun','CHN',174142),
+(2107,'Fuling','CHN',173878),
+(2108,'Xinyu','CHN',173524),
+(2109,'Hanzhong','CHN',169930),
+(2110,'Danyang','CHN',169603),
+(2111,'Chenzhou','CHN',169400),
+(2112,'Xiaogan','CHN',166280),
+(2113,'Shangqiu','CHN',164880),
+(2114,'Zhuhai','CHN',164747),
+(2115,'Qingyuan','CHN',164641),
+(2116,'Aqsu','CHN',164092),
+(2117,'Jining','CHN',163552),
+(2118,'Xiaoshan','CHN',162930),
+(2119,'Zaoyang','CHN',162198),
+(2120,'Xinghua','CHN',161910),
+(2121,'Hami','CHN',161315),
+(2122,'Huizhou','CHN',161023),
+(2123,'Jinmen','CHN',160794),
+(2124,'Sanming','CHN',160691),
+(2125,'Ulanhot','CHN',159538),
+(2126,'Korla','CHN',159344),
+(2127,'Wanxian','CHN',156823),
+(2128,'Rui´an','CHN',156468),
+(2129,'Zhoushan','CHN',156317),
+(2130,'Liangcheng','CHN',156307),
+(2131,'Jiaozhou','CHN',153364),
+(2132,'Taizhou','CHN',152442),
+(2133,'Suzhou','CHN',151862),
+(2134,'Yichun','CHN',151585),
+(2135,'Taonan','CHN',150168),
+(2136,'Pingdu','CHN',150123),
+(2137,'Ji´an','CHN',148583),
+(2138,'Longkou','CHN',148362),
+(2139,'Langfang','CHN',148105),
+(2140,'Zhoukou','CHN',146288),
+(2141,'Suining','CHN',146086),
+(2142,'Yulin','CHN',144467),
+(2143,'Jinhua','CHN',144280),
+(2144,'Liu´an','CHN',144248),
+(2145,'Shuangcheng','CHN',142659),
+(2146,'Suizhou','CHN',142302),
+(2147,'Ankang','CHN',142170),
+(2148,'Weinan','CHN',140169),
+(2149,'Longjing','CHN',139417),
+(2150,'Da´an','CHN',138963),
+(2151,'Lengshuijiang','CHN',137994),
+(2152,'Laiyang','CHN',137080),
+(2153,'Xianning','CHN',136811),
+(2154,'Dali','CHN',136554),
+(2155,'Anda','CHN',136446),
+(2156,'Jincheng','CHN',136396),
+(2157,'Longyan','CHN',134481),
+(2158,'Xichang','CHN',134419),
+(2159,'Wendeng','CHN',133910),
+(2160,'Hailun','CHN',133565),
+(2161,'Binzhou','CHN',133555),
+(2162,'Linhe','CHN',133183),
+(2163,'Wuwei','CHN',133101),
+(2164,'Duyun','CHN',132971),
+(2165,'Mishan','CHN',132744),
+(2166,'Shangrao','CHN',132455),
+(2167,'Changji','CHN',132260),
+(2168,'Meixian','CHN',132156),
+(2169,'Yushu','CHN',131861),
+(2170,'Tiefa','CHN',131807),
+(2171,'Huai´an','CHN',131149),
+(2172,'Leiyang','CHN',130115),
+(2173,'Zalantun','CHN',130031),
+(2174,'Weihai','CHN',128888),
+(2175,'Loudi','CHN',128418),
+(2176,'Qingzhou','CHN',128258),
+(2177,'Qidong','CHN',126872),
+(2178,'Huaihua','CHN',126785),
+(2179,'Luohe','CHN',126438),
+(2180,'Chuzhou','CHN',125341),
+(2181,'Kaiyuan','CHN',124219),
+(2182,'Linqing','CHN',123958),
+(2183,'Chaohu','CHN',123676),
+(2184,'Laohekou','CHN',123366),
+(2185,'Dujiangyan','CHN',123357),
+(2186,'Zhumadian','CHN',123232),
+(2187,'Linchuan','CHN',121949),
+(2188,'Jiaonan','CHN',121397),
+(2189,'Sanmenxia','CHN',120523),
+(2190,'Heyuan','CHN',120101),
+(2191,'Manzhouli','CHN',120023),
+(2192,'Lhasa','CHN',120000),
+(2193,'Lianyuan','CHN',118858),
+(2194,'Kuytun','CHN',118553),
+(2195,'Puqi','CHN',117264),
+(2196,'Hongjiang','CHN',116188),
+(2197,'Qinzhou','CHN',114586),
+(2198,'Renqiu','CHN',114256),
+(2199,'Yuyao','CHN',114065),
+(2200,'Guigang','CHN',114025);
+INSERT INTO City VALUES
+(2201,'Kaili','CHN',113958),
+(2202,'Yan´an','CHN',113277),
+(2203,'Beihai','CHN',112673),
+(2204,'Xuangzhou','CHN',112673),
+(2205,'Quzhou','CHN',112373),
+(2206,'Yong´an','CHN',111762),
+(2207,'Zixing','CHN',110048),
+(2208,'Liyang','CHN',109520),
+(2209,'Yizheng','CHN',109268),
+(2210,'Yumen','CHN',109234),
+(2211,'Liling','CHN',108504),
+(2212,'Yuncheng','CHN',108359),
+(2213,'Shanwei','CHN',107847),
+(2214,'Cixi','CHN',107329),
+(2215,'Yuanjiang','CHN',107004),
+(2216,'Bozhou','CHN',106346),
+(2217,'Jinchang','CHN',105287),
+(2218,'Fu´an','CHN',105265),
+(2219,'Suqian','CHN',105021),
+(2220,'Shishou','CHN',104571),
+(2221,'Hengshui','CHN',104269),
+(2222,'Danjiangkou','CHN',103211),
+(2223,'Fujin','CHN',103104),
+(2224,'Sanya','CHN',102820),
+(2225,'Guangshui','CHN',102770),
+(2226,'Huangshan','CHN',102628),
+(2227,'Xingcheng','CHN',102384),
+(2228,'Zhucheng','CHN',102134),
+(2229,'Kunshan','CHN',102052),
+(2230,'Haining','CHN',100478),
+(2231,'Pingliang','CHN',99265),
+(2232,'Fuqing','CHN',99193),
+(2233,'Xinzhou','CHN',98667),
+(2234,'Jieyang','CHN',98531),
+(2235,'Zhangjiagang','CHN',97994),
+(2236,'Tong Xian','CHN',97168),
+(2237,'Ya´an','CHN',95900),
+(2238,'Jinzhou','CHN',95761),
+(2239,'Emeishan','CHN',94000),
+(2240,'Enshi','CHN',93056),
+(2241,'Bose','CHN',93009),
+(2242,'Yuzhou','CHN',92889),
+(2243,'Kaiyuan','CHN',91999),
+(2244,'Tumen','CHN',91471),
+(2245,'Putian','CHN',91030),
+(2246,'Linhai','CHN',90870),
+(2247,'Xilin Hot','CHN',90646),
+(2248,'Shaowu','CHN',90286),
+(2249,'Junan','CHN',90222),
+(2250,'Huaying','CHN',89400),
+(2251,'Pingyi','CHN',89373),
+(2252,'Huangyan','CHN',89288),
+(2253,'Bishkek','KGZ',589400),
+(2254,'Osh','KGZ',222700),
+(2255,'Bikenibeu','KIR',5055),
+(2256,'Bairiki','KIR',2226),
+(2257,'SantafÊ de BogotÃĄ','COL',6260862),
+(2258,'Cali','COL',2077386),
+(2259,'MedellÃn','COL',1861265),
+(2260,'Barranquilla','COL',1223260),
+(2261,'Cartagena','COL',805757),
+(2262,'CÃēcuta','COL',606932),
+(2263,'Bucaramanga','COL',515555),
+(2264,'IbaguÊ','COL',393664),
+(2265,'Pereira','COL',381725),
+(2266,'Santa Marta','COL',359147),
+(2267,'Manizales','COL',337580),
+(2268,'Bello','COL',333470),
+(2269,'Pasto','COL',332396),
+(2270,'Neiva','COL',300052),
+(2271,'Soledad','COL',295058),
+(2272,'Armenia','COL',288977),
+(2273,'Villavicencio','COL',273140),
+(2274,'Soacha','COL',272058),
+(2275,'Valledupar','COL',263247),
+(2276,'MonterÃa','COL',248245),
+(2277,'ItagÃŧÃ','COL',228985),
+(2278,'Palmira','COL',226509),
+(2279,'Buenaventura','COL',224336),
+(2280,'Floridablanca','COL',221913),
+(2281,'Sincelejo','COL',220704),
+(2282,'PopayÃĄn','COL',200719),
+(2283,'Barrancabermeja','COL',178020),
+(2284,'Dos Quebradas','COL',159363),
+(2285,'TuluÃĄ','COL',152488),
+(2286,'Envigado','COL',135848),
+(2287,'Cartago','COL',125884),
+(2288,'Girardot','COL',110963),
+(2289,'Buga','COL',110699),
+(2290,'Tunja','COL',109740),
+(2291,'Florencia','COL',108574),
+(2292,'Maicao','COL',108053),
+(2293,'Sogamoso','COL',107728),
+(2294,'Giron','COL',90688),
+(2295,'Moroni','COM',36000),
+(2296,'Brazzaville','COG',950000),
+(2297,'Pointe-Noire','COG',500000),
+(2298,'Kinshasa','COD',5064000),
+(2299,'Lubumbashi','COD',851381),
+(2300,'Mbuji-Mayi','COD',806475),
+(2301,'Kolwezi','COD',417810),
+(2302,'Kisangani','COD',417517),
+(2303,'Kananga','COD',393030),
+(2304,'Likasi','COD',299118),
+(2305,'Bukavu','COD',201569),
+(2306,'Kikwit','COD',182142),
+(2307,'Tshikapa','COD',180860),
+(2308,'Matadi','COD',172730),
+(2309,'Mbandaka','COD',169841),
+(2310,'Mwene-Ditu','COD',137459),
+(2311,'Boma','COD',135284),
+(2312,'Uvira','COD',115590),
+(2313,'Butembo','COD',109406),
+(2314,'Goma','COD',109094),
+(2315,'Kalemie','COD',101309),
+(2316,'Bantam','CCK',503),
+(2317,'West Island','CCK',167),
+(2318,'Pyongyang','PRK',2484000),
+(2319,'Hamhung','PRK',709730),
+(2320,'Chongjin','PRK',582480),
+(2321,'Nampo','PRK',566200),
+(2322,'Sinuiju','PRK',326011),
+(2323,'Wonsan','PRK',300148),
+(2324,'Phyongsong','PRK',272934),
+(2325,'Sariwon','PRK',254146),
+(2326,'Haeju','PRK',229172),
+(2327,'Kanggye','PRK',223410),
+(2328,'Kimchaek','PRK',179000),
+(2329,'Hyesan','PRK',178020),
+(2330,'Kaesong','PRK',171500),
+(2331,'Seoul','KOR',9981619),
+(2332,'Pusan','KOR',3804522),
+(2333,'Inchon','KOR',2559424),
+(2334,'Taegu','KOR',2548568),
+(2335,'Taejon','KOR',1425835),
+(2336,'Kwangju','KOR',1368341),
+(2337,'Ulsan','KOR',1084891),
+(2338,'Songnam','KOR',869094),
+(2339,'Puchon','KOR',779412),
+(2340,'Suwon','KOR',755550),
+(2341,'Anyang','KOR',591106),
+(2342,'Chonju','KOR',563153),
+(2343,'Chongju','KOR',531376),
+(2344,'Koyang','KOR',518282),
+(2345,'Ansan','KOR',510314),
+(2346,'Pohang','KOR',508899),
+(2347,'Chang-won','KOR',481694),
+(2348,'Masan','KOR',441242),
+(2349,'Kwangmyong','KOR',350914),
+(2350,'Chonan','KOR',330259),
+(2351,'Chinju','KOR',329886),
+(2352,'Iksan','KOR',322685),
+(2353,'Pyongtaek','KOR',312927),
+(2354,'Kumi','KOR',311431),
+(2355,'Uijongbu','KOR',276111),
+(2356,'Kyongju','KOR',272968),
+(2357,'Kunsan','KOR',266569),
+(2358,'Cheju','KOR',258511),
+(2359,'Kimhae','KOR',256370),
+(2360,'Sunchon','KOR',249263),
+(2361,'Mokpo','KOR',247452),
+(2362,'Yong-in','KOR',242643),
+(2363,'Wonju','KOR',237460),
+(2364,'Kunpo','KOR',235233),
+(2365,'Chunchon','KOR',234528),
+(2366,'Namyangju','KOR',229060),
+(2367,'Kangnung','KOR',220403),
+(2368,'Chungju','KOR',205206),
+(2369,'Andong','KOR',188443),
+(2370,'Yosu','KOR',183596),
+(2371,'Kyongsan','KOR',173746),
+(2372,'Paju','KOR',163379),
+(2373,'Yangsan','KOR',163351),
+(2374,'Ichon','KOR',155332),
+(2375,'Asan','KOR',154663),
+(2376,'Koje','KOR',147562),
+(2377,'Kimchon','KOR',147027),
+(2378,'Nonsan','KOR',146619),
+(2379,'Kuri','KOR',142173),
+(2380,'Chong-up','KOR',139111),
+(2381,'Chechon','KOR',137070),
+(2382,'Sosan','KOR',134746),
+(2383,'Shihung','KOR',133443),
+(2384,'Tong-yong','KOR',131717),
+(2385,'Kongju','KOR',131229),
+(2386,'Yongju','KOR',131097),
+(2387,'Chinhae','KOR',125997),
+(2388,'Sangju','KOR',124116),
+(2389,'Poryong','KOR',122604),
+(2390,'Kwang-yang','KOR',122052),
+(2391,'Miryang','KOR',121501),
+(2392,'Hanam','KOR',115812),
+(2393,'Kimje','KOR',115427),
+(2394,'Yongchon','KOR',113511),
+(2395,'Sachon','KOR',113494),
+(2396,'Uiwang','KOR',108788),
+(2397,'Naju','KOR',107831),
+(2398,'Namwon','KOR',103544),
+(2399,'Tonghae','KOR',95472),
+(2400,'Mun-gyong','KOR',92239);
+INSERT INTO City VALUES
+(2401,'Athenai','GRC',772072),
+(2402,'Thessaloniki','GRC',383967),
+(2403,'Pireus','GRC',182671),
+(2404,'Patras','GRC',153344),
+(2405,'Peristerion','GRC',137288),
+(2406,'Herakleion','GRC',116178),
+(2407,'Kallithea','GRC',114233),
+(2408,'Larisa','GRC',113090),
+(2409,'Zagreb','HRV',706770),
+(2410,'Split','HRV',189388),
+(2411,'Rijeka','HRV',167964),
+(2412,'Osijek','HRV',104761),
+(2413,'La Habana','CUB',2256000),
+(2414,'Santiago de Cuba','CUB',433180),
+(2415,'CamagÃŧey','CUB',298726),
+(2416,'HolguÃn','CUB',249492),
+(2417,'Santa Clara','CUB',207350),
+(2418,'GuantÃĄnamo','CUB',205078),
+(2419,'Pinar del RÃo','CUB',142100),
+(2420,'Bayamo','CUB',141000),
+(2421,'Cienfuegos','CUB',132770),
+(2422,'Victoria de las Tunas','CUB',132350),
+(2423,'Matanzas','CUB',123273),
+(2424,'Manzanillo','CUB',109350),
+(2425,'Sancti-SpÃritus','CUB',100751),
+(2426,'Ciego de Ãvila','CUB',98505),
+(2427,'al-Salimiya','KWT',130215),
+(2428,'Jalib al-Shuyukh','KWT',102178),
+(2429,'Kuwait','KWT',28859),
+(2430,'Nicosia','CYP',195000),
+(2431,'Limassol','CYP',154400),
+(2432,'Vientiane','LAO',531800),
+(2433,'Savannakhet','LAO',96652),
+(2434,'Riga','LVA',764328),
+(2435,'Daugavpils','LVA',114829),
+(2436,'Liepaja','LVA',89439),
+(2437,'Maseru','LSO',297000),
+(2438,'Beirut','LBN',1100000),
+(2439,'Tripoli','LBN',240000),
+(2440,'Monrovia','LBR',850000),
+(2441,'Tripoli','LBY',1682000),
+(2442,'Bengasi','LBY',804000),
+(2443,'Misrata','LBY',121669),
+(2444,'al-Zawiya','LBY',89338),
+(2445,'Schaan','LIE',5346),
+(2446,'Vaduz','LIE',5043),
+(2447,'Vilnius','LTU',577969),
+(2448,'Kaunas','LTU',412639),
+(2449,'Klaipeda','LTU',202451),
+(2450,'Âiauliai','LTU',146563),
+(2451,'Panevezys','LTU',133695),
+(2452,'Luxembourg [Luxemburg/LÃĢtzebuerg]','LUX',80700),
+(2453,'El-AaiÃēn','ESH',169000),
+(2454,'Macao','MAC',437500),
+(2455,'Antananarivo','MDG',675669),
+(2456,'Toamasina','MDG',127441),
+(2457,'AntsirabÊ','MDG',120239),
+(2458,'Mahajanga','MDG',100807),
+(2459,'Fianarantsoa','MDG',99005),
+(2460,'Skopje','MKD',444299),
+(2461,'Blantyre','MWI',478155),
+(2462,'Lilongwe','MWI',435964),
+(2463,'Male','MDV',71000),
+(2464,'Kuala Lumpur','MYS',1297526),
+(2465,'Ipoh','MYS',382853),
+(2466,'Johor Baharu','MYS',328436),
+(2467,'Petaling Jaya','MYS',254350),
+(2468,'Kelang','MYS',243355),
+(2469,'Kuala Terengganu','MYS',228119),
+(2470,'Pinang','MYS',219603),
+(2471,'Kota Bharu','MYS',219582),
+(2472,'Kuantan','MYS',199484),
+(2473,'Taiping','MYS',183261),
+(2474,'Seremban','MYS',182869),
+(2475,'Kuching','MYS',148059),
+(2476,'Sibu','MYS',126381),
+(2477,'Sandakan','MYS',125841),
+(2478,'Alor Setar','MYS',124412),
+(2479,'Selayang Baru','MYS',124228),
+(2480,'Sungai Petani','MYS',114763),
+(2481,'Shah Alam','MYS',102019),
+(2482,'Bamako','MLI',809552),
+(2483,'Birkirkara','MLT',21445),
+(2484,'Valletta','MLT',7073),
+(2485,'Casablanca','MAR',2940623),
+(2486,'Rabat','MAR',623457),
+(2487,'Marrakech','MAR',621914),
+(2488,'Fès','MAR',541162),
+(2489,'Tanger','MAR',521735),
+(2490,'SalÊ','MAR',504420),
+(2491,'Meknès','MAR',460000),
+(2492,'Oujda','MAR',365382),
+(2493,'KÊnitra','MAR',292600),
+(2494,'TÊtouan','MAR',277516),
+(2495,'Safi','MAR',262300),
+(2496,'Agadir','MAR',155244),
+(2497,'Mohammedia','MAR',154706),
+(2498,'Khouribga','MAR',152090),
+(2499,'Beni-Mellal','MAR',140212),
+(2500,'TÊmara','MAR',126303),
+(2501,'El Jadida','MAR',119083),
+(2502,'Nador','MAR',112450),
+(2503,'Ksar el Kebir','MAR',107065),
+(2504,'Settat','MAR',96200),
+(2505,'Taza','MAR',92700),
+(2506,'El Araich','MAR',90400),
+(2507,'Dalap-Uliga-Darrit','MHL',28000),
+(2508,'Fort-de-France','MTQ',94050),
+(2509,'Nouakchott','MRT',667300),
+(2510,'NouÃĸdhibou','MRT',97600),
+(2511,'Port-Louis','MUS',138200),
+(2512,'Beau Bassin-Rose Hill','MUS',100616),
+(2513,'Vacoas-Phoenix','MUS',98464),
+(2514,'Mamoutzou','MYT',12000),
+(2515,'Ciudad de MÊxico','MEX',8591309),
+(2516,'Guadalajara','MEX',1647720),
+(2517,'Ecatepec de Morelos','MEX',1620303),
+(2518,'Puebla','MEX',1346176),
+(2519,'NezahualcÃŗyotl','MEX',1224924),
+(2520,'JuÃĄrez','MEX',1217818),
+(2521,'Tijuana','MEX',1212232),
+(2522,'LeÃŗn','MEX',1133576),
+(2523,'Monterrey','MEX',1108499),
+(2524,'Zapopan','MEX',1002239),
+(2525,'Naucalpan de JuÃĄrez','MEX',857511),
+(2526,'Mexicali','MEX',764902),
+(2527,'CuliacÃĄn','MEX',744859),
+(2528,'Acapulco de JuÃĄrez','MEX',721011),
+(2529,'Tlalnepantla de Baz','MEX',720755),
+(2530,'MÊrida','MEX',703324),
+(2531,'Chihuahua','MEX',670208),
+(2532,'San Luis PotosÃ','MEX',669353),
+(2533,'Guadalupe','MEX',668780),
+(2534,'Toluca','MEX',665617),
+(2535,'Aguascalientes','MEX',643360),
+(2536,'QuerÊtaro','MEX',639839),
+(2537,'Morelia','MEX',619958),
+(2538,'Hermosillo','MEX',608697),
+(2539,'Saltillo','MEX',577352),
+(2540,'TorreÃŗn','MEX',529093),
+(2541,'Centro (Villahermosa)','MEX',519873),
+(2542,'San NicolÃĄs de los Garza','MEX',495540),
+(2543,'Durango','MEX',490524),
+(2544,'ChimalhuacÃĄn','MEX',490245),
+(2545,'Tlaquepaque','MEX',475472),
+(2546,'AtizapÃĄn de Zaragoza','MEX',467262),
+(2547,'Veracruz','MEX',457119),
+(2548,'CuautitlÃĄn Izcalli','MEX',452976),
+(2549,'Irapuato','MEX',440039),
+(2550,'Tuxtla GutiÊrrez','MEX',433544),
+(2551,'TultitlÃĄn','MEX',432411),
+(2552,'Reynosa','MEX',419776),
+(2553,'Benito JuÃĄrez','MEX',419276),
+(2554,'Matamoros','MEX',416428),
+(2555,'Xalapa','MEX',390058),
+(2556,'Celaya','MEX',382140),
+(2557,'MazatlÃĄn','MEX',380265),
+(2558,'Ensenada','MEX',369573),
+(2559,'Ahome','MEX',358663),
+(2560,'Cajeme','MEX',355679),
+(2561,'Cuernavaca','MEX',337966),
+(2562,'TonalÃĄ','MEX',336109),
+(2563,'Valle de Chalco Solidaridad','MEX',323113),
+(2564,'Nuevo Laredo','MEX',310277),
+(2565,'Tepic','MEX',305025),
+(2566,'Tampico','MEX',294789),
+(2567,'Ixtapaluca','MEX',293160),
+(2568,'Apodaca','MEX',282941),
+(2569,'Guasave','MEX',277201),
+(2570,'GÃŗmez Palacio','MEX',272806),
+(2571,'Tapachula','MEX',271141),
+(2572,'NicolÃĄs Romero','MEX',269393),
+(2573,'Coatzacoalcos','MEX',267037),
+(2574,'Uruapan','MEX',265211),
+(2575,'Victoria','MEX',262686),
+(2576,'Oaxaca de JuÃĄrez','MEX',256848),
+(2577,'Coacalco de BerriozÃĄbal','MEX',252270),
+(2578,'Pachuca de Soto','MEX',244688),
+(2579,'General Escobedo','MEX',232961),
+(2580,'Salamanca','MEX',226864),
+(2581,'Santa Catarina','MEX',226573),
+(2582,'TehuacÃĄn','MEX',225943),
+(2583,'Chalco','MEX',222201),
+(2584,'CÃĄrdenas','MEX',216903),
+(2585,'Campeche','MEX',216735),
+(2586,'La Paz','MEX',213045),
+(2587,'OthÃŗn P. Blanco (Chetumal)','MEX',208014),
+(2588,'Texcoco','MEX',203681),
+(2589,'La Paz','MEX',196708),
+(2590,'Metepec','MEX',194265),
+(2591,'Monclova','MEX',193657),
+(2592,'Huixquilucan','MEX',193156),
+(2593,'Chilpancingo de los Bravo','MEX',192509),
+(2594,'Puerto Vallarta','MEX',183741),
+(2595,'Fresnillo','MEX',182744),
+(2596,'Ciudad Madero','MEX',182012),
+(2597,'Soledad de Graciano SÃĄnchez','MEX',179956),
+(2598,'San Juan del RÃo','MEX',179300),
+(2599,'San Felipe del Progreso','MEX',177330),
+(2600,'CÃŗrdoba','MEX',176952);
+INSERT INTO City VALUES
+(2601,'TecÃĄmac','MEX',172410),
+(2602,'Ocosingo','MEX',171495),
+(2603,'Carmen','MEX',171367),
+(2604,'LÃĄzaro CÃĄrdenas','MEX',170878),
+(2605,'Jiutepec','MEX',170428),
+(2606,'Papantla','MEX',170123),
+(2607,'Comalcalco','MEX',164640),
+(2608,'Zamora','MEX',161191),
+(2609,'Nogales','MEX',159103),
+(2610,'Huimanguillo','MEX',158335),
+(2611,'Cuautla','MEX',153132),
+(2612,'MinatitlÃĄn','MEX',152983),
+(2613,'Poza Rica de Hidalgo','MEX',152678),
+(2614,'Ciudad Valles','MEX',146411),
+(2615,'Navolato','MEX',145396),
+(2616,'San Luis RÃo Colorado','MEX',145276),
+(2617,'PÊnjamo','MEX',143927),
+(2618,'San AndrÊs Tuxtla','MEX',142251),
+(2619,'Guanajuato','MEX',141215),
+(2620,'Navojoa','MEX',140495),
+(2621,'ZitÃĄcuaro','MEX',137970),
+(2622,'Boca del RÃo','MEX',135721),
+(2623,'Allende','MEX',134645),
+(2624,'Silao','MEX',134037),
+(2625,'Macuspana','MEX',133795),
+(2626,'San Juan Bautista Tuxtepec','MEX',133675),
+(2627,'San CristÃŗbal de las Casas','MEX',132317),
+(2628,'Valle de Santiago','MEX',130557),
+(2629,'Guaymas','MEX',130108),
+(2630,'Colima','MEX',129454),
+(2631,'Dolores Hidalgo','MEX',128675),
+(2632,'Lagos de Moreno','MEX',127949),
+(2633,'Piedras Negras','MEX',127898),
+(2634,'Altamira','MEX',127490),
+(2635,'TÃēxpam','MEX',126475),
+(2636,'San Pedro Garza GarcÃa','MEX',126147),
+(2637,'CuauhtÊmoc','MEX',124279),
+(2638,'Manzanillo','MEX',124014),
+(2639,'Iguala de la Independencia','MEX',123883),
+(2640,'Zacatecas','MEX',123700),
+(2641,'Tlajomulco de ZÃēÃąiga','MEX',123220),
+(2642,'Tulancingo de Bravo','MEX',121946),
+(2643,'Zinacantepec','MEX',121715),
+(2644,'San MartÃn Texmelucan','MEX',121093),
+(2645,'TepatitlÃĄn de Morelos','MEX',118948),
+(2646,'MartÃnez de la Torre','MEX',118815),
+(2647,'Orizaba','MEX',118488),
+(2648,'ApatzingÃĄn','MEX',117849),
+(2649,'Atlixco','MEX',117019),
+(2650,'Delicias','MEX',116132),
+(2651,'Ixtlahuaca','MEX',115548),
+(2652,'El Mante','MEX',112453),
+(2653,'Lerdo','MEX',112272),
+(2654,'Almoloya de JuÃĄrez','MEX',110550),
+(2655,'AcÃĄmbaro','MEX',110487),
+(2656,'AcuÃąa','MEX',110388),
+(2657,'Guadalupe','MEX',108881),
+(2658,'Huejutla de Reyes','MEX',108017),
+(2659,'Hidalgo','MEX',106198),
+(2660,'Los Cabos','MEX',105199),
+(2661,'ComitÃĄn de DomÃnguez','MEX',104986),
+(2662,'CunduacÃĄn','MEX',104164),
+(2663,'RÃo Bravo','MEX',103901),
+(2664,'Temapache','MEX',102824),
+(2665,'Chilapa de Alvarez','MEX',102716),
+(2666,'Hidalgo del Parral','MEX',100881),
+(2667,'San Francisco del RincÃŗn','MEX',100149),
+(2668,'Taxco de AlarcÃŗn','MEX',99907),
+(2669,'Zumpango','MEX',99781),
+(2670,'San Pedro Cholula','MEX',99734),
+(2671,'Lerma','MEX',99714),
+(2672,'TecomÃĄn','MEX',99296),
+(2673,'Las Margaritas','MEX',97389),
+(2674,'Cosoleacaque','MEX',97199),
+(2675,'San Luis de la Paz','MEX',96763),
+(2676,'JosÊ Azueta','MEX',95448),
+(2677,'Santiago Ixcuintla','MEX',95311),
+(2678,'San Felipe','MEX',95305),
+(2679,'Tejupilco','MEX',94934),
+(2680,'Tantoyuca','MEX',94709),
+(2681,'Salvatierra','MEX',94322),
+(2682,'Tultepec','MEX',93364),
+(2683,'Temixco','MEX',92686),
+(2684,'Matamoros','MEX',91858),
+(2685,'PÃĄnuco','MEX',90551),
+(2686,'El Fuerte','MEX',89556),
+(2687,'Tierra Blanca','MEX',89143),
+(2688,'Weno','FSM',22000),
+(2689,'Palikir','FSM',8600),
+(2690,'Chisinau','MDA',719900),
+(2691,'Tiraspol','MDA',194300),
+(2692,'Balti','MDA',153400),
+(2693,'Bender (TÃŽghina)','MDA',125700),
+(2694,'Monte-Carlo','MCO',13154),
+(2695,'Monaco-Ville','MCO',1234),
+(2696,'Ulan Bator','MNG',773700),
+(2697,'Plymouth','MSR',2000),
+(2698,'Maputo','MOZ',1018938),
+(2699,'Matola','MOZ',424662),
+(2700,'Beira','MOZ',397368),
+(2701,'Nampula','MOZ',303346),
+(2702,'Chimoio','MOZ',171056),
+(2703,'Naçala-Porto','MOZ',158248),
+(2704,'Quelimane','MOZ',150116),
+(2705,'Mocuba','MOZ',124700),
+(2706,'Tete','MOZ',101984),
+(2707,'Xai-Xai','MOZ',99442),
+(2708,'Gurue','MOZ',99300),
+(2709,'Maxixe','MOZ',93985),
+(2710,'Rangoon (Yangon)','MMR',3361700),
+(2711,'Mandalay','MMR',885300),
+(2712,'Moulmein (Mawlamyine)','MMR',307900),
+(2713,'Pegu (Bago)','MMR',190900),
+(2714,'Bassein (Pathein)','MMR',183900),
+(2715,'Monywa','MMR',138600),
+(2716,'Sittwe (Akyab)','MMR',137600),
+(2717,'Taunggyi (Taunggye)','MMR',131500),
+(2718,'Meikhtila','MMR',129700),
+(2719,'Mergui (Myeik)','MMR',122700),
+(2720,'Lashio (Lasho)','MMR',107600),
+(2721,'Prome (Pyay)','MMR',105700),
+(2722,'Henzada (Hinthada)','MMR',104700),
+(2723,'Myingyan','MMR',103600),
+(2724,'Tavoy (Dawei)','MMR',96800),
+(2725,'Pagakku (Pakokku)','MMR',94800),
+(2726,'Windhoek','NAM',169000),
+(2727,'Yangor','NRU',4050),
+(2728,'Yaren','NRU',559),
+(2729,'Kathmandu','NPL',591835),
+(2730,'Biratnagar','NPL',157764),
+(2731,'Pokhara','NPL',146318),
+(2732,'Lalitapur','NPL',145847),
+(2733,'Birgunj','NPL',90639),
+(2734,'Managua','NIC',959000),
+(2735,'LeÃŗn','NIC',123865),
+(2736,'Chinandega','NIC',97387),
+(2737,'Masaya','NIC',88971),
+(2738,'Niamey','NER',420000),
+(2739,'Zinder','NER',120892),
+(2740,'Maradi','NER',112965),
+(2741,'Lagos','NGA',1518000),
+(2742,'Ibadan','NGA',1432000),
+(2743,'Ogbomosho','NGA',730000),
+(2744,'Kano','NGA',674100),
+(2745,'Oshogbo','NGA',476800),
+(2746,'Ilorin','NGA',475800),
+(2747,'Abeokuta','NGA',427400),
+(2748,'Port Harcourt','NGA',410000),
+(2749,'Zaria','NGA',379200),
+(2750,'Ilesha','NGA',378400),
+(2751,'Onitsha','NGA',371900),
+(2752,'Iwo','NGA',362000),
+(2753,'Ado-Ekiti','NGA',359400),
+(2754,'Abuja','NGA',350100),
+(2755,'Kaduna','NGA',342200),
+(2756,'Mushin','NGA',333200),
+(2757,'Maiduguri','NGA',320000),
+(2758,'Enugu','NGA',316100),
+(2759,'Ede','NGA',307100),
+(2760,'Aba','NGA',298900),
+(2761,'Ife','NGA',296800),
+(2762,'Ila','NGA',264000),
+(2763,'Oyo','NGA',256400),
+(2764,'Ikerre','NGA',244600),
+(2765,'Benin City','NGA',229400),
+(2766,'Iseyin','NGA',217300),
+(2767,'Katsina','NGA',206500),
+(2768,'Jos','NGA',206300),
+(2769,'Sokoto','NGA',204900),
+(2770,'Ilobu','NGA',199000),
+(2771,'Offa','NGA',197200),
+(2772,'Ikorodu','NGA',184900),
+(2773,'Ilawe-Ekiti','NGA',184500),
+(2774,'Owo','NGA',183500),
+(2775,'Ikirun','NGA',181400),
+(2776,'Shaki','NGA',174500),
+(2777,'Calabar','NGA',174400),
+(2778,'Ondo','NGA',173600),
+(2779,'Akure','NGA',162300),
+(2780,'Gusau','NGA',158000),
+(2781,'Ijebu-Ode','NGA',156400),
+(2782,'Effon-Alaiye','NGA',153100),
+(2783,'Kumo','NGA',148000),
+(2784,'Shomolu','NGA',147700),
+(2785,'Oka-Akoko','NGA',142900),
+(2786,'Ikare','NGA',140800),
+(2787,'Sapele','NGA',139200),
+(2788,'Deba Habe','NGA',138600),
+(2789,'Minna','NGA',136900),
+(2790,'Warri','NGA',126100),
+(2791,'Bida','NGA',125500),
+(2792,'Ikire','NGA',123300),
+(2793,'Makurdi','NGA',123100),
+(2794,'Lafia','NGA',122500),
+(2795,'Inisa','NGA',119800),
+(2796,'Shagamu','NGA',117200),
+(2797,'Awka','NGA',111200),
+(2798,'Gombe','NGA',107800),
+(2799,'Igboho','NGA',106800),
+(2800,'Ejigbo','NGA',105900);
+INSERT INTO City VALUES
+(2801,'Agege','NGA',105000),
+(2802,'Ise-Ekiti','NGA',103400),
+(2803,'Ugep','NGA',102600),
+(2804,'Epe','NGA',101000),
+(2805,'Alofi','NIU',682),
+(2806,'Kingston','NFK',800),
+(2807,'Oslo','NOR',508726),
+(2808,'Bergen','NOR',230948),
+(2809,'Trondheim','NOR',150166),
+(2810,'Stavanger','NOR',108848),
+(2811,'BÃĻrum','NOR',101340),
+(2812,'Abidjan','CIV',2500000),
+(2813,'BouakÊ','CIV',329850),
+(2814,'Yamoussoukro','CIV',130000),
+(2815,'Daloa','CIV',121842),
+(2816,'Korhogo','CIV',109445),
+(2817,'al-Sib','OMN',155000),
+(2818,'Salala','OMN',131813),
+(2819,'Bawshar','OMN',107500),
+(2820,'Suhar','OMN',90814),
+(2821,'Masqat','OMN',51969),
+(2822,'Karachi','PAK',9269265),
+(2823,'Lahore','PAK',5063499),
+(2824,'Faisalabad','PAK',1977246),
+(2825,'Rawalpindi','PAK',1406214),
+(2826,'Multan','PAK',1182441),
+(2827,'Hyderabad','PAK',1151274),
+(2828,'Gujranwala','PAK',1124749),
+(2829,'Peshawar','PAK',988005),
+(2830,'Quetta','PAK',560307),
+(2831,'Islamabad','PAK',524500),
+(2832,'Sargodha','PAK',455360),
+(2833,'Sialkot','PAK',417597),
+(2834,'Bahawalpur','PAK',403408),
+(2835,'Sukkur','PAK',329176),
+(2836,'Jhang','PAK',292214),
+(2837,'Sheikhupura','PAK',271875),
+(2838,'Larkana','PAK',270366),
+(2839,'Gujrat','PAK',250121),
+(2840,'Mardan','PAK',244511),
+(2841,'Kasur','PAK',241649),
+(2842,'Rahim Yar Khan','PAK',228479),
+(2843,'Sahiwal','PAK',207388),
+(2844,'Okara','PAK',200901),
+(2845,'Wah','PAK',198400),
+(2846,'Dera Ghazi Khan','PAK',188100),
+(2847,'Mirpur Khas','PAK',184500),
+(2848,'Nawabshah','PAK',183100),
+(2849,'Mingora','PAK',174500),
+(2850,'Chiniot','PAK',169300),
+(2851,'Kamoke','PAK',151000),
+(2852,'Mandi Burewala','PAK',149900),
+(2853,'Jhelum','PAK',145800),
+(2854,'Sadiqabad','PAK',141500),
+(2855,'Jacobabad','PAK',137700),
+(2856,'Shikarpur','PAK',133300),
+(2857,'Khanewal','PAK',133000),
+(2858,'Hafizabad','PAK',130200),
+(2859,'Kohat','PAK',125300),
+(2860,'Muzaffargarh','PAK',121600),
+(2861,'Khanpur','PAK',117800),
+(2862,'Gojra','PAK',115000),
+(2863,'Bahawalnagar','PAK',109600),
+(2864,'Muridke','PAK',108600),
+(2865,'Pak Pattan','PAK',107800),
+(2866,'Abottabad','PAK',106000),
+(2867,'Tando Adam','PAK',103400),
+(2868,'Jaranwala','PAK',103300),
+(2869,'Khairpur','PAK',102200),
+(2870,'Chishtian Mandi','PAK',101700),
+(2871,'Daska','PAK',101500),
+(2872,'Dadu','PAK',98600),
+(2873,'Mandi Bahauddin','PAK',97300),
+(2874,'Ahmadpur East','PAK',96000),
+(2875,'Kamalia','PAK',95300),
+(2876,'Khuzdar','PAK',93100),
+(2877,'Vihari','PAK',92300),
+(2878,'Dera Ismail Khan','PAK',90400),
+(2879,'Wazirabad','PAK',89700),
+(2880,'Nowshera','PAK',89400),
+(2881,'Koror','PLW',12000),
+(2882,'Ciudad de PanamÃĄ','PAN',471373),
+(2883,'San Miguelito','PAN',315382),
+(2884,'Port Moresby','PNG',247000),
+(2885,'AsunciÃŗn','PRY',557776),
+(2886,'Ciudad del Este','PRY',133881),
+(2887,'San Lorenzo','PRY',133395),
+(2888,'LambarÊ','PRY',99681),
+(2889,'Fernando de la Mora','PRY',95287),
+(2890,'Lima','PER',6464693),
+(2891,'Arequipa','PER',762000),
+(2892,'Trujillo','PER',652000),
+(2893,'Chiclayo','PER',517000),
+(2894,'Callao','PER',424294),
+(2895,'Iquitos','PER',367000),
+(2896,'Chimbote','PER',336000),
+(2897,'Huancayo','PER',327000),
+(2898,'Piura','PER',325000),
+(2899,'Cusco','PER',291000),
+(2900,'Pucallpa','PER',220866),
+(2901,'Tacna','PER',215683),
+(2902,'Ica','PER',194820),
+(2903,'Sullana','PER',147361),
+(2904,'Juliaca','PER',142576),
+(2905,'HuÃĄnuco','PER',129688),
+(2906,'Ayacucho','PER',118960),
+(2907,'Chincha Alta','PER',110016),
+(2908,'Cajamarca','PER',108009),
+(2909,'Puno','PER',101578),
+(2910,'Ventanilla','PER',101056),
+(2911,'Castilla','PER',90642),
+(2912,'Adamstown','PCN',42),
+(2913,'Garapan','MNP',9200),
+(2914,'Lisboa','PRT',563210),
+(2915,'Porto','PRT',273060),
+(2916,'Amadora','PRT',122106),
+(2917,'CoÃmbra','PRT',96100),
+(2918,'Braga','PRT',90535),
+(2919,'San Juan','PRI',434374),
+(2920,'BayamÃŗn','PRI',224044),
+(2921,'Ponce','PRI',186475),
+(2922,'Carolina','PRI',186076),
+(2923,'Caguas','PRI',140502),
+(2924,'Arecibo','PRI',100131),
+(2925,'Guaynabo','PRI',100053),
+(2926,'MayagÃŧez','PRI',98434),
+(2927,'Toa Baja','PRI',94085),
+(2928,'Warszawa','POL',1615369),
+(2929,'LÃŗdz','POL',800110),
+(2930,'KrakÃŗw','POL',738150),
+(2931,'Wroclaw','POL',636765),
+(2932,'Poznan','POL',576899),
+(2933,'Gdansk','POL',458988),
+(2934,'Szczecin','POL',416988),
+(2935,'Bydgoszcz','POL',386855),
+(2936,'Lublin','POL',356251),
+(2937,'Katowice','POL',345934),
+(2938,'Bialystok','POL',283937),
+(2939,'Czestochowa','POL',257812),
+(2940,'Gdynia','POL',253521),
+(2941,'Sosnowiec','POL',244102),
+(2942,'Radom','POL',232262),
+(2943,'Kielce','POL',212383),
+(2944,'Gliwice','POL',212164),
+(2945,'Torun','POL',206158),
+(2946,'Bytom','POL',205560),
+(2947,'Zabrze','POL',200177),
+(2948,'Bielsko-Biala','POL',180307),
+(2949,'Olsztyn','POL',170904),
+(2950,'RzeszÃŗw','POL',162049),
+(2951,'Ruda Slaska','POL',159665),
+(2952,'Rybnik','POL',144582),
+(2953,'Walbrzych','POL',136923),
+(2954,'Tychy','POL',133178),
+(2955,'Dabrowa GÃŗrnicza','POL',131037),
+(2956,'Plock','POL',131011),
+(2957,'Elblag','POL',129782),
+(2958,'Opole','POL',129553),
+(2959,'GorzÃŗw Wielkopolski','POL',126019),
+(2960,'Wloclawek','POL',123373),
+(2961,'ChorzÃŗw','POL',121708),
+(2962,'TarnÃŗw','POL',121494),
+(2963,'Zielona GÃŗra','POL',118182),
+(2964,'Koszalin','POL',112375),
+(2965,'Legnica','POL',109335),
+(2966,'Kalisz','POL',106641),
+(2967,'Grudziadz','POL',102434),
+(2968,'Slupsk','POL',102370),
+(2969,'Jastrzebie-ZdrÃŗj','POL',102294),
+(2970,'Jaworzno','POL',97929),
+(2971,'Jelenia GÃŗra','POL',93901),
+(2972,'Malabo','GNQ',40000),
+(2973,'Doha','QAT',355000),
+(2974,'Paris','FRA',2125246),
+(2975,'Marseille','FRA',798430),
+(2976,'Lyon','FRA',445452),
+(2977,'Toulouse','FRA',390350),
+(2978,'Nice','FRA',342738),
+(2979,'Nantes','FRA',270251),
+(2980,'Strasbourg','FRA',264115),
+(2981,'Montpellier','FRA',225392),
+(2982,'Bordeaux','FRA',215363),
+(2983,'Rennes','FRA',206229),
+(2984,'Le Havre','FRA',190905),
+(2985,'Reims','FRA',187206),
+(2986,'Lille','FRA',184657),
+(2987,'St-Ãtienne','FRA',180210),
+(2988,'Toulon','FRA',160639),
+(2989,'Grenoble','FRA',153317),
+(2990,'Angers','FRA',151279),
+(2991,'Dijon','FRA',149867),
+(2992,'Brest','FRA',149634),
+(2993,'Le Mans','FRA',146105),
+(2994,'Clermont-Ferrand','FRA',137140),
+(2995,'Amiens','FRA',135501),
+(2996,'Aix-en-Provence','FRA',134222),
+(2997,'Limoges','FRA',133968),
+(2998,'NÃŽmes','FRA',133424),
+(2999,'Tours','FRA',132820),
+(3000,'Villeurbanne','FRA',124215);
+INSERT INTO City VALUES
+(3001,'Metz','FRA',123776),
+(3002,'Besançon','FRA',117733),
+(3003,'Caen','FRA',113987),
+(3004,'OrlÊans','FRA',113126),
+(3005,'Mulhouse','FRA',110359),
+(3006,'Rouen','FRA',106592),
+(3007,'Boulogne-Billancourt','FRA',106367),
+(3008,'Perpignan','FRA',105115),
+(3009,'Nancy','FRA',103605),
+(3010,'Roubaix','FRA',96984),
+(3011,'Argenteuil','FRA',93961),
+(3012,'Tourcoing','FRA',93540),
+(3013,'Montreuil','FRA',90674),
+(3014,'Cayenne','GUF',50699),
+(3015,'Faaa','PYF',25888),
+(3016,'Papeete','PYF',25553),
+(3017,'Saint-Denis','REU',131480),
+(3018,'Bucuresti','ROM',2016131),
+(3019,'Iasi','ROM',348070),
+(3020,'Constanta','ROM',342264),
+(3021,'Cluj-Napoca','ROM',332498),
+(3022,'Galati','ROM',330276),
+(3023,'Timisoara','ROM',324304),
+(3024,'Brasov','ROM',314225),
+(3025,'Craiova','ROM',313530),
+(3026,'Ploiesti','ROM',251348),
+(3027,'Braila','ROM',233756),
+(3028,'Oradea','ROM',222239),
+(3029,'Bacau','ROM',209235),
+(3030,'Pitesti','ROM',187170),
+(3031,'Arad','ROM',184408),
+(3032,'Sibiu','ROM',169611),
+(3033,'TÃĸrgu Mures','ROM',165153),
+(3034,'Baia Mare','ROM',149665),
+(3035,'Buzau','ROM',148372),
+(3036,'Satu Mare','ROM',130059),
+(3037,'Botosani','ROM',128730),
+(3038,'Piatra Neamt','ROM',125070),
+(3039,'RÃĸmnicu VÃĸlcea','ROM',119741),
+(3040,'Suceava','ROM',118549),
+(3041,'Drobeta-Turnu Severin','ROM',117865),
+(3042,'TÃĸrgoviste','ROM',98980),
+(3043,'Focsani','ROM',98979),
+(3044,'TÃĸrgu Jiu','ROM',98524),
+(3045,'Tulcea','ROM',96278),
+(3046,'Resita','ROM',93976),
+(3047,'Kigali','RWA',286000),
+(3048,'Stockholm','SWE',750348),
+(3049,'Gothenburg [GÃļteborg]','SWE',466990),
+(3050,'MalmÃļ','SWE',259579),
+(3051,'Uppsala','SWE',189569),
+(3052,'LinkÃļping','SWE',133168),
+(3053,'VästerÃĨs','SWE',126328),
+(3054,'Ãrebro','SWE',124207),
+(3055,'NorrkÃļping','SWE',122199),
+(3056,'Helsingborg','SWE',117737),
+(3057,'JÃļnkÃļping','SWE',117095),
+(3058,'UmeÃĨ','SWE',104512),
+(3059,'Lund','SWE',98948),
+(3060,'BorÃĨs','SWE',96883),
+(3061,'Sundsvall','SWE',93126),
+(3062,'Gävle','SWE',90742),
+(3063,'Jamestown','SHN',1500),
+(3064,'Basseterre','KNA',11600),
+(3065,'Castries','LCA',2301),
+(3066,'Kingstown','VCT',17100),
+(3067,'Saint-Pierre','SPM',5808),
+(3068,'Berlin','DEU',3386667),
+(3069,'Hamburg','DEU',1704735),
+(3070,'Munich [MÃŧnchen]','DEU',1194560),
+(3071,'KÃļln','DEU',962507),
+(3072,'Frankfurt am Main','DEU',643821),
+(3073,'Essen','DEU',599515),
+(3074,'Dortmund','DEU',590213),
+(3075,'Stuttgart','DEU',582443),
+(3076,'DÃŧsseldorf','DEU',568855),
+(3077,'Bremen','DEU',540330),
+(3078,'Duisburg','DEU',519793),
+(3079,'Hannover','DEU',514718),
+(3080,'Leipzig','DEU',489532),
+(3081,'NÃŧrnberg','DEU',486628),
+(3082,'Dresden','DEU',476668),
+(3083,'Bochum','DEU',392830),
+(3084,'Wuppertal','DEU',368993),
+(3085,'Bielefeld','DEU',321125),
+(3086,'Mannheim','DEU',307730),
+(3087,'Bonn','DEU',301048),
+(3088,'Gelsenkirchen','DEU',281979),
+(3089,'Karlsruhe','DEU',277204),
+(3090,'Wiesbaden','DEU',268716),
+(3091,'MÃŧnster','DEU',264670),
+(3092,'MÃļnchengladbach','DEU',263697),
+(3093,'Chemnitz','DEU',263222),
+(3094,'Augsburg','DEU',254867),
+(3095,'Halle/Saale','DEU',254360),
+(3096,'Braunschweig','DEU',246322),
+(3097,'Aachen','DEU',243825),
+(3098,'Krefeld','DEU',241769),
+(3099,'Magdeburg','DEU',235073),
+(3100,'Kiel','DEU',233795),
+(3101,'Oberhausen','DEU',222349),
+(3102,'LÃŧbeck','DEU',213326),
+(3103,'Hagen','DEU',205201),
+(3104,'Rostock','DEU',203279),
+(3105,'Freiburg im Breisgau','DEU',202455),
+(3106,'Erfurt','DEU',201267),
+(3107,'Kassel','DEU',196211),
+(3108,'SaarbrÃŧcken','DEU',183836),
+(3109,'Mainz','DEU',183134),
+(3110,'Hamm','DEU',181804),
+(3111,'Herne','DEU',175661),
+(3112,'MÃŧlheim an der Ruhr','DEU',173895),
+(3113,'Solingen','DEU',165583),
+(3114,'OsnabrÃŧck','DEU',164539),
+(3115,'Ludwigshafen am Rhein','DEU',163771),
+(3116,'Leverkusen','DEU',160841),
+(3117,'Oldenburg','DEU',154125),
+(3118,'Neuss','DEU',149702),
+(3119,'Heidelberg','DEU',139672),
+(3120,'Darmstadt','DEU',137776),
+(3121,'Paderborn','DEU',137647),
+(3122,'Potsdam','DEU',128983),
+(3123,'WÃŧrzburg','DEU',127350),
+(3124,'Regensburg','DEU',125236),
+(3125,'Recklinghausen','DEU',125022),
+(3126,'GÃļttingen','DEU',124775),
+(3127,'Bremerhaven','DEU',122735),
+(3128,'Wolfsburg','DEU',121954),
+(3129,'Bottrop','DEU',121097),
+(3130,'Remscheid','DEU',120125),
+(3131,'Heilbronn','DEU',119526),
+(3132,'Pforzheim','DEU',117227),
+(3133,'Offenbach am Main','DEU',116627),
+(3134,'Ulm','DEU',116103),
+(3135,'Ingolstadt','DEU',114826),
+(3136,'Gera','DEU',114718),
+(3137,'Salzgitter','DEU',112934),
+(3138,'Cottbus','DEU',110894),
+(3139,'Reutlingen','DEU',110343),
+(3140,'FÃŧrth','DEU',109771),
+(3141,'Siegen','DEU',109225),
+(3142,'Koblenz','DEU',108003),
+(3143,'Moers','DEU',106837),
+(3144,'Bergisch Gladbach','DEU',106150),
+(3145,'Zwickau','DEU',104146),
+(3146,'Hildesheim','DEU',104013),
+(3147,'Witten','DEU',103384),
+(3148,'Schwerin','DEU',102878),
+(3149,'Erlangen','DEU',100750),
+(3150,'Kaiserslautern','DEU',100025),
+(3151,'Trier','DEU',99891),
+(3152,'Jena','DEU',99779),
+(3153,'Iserlohn','DEU',99474),
+(3154,'GÃŧtersloh','DEU',95028),
+(3155,'Marl','DEU',93735),
+(3156,'LÃŧnen','DEU',92044),
+(3157,'DÃŧren','DEU',91092),
+(3158,'Ratingen','DEU',90951),
+(3159,'Velbert','DEU',89881),
+(3160,'Esslingen am Neckar','DEU',89667),
+(3161,'Honiara','SLB',50100),
+(3162,'Lusaka','ZMB',1317000),
+(3163,'Ndola','ZMB',329200),
+(3164,'Kitwe','ZMB',288600),
+(3165,'Kabwe','ZMB',154300),
+(3166,'Chingola','ZMB',142400),
+(3167,'Mufulira','ZMB',123900),
+(3168,'Luanshya','ZMB',118100),
+(3169,'Apia','WSM',35900),
+(3170,'Serravalle','SMR',4802),
+(3171,'San Marino','SMR',2294),
+(3172,'SÃŖo TomÊ','STP',49541),
+(3173,'Riyadh','SAU',3324000),
+(3174,'Jedda','SAU',2046300),
+(3175,'Mekka','SAU',965700),
+(3176,'Medina','SAU',608300),
+(3177,'al-Dammam','SAU',482300),
+(3178,'al-Taif','SAU',416100),
+(3179,'Tabuk','SAU',292600),
+(3180,'Burayda','SAU',248600),
+(3181,'al-Hufuf','SAU',225800),
+(3182,'al-Mubarraz','SAU',219100),
+(3183,'Khamis Mushayt','SAU',217900),
+(3184,'Hail','SAU',176800),
+(3185,'al-Kharj','SAU',152100),
+(3186,'al-Khubar','SAU',141700),
+(3187,'Jubayl','SAU',140800),
+(3188,'Hafar al-Batin','SAU',137800),
+(3189,'al-Tuqba','SAU',125700),
+(3190,'Yanbu','SAU',119800),
+(3191,'Abha','SAU',112300),
+(3192,'Ara´ar','SAU',108100),
+(3193,'al-Qatif','SAU',98900),
+(3194,'al-Hawiya','SAU',93900),
+(3195,'Unayza','SAU',91100),
+(3196,'Najran','SAU',91000),
+(3197,'Pikine','SEN',855287),
+(3198,'Dakar','SEN',785071),
+(3199,'Thiès','SEN',248000),
+(3200,'Kaolack','SEN',199000);
+INSERT INTO City VALUES
+(3201,'Ziguinchor','SEN',192000),
+(3202,'Rufisque','SEN',150000),
+(3203,'Saint-Louis','SEN',132400),
+(3204,'Mbour','SEN',109300),
+(3205,'Diourbel','SEN',99400),
+(3206,'Victoria','SYC',41000),
+(3207,'Freetown','SLE',850000),
+(3208,'Singapore','SGP',4017733),
+(3209,'Bratislava','SVK',448292),
+(3210,'KoÂice','SVK',241874),
+(3211,'PreÂov','SVK',93977),
+(3212,'Ljubljana','SVN',270986),
+(3213,'Maribor','SVN',115532),
+(3214,'Mogadishu','SOM',997000),
+(3215,'Hargeysa','SOM',90000),
+(3216,'Kismaayo','SOM',90000),
+(3217,'Colombo','LKA',645000),
+(3218,'Dehiwala','LKA',203000),
+(3219,'Moratuwa','LKA',190000),
+(3220,'Jaffna','LKA',149000),
+(3221,'Kandy','LKA',140000),
+(3222,'Sri Jayawardenepura Kotte','LKA',118000),
+(3223,'Negombo','LKA',100000),
+(3224,'Omdurman','SDN',1271403),
+(3225,'Khartum','SDN',947483),
+(3226,'Sharq al-Nil','SDN',700887),
+(3227,'Port Sudan','SDN',308195),
+(3228,'Kassala','SDN',234622),
+(3229,'Obeid','SDN',229425),
+(3230,'Nyala','SDN',227183),
+(3231,'Wad Madani','SDN',211362),
+(3232,'al-Qadarif','SDN',191164),
+(3233,'Kusti','SDN',173599),
+(3234,'al-Fashir','SDN',141884),
+(3235,'Juba','SDN',114980),
+(3236,'Helsinki [Helsingfors]','FIN',555474),
+(3237,'Espoo','FIN',213271),
+(3238,'Tampere','FIN',195468),
+(3239,'Vantaa','FIN',178471),
+(3240,'Turku [Ã
bo]','FIN',172561),
+(3241,'Oulu','FIN',120753),
+(3242,'Lahti','FIN',96921),
+(3243,'Paramaribo','SUR',112000),
+(3244,'Mbabane','SWZ',61000),
+(3245,'ZÃŧrich','CHE',336800),
+(3246,'Geneve','CHE',173500),
+(3247,'Basel','CHE',166700),
+(3248,'Bern','CHE',122700),
+(3249,'Lausanne','CHE',114500),
+(3250,'Damascus','SYR',1347000),
+(3251,'Aleppo','SYR',1261983),
+(3252,'Hims','SYR',507404),
+(3253,'Hama','SYR',343361),
+(3254,'Latakia','SYR',264563),
+(3255,'al-Qamishliya','SYR',144286),
+(3256,'Dayr al-Zawr','SYR',140459),
+(3257,'Jaramana','SYR',138469),
+(3258,'Duma','SYR',131158),
+(3259,'al-Raqqa','SYR',108020),
+(3260,'Idlib','SYR',91081),
+(3261,'Dushanbe','TJK',524000),
+(3262,'Khujand','TJK',161500),
+(3263,'Taipei','TWN',2641312),
+(3264,'Kaohsiung','TWN',1475505),
+(3265,'Taichung','TWN',940589),
+(3266,'Tainan','TWN',728060),
+(3267,'Panchiao','TWN',523850),
+(3268,'Chungho','TWN',392176),
+(3269,'Keelung (Chilung)','TWN',385201),
+(3270,'Sanchung','TWN',380084),
+(3271,'Hsinchuang','TWN',365048),
+(3272,'Hsinchu','TWN',361958),
+(3273,'Chungli','TWN',318649),
+(3274,'Fengshan','TWN',318562),
+(3275,'Taoyuan','TWN',316438),
+(3276,'Chiayi','TWN',265109),
+(3277,'Hsintien','TWN',263603),
+(3278,'Changhwa','TWN',227715),
+(3279,'Yungho','TWN',227700),
+(3280,'Tucheng','TWN',224897),
+(3281,'Pingtung','TWN',214727),
+(3282,'Yungkang','TWN',193005),
+(3283,'Pingchen','TWN',188344),
+(3284,'Tali','TWN',171940),
+(3285,'Taiping','TWN',165524),
+(3286,'Pate','TWN',161700),
+(3287,'Fengyuan','TWN',161032),
+(3288,'Luchou','TWN',160516),
+(3289,'Hsichuh','TWN',154976),
+(3290,'Shulin','TWN',151260),
+(3291,'Yuanlin','TWN',126402),
+(3292,'Yangmei','TWN',126323),
+(3293,'Taliao','TWN',115897),
+(3294,'Kueishan','TWN',112195),
+(3295,'Tanshui','TWN',111882),
+(3296,'Taitung','TWN',111039),
+(3297,'Hualien','TWN',108407),
+(3298,'Nantou','TWN',104723),
+(3299,'Lungtan','TWN',103088),
+(3300,'Touliu','TWN',98900),
+(3301,'Tsaotun','TWN',96800),
+(3302,'Kangshan','TWN',92200),
+(3303,'Ilan','TWN',92000),
+(3304,'Miaoli','TWN',90000),
+(3305,'Dar es Salaam','TZA',1747000),
+(3306,'Dodoma','TZA',189000),
+(3307,'Mwanza','TZA',172300),
+(3308,'Zanzibar','TZA',157634),
+(3309,'Tanga','TZA',137400),
+(3310,'Mbeya','TZA',130800),
+(3311,'Morogoro','TZA',117800),
+(3312,'Arusha','TZA',102500),
+(3313,'Moshi','TZA',96800),
+(3314,'Tabora','TZA',92800),
+(3315,'København','DNK',495699),
+(3316,'Ã
rhus','DNK',284846),
+(3317,'Odense','DNK',183912),
+(3318,'Aalborg','DNK',161161),
+(3319,'Frederiksberg','DNK',90327),
+(3320,'Bangkok','THA',6320174),
+(3321,'Nonthaburi','THA',292100),
+(3322,'Nakhon Ratchasima','THA',181400),
+(3323,'Chiang Mai','THA',171100),
+(3324,'Udon Thani','THA',158100),
+(3325,'Hat Yai','THA',148632),
+(3326,'Khon Kaen','THA',126500),
+(3327,'Pak Kret','THA',126055),
+(3328,'Nakhon Sawan','THA',123800),
+(3329,'Ubon Ratchathani','THA',116300),
+(3330,'Songkhla','THA',94900),
+(3331,'Nakhon Pathom','THA',94100),
+(3332,'LomÊ','TGO',375000),
+(3333,'Fakaofo','TKL',300),
+(3334,'Nuku´alofa','TON',22400),
+(3335,'Chaguanas','TTO',56601),
+(3336,'Port-of-Spain','TTO',43396),
+(3337,'N´DjamÊna','TCD',530965),
+(3338,'Moundou','TCD',99500),
+(3339,'Praha','CZE',1181126),
+(3340,'Brno','CZE',381862),
+(3341,'Ostrava','CZE',320041),
+(3342,'Plzen','CZE',166759),
+(3343,'Olomouc','CZE',102702),
+(3344,'Liberec','CZE',99155),
+(3345,'CeskÊ Budejovice','CZE',98186),
+(3346,'Hradec KrÃĄlovÊ','CZE',98080),
+(3347,'Ãstà nad Labem','CZE',95491),
+(3348,'Pardubice','CZE',91309),
+(3349,'Tunis','TUN',690600),
+(3350,'Sfax','TUN',257800),
+(3351,'Ariana','TUN',197000),
+(3352,'Ettadhamen','TUN',178600),
+(3353,'Sousse','TUN',145900),
+(3354,'Kairouan','TUN',113100),
+(3355,'Biserta','TUN',108900),
+(3356,'Gabès','TUN',106600),
+(3357,'Istanbul','TUR',8787958),
+(3358,'Ankara','TUR',3038159),
+(3359,'Izmir','TUR',2130359),
+(3360,'Adana','TUR',1131198),
+(3361,'Bursa','TUR',1095842),
+(3362,'Gaziantep','TUR',789056),
+(3363,'Konya','TUR',628364),
+(3364,'Mersin (Içel)','TUR',587212),
+(3365,'Antalya','TUR',564914),
+(3366,'Diyarbakir','TUR',479884),
+(3367,'Kayseri','TUR',475657),
+(3368,'Eskisehir','TUR',470781),
+(3369,'Sanliurfa','TUR',405905),
+(3370,'Samsun','TUR',339871),
+(3371,'Malatya','TUR',330312),
+(3372,'Gebze','TUR',264170),
+(3373,'Denizli','TUR',253848),
+(3374,'Sivas','TUR',246642),
+(3375,'Erzurum','TUR',246535),
+(3376,'Tarsus','TUR',246206),
+(3377,'Kahramanmaras','TUR',245772),
+(3378,'ElÃĸzig','TUR',228815),
+(3379,'Van','TUR',219319),
+(3380,'Sultanbeyli','TUR',211068),
+(3381,'Izmit (Kocaeli)','TUR',210068),
+(3382,'Manisa','TUR',207148),
+(3383,'Batman','TUR',203793),
+(3384,'Balikesir','TUR',196382),
+(3385,'Sakarya (Adapazari)','TUR',190641),
+(3386,'Iskenderun','TUR',153022),
+(3387,'Osmaniye','TUR',146003),
+(3388,'Ãorum','TUR',145495),
+(3389,'KÃŧtahya','TUR',144761),
+(3390,'Hatay (Antakya)','TUR',143982),
+(3391,'Kirikkale','TUR',142044),
+(3392,'Adiyaman','TUR',141529),
+(3393,'Trabzon','TUR',138234),
+(3394,'Ordu','TUR',133642),
+(3395,'Aydin','TUR',128651),
+(3396,'Usak','TUR',128162),
+(3397,'Edirne','TUR',123383),
+(3398,'Ãorlu','TUR',123300),
+(3399,'Isparta','TUR',121911),
+(3400,'KarabÃŧk','TUR',118285);
+INSERT INTO City VALUES
+(3401,'Kilis','TUR',118245),
+(3402,'Alanya','TUR',117300),
+(3403,'Kiziltepe','TUR',112000),
+(3404,'Zonguldak','TUR',111542),
+(3405,'Siirt','TUR',107100),
+(3406,'Viransehir','TUR',106400),
+(3407,'Tekirdag','TUR',106077),
+(3408,'Karaman','TUR',104200),
+(3409,'Afyon','TUR',103984),
+(3410,'Aksaray','TUR',102681),
+(3411,'Ceyhan','TUR',102412),
+(3412,'Erzincan','TUR',102304),
+(3413,'Bismil','TUR',101400),
+(3414,'Nazilli','TUR',99900),
+(3415,'Tokat','TUR',99500),
+(3416,'Kars','TUR',93000),
+(3417,'InegÃļl','TUR',90500),
+(3418,'Bandirma','TUR',90200),
+(3419,'Ashgabat','TKM',540600),
+(3420,'Chärjew','TKM',189200),
+(3421,'Dashhowuz','TKM',141800),
+(3422,'Mary','TKM',101000),
+(3423,'Cockburn Town','TCA',4800),
+(3424,'Funafuti','TUV',4600),
+(3425,'Kampala','UGA',890800),
+(3426,'Kyiv','UKR',2624000),
+(3427,'Harkova [Harkiv]','UKR',1500000),
+(3428,'Dnipropetrovsk','UKR',1103000),
+(3429,'Donetsk','UKR',1050000),
+(3430,'Odesa','UKR',1011000),
+(3431,'Zaporizzja','UKR',848000),
+(3432,'Lviv','UKR',788000),
+(3433,'Kryvyi Rig','UKR',703000),
+(3434,'Mykolajiv','UKR',508000),
+(3435,'Mariupol','UKR',490000),
+(3436,'Lugansk','UKR',469000),
+(3437,'Vinnytsja','UKR',391000),
+(3438,'Makijivka','UKR',384000),
+(3439,'Herson','UKR',353000),
+(3440,'Sevastopol','UKR',348000),
+(3441,'Simferopol','UKR',339000),
+(3442,'Pultava [Poltava]','UKR',313000),
+(3443,'TÂernigiv','UKR',313000),
+(3444,'TÂerkasy','UKR',309000),
+(3445,'Gorlivka','UKR',299000),
+(3446,'Zytomyr','UKR',297000),
+(3447,'Sumy','UKR',294000),
+(3448,'Dniprodzerzynsk','UKR',270000),
+(3449,'Kirovograd','UKR',265000),
+(3450,'Hmelnytskyi','UKR',262000),
+(3451,'TÂernivtsi','UKR',259000),
+(3452,'Rivne','UKR',245000),
+(3453,'KrementÂuk','UKR',239000),
+(3454,'Ivano-Frankivsk','UKR',237000),
+(3455,'Ternopil','UKR',236000),
+(3456,'Lutsk','UKR',217000),
+(3457,'Bila Tserkva','UKR',215000),
+(3458,'Kramatorsk','UKR',186000),
+(3459,'Melitopol','UKR',169000),
+(3460,'KertÂ','UKR',162000),
+(3461,'Nikopol','UKR',149000),
+(3462,'Berdjansk','UKR',130000),
+(3463,'Pavlograd','UKR',127000),
+(3464,'Sjeverodonetsk','UKR',127000),
+(3465,'Slovjansk','UKR',127000),
+(3466,'Uzgorod','UKR',127000),
+(3467,'AltÂevsk','UKR',119000),
+(3468,'LysytÂansk','UKR',116000),
+(3469,'Jevpatorija','UKR',112000),
+(3470,'Kamjanets-Podilskyi','UKR',109000),
+(3471,'Jenakijeve','UKR',105000),
+(3472,'Krasnyi LutÂ','UKR',101000),
+(3473,'Stahanov','UKR',101000),
+(3474,'Oleksandrija','UKR',99000),
+(3475,'Konotop','UKR',96000),
+(3476,'Kostjantynivka','UKR',95000),
+(3477,'BerdytÂiv','UKR',90000),
+(3478,'Izmajil','UKR',90000),
+(3479,'Âostka','UKR',90000),
+(3480,'Uman','UKR',90000),
+(3481,'Brovary','UKR',89000),
+(3482,'MukatÂeve','UKR',89000),
+(3483,'Budapest','HUN',1811552),
+(3484,'Debrecen','HUN',203648),
+(3485,'Miskolc','HUN',172357),
+(3486,'Szeged','HUN',158158),
+(3487,'PÊcs','HUN',157332),
+(3488,'GyÃļr','HUN',127119),
+(3489,'NyiregyhÃĄza','HUN',112419),
+(3490,'KecskemÊt','HUN',105606),
+(3491,'SzÊkesfehÊrvÃĄr','HUN',105119),
+(3492,'Montevideo','URY',1236000),
+(3493,'NoumÊa','NCL',76293),
+(3494,'Auckland','NZL',381800),
+(3495,'Christchurch','NZL',324200),
+(3496,'Manukau','NZL',281800),
+(3497,'North Shore','NZL',187700),
+(3498,'Waitakere','NZL',170600),
+(3499,'Wellington','NZL',166700),
+(3500,'Dunedin','NZL',119600),
+(3501,'Hamilton','NZL',117100),
+(3502,'Lower Hutt','NZL',98100),
+(3503,'Toskent','UZB',2117500),
+(3504,'Namangan','UZB',370500),
+(3505,'Samarkand','UZB',361800),
+(3506,'Andijon','UZB',318600),
+(3507,'Buhoro','UZB',237100),
+(3508,'Karsi','UZB',194100),
+(3509,'Nukus','UZB',194100),
+(3510,'KÃŧkon','UZB',190100),
+(3511,'Fargona','UZB',180500),
+(3512,'Circik','UZB',146400),
+(3513,'Margilon','UZB',140800),
+(3514,'Ãrgenc','UZB',138900),
+(3515,'Angren','UZB',128000),
+(3516,'Cizah','UZB',124800),
+(3517,'Navoi','UZB',116300),
+(3518,'Olmalik','UZB',114900),
+(3519,'Termiz','UZB',109500),
+(3520,'Minsk','BLR',1674000),
+(3521,'Gomel','BLR',475000),
+(3522,'Mogiljov','BLR',356000),
+(3523,'Vitebsk','BLR',340000),
+(3524,'Grodno','BLR',302000),
+(3525,'Brest','BLR',286000),
+(3526,'Bobruisk','BLR',221000),
+(3527,'BaranovitÂi','BLR',167000),
+(3528,'Borisov','BLR',151000),
+(3529,'Pinsk','BLR',130000),
+(3530,'OrÂa','BLR',124000),
+(3531,'Mozyr','BLR',110000),
+(3532,'Novopolotsk','BLR',106000),
+(3533,'Lida','BLR',101000),
+(3534,'Soligorsk','BLR',101000),
+(3535,'MolodetÂno','BLR',97000),
+(3536,'Mata-Utu','WLF',1137),
+(3537,'Port-Vila','VUT',33700),
+(3538,'Città del Vaticano','VAT',455),
+(3539,'Caracas','VEN',1975294),
+(3540,'MaracaÃbo','VEN',1304776),
+(3541,'Barquisimeto','VEN',877239),
+(3542,'Valencia','VEN',794246),
+(3543,'Ciudad Guayana','VEN',663713),
+(3544,'Petare','VEN',488868),
+(3545,'Maracay','VEN',444443),
+(3546,'Barcelona','VEN',322267),
+(3547,'MaturÃn','VEN',319726),
+(3548,'San CristÃŗbal','VEN',319373),
+(3549,'Ciudad BolÃvar','VEN',301107),
+(3550,'CumanÃĄ','VEN',293105),
+(3551,'MÊrida','VEN',224887),
+(3552,'Cabimas','VEN',221329),
+(3553,'Barinas','VEN',217831),
+(3554,'Turmero','VEN',217499),
+(3555,'Baruta','VEN',207290),
+(3556,'Puerto Cabello','VEN',187722),
+(3557,'Santa Ana de Coro','VEN',185766),
+(3558,'Los Teques','VEN',178784),
+(3559,'Punto Fijo','VEN',167215),
+(3560,'Guarenas','VEN',165889),
+(3561,'Acarigua','VEN',158954),
+(3562,'Puerto La Cruz','VEN',155700),
+(3563,'Ciudad Losada','VEN',134501),
+(3564,'Guacara','VEN',131334),
+(3565,'Valera','VEN',130281),
+(3566,'Guanare','VEN',125621),
+(3567,'CarÃēpano','VEN',119639),
+(3568,'Catia La Mar','VEN',117012),
+(3569,'El Tigre','VEN',116256),
+(3570,'Guatire','VEN',109121),
+(3571,'Calabozo','VEN',107146),
+(3572,'Pozuelos','VEN',105690),
+(3573,'Ciudad Ojeda','VEN',99354),
+(3574,'Ocumare del Tuy','VEN',97168),
+(3575,'Valle de la Pascua','VEN',95927),
+(3576,'Araure','VEN',94269),
+(3577,'San Fernando de Apure','VEN',93809),
+(3578,'San Felipe','VEN',90940),
+(3579,'El LimÃŗn','VEN',90000),
+(3580,'Moscow','RUS',8389200),
+(3581,'St Petersburg','RUS',4694000),
+(3582,'Novosibirsk','RUS',1398800),
+(3583,'Nizni Novgorod','RUS',1357000),
+(3584,'Jekaterinburg','RUS',1266300),
+(3585,'Samara','RUS',1156100),
+(3586,'Omsk','RUS',1148900),
+(3587,'Kazan','RUS',1101000),
+(3588,'Ufa','RUS',1091200),
+(3589,'TÂeljabinsk','RUS',1083200),
+(3590,'Rostov-na-Donu','RUS',1012700),
+(3591,'Perm','RUS',1009700),
+(3592,'Volgograd','RUS',993400),
+(3593,'Voronez','RUS',907700),
+(3594,'Krasnojarsk','RUS',875500),
+(3595,'Saratov','RUS',874000),
+(3596,'Toljatti','RUS',722900),
+(3597,'Uljanovsk','RUS',667400),
+(3598,'Izevsk','RUS',652800),
+(3599,'Krasnodar','RUS',639000),
+(3600,'Jaroslavl','RUS',616700);
+INSERT INTO City VALUES
+(3601,'Habarovsk','RUS',609400),
+(3602,'Vladivostok','RUS',606200),
+(3603,'Irkutsk','RUS',593700),
+(3604,'Barnaul','RUS',580100),
+(3605,'Novokuznetsk','RUS',561600),
+(3606,'Penza','RUS',532200),
+(3607,'Rjazan','RUS',529900),
+(3608,'Orenburg','RUS',523600),
+(3609,'Lipetsk','RUS',521000),
+(3610,'Nabereznyje TÂelny','RUS',514700),
+(3611,'Tula','RUS',506100),
+(3612,'Tjumen','RUS',503400),
+(3613,'Kemerovo','RUS',492700),
+(3614,'Astrahan','RUS',486100),
+(3615,'Tomsk','RUS',482100),
+(3616,'Kirov','RUS',466200),
+(3617,'Ivanovo','RUS',459200),
+(3618,'TÂeboksary','RUS',459200),
+(3619,'Brjansk','RUS',457400),
+(3620,'Tver','RUS',454900),
+(3621,'Kursk','RUS',443500),
+(3622,'Magnitogorsk','RUS',427900),
+(3623,'Kaliningrad','RUS',424400),
+(3624,'Nizni Tagil','RUS',390900),
+(3625,'Murmansk','RUS',376300),
+(3626,'Ulan-Ude','RUS',370400),
+(3627,'Kurgan','RUS',364700),
+(3628,'Arkangeli','RUS',361800),
+(3629,'SotÂi','RUS',358600),
+(3630,'Smolensk','RUS',353400),
+(3631,'Orjol','RUS',344500),
+(3632,'Stavropol','RUS',343300),
+(3633,'Belgorod','RUS',342000),
+(3634,'Kaluga','RUS',339300),
+(3635,'Vladimir','RUS',337100),
+(3636,'MahatÂkala','RUS',332800),
+(3637,'TÂerepovets','RUS',324400),
+(3638,'Saransk','RUS',314800),
+(3639,'Tambov','RUS',312000),
+(3640,'Vladikavkaz','RUS',310100),
+(3641,'TÂita','RUS',309900),
+(3642,'Vologda','RUS',302500),
+(3643,'Veliki Novgorod','RUS',299500),
+(3644,'Komsomolsk-na-Amure','RUS',291600),
+(3645,'Kostroma','RUS',288100),
+(3646,'Volzski','RUS',286900),
+(3647,'Taganrog','RUS',284400),
+(3648,'Petroskoi','RUS',282100),
+(3649,'Bratsk','RUS',277600),
+(3650,'Dzerzinsk','RUS',277100),
+(3651,'Surgut','RUS',274900),
+(3652,'Orsk','RUS',273900),
+(3653,'Sterlitamak','RUS',265200),
+(3654,'Angarsk','RUS',264700),
+(3655,'JoÂkar-Ola','RUS',249200),
+(3656,'Rybinsk','RUS',239600),
+(3657,'Prokopjevsk','RUS',237300),
+(3658,'Niznevartovsk','RUS',233900),
+(3659,'NaltÂik','RUS',233400),
+(3660,'Syktyvkar','RUS',229700),
+(3661,'Severodvinsk','RUS',229300),
+(3662,'Bijsk','RUS',225000),
+(3663,'Niznekamsk','RUS',223400),
+(3664,'BlagoveÂtÂensk','RUS',222000),
+(3665,'Âahty','RUS',221800),
+(3666,'Staryi Oskol','RUS',213800),
+(3667,'Zelenograd','RUS',207100),
+(3668,'Balakovo','RUS',206000),
+(3669,'Novorossijsk','RUS',203300),
+(3670,'Pihkova','RUS',201500),
+(3671,'Zlatoust','RUS',196900),
+(3672,'Jakutsk','RUS',195400),
+(3673,'Podolsk','RUS',194300),
+(3674,'Petropavlovsk-KamtÂatski','RUS',194100),
+(3675,'Kamensk-Uralski','RUS',190600),
+(3676,'Engels','RUS',189000),
+(3677,'Syzran','RUS',186900),
+(3678,'Grozny','RUS',186000),
+(3679,'NovotÂerkassk','RUS',184400),
+(3680,'Berezniki','RUS',181900),
+(3681,'Juzno-Sahalinsk','RUS',179200),
+(3682,'Volgodonsk','RUS',178200),
+(3683,'Abakan','RUS',169200),
+(3684,'Maikop','RUS',167300),
+(3685,'Miass','RUS',166200),
+(3686,'Armavir','RUS',164900),
+(3687,'Ljubertsy','RUS',163900),
+(3688,'Rubtsovsk','RUS',162600),
+(3689,'Kovrov','RUS',159900),
+(3690,'Nahodka','RUS',157700),
+(3691,'Ussurijsk','RUS',157300),
+(3692,'Salavat','RUS',156800),
+(3693,'MytiÂtÂi','RUS',155700),
+(3694,'Kolomna','RUS',150700),
+(3695,'Elektrostal','RUS',147000),
+(3696,'Murom','RUS',142400),
+(3697,'Kolpino','RUS',141200),
+(3698,'Norilsk','RUS',140800),
+(3699,'Almetjevsk','RUS',140700),
+(3700,'Novomoskovsk','RUS',138100),
+(3701,'Dimitrovgrad','RUS',137000),
+(3702,'Pervouralsk','RUS',136100),
+(3703,'Himki','RUS',133700),
+(3704,'BalaÂiha','RUS',132900),
+(3705,'Nevinnomyssk','RUS',132600),
+(3706,'Pjatigorsk','RUS',132500),
+(3707,'Korolev','RUS',132400),
+(3708,'Serpuhov','RUS',132000),
+(3709,'Odintsovo','RUS',127400),
+(3710,'Orehovo-Zujevo','RUS',124900),
+(3711,'KamyÂin','RUS',124600),
+(3712,'NovotÂeboksarsk','RUS',123400),
+(3713,'TÂerkessk','RUS',121700),
+(3714,'AtÂinsk','RUS',121600),
+(3715,'Magadan','RUS',121000),
+(3716,'MitÂurinsk','RUS',120700),
+(3717,'Kislovodsk','RUS',120400),
+(3718,'Jelets','RUS',119400),
+(3719,'Seversk','RUS',118600),
+(3720,'Noginsk','RUS',117200),
+(3721,'Velikije Luki','RUS',116300),
+(3722,'NovokuibyÂevsk','RUS',116200),
+(3723,'Neftekamsk','RUS',115700),
+(3724,'Leninsk-Kuznetski','RUS',113800),
+(3725,'Oktjabrski','RUS',111500),
+(3726,'Sergijev Posad','RUS',111100),
+(3727,'Arzamas','RUS',110700),
+(3728,'Kiseljovsk','RUS',110000),
+(3729,'Novotroitsk','RUS',109600),
+(3730,'Obninsk','RUS',108300),
+(3731,'Kansk','RUS',107400),
+(3732,'Glazov','RUS',106300),
+(3733,'Solikamsk','RUS',106000),
+(3734,'Sarapul','RUS',105700),
+(3735,'Ust-Ilimsk','RUS',105200),
+(3736,'ÂtÂolkovo','RUS',104900),
+(3737,'MezduretÂensk','RUS',104400),
+(3738,'Usolje-Sibirskoje','RUS',103500),
+(3739,'Elista','RUS',103300),
+(3740,'NovoÂahtinsk','RUS',101900),
+(3741,'Votkinsk','RUS',101700),
+(3742,'Kyzyl','RUS',101100),
+(3743,'Serov','RUS',100400),
+(3744,'Zelenodolsk','RUS',100200),
+(3745,'Zeleznodoroznyi','RUS',100100),
+(3746,'KineÂma','RUS',100000),
+(3747,'Kuznetsk','RUS',98200),
+(3748,'Uhta','RUS',98000),
+(3749,'Jessentuki','RUS',97900),
+(3750,'Tobolsk','RUS',97600),
+(3751,'Neftejugansk','RUS',97400),
+(3752,'Bataisk','RUS',97300),
+(3753,'Nojabrsk','RUS',97300),
+(3754,'BalaÂov','RUS',97100),
+(3755,'Zeleznogorsk','RUS',96900),
+(3756,'Zukovski','RUS',96500),
+(3757,'Anzero-Sudzensk','RUS',96100),
+(3758,'Bugulma','RUS',94100),
+(3759,'Zeleznogorsk','RUS',94000),
+(3760,'Novouralsk','RUS',93300),
+(3761,'PuÂkin','RUS',92900),
+(3762,'Vorkuta','RUS',92600),
+(3763,'Derbent','RUS',92300),
+(3764,'Kirovo-TÂepetsk','RUS',91600),
+(3765,'Krasnogorsk','RUS',91000),
+(3766,'Klin','RUS',90000),
+(3767,'TÂaikovski','RUS',90000),
+(3768,'Novyi Urengoi','RUS',89800),
+(3769,'Ho Chi Minh City','VNM',3980000),
+(3770,'Hanoi','VNM',1410000),
+(3771,'Haiphong','VNM',783133),
+(3772,'Da Nang','VNM',382674),
+(3773,'BiÃĒn Hoa','VNM',282095),
+(3774,'Nha Trang','VNM',221331),
+(3775,'Hue','VNM',219149),
+(3776,'Can Tho','VNM',215587),
+(3777,'Cam Pha','VNM',209086),
+(3778,'Nam Dinh','VNM',171699),
+(3779,'Quy Nhon','VNM',163385),
+(3780,'Vung Tau','VNM',145145),
+(3781,'Rach Gia','VNM',141132),
+(3782,'Long Xuyen','VNM',132681),
+(3783,'Thai Nguyen','VNM',127643),
+(3784,'Hong Gai','VNM',127484),
+(3785,'Phan ThiÃĒt','VNM',114236),
+(3786,'Cam Ranh','VNM',114041),
+(3787,'Vinh','VNM',112455),
+(3788,'My Tho','VNM',108404),
+(3789,'Da Lat','VNM',106409),
+(3790,'Buon Ma Thuot','VNM',97044),
+(3791,'Tallinn','EST',403981),
+(3792,'Tartu','EST',101246),
+(3793,'New York','USA',8008278),
+(3794,'Los Angeles','USA',3694820),
+(3795,'Chicago','USA',2896016),
+(3796,'Houston','USA',1953631),
+(3797,'Philadelphia','USA',1517550),
+(3798,'Phoenix','USA',1321045),
+(3799,'San Diego','USA',1223400),
+(3800,'Dallas','USA',1188580);
+INSERT INTO City VALUES
+(3801,'San Antonio','USA',1144646),
+(3802,'Detroit','USA',951270),
+(3803,'San Jose','USA',894943),
+(3804,'Indianapolis','USA',791926),
+(3805,'San Francisco','USA',776733),
+(3806,'Jacksonville','USA',735167),
+(3807,'Columbus','USA',711470),
+(3808,'Austin','USA',656562),
+(3809,'Baltimore','USA',651154),
+(3810,'Memphis','USA',650100),
+(3811,'Milwaukee','USA',596974),
+(3812,'Boston','USA',589141),
+(3813,'Washington','USA',572059),
+(3814,'Nashville-Davidson','USA',569891),
+(3815,'El Paso','USA',563662),
+(3816,'Seattle','USA',563374),
+(3817,'Denver','USA',554636),
+(3818,'Charlotte','USA',540828),
+(3819,'Fort Worth','USA',534694),
+(3820,'Portland','USA',529121),
+(3821,'Oklahoma City','USA',506132),
+(3822,'Tucson','USA',486699),
+(3823,'New Orleans','USA',484674),
+(3824,'Las Vegas','USA',478434),
+(3825,'Cleveland','USA',478403),
+(3826,'Long Beach','USA',461522),
+(3827,'Albuquerque','USA',448607),
+(3828,'Kansas City','USA',441545),
+(3829,'Fresno','USA',427652),
+(3830,'Virginia Beach','USA',425257),
+(3831,'Atlanta','USA',416474),
+(3832,'Sacramento','USA',407018),
+(3833,'Oakland','USA',399484),
+(3834,'Mesa','USA',396375),
+(3835,'Tulsa','USA',393049),
+(3836,'Omaha','USA',390007),
+(3837,'Minneapolis','USA',382618),
+(3838,'Honolulu','USA',371657),
+(3839,'Miami','USA',362470),
+(3840,'Colorado Springs','USA',360890),
+(3841,'Saint Louis','USA',348189),
+(3842,'Wichita','USA',344284),
+(3843,'Santa Ana','USA',337977),
+(3844,'Pittsburgh','USA',334563),
+(3845,'Arlington','USA',332969),
+(3846,'Cincinnati','USA',331285),
+(3847,'Anaheim','USA',328014),
+(3848,'Toledo','USA',313619),
+(3849,'Tampa','USA',303447),
+(3850,'Buffalo','USA',292648),
+(3851,'Saint Paul','USA',287151),
+(3852,'Corpus Christi','USA',277454),
+(3853,'Aurora','USA',276393),
+(3854,'Raleigh','USA',276093),
+(3855,'Newark','USA',273546),
+(3856,'Lexington-Fayette','USA',260512),
+(3857,'Anchorage','USA',260283),
+(3858,'Louisville','USA',256231),
+(3859,'Riverside','USA',255166),
+(3860,'Saint Petersburg','USA',248232),
+(3861,'Bakersfield','USA',247057),
+(3862,'Stockton','USA',243771),
+(3863,'Birmingham','USA',242820),
+(3864,'Jersey City','USA',240055),
+(3865,'Norfolk','USA',234403),
+(3866,'Baton Rouge','USA',227818),
+(3867,'Hialeah','USA',226419),
+(3868,'Lincoln','USA',225581),
+(3869,'Greensboro','USA',223891),
+(3870,'Plano','USA',222030),
+(3871,'Rochester','USA',219773),
+(3872,'Glendale','USA',218812),
+(3873,'Akron','USA',217074),
+(3874,'Garland','USA',215768),
+(3875,'Madison','USA',208054),
+(3876,'Fort Wayne','USA',205727),
+(3877,'Fremont','USA',203413),
+(3878,'Scottsdale','USA',202705),
+(3879,'Montgomery','USA',201568),
+(3880,'Shreveport','USA',200145),
+(3881,'Augusta-Richmond County','USA',199775),
+(3882,'Lubbock','USA',199564),
+(3883,'Chesapeake','USA',199184),
+(3884,'Mobile','USA',198915),
+(3885,'Des Moines','USA',198682),
+(3886,'Grand Rapids','USA',197800),
+(3887,'Richmond','USA',197790),
+(3888,'Yonkers','USA',196086),
+(3889,'Spokane','USA',195629),
+(3890,'Glendale','USA',194973),
+(3891,'Tacoma','USA',193556),
+(3892,'Irving','USA',191615),
+(3893,'Huntington Beach','USA',189594),
+(3894,'Modesto','USA',188856),
+(3895,'Durham','USA',187035),
+(3896,'Columbus','USA',186291),
+(3897,'Orlando','USA',185951),
+(3898,'Boise City','USA',185787),
+(3899,'Winston-Salem','USA',185776),
+(3900,'San Bernardino','USA',185401),
+(3901,'Jackson','USA',184256),
+(3902,'Little Rock','USA',183133),
+(3903,'Salt Lake City','USA',181743),
+(3904,'Reno','USA',180480),
+(3905,'Newport News','USA',180150),
+(3906,'Chandler','USA',176581),
+(3907,'Laredo','USA',176576),
+(3908,'Henderson','USA',175381),
+(3909,'Arlington','USA',174838),
+(3910,'Knoxville','USA',173890),
+(3911,'Amarillo','USA',173627),
+(3912,'Providence','USA',173618),
+(3913,'Chula Vista','USA',173556),
+(3914,'Worcester','USA',172648),
+(3915,'Oxnard','USA',170358),
+(3916,'Dayton','USA',166179),
+(3917,'Garden Grove','USA',165196),
+(3918,'Oceanside','USA',161029),
+(3919,'Tempe','USA',158625),
+(3920,'Huntsville','USA',158216),
+(3921,'Ontario','USA',158007),
+(3922,'Chattanooga','USA',155554),
+(3923,'Fort Lauderdale','USA',152397),
+(3924,'Springfield','USA',152082),
+(3925,'Springfield','USA',151580),
+(3926,'Santa Clarita','USA',151088),
+(3927,'Salinas','USA',151060),
+(3928,'Tallahassee','USA',150624),
+(3929,'Rockford','USA',150115),
+(3930,'Pomona','USA',149473),
+(3931,'Metairie','USA',149428),
+(3932,'Paterson','USA',149222),
+(3933,'Overland Park','USA',149080),
+(3934,'Santa Rosa','USA',147595),
+(3935,'Syracuse','USA',147306),
+(3936,'Kansas City','USA',146866),
+(3937,'Hampton','USA',146437),
+(3938,'Lakewood','USA',144126),
+(3939,'Vancouver','USA',143560),
+(3940,'Irvine','USA',143072),
+(3941,'Aurora','USA',142990),
+(3942,'Moreno Valley','USA',142381),
+(3943,'Pasadena','USA',141674),
+(3944,'Hayward','USA',140030),
+(3945,'Brownsville','USA',139722),
+(3946,'Bridgeport','USA',139529),
+(3947,'Hollywood','USA',139357),
+(3948,'Warren','USA',138247),
+(3949,'Torrance','USA',137946),
+(3950,'Eugene','USA',137893),
+(3951,'Pembroke Pines','USA',137427),
+(3952,'Salem','USA',136924),
+(3953,'Pasadena','USA',133936),
+(3954,'Escondido','USA',133559),
+(3955,'Sunnyvale','USA',131760),
+(3956,'Savannah','USA',131510),
+(3957,'Fontana','USA',128929),
+(3958,'Orange','USA',128821),
+(3959,'Naperville','USA',128358),
+(3960,'Alexandria','USA',128283),
+(3961,'Rancho Cucamonga','USA',127743),
+(3962,'Grand Prairie','USA',127427),
+(3963,'East Los Angeles','USA',126379),
+(3964,'Fullerton','USA',126003),
+(3965,'Corona','USA',124966),
+(3966,'Flint','USA',124943),
+(3967,'Paradise','USA',124682),
+(3968,'Mesquite','USA',124523),
+(3969,'Sterling Heights','USA',124471),
+(3970,'Sioux Falls','USA',123975),
+(3971,'New Haven','USA',123626),
+(3972,'Topeka','USA',122377),
+(3973,'Concord','USA',121780),
+(3974,'Evansville','USA',121582),
+(3975,'Hartford','USA',121578),
+(3976,'Fayetteville','USA',121015),
+(3977,'Cedar Rapids','USA',120758),
+(3978,'Elizabeth','USA',120568),
+(3979,'Lansing','USA',119128),
+(3980,'Lancaster','USA',118718),
+(3981,'Fort Collins','USA',118652),
+(3982,'Coral Springs','USA',117549),
+(3983,'Stamford','USA',117083),
+(3984,'Thousand Oaks','USA',117005),
+(3985,'Vallejo','USA',116760),
+(3986,'Palmdale','USA',116670),
+(3987,'Columbia','USA',116278),
+(3988,'El Monte','USA',115965),
+(3989,'Abilene','USA',115930),
+(3990,'North Las Vegas','USA',115488),
+(3991,'Ann Arbor','USA',114024),
+(3992,'Beaumont','USA',113866),
+(3993,'Waco','USA',113726),
+(3994,'Macon','USA',113336),
+(3995,'Independence','USA',113288),
+(3996,'Peoria','USA',112936),
+(3997,'Inglewood','USA',112580),
+(3998,'Springfield','USA',111454),
+(3999,'Simi Valley','USA',111351),
+(4000,'Lafayette','USA',110257);
+INSERT INTO City VALUES
+(4001,'Gilbert','USA',109697),
+(4002,'Carrollton','USA',109576),
+(4003,'Bellevue','USA',109569),
+(4004,'West Valley City','USA',108896),
+(4005,'Clarksville','USA',108787),
+(4006,'Costa Mesa','USA',108724),
+(4007,'Peoria','USA',108364),
+(4008,'South Bend','USA',107789),
+(4009,'Downey','USA',107323),
+(4010,'Waterbury','USA',107271),
+(4011,'Manchester','USA',107006),
+(4012,'Allentown','USA',106632),
+(4013,'McAllen','USA',106414),
+(4014,'Joliet','USA',106221),
+(4015,'Lowell','USA',105167),
+(4016,'Provo','USA',105166),
+(4017,'West Covina','USA',105080),
+(4018,'Wichita Falls','USA',104197),
+(4019,'Erie','USA',103717),
+(4020,'Daly City','USA',103621),
+(4021,'Citrus Heights','USA',103455),
+(4022,'Norwalk','USA',103298),
+(4023,'Gary','USA',102746),
+(4024,'Berkeley','USA',102743),
+(4025,'Santa Clara','USA',102361),
+(4026,'Green Bay','USA',102313),
+(4027,'Cape Coral','USA',102286),
+(4028,'Arvada','USA',102153),
+(4029,'Pueblo','USA',102121),
+(4030,'Sandy','USA',101853),
+(4031,'Athens-Clarke County','USA',101489),
+(4032,'Cambridge','USA',101355),
+(4033,'Westminster','USA',100940),
+(4034,'San Buenaventura','USA',100916),
+(4035,'Portsmouth','USA',100565),
+(4036,'Livonia','USA',100545),
+(4037,'Burbank','USA',100316),
+(4038,'Clearwater','USA',99936),
+(4039,'Midland','USA',98293),
+(4040,'Davenport','USA',98256),
+(4041,'Mission Viejo','USA',98049),
+(4042,'Miami Beach','USA',97855),
+(4043,'Sunrise Manor','USA',95362),
+(4044,'New Bedford','USA',94780),
+(4045,'El Cajon','USA',94578),
+(4046,'Norman','USA',94193),
+(4047,'Richmond','USA',94100),
+(4048,'Albany','USA',93994),
+(4049,'Brockton','USA',93653),
+(4050,'Roanoke','USA',93357),
+(4051,'Billings','USA',92988),
+(4052,'Compton','USA',92864),
+(4053,'Gainesville','USA',92291),
+(4054,'Fairfield','USA',92256),
+(4055,'Arden-Arcade','USA',92040),
+(4056,'San Mateo','USA',91799),
+(4057,'Visalia','USA',91762),
+(4058,'Boulder','USA',91238),
+(4059,'Cary','USA',91213),
+(4060,'Santa Monica','USA',91084),
+(4061,'Fall River','USA',90555),
+(4062,'Kenosha','USA',89447),
+(4063,'Elgin','USA',89408),
+(4064,'Odessa','USA',89293),
+(4065,'Carson','USA',89089),
+(4066,'Charleston','USA',89063),
+(4067,'Charlotte Amalie','VIR',13000),
+(4068,'Harare','ZWE',1410000),
+(4069,'Bulawayo','ZWE',621742),
+(4070,'Chitungwiza','ZWE',274912),
+(4071,'Mount Darwin','ZWE',164362),
+(4072,'Mutare','ZWE',131367),
+(4073,'Gweru','ZWE',128037),
+(4074,'Gaza','PSE',353632),
+(4075,'Khan Yunis','PSE',123175),
+(4076,'Hebron','PSE',119401),
+(4077,'Jabaliya','PSE',113901),
+(4078,'Nablus','PSE',100231),
+(4079,'Rafah','PSE',92020);
+
+# Table CountryLanguage
+
+INSERT INTO CountryLanguage VALUES
+('AFG','Pashto',52.4),
+('NLD','Dutch',95.6),
+('ANT','Papiamento',86.2),
+('ALB','Albaniana',97.9),
+('DZA','Arabic',86.0),
+('ASM','Samoan',90.6),
+('AND','Spanish',44.6),
+('AGO','Ovimbundu',37.2),
+('AIA','English',0.0),
+('ATG','Creole English',95.7),
+('ARE','Arabic',42.0),
+('ARG','Spanish',96.8),
+('ARM','Armenian',93.4),
+('ABW','Papiamento',76.7),
+('AUS','English',81.2),
+('AZE','Azerbaijani',89.0),
+('BHS','Creole English',89.7),
+('BHR','Arabic',67.7),
+('BGD','Bengali',97.7),
+('BRB','Bajan',95.1),
+('BEL','Dutch',59.2),
+('BLZ','English',50.8),
+('BEN','Fon',39.8),
+('BMU','English',100.0),
+('BTN','Dzongkha',50.0),
+('BOL','Spanish',87.7),
+('BIH','Serbo-Croatian',99.2),
+('BWA','Tswana',75.5),
+('BRA','Portuguese',97.5),
+('GBR','English',97.3),
+('VGB','English',0.0),
+('BRN','Malay',45.5),
+('BGR','Bulgariana',83.2),
+('BFA','Mossi',50.2),
+('BDI','Kirundi',98.1),
+('CYM','English',0.0),
+('CHL','Spanish',89.7),
+('COK','Maori',0.0),
+('CRI','Spanish',97.5),
+('DJI','Somali',43.9),
+('DMA','Creole English',100.0),
+('DOM','Spanish',98.0),
+('ECU','Spanish',93.0),
+('EGY','Arabic',98.8),
+('SLV','Spanish',100.0),
+('ERI','Tigrinja',49.1),
+('ESP','Spanish',74.4),
+('ZAF','Zulu',22.7),
+('ETH','Oromo',31.0),
+('FLK','English',0.0),
+('FJI','Fijian',50.8),
+('PHL','Pilipino',29.3),
+('FRO','Faroese',100.0),
+('GAB','Fang',35.8),
+('GMB','Malinke',34.1),
+('GEO','Georgiana',71.7),
+('GHA','Akan',52.4),
+('GIB','English',88.9),
+('GRD','Creole English',100.0),
+('GRL','Greenlandic',87.5),
+('GLP','Creole French',95.0),
+('GUM','English',37.5),
+('GTM','Spanish',64.7),
+('GIN','Ful',38.6),
+('GNB','Crioulo',36.4),
+('GUY','Creole English',96.4),
+('HTI','Haiti Creole',100.0),
+('HND','Spanish',97.2),
+('HKG','Canton Chinese',88.7),
+('SJM','Norwegian',0.0),
+('IDN','Javanese',39.4),
+('IND','Hindi',39.9),
+('IRQ','Arabic',77.2),
+('IRN','Persian',45.7),
+('IRL','English',98.4),
+('ISL','Icelandic',95.7),
+('ISR','Hebrew',63.1),
+('ITA','Italian',94.1),
+('TMP','Sunda',0.0),
+('AUT','German',92.0),
+('JAM','Creole English',94.2),
+('JPN','Japanese',99.1),
+('YEM','Arabic',99.6),
+('JOR','Arabic',97.9),
+('CXR','Chinese',0.0),
+('YUG','Serbo-Croatian',75.2),
+('KHM','Khmer',88.6),
+('CMR','Fang',19.7),
+('CAN','English',60.4),
+('CPV','Crioulo',100.0),
+('KAZ','Kazakh',46.0),
+('KEN','Kikuyu',20.9),
+('CAF','Gbaya',23.8),
+('CHN','Chinese',92.0),
+('KGZ','Kirgiz',59.7),
+('KIR','Kiribati',98.9),
+('COL','Spanish',99.0),
+('COM','Comorian',75.0),
+('COG','Kongo',51.5),
+('COD','Luba',18.0),
+('CCK','Malay',0.0),
+('PRK','Korean',99.9),
+('KOR','Korean',99.9),
+('GRC','Greek',98.5),
+('HRV','Serbo-Croatian',95.9),
+('CUB','Spanish',100.0),
+('KWT','Arabic',78.1),
+('CYP','Greek',74.1),
+('LAO','Lao',67.2),
+('LVA','Latvian',55.1),
+('LSO','Sotho',85.0),
+('LBN','Arabic',93.0),
+('LBR','Kpelle',19.5),
+('LBY','Arabic',96.0),
+('LIE','German',89.0),
+('LTU','Lithuanian',81.6),
+('LUX','Luxembourgish',64.4),
+('ESH','Arabic',100.0),
+('MAC','Canton Chinese',85.6),
+('MDG','Malagasy',98.9),
+('MKD','Macedonian',66.5),
+('MWI','Chichewa',58.3),
+('MDV','Dhivehi',100.0),
+('MYS','Malay',58.4),
+('MLI','Bambara',31.8),
+('MLT','Maltese',95.8),
+('MAR','Arabic',65.0),
+('MHL','Marshallese',96.8),
+('MTQ','Creole French',96.6),
+('MRT','Hassaniya',81.7),
+('MUS','Creole French',70.6),
+('MYT','MahorÊ',41.9),
+('MEX','Spanish',92.1),
+('FSM','Trukese',41.6),
+('MDA','Romanian',61.9),
+('MCO','French',41.9),
+('MNG','Mongolian',78.8),
+('MSR','English',0.0),
+('MOZ','Makua',27.8),
+('MMR','Burmese',69.0),
+('NAM','Ovambo',50.7),
+('NRU','Nauru',57.5),
+('NPL','Nepali',50.4),
+('NIC','Spanish',97.6),
+('NER','Hausa',53.1),
+('NGA','Joruba',21.4),
+('NIU','Niue',0.0),
+('NFK','English',0.0),
+('NOR','Norwegian',96.6),
+('CIV','Akan',30.0),
+('OMN','Arabic',76.7),
+('PAK','Punjabi',48.2),
+('PLW','Palau',82.2),
+('PAN','Spanish',76.8),
+('PNG','Papuan Languages',78.1),
+('PRY','Spanish',55.1),
+('PER','Spanish',79.8),
+('PCN','Pitcairnese',0.0),
+('MNP','Philippene Languages',34.1),
+('PRT','Portuguese',99.0),
+('PRI','Spanish',51.3),
+('POL','Polish',97.6),
+('GNQ','Fang',84.8),
+('QAT','Arabic',40.7),
+('FRA','French',93.6),
+('GUF','Creole French',94.3),
+('PYF','Tahitian',46.4),
+('REU','Creole French',91.5),
+('ROM','Romanian',90.7),
+('RWA','Rwanda',100.0),
+('SWE','Swedish',89.5),
+('SHN','English',0.0),
+('KNA','Creole English',100.0),
+('LCA','Creole French',80.0),
+('VCT','Creole English',99.1),
+('SPM','French',0.0),
+('DEU','German',91.3),
+('SLB','Malenasian Languages',85.6),
+('ZMB','Bemba',29.7),
+('WSM','Samoan-English',52.0),
+('SMR','Italian',100.0),
+('STP','Crioulo',86.3),
+('SAU','Arabic',95.0),
+('SEN','Wolof',48.1),
+('SYC','Seselwa',91.3),
+('SLE','Mende',34.8),
+('SGP','Chinese',77.1),
+('SVK','Slovak',85.6),
+('SVN','Slovene',87.9),
+('SOM','Somali',98.3),
+('LKA','Singali',60.3),
+('SDN','Arabic',49.4),
+('FIN','Finnish',92.7),
+('SUR','Sranantonga',81.0),
+('SWZ','Swazi',89.9),
+('CHE','German',63.6),
+('SYR','Arabic',90.0),
+('TJK','Tadzhik',62.2),
+('TWN','Min',66.7),
+('TZA','Nyamwesi',21.1);
+INSERT INTO CountryLanguage VALUES
+('DNK','Danish',93.5),
+('THA','Thai',52.6),
+('TGO','Ewe',23.2),
+('TKL','Tokelau',0.0),
+('TON','Tongan',98.3),
+('TTO','English',93.5),
+('TCD','Sara',27.7),
+('CZE','Czech',81.2),
+('TUN','Arabic',69.9),
+('TUR','Turkish',87.6),
+('TKM','Turkmenian',76.7),
+('TCA','English',0.0),
+('TUV','Tuvalu',92.5),
+('UGA','Ganda',18.1),
+('UKR','Ukrainian',64.7),
+('HUN','Hungarian',98.5),
+('URY','Spanish',95.7),
+('NCL','Malenasian Languages',45.4),
+('NZL','English',87.0),
+('UZB','Uzbek',72.6),
+('BLR','Belorussian',65.6),
+('WLF','Wallis',0.0),
+('VUT','Bislama',56.6),
+('VAT','Italian',0.0),
+('VEN','Spanish',96.9),
+('RUS','Russian',86.6),
+('VNM','Vietnamese',86.8),
+('EST','Estonian',65.3),
+('USA','English',86.2),
+('VIR','English',81.7),
+('UMI','English',0.0),
+('ZWE','Shona',72.1),
+('PSE','Arabic',95.9),
+('AFG','Dari',32.1),
+('NLD','Fries',3.7),
+('ANT','English',7.8),
+('ALB','Greek',1.8),
+('DZA','Berberi',14.0),
+('ASM','English',3.1),
+('AND','Catalan',32.3),
+('AGO','Mbundu',21.6),
+('ATG','English',0.0),
+('ARE','Hindi',0.0),
+('ARG','Italian',1.7),
+('ARM','Azerbaijani',2.6),
+('ABW','English',9.5),
+('AUS','Italian',2.2),
+('AZE','Russian',3.0),
+('BHS','Creole French',10.3),
+('BHR','English',0.0),
+('BGD','Chakma',0.4),
+('BRB','English',0.0),
+('BEL','French',32.6),
+('BLZ','Spanish',31.6),
+('BEN','Joruba',12.2),
+('BTN','Nepali',34.8),
+('BOL','KetÂua',8.1),
+('BWA','Shona',12.3),
+('BRA','German',0.5),
+('GBR','Kymri',0.9),
+('BRN','Malay-English',28.8),
+('BGR','Turkish',9.4),
+('BFA','Ful',9.7),
+('BDI','French',0.0),
+('CHL','Araucan',9.6),
+('COK','English',0.0),
+('CRI','Creole English',2.0),
+('DJI','Afar',34.8),
+('DMA','Creole French',0.0),
+('DOM','Creole French',2.0),
+('ECU','KetÂua',7.0),
+('EGY','Sinaberberi',0.0),
+('SLV','Nahua',0.0),
+('ERI','Tigre',31.7),
+('ESP','Catalan',16.9),
+('ZAF','Xhosa',17.7),
+('ETH','Amhara',30.0),
+('FJI','Hindi',43.7),
+('PHL','Cebuano',23.3),
+('FRO','Danish',0.0),
+('GAB','Punu-sira-nzebi',17.1),
+('GMB','Ful',16.2),
+('GEO','Russian',8.8),
+('GHA','Mossi',15.8),
+('GIB','Arabic',7.4),
+('GRL','Danish',12.5),
+('GLP','French',0.0),
+('GUM','Chamorro',29.6),
+('GTM','QuichÊ',10.1),
+('GIN','Malinke',23.2),
+('GNB','Ful',16.6),
+('GUY','Caribbean',2.2),
+('HTI','French',0.0),
+('HND','Garifuna',1.3),
+('HKG','English',2.2),
+('SJM','Russian',0.0),
+('IDN','Sunda',15.8),
+('IND','Bengali',8.2),
+('IRQ','Kurdish',19.0),
+('IRN','Azerbaijani',16.8),
+('IRL','Irish',1.6),
+('ISL','English',0.0),
+('ISR','Arabic',18.0),
+('ITA','Sardinian',2.7),
+('TMP','Portuguese',0.0),
+('AUT','Serbo-Croatian',2.2),
+('JAM','Hindi',1.9),
+('JPN','Korean',0.5),
+('YEM','Soqutri',0.0),
+('JOR','Circassian',1.0),
+('CXR','English',0.0),
+('YUG','Albaniana',16.5),
+('KHM','Vietnamese',5.5),
+('CMR','Bamileke-bamum',18.6),
+('CAN','French',23.4),
+('CPV','Portuguese',0.0),
+('KAZ','Russian',34.7),
+('KEN','Luhya',13.8),
+('CAF','Banda',23.5),
+('CHN','Zhuang',1.4),
+('KGZ','Russian',16.2),
+('KIR','Tuvalu',0.5),
+('COL','Chibcha',0.4),
+('COM','Comorian-French',12.9),
+('COG','Teke',17.3),
+('COD','Kongo',16.0),
+('CCK','English',0.0),
+('PRK','Chinese',0.1),
+('KOR','Chinese',0.1),
+('GRC','Turkish',0.9),
+('HRV','Slovene',0.0),
+('KWT','English',0.0),
+('CYP','Turkish',22.4),
+('LAO','Mon-khmer',16.5),
+('LVA','Russian',32.5),
+('LSO','Zulu',15.0),
+('LBN','Armenian',5.9),
+('LBR','Bassa',13.7),
+('LBY','Berberi',1.0),
+('LIE','Italian',2.5),
+('LTU','Russian',8.1),
+('LUX','Portuguese',13.0),
+('MAC','Portuguese',2.3),
+('MDG','French',0.0),
+('MKD','Albaniana',22.9),
+('MWI','Lomwe',18.4),
+('MDV','English',0.0),
+('MYS','Chinese',9.0),
+('MLI','Ful',13.9),
+('MLT','English',2.1),
+('MAR','Berberi',33.0),
+('MHL','English',0.0),
+('MTQ','French',0.0),
+('MRT','Wolof',6.6),
+('MUS','Bhojpuri',21.1),
+('MYT','French',20.3),
+('MEX','NÃĄhuatl',1.8),
+('FSM','Pohnpei',23.8),
+('MDA','Russian',23.2),
+('MCO','Monegasque',16.1),
+('MNG','Kazakh',5.9),
+('MOZ','Tsonga',12.4),
+('MMR','Shan',8.5),
+('NAM','Nama',12.4),
+('NRU','Kiribati',17.9),
+('NPL','Maithili',11.9),
+('NIC','Miskito',1.6),
+('NER','Songhai-zerma',21.2),
+('NGA','Hausa',21.1),
+('NIU','English',0.0),
+('NOR','English',0.5),
+('CIV','Gur',11.7),
+('OMN','Balochi',0.0),
+('PAK','Pashto',13.1),
+('PLW','Philippene Languages',9.2),
+('PAN','Creole English',14.0),
+('PNG','Malenasian Languages',20.0),
+('PRY','GuaranÃ',40.1),
+('PER','KetÂua',16.4),
+('MNP','Chamorro',30.0),
+('PRI','English',47.4),
+('POL','German',1.3),
+('GNQ','Bubi',8.7),
+('QAT','Urdu',0.0),
+('FRA','Arabic',2.5),
+('GUF','Indian Languages',1.9),
+('PYF','French',40.8),
+('REU','Chinese',2.8),
+('ROM','Hungarian',7.2),
+('RWA','French',0.0),
+('SWE','Finnish',2.4),
+('KNA','English',0.0),
+('LCA','English',20.0),
+('VCT','English',0.0),
+('DEU','Turkish',2.6),
+('SLB','Papuan Languages',8.6),
+('ZMB','Tongan',11.0),
+('WSM','Samoan',47.5),
+('STP','French',0.7),
+('SEN','Ful',21.7);
+INSERT INTO CountryLanguage VALUES
+('SYC','English',3.8),
+('SLE','Temne',31.8),
+('SGP','Malay',14.1),
+('SVK','Hungarian',10.5),
+('SVN','Serbo-Croatian',7.9),
+('SOM','Arabic',0.0),
+('LKA','Tamil',19.6),
+('SDN','Dinka',11.5),
+('FIN','Swedish',5.7),
+('SUR','Hindi',0.0),
+('SWZ','Zulu',2.0),
+('CHE','French',19.2),
+('SYR','Kurdish',9.0),
+('TJK','Uzbek',23.2),
+('TWN','Mandarin Chinese',20.1),
+('TZA','Swahili',8.8),
+('DNK','Turkish',0.8),
+('THA','Lao',26.9),
+('TGO','KabyÊ',13.8),
+('TKL','English',0.0),
+('TON','English',0.0),
+('TTO','Hindi',3.4),
+('TCD','Arabic',12.3),
+('CZE','Moravian',12.9),
+('TUN','Arabic-French',26.3),
+('TUR','Kurdish',10.6),
+('TKM','Uzbek',9.2),
+('TUV','Kiribati',7.5),
+('UGA','Nkole',10.7),
+('UKR','Russian',32.9),
+('HUN','Romani',0.5),
+('NCL','French',34.3),
+('NZL','Maori',4.3),
+('UZB','Russian',10.9),
+('BLR','Russian',32.0),
+('WLF','Futuna',0.0),
+('VUT','English',28.3),
+('VEN','Goajiro',0.4),
+('RUS','Tatar',3.2),
+('VNM','Tho',1.8),
+('EST','Russian',27.8),
+('USA','Spanish',7.5),
+('VIR','Spanish',13.3),
+('ZWE','Ndebele',16.2),
+('PSE','Hebrew',4.1),
+('AFG','Uzbek',8.8),
+('NLD','Arabic',0.9),
+('ANT','Dutch',0.0),
+('ALB','Macedonian',0.1),
+('ASM','Tongan',3.1),
+('AND','Portuguese',10.8),
+('AGO','Kongo',13.2),
+('ARG','Indian Languages',0.3),
+('ABW','Spanish',7.4),
+('AUS','Greek',1.6),
+('AZE','Lezgian',2.3),
+('BGD','Marma',0.2),
+('BEL','Italian',2.4),
+('BLZ','Maya Languages',9.6),
+('BEN','Adja',11.1),
+('BTN','Asami',15.2),
+('BOL','AimarÃĄ',3.2),
+('BWA','San',3.5),
+('BRA','Italian',0.4),
+('GBR','Gaeli',0.1),
+('BRN','Chinese',9.3),
+('BGR','Romani',3.7),
+('BFA','Gurma',5.7),
+('BDI','Swahili',0.0),
+('CHL','AimarÃĄ',0.5),
+('CRI','Chibcha',0.3),
+('DJI','Arabic',10.6),
+('ERI','Afar',4.3),
+('ESP','Galecian',6.4),
+('ZAF','Afrikaans',14.3),
+('ETH','Tigrinja',7.2),
+('PHL','Ilocano',9.3),
+('GAB','Mpongwe',14.6),
+('GMB','Wolof',12.6),
+('GEO','Armenian',6.8),
+('GHA','Ewe',11.9),
+('GUM','Philippene Languages',19.7),
+('GTM','Cakchiquel',8.9),
+('GIN','Susu',11.0),
+('GNB','Balante',14.6),
+('GUY','Arawakan',1.4),
+('HND','Creole English',0.2),
+('HKG','Fukien',1.9),
+('IDN','Malay',12.1),
+('IND','Telugu',7.8),
+('IRQ','Azerbaijani',1.7),
+('IRN','Kurdish',9.1),
+('ISR','Russian',8.9),
+('ITA','Friuli',1.2),
+('AUT','Turkish',1.5),
+('JPN','Chinese',0.2),
+('JOR','Armenian',1.0),
+('YUG','Hungarian',3.4),
+('KHM','Chinese',3.1),
+('CMR','Duala',10.9),
+('CAN','Chinese',2.5),
+('KAZ','Ukrainian',5.0),
+('KEN','Luo',12.8),
+('CAF','Mandjia',14.8),
+('CHN','MantÂu',0.9),
+('KGZ','Uzbek',14.1),
+('COL','Creole English',0.1),
+('COM','Comorian-madagassi',5.5),
+('COG','Mboshi',11.4),
+('COD','Mongo',13.5),
+('LAO','Thai',7.8),
+('LVA','Belorussian',4.1),
+('LSO','English',0.0),
+('LBN','French',0.0),
+('LBR','Grebo',8.9),
+('LIE','Turkish',2.5),
+('LTU','Polish',7.0),
+('LUX','Italian',4.6),
+('MAC','Mandarin Chinese',1.2),
+('MKD','Turkish',4.0),
+('MWI','Yao',13.2),
+('MYS','Tamil',3.9),
+('MLI','Senufo and Minianka',12.0),
+('MRT','Tukulor',5.4),
+('MUS','French',3.4),
+('MYT','Malagasy',16.1),
+('MEX','Yucatec',1.1),
+('FSM','Mortlock',7.6),
+('MDA','Ukrainian',8.6),
+('MCO','Italian',16.1),
+('MNG','Dorbet',2.7),
+('MOZ','Sena',9.4),
+('MMR','Karen',6.2),
+('NAM','Kavango',9.7),
+('NRU','Chinese',8.5),
+('NPL','Bhojpuri',7.5),
+('NIC','Creole English',0.5),
+('NER','Tamashek',10.4),
+('NGA','Ibo',18.1),
+('NOR','Danish',0.4),
+('CIV','Malinke',11.4),
+('PAK','Sindhi',11.8),
+('PLW','English',3.2),
+('PAN','GuaymÃ',5.3),
+('PRY','Portuguese',3.2),
+('PER','AimarÃĄ',2.3),
+('MNP','Chinese',7.1),
+('POL','Ukrainian',0.6),
+('FRA','Portuguese',1.2),
+('PYF','Chinese',2.9),
+('REU','Comorian',2.8),
+('ROM','Romani',0.7),
+('SWE','Southern Slavic Languages',1.3),
+('DEU','Southern Slavic Languages',1.4),
+('SLB','Polynesian Languages',3.8),
+('ZMB','Nyanja',7.8),
+('WSM','English',0.6),
+('SEN','Serer',12.5),
+('SYC','French',1.3),
+('SLE','Limba',8.3),
+('SGP','Tamil',7.4),
+('SVK','Romani',1.7),
+('SVN','Hungarian',0.5),
+('LKA','Mixed Languages',19.6),
+('SDN','Nubian Languages',8.1),
+('FIN','Russian',0.4),
+('CHE','Italian',7.7),
+('TJK','Russian',9.7),
+('TWN','Hakka',11.0),
+('TZA','Hehet',6.9),
+('DNK','Arabic',0.7),
+('THA','Chinese',12.1),
+('TGO','Watyi',10.3),
+('TTO','Creole English',2.9),
+('TCD','Mayo-kebbi',11.5),
+('CZE','Slovak',3.1),
+('TUN','Arabic-French-English',3.2),
+('TUR','Arabic',1.4),
+('TKM','Russian',6.7),
+('TUV','English',0.0),
+('UGA','Kiga',8.3),
+('UKR','Romanian',0.7),
+('HUN','German',0.4),
+('NCL','Polynesian Languages',11.6),
+('UZB','Tadzhik',4.4),
+('BLR','Ukrainian',1.3),
+('VUT','French',14.2),
+('VEN','Warrau',0.1),
+('RUS','Ukrainian',1.3),
+('VNM','Thai',1.6),
+('EST','Ukrainian',2.8),
+('USA','French',0.7),
+('VIR','French',2.5),
+('ZWE','English',2.2),
+('AFG','Turkmenian',1.9),
+('NLD','Turkish',0.8),
+('AND','French',6.2),
+('AGO','Luimbe-nganguela',5.4),
+('ABW','Dutch',5.3),
+('AUS','Canton Chinese',1.1);
+INSERT INTO CountryLanguage VALUES
+('AZE','Armenian',2.0),
+('BGD','Garo',0.1),
+('BEL','Arabic',1.6),
+('BLZ','Garifuna',6.8),
+('BEN','Aizo',8.7),
+('BOL','GuaranÃ',0.1),
+('BWA','Khoekhoe',2.5),
+('BRA','Japanese',0.4),
+('BRN','English',3.1),
+('BGR','Macedonian',2.6),
+('BFA','Busansi',3.5),
+('CHL','Rapa nui',0.2),
+('CRI','Chinese',0.2),
+('ERI','Hadareb',3.8),
+('ESP','Basque',1.6),
+('ZAF','Northsotho',9.1),
+('ETH','Gurage',4.7),
+('PHL','Hiligaynon',9.1),
+('GAB','Mbete',13.8),
+('GMB','Diola',9.2),
+('GEO','Azerbaijani',5.5),
+('GHA','Ga-adangme',7.8),
+('GUM','Korean',3.3),
+('GTM','KekchÃ',4.9),
+('GIN','Kissi',6.0),
+('GNB','Portuguese',8.1),
+('HND','Miskito',0.2),
+('HKG','Hakka',1.6),
+('IDN','Madura',4.3),
+('IND','Marathi',7.4),
+('IRQ','Assyrian',0.8),
+('IRN','Gilaki',5.3),
+('ITA','French',0.5),
+('AUT','Hungarian',0.4),
+('JPN','English',0.1),
+('YUG','Romani',1.4),
+('KHM','TÂam',2.4),
+('CMR','Ful',9.6),
+('CAN','Italian',1.7),
+('KAZ','German',3.1),
+('KEN','Kamba',11.2),
+('CAF','Ngbaka',7.5),
+('CHN','Hui',0.8),
+('KGZ','Ukrainian',1.7),
+('COL','Arawakan',0.1),
+('COM','Comorian-Arabic',1.6),
+('COG','Mbete',4.8),
+('COD','Rwanda',10.3),
+('LAO','Lao-Soung',5.2),
+('LVA','Ukrainian',2.9),
+('LBR','Gio',7.9),
+('LTU','Belorussian',1.4),
+('LUX','French',4.2),
+('MAC','English',0.5),
+('MKD','Romani',2.3),
+('MWI','Ngoni',6.7),
+('MYS','Iban',2.8),
+('MLI','Soninke',8.7),
+('MRT','Soninke',2.7),
+('MUS','Hindi',1.2),
+('MEX','Zapotec',0.6),
+('FSM','Kosrean',7.3),
+('MDA','Gagauzi',3.2),
+('MCO','English',6.5),
+('MNG','Bajad',1.9),
+('MOZ','Lomwe',7.8),
+('MMR','Rakhine',4.5),
+('NAM','Afrikaans',9.5),
+('NRU','Tuvalu',8.5),
+('NPL','Tharu',5.4),
+('NIC','Sumo',0.2),
+('NER','Ful',9.7),
+('NGA','Ful',11.3),
+('NOR','Swedish',0.3),
+('CIV','Kru',10.5),
+('PAK','Saraiki',9.8),
+('PLW','Chinese',1.6),
+('PAN','Cuna',2.0),
+('PRY','German',0.9),
+('MNP','Korean',6.5),
+('POL','Belorussian',0.5),
+('FRA','Italian',0.4),
+('REU','Malagasy',1.4),
+('ROM','German',0.4),
+('SWE','Arabic',0.8),
+('DEU','Italian',0.7),
+('ZMB','Lozi',6.4),
+('SEN','Diola',5.0),
+('SLE','Kono-vai',5.1),
+('SVK','Czech and Moravian',1.1),
+('SDN','Beja',6.4),
+('FIN','Estonian',0.2),
+('CHE','Romansh',0.6),
+('TWN','Ami',0.6),
+('TZA','Haya',5.9),
+('DNK','German',0.5),
+('THA','Malay',3.6),
+('TGO','Kotokoli',5.7),
+('TCD','Kanem-bornu',9.0),
+('CZE','Polish',0.6),
+('TKM','Kazakh',2.0),
+('UGA','Soga',8.2),
+('UKR','Bulgariana',0.3),
+('HUN','Serbo-Croatian',0.2),
+('UZB','Kazakh',3.8),
+('BLR','Polish',0.6),
+('RUS','Chuvash',0.9),
+('VNM','Muong',1.5),
+('EST','Belorussian',1.4),
+('USA','German',0.7),
+('ZWE','Nyanja',2.2),
+('AFG','Balochi',0.9),
+('AGO','Nyaneka-nkhumbi',5.4),
+('AUS','Arabic',1.0),
+('BGD','Khasi',0.1),
+('BEL','German',1.0),
+('BEN','Bariba',8.7),
+('BWA','Ndebele',1.3),
+('BRA','Indian Languages',0.2),
+('BFA','Dagara',3.1),
+('ERI','Bilin',3.0),
+('ZAF','English',8.5),
+('ETH','Somali',4.1),
+('PHL','Bicol',5.7),
+('GMB','Soninke',7.6),
+('GEO','Osseetti',2.4),
+('GHA','Gurma',3.3),
+('GUM','Japanese',2.0),
+('GTM','Mam',2.7),
+('GIN','Kpelle',4.6),
+('GNB','Malinke',6.9),
+('HKG','Chiu chau',1.4),
+('IDN','Minangkabau',2.4),
+('IND','Tamil',6.3),
+('IRQ','Persian',0.8),
+('IRN','Luri',4.3),
+('ITA','German',0.5),
+('AUT','Slovene',0.4),
+('JPN','Philippene Languages',0.1),
+('YUG','Slovak',0.7),
+('CMR','Tikar',7.4),
+('CAN','German',1.6),
+('KAZ','Uzbek',2.3),
+('KEN','Kalenjin',10.8),
+('CAF','Sara',6.4),
+('CHN','Miao',0.7),
+('KGZ','Tatar',1.3),
+('COL','Caribbean',0.1),
+('COM','Comorian-Swahili',0.5),
+('COG','Punu',2.9),
+('COD','Zande',6.1),
+('LVA','Polish',2.1),
+('LBR','Kru',7.2),
+('LTU','Ukrainian',1.1),
+('LUX','German',2.3),
+('MKD','Serbo-Croatian',2.0),
+('MYS','English',1.6),
+('MLI','Tamashek',7.3),
+('MRT','Ful',1.2),
+('MUS','Tamil',0.8),
+('MEX','Mixtec',0.6),
+('FSM','Yap',5.8),
+('MDA','Bulgariana',1.6),
+('MNG','Buryat',1.7),
+('MOZ','Shona',6.5),
+('MMR','Mon',2.4),
+('NAM','Herero',8.0),
+('NRU','English',7.5),
+('NPL','Tamang',4.9),
+('NER','Kanuri',4.4),
+('NGA','Ibibio',5.6),
+('NOR','Saame',0.0),
+('CIV','[South]Mande',7.7),
+('PAK','Urdu',7.6),
+('PAN','Embera',0.6),
+('MNP','English',4.8),
+('FRA','Spanish',0.4),
+('REU','Tamil',0.0),
+('ROM','Ukrainian',0.3),
+('SWE','Spanish',0.6),
+('DEU','Greek',0.4),
+('ZMB','Chewa',5.7),
+('SEN','Malinke',3.8),
+('SLE','Bullom-sherbro',3.8),
+('SVK','Ukrainian and Russian',0.6),
+('SDN','Nuer',4.9),
+('FIN','Saame',0.0),
+('TWN','Atayal',0.4),
+('TZA','Makonde',5.9),
+('DNK','English',0.3),
+('THA','Khmer',1.3),
+('TGO','Ane',5.7),
+('TCD','Ouaddai',8.7),
+('CZE','German',0.5),
+('UGA','Teso',6.0),
+('UKR','Hungarian',0.3),
+('HUN','Romanian',0.1),
+('UZB','Karakalpak',2.0),
+('RUS','Bashkir',0.7),
+('VNM','Chinese',1.4);
+INSERT INTO CountryLanguage VALUES
+('EST','Finnish',0.7),
+('USA','Italian',0.6),
+('AGO','Chokwe',4.2),
+('AUS','Vietnamese',0.8),
+('BGD','Santhali',0.1),
+('BEL','Turkish',0.9),
+('BEN','Somba',6.7),
+('BFA','Dyula',2.6),
+('ERI','Saho',3.0),
+('ZAF','Tswana',8.1),
+('ETH','Sidamo',3.2),
+('PHL','Waray-waray',3.8),
+('GEO','Abhyasi',1.7),
+('GHA','Joruba',1.3),
+('GIN','Yalunka',2.9),
+('GNB','Mandyako',4.9),
+('IDN','Batakki',2.2),
+('IND','Urdu',5.1),
+('IRN','Mazandarani',3.6),
+('ITA','Albaniana',0.2),
+('AUT','Polish',0.2),
+('JPN','Ainu',0.0),
+('YUG','Macedonian',0.5),
+('CMR','Mandara',5.7),
+('CAN','Polish',0.7),
+('KAZ','Tatar',2.0),
+('KEN','Gusii',6.1),
+('CAF','Mbum',6.4),
+('CHN','Uighur',0.6),
+('KGZ','Kazakh',0.8),
+('COG','Sango',2.6),
+('COD','Ngala and Bangi',5.8),
+('LVA','Lithuanian',1.2),
+('LBR','Mano',7.2),
+('MYS','Dusun',1.1),
+('MLI','Songhai',6.9),
+('MRT','Zenaga',1.2),
+('MUS','Marathi',0.7),
+('MEX','OtomÃ',0.4),
+('FSM','Wolea',3.7),
+('MNG','Dariganga',1.4),
+('MOZ','Tswa',6.0),
+('MMR','Chin',2.2),
+('NAM','Caprivi',4.7),
+('NPL','Newari',3.7),
+('NGA','Kanuri',4.1),
+('PAK','Balochi',3.0),
+('PAN','Arabic',0.6),
+('MNP','Carolinian',4.8),
+('FRA','Turkish',0.4),
+('ROM','Serbo-Croatian',0.1),
+('SWE','Norwegian',0.5),
+('DEU','Polish',0.3),
+('ZMB','Nsenga',4.3),
+('SEN','Soninke',1.3),
+('SLE','Ful',3.8),
+('SDN','Zande',2.7),
+('TWN','Paiwan',0.3),
+('TZA','Nyakusa',5.4),
+('DNK','Swedish',0.3),
+('THA','Kuy',1.1),
+('TGO','Moba',5.4),
+('TCD','Hadjarai',6.7),
+('CZE','Silesiana',0.4),
+('UGA','Lango',5.9),
+('UKR','Belorussian',0.3),
+('HUN','Slovak',0.1),
+('UZB','Tatar',1.8),
+('RUS','Chechen',0.6),
+('VNM','Khmer',1.4),
+('USA','Chinese',0.6),
+('AGO','Luvale',3.6),
+('AUS','Serbo-Croatian',0.6),
+('BGD','Tripuri',0.1),
+('BEN','Ful',5.6),
+('ZAF','Southsotho',7.6),
+('ETH','Walaita',2.8),
+('PHL','Pampango',3.0),
+('GIN','Loma',2.3),
+('IDN','Bugi',2.2),
+('IND','Gujarati',4.8),
+('IRN','Balochi',2.3),
+('ITA','Slovene',0.2),
+('AUT','Czech',0.2),
+('CMR','Maka',4.9),
+('CAN','Spanish',0.7),
+('KEN','Meru',5.5),
+('CHN','Yi',0.6),
+('KGZ','Tadzhik',0.8),
+('COD','Rundi',3.8),
+('LBR','Loma',5.8),
+('MOZ','Chuabo',5.7),
+('MMR','Kachin',1.4),
+('NAM','San',1.9),
+('NPL','Hindi',3.0),
+('NGA','Edo',3.3),
+('PAK','Hindko',2.4),
+('SLE','Kuranko',3.4),
+('SDN','Bari',2.5),
+('TZA','Chaga and Pare',4.9),
+('DNK','Norwegian',0.3),
+('TGO','Naudemba',4.1),
+('TCD','Tandjile',6.5),
+('CZE','Romani',0.3),
+('UGA','Lugbara',4.7),
+('UKR','Polish',0.1),
+('RUS','Mordva',0.5),
+('VNM','Nung',1.1),
+('USA','Tagalog',0.4),
+('AGO','Ambo',2.4),
+('AUS','German',0.6),
+('ZAF','Tsonga',4.3),
+('PHL','Pangasinan',1.8),
+('IDN','Banja',1.8),
+('IND','Kannada',3.9),
+('IRN','Arabic',2.2),
+('ITA','Romani',0.2),
+('AUT','Romanian',0.2),
+('CMR','Masana',3.9),
+('CAN','Portuguese',0.7),
+('KEN','Nyika',4.8),
+('CHN','Tujia',0.5),
+('COD','Teke',2.7),
+('LBR','Malinke',5.1),
+('MOZ','Ronga',3.7),
+('MMR','Kayah',0.4),
+('NAM','German',0.9),
+('NGA','Tiv',2.3),
+('PAK','Brahui',1.2),
+('SLE','Yalunka',3.4),
+('SDN','Fur',2.1),
+('TZA','Luguru',4.9),
+('TGO','Gurma',3.4),
+('TCD','Gorane',6.2),
+('CZE','Hungarian',0.2),
+('UGA','Gisu',4.5),
+('RUS','Kazakh',0.4),
+('VNM','Miao',0.9),
+('USA','Polish',0.3),
+('AGO','Luchazi',2.4),
+('ZAF','Swazi',2.5),
+('PHL','Maguindanao',1.4),
+('IDN','Bali',1.7),
+('IND','Malajalam',3.6),
+('IRN','Bakhtyari',1.7),
+('CAN','Punjabi',0.7),
+('KEN','Masai',1.6),
+('CHN','Mongolian',0.4),
+('COD','Boa',2.3),
+('MOZ','Marendje',3.5),
+('NGA','Ijo',1.8),
+('SDN','Chilluk',1.7),
+('TZA','Shambala',4.3),
+('UGA','Acholi',4.4),
+('RUS','Avarian',0.4),
+('VNM','Man',0.7),
+('USA','Korean',0.3),
+('ZAF','Venda',2.2),
+('PHL','Maranao',1.3),
+('IND','Orija',3.3),
+('IRN','Turkmenian',1.6),
+('CAN','Ukrainian',0.6),
+('KEN','Turkana',1.4),
+('CHN','Tibetan',0.4),
+('COD','Chokwe',1.8),
+('MOZ','Nyanja',3.3),
+('NGA','Bura',1.6),
+('SDN','Lotuko',1.5),
+('TZA','Gogo',3.9),
+('UGA','Rwanda',3.2),
+('RUS','Mari',0.4),
+('USA','Vietnamese',0.2),
+('ZAF','Ndebele',1.5),
+('IND','Punjabi',2.8),
+('CAN','Dutch',0.5),
+('CHN','Puyi',0.2),
+('TZA','Ha',3.5),
+('RUS','Udmur',0.3),
+('USA','Japanese',0.2),
+('IND','Asami',1.5),
+('CAN','Eskimo Languages',0.1),
+('CHN','Dong',0.2),
+('RUS','Belorussian',0.3),
+('USA','Portuguese',0.2);
+
+ANALYZE TABLE Country, City, CountryLanguage;
=== added file 'mysql-test/include/world_schema.inc'
--- a/mysql-test/include/world_schema.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/world_schema.inc 2009-12-22 15:12:09 +0000
@@ -0,0 +1,25 @@
+CREATE TABLE Country (
+ Code char(3) NOT NULL default '',
+ Name char(52) NOT NULL default '',
+ SurfaceArea float(10,2) NOT NULL default '0.00',
+ Population int(11) NOT NULL default '0',
+ Capital int(11) default NULL,
+ PRIMARY KEY (Code),
+ UNIQUE INDEX (Name)
+);
+CREATE TABLE City (
+ ID int(11) NOT NULL auto_increment,
+ Name char(35) NOT NULL default '',
+ Country char(3) NOT NULL default '',
+ Population int(11) NOT NULL default '0',
+ PRIMARY KEY (ID),
+ INDEX (Population),
+ INDEX (Country)
+);
+CREATE TABLE CountryLanguage (
+ Country char(3) NOT NULL default '',
+ Language char(30) NOT NULL default '',
+ Percentage float(3,1) NOT NULL default '0.0',
+ PRIMARY KEY (Country, Language),
+ INDEX (Percentage)
+);
=== added file 'mysql-test/include/world_schema1.inc'
--- a/mysql-test/include/world_schema1.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/world_schema1.inc 2009-12-22 15:12:09 +0000
@@ -0,0 +1,18 @@
+CREATE TABLE Country (
+ Code char(3) NOT NULL default '',
+ Name char(52) NOT NULL default '',
+ SurfaceArea float(10,2) NOT NULL default '0.00',
+ Population int(11) NOT NULL default '0',
+ Capital int(11) default NULL
+);
+CREATE TABLE City (
+ ID int(11) NOT NULL,
+ Name char(35) NOT NULL default '',
+ Country char(3) NOT NULL default '',
+ Population int(11) NOT NULL default '0'
+);
+CREATE TABLE CountryLanguage (
+ Country char(3) NOT NULL default '',
+ Language char(30) NOT NULL default '',
+ Percentage float(3,1) NOT NULL default '0.0'
+);
1
0

[Maria-developers] Rev 2742: - Make testcase work for both debug and release in file:///home/psergey/dev/maria-5.2-dsmrr/
by Sergey Petrunya 22 Dec '09
by Sergey Petrunya 22 Dec '09
22 Dec '09
At file:///home/psergey/dev/maria-5.2-dsmrr/
------------------------------------------------------------
revno: 2742
revision-id: psergey(a)askmonty.org-20091222144300-uzde3zs7tbg40lml
parent: psergey(a)askmonty.org-20091222124915-o7lf73nr9z66mwsb
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.2-dsmrr
timestamp: Tue 2009-12-22 17:43:00 +0300
message:
- Make testcase work for both debug and release
- Add opt_range_mrr.cc file into source repo
=== modified file 'mysql-test/r/myisam_mrr.result'
--- a/mysql-test/r/myisam_mrr.result 2009-12-22 12:33:21 +0000
+++ b/mysql-test/r/myisam_mrr.result 2009-12-22 14:43:00 +0000
@@ -394,7 +394,7 @@
# - engine_condition_pushdown does not affect ICP
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on,table_elimination=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_condition_pushdown=on
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, b int, key(a));
=== modified file 'mysql-test/t/myisam_mrr.test'
--- a/mysql-test/t/myisam_mrr.test 2009-12-22 12:33:21 +0000
+++ b/mysql-test/t/myisam_mrr.test 2009-12-22 14:43:00 +0000
@@ -103,6 +103,7 @@
# Check that optimizer_switch is present
+--replace_regex /,table_elimination=o[nf]*//
select @@optimizer_switch;
# Check if it affects ICP
=== modified file 'sql/Makefile.am'
--- a/sql/Makefile.am 2009-12-22 12:49:15 +0000
+++ b/sql/Makefile.am 2009-12-22 14:43:00 +0000
@@ -154,7 +154,7 @@
EXTRA_DIST = udf_example.c udf_example.def $(BUILT_MAINT_SRC) \
nt_servc.cc nt_servc.h \
message.mc message.h message.rc MSG00001.bin \
- CMakeLists.txt
+ CMakeLists.txt opt_range_mrr.cc
CLEANFILES = lex_hash.h sql_yacc.output link_sources
DISTCLEANFILES = $(EXTRA_PROGRAMS)
1
0

[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2780)
by knielsenīŧ knielsen-hq.org 22 Dec '09
by knielsenīŧ knielsen-hq.org 22 Dec '09
22 Dec '09
#At lp:maria
2780 knielsen(a)knielsen-hq.org 2009-12-22
Ignore new pbxt symlinks.
modified:
.bzrignore
=== modified file '.bzrignore'
--- a/.bzrignore 2009-12-03 11:34:11 +0000
+++ b/.bzrignore 2009-12-22 13:50:20 +0000
@@ -666,6 +666,9 @@ libmysqld/time.cc
libmysqld/tztime.cc
libmysqld/uniques.cc
libmysqld/unireg.cc
+libmysqld/discover_xt.cc
+libmysqld/ha_pbxt.cc
+libmysqld/myxt_xt.cc
libmysqltest/*.ds?
libmysqltest/*.vcproj
libmysqltest/mytest.c
1
0