fix #8131 - chinese translations
[Pman.Core] / mysql / core_cities_merge.sql
1
2 -- -- not sure if this is used anywhere...
3 -- 
4 -- 
5 -- DROP FUNCTION IF EXISTS core_cities_merge_country;
6 -- DELIMITER $$
7 -- CREATE FUNCTION core_cities_merge_country()  RETURNS INT DETERMINISTIC
8 --     BEGIN
9 --         DECLARE co_done INT DEFAULT FALSE;
10 -- 
11 --         DECLARE v_count INT DEFAULT 0;
12 --         DECLARE v_total INT DEFAULT 0;
13 -- 
14 --         DECLARE v_id INT DEFAULT 0;
15 --         DECLARE v_iso TEXT DEFAULT '';
16 --         DECLARE v_local_name TEXT DEFAULT '';
17 -- --         DECLARE v_type TEXT DEFAULT '';
18 --         DECLARE v_in_location INT DEFAULT 0;
19 --         DECLARE v_geo_lat INT DEFAULT 0;
20 --         DECLARE v_geo_lng INT DEFAULT 0;
21 -- 
22 --         DECLARE v_id_tmp INT DEFAULT 0;
23 --         DECLARE v_iso_tmp TEXT DEFAULT '';
24 --         DECLARE v_local_name_tmp TEXT DEFAULT '';
25 --         DECLARE v_type_tmp TEXT DEFAULT '';
26 --         DECLARE v_in_location_tmp INT DEFAULT 0;
27 -- 
28 --         DECLARE v_id_tmp_tmp INT DEFAULT 0;
29 -- 
30 --         DECLARE co_csr CURSOR FOR 
31 --         SELECT 
32 --             id,iso,local_name,in_location
33 --         FROM 
34 --             meta_location
35 --         WHERE
36 --             type = 'CO';
37 --         
38 --         SELECT COUNT(id) INTO v_total FROM meta_location WHERE type = 'CO';
39 -- 
40 --         SET v_count = 0;
41 -- 
42 --         OPEN co_csr;
43 --         
44 --         co_loop: LOOP
45 --             FETCH co_csr INTO v_id,v_iso,v_local_name,v_in_location;
46 --             
47 --             SET v_count = v_count + 1;
48 -- 
49 --             SET v_id_tmp = 0;
50 -- 
51 --             SELECT id INTO v_id_tmp FROM core_geoip_country WHERE code = v_iso;
52 -- 
53 --             IF(v_id_tmp = 0) THEN
54 --                 INSERT INTO core_geoip_country (code, name, continent_id) VALUES (v_iso, v_local_name, 0);
55 --             END IF;
56 --                 
57 --             IF v_count = v_total THEN
58 --               LEAVE co_loop;
59 --             END IF;
60 -- 
61 --         END LOOP;
62 --         CLOSE co_csr;
63 -- 
64 -- 
65 --         RETURN v_count;
66 --     END $$
67 -- DELIMITER ; 
68 -- 
69 -- 
70 -- 
71 -- 
72 -- DROP FUNCTION IF EXISTS core_cities_merge_division;
73 -- DELIMITER $$
74 -- CREATE FUNCTION core_cities_merge_division()  RETURNS INT DETERMINISTIC
75 --     BEGIN
76 --         DECLARE re_done INT DEFAULT FALSE;
77 --         
78 --         DECLARE v_count INT DEFAULT 0;
79 --         DECLARE v_total INT DEFAULT 0;
80 -- 
81 --         DECLARE v_id INT DEFAULT 0;
82 --         DECLARE v_iso TEXT DEFAULT '';
83 --         DECLARE v_local_name TEXT DEFAULT '';
84 -- --         DECLARE v_type TEXT DEFAULT '';
85 --         DECLARE v_in_location INT DEFAULT 0;
86 --         DECLARE v_geo_lat INT DEFAULT 0;
87 --         DECLARE v_geo_lng INT DEFAULT 0;
88 -- 
89 --         DECLARE v_country_id INT DEFAULT 0;
90 --         DECLARE v_iso_tmp TEXT DEFAULT '';
91 -- 
92 --         DECLARE v_division_id INT DEFAULT 0;
93 -- 
94 --         DECLARE re_csr CURSOR FOR 
95 --         SELECT 
96 --             id,iso,local_name,in_location
97 --         FROM 
98 --             meta_location
99 --         WHERE
100 --             type = 'RE';
101 --         
102 --         SELECT COUNT(id) INTO v_total FROM meta_location WHERE type = 'RE';
103 -- 
104 --         SET v_count = 0;
105 -- 
106 --         OPEN re_csr;
107 --         re_loop: LOOP
108 --             FETCH re_csr INTO v_id,v_iso,v_local_name,v_in_location;
109 --             
110 --             SET v_count = v_count + 1;
111 -- 
112 --             SET v_country_id = 0;
113 --             SET v_division_id = 0;
114 --             SET v_iso_tmp = '';
115 -- 
116 --             IF v_in_location IS NOT NULL THEN
117 --                 SELECT iso INTO v_iso_tmp FROM meta_location WHERE id = v_in_location;
118 -- 
119 --                 SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_iso_tmp;
120 --                 
121 --             END IF;
122 -- 
123 --             SELECT 
124 --                     id 
125 --             INTO 
126 --                     v_division_id 
127 --             FROM 
128 --                     core_geoip_division 
129 --             WHERE 
130 --                     (
131 --                             name = v_local_name 
132 --                         OR 
133 --                             (
134 --                                     name LIKE (CONCAT('%', v_local_name, '%')) 
135 --                                 AND 
136 --                                     code = SUBSTRING_INDEX(v_iso, '-', -1)
137 --                             ) 
138 --                     )
139 --                     AND country_id = v_country_id;
140 -- 
141 --             IF v_division_id = 0 THEN
142 --                 
143 --                 INSERT INTO core_geoip_division (code, name, country_id) VALUES (v_iso, v_local_name, v_country_id);
144 --             END IF;
145 -- 
146 -- --             ITERATE re_loop;
147 --                 
148 --             IF v_count = v_total THEN
149 --               LEAVE re_loop;
150 --             END IF;
151 -- 
152 --         END LOOP;
153 --         CLOSE re_csr;
154 -- 
155 --         RETURN v_count;
156 --     END $$
157 -- DELIMITER ; 
158 -- 
159 -- 
160 -- 
161 -- DROP FUNCTION IF EXISTS core_cities_merge_city;
162 -- DELIMITER $$
163 -- CREATE FUNCTION core_cities_merge_city()  RETURNS INT DETERMINISTIC
164 --     BEGIN
165 --         DECLARE ci_done INT DEFAULT FALSE;
166 -- 
167 --         DECLARE v_count INT DEFAULT 0;
168 --         DECLARE v_total INT DEFAULT 0;
169 -- 
170 --         DECLARE v_id INT DEFAULT 0;
171 --         DECLARE v_iso TEXT DEFAULT '';
172 --         DECLARE v_local_name TEXT DEFAULT '';
173 -- --         DECLARE v_type TEXT DEFAULT '';
174 --         DECLARE v_in_location INT DEFAULT 0;
175 --         DECLARE v_geo_lat INT DEFAULT 0;
176 --         DECLARE v_geo_lng INT DEFAULT 0;
177 -- 
178 --         
179 --         DECLARE v_iso_tmp TEXT DEFAULT '';
180 --         DECLARE v_iso_tmp_tmp TEXT DEFAULT '';
181 --         DECLARE v_local_name_tmp TEXT DEFAULT '';
182 --         DECLARE v_type_tmp TEXT DEFAULT '';
183 --         DECLARE v_in_location_tmp INT DEFAULT 0;
184 -- 
185 --         DECLARE v_country_id INT DEFAULT 0;
186 --         DECLARE v_division_id INT DEFAULT 0;
187 --         DECLARE v_city_id INT DEFAULT 0;
188 -- 
189 --         DECLARE ci_csr CURSOR FOR 
190 --         SELECT 
191 --             id,iso,local_name,in_location,geo_lat,geo_lng
192 --         FROM 
193 --             meta_location
194 --         WHERE
195 --             type = 'CI';
196 -- 
197 --         SELECT COUNT(id) INTO v_total FROM meta_location WHERE type = 'CI';
198 -- 
199 --         SET v_count = 0;
200 -- 
201 --         OPEN ci_csr;
202 --         ci_loop: LOOP
203 --             FETCH ci_csr INTO v_id,v_iso,v_local_name,v_in_location,v_geo_lat,v_geo_lng;
204 --             
205 --             SET v_count = v_count + 1;
206 -- 
207 --             SET v_country_id = 0;
208 --             SET v_division_id = 0;
209 --             SET v_city_id = 0;
210 -- 
211 --             SET v_iso_tmp = '';
212 --             SET v_iso_tmp_tmp = '';
213 --             SET v_local_name_tmp = '';
214 --             SET v_type_tmp = '';
215 --             SET v_in_location_tmp = 0;
216 --             
217 --             IF v_in_location IS NOT NULL THEN
218 --                 SELECT iso, local_name, type, in_location INTO v_iso_tmp, v_local_name_tmp, v_type_tmp, v_in_location_tmp FROM meta_location WHERE id = v_in_location;
219 -- 
220 --                 IF v_type_tmp = 'CO' THEN
221 --                     SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_iso_tmp;
222 --                 END IF;
223 -- 
224 --                 IF v_type_tmp = 'RE' THEN
225 --                     IF v_in_location_tmp != 0 THEN
226 -- 
227 --                         SELECT iso INTO v_iso_tmp_tmp FROM meta_location WHERE id = v_in_location_tmp;
228 -- 
229 --                         SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_iso_tmp_tmp;
230 -- 
231 --                     END IF;
232 -- 
233 --                     SELECT id INTO v_division_id FROM core_geoip_division WHERE name = v_local_name_tmp AND country_id = v_country_id;
234 -- 
235 --                 END IF;
236 -- 
237 --             END IF;
238 --             
239 -- 
240 -- 
241 --             SELECT id INTO v_city_id FROM core_geoip_city WHERE name = v_local_name AND country_id = v_country_id AND division_id = v_division_id;
242 -- 
243 --             IF(v_city_id = 0) THEN
244 --                         
245 --                 INSERT INTO core_geoip_city (name, country_id, division_id) VALUES (v_local_name, v_country_id, v_division_id);
246 --                    
247 --                 SET v_city_id = LAST_INSERT_ID();
248 -- 
249 --                 IF v_geo_lat IS NOT NULL OR v_geo_lng IS NOT NULL THEN
250 --                     
251 --                     INSERT INTO core_geoip_location (latitude, longitude, city_id) VALUES (v_geo_lat, v_geo_lng, v_city_id);
252 --                 END IF;
253 --                 
254 --             END IF;
255 -- 
256 --             IF v_count = v_total THEN
257 --               LEAVE ci_loop;
258 --             END IF;
259 -- 
260 --         END LOOP;
261 --         CLOSE ci_csr;
262 -- 
263 --         RETURN v_count;
264 --     END $$
265 -- DELIMITER ; 
266 -- 
267 -- 
268 -- --   ---------------------------------------------------------------------------------------------------------------
269 -- 
270 -- 
271 -- DROP FUNCTION IF EXISTS core_country_locations;
272 -- DELIMITER $$
273 -- CREATE FUNCTION core_country_locations()  RETURNS INT DETERMINISTIC
274 --     BEGIN
275 --         DECLARE v_count INT DEFAULT 0;
276 --         DECLARE v_total INT DEFAULT 0;
277 -- 
278 --         DECLARE v_geoname_id INT DEFAULT 0;
279 --         DECLARE v_continent_code TEXT DEFAULT '';
280 --         DECLARE v_continent_name TEXT DEFAULT '';
281 --         DECLARE v_country_iso_code TEXT DEFAULT '';
282 --         DECLARE v_country_name TEXT DEFAULT '';
283 -- 
284 --         DECLARE v_country_id INT DEFAULT 0;
285 --         DECLARE v_continent_id INT DEFAULT 0;
286 -- 
287 --         DECLARE csr CURSOR FOR 
288 --         SELECT 
289 --             geoname_id,continent_code,continent_name,country_iso_code,country_name
290 --         FROM 
291 --             country_locations;
292 --         
293 --         SELECT COUNT(geoname_id) INTO v_total FROM country_locations;
294 -- 
295 --         SET v_count = 0;
296 -- 
297 --         OPEN csr;
298 --         read_loop: LOOP
299 --             FETCH csr INTO v_geoname_id,v_continent_code,v_continent_name,v_country_iso_code,v_country_name;
300 --             
301 --             SET v_count = v_count + 1;
302 --             
303 --             SET v_country_id = 0;
304 --             SET v_continent_id = 0;
305 --             
306 --             IF (v_continent_code != '') THEN
307 --                 SELECT id INTO v_continent_id FROM core_geoip_continent WHERE code = v_continent_code;
308 -- 
309 --                 IF v_continent_id = 0 THEN
310 --                     INSERT INTO core_geoip_continent (code, name) VALUES (v_continent_code, v_continent_name);
311 --                     SET v_continent_id = LAST_INSERT_ID();
312 --                 END IF;
313 --                 
314 --             END IF;
315 -- 
316 --             IF (v_country_iso_code != '') THEN
317 --                 
318 --                 SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
319 -- 
320 --                 IF v_country_id = 0 THEN
321 --                     INSERT INTO core_geoip_country (code, name, continent_id) VALUES (v_country_iso_code, v_country_name, v_continent_id);
322 --                 END IF;
323 --                 
324 --             END IF;
325 --     
326 --             IF v_count = v_total THEN
327 --               LEAVE read_loop;
328 --             END IF;
329 -- 
330 --         END LOOP;
331 --         CLOSE csr;
332 -- 
333 -- 
334 --         RETURN v_count;
335 --     END $$
336 -- DELIMITER ; 
337 -- 
338 -- 
339 -- DROP FUNCTION IF EXISTS core_country_blocks;
340 -- DELIMITER $$
341 -- CREATE FUNCTION core_country_blocks()  RETURNS INT DETERMINISTIC
342 --     BEGIN
343 --         DECLARE v_count INT DEFAULT 0;
344 --         DECLARE v_total INT DEFAULT 0;
345 --         
346 --         DECLARE v_geoname_id INT DEFAULT 0;
347 --         DECLARE v_network_start_ip TEXT DEFAULT '';
348 --         DECLARE v_network_mask_length INT DEFAULT 0;
349 --         DECLARE v_is_anonymous_proxy INT DEFAULT 0;
350 --         DECLARE v_is_satellite_provider INT DEFAULT 0;
351 -- 
352 --         DECLARE v_country_iso_code TEXT DEFAULT '';
353 -- 
354 --         DECLARE v_country_id INT DEFAULT 0;
355 -- 
356 --         DECLARE csr CURSOR FOR 
357 --         SELECT 
358 --             network_start_ip,network_mask_length,geoname_id,is_anonymous_proxy,is_satellite_provider
359 --         FROM 
360 --             country_blocks
361 --         WHERE 
362 --                 geoname_id != 0 
363 --             AND 
364 --                 registered_country_geoname_id != 0 
365 --             AND 
366 --                 geoname_id = registered_country_geoname_id
367 --             AND
368 --                 network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
369 --         
370 --         SELECT COUNT(network_start_ip) INTO v_total FROM country_blocks
371 --                 WHERE geoname_id != 0 AND registered_country_geoname_id != 0
372 --                 AND geoname_id = registered_country_geoname_id AND network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
373 -- 
374 --         SET v_count = 0;
375 -- 
376 --         OPEN csr;
377 --         
378 --         read_loop: LOOP
379 --         
380 --             FETCH csr INTO v_network_start_ip,v_network_mask_length,v_geoname_id,v_is_anonymous_proxy,v_is_satellite_provider;
381 --             
382 --             SET v_count = v_count + 1;
383 --             
384 --             SET v_country_id = 0;
385 -- 
386 --             SELECT country_iso_code INTO v_country_iso_code FROM country_locations WHERE geoname_id = v_geoname_id;
387 -- 
388 --             IF v_country_iso_code != '' THEN
389 --                 SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
390 -- 
391 --                 IF v_country_id != 0 THEN
392 --                     INSERT INTO core_geoip_country_network_mapping (start_ip, mask_length, country_id, is_anonymous_proxy, is_satellite_provider) VALUES (SUBSTRING_INDEX(v_network_start_ip,':','-1'), POW(2, 128-v_network_mask_length),v_country_id,v_is_anonymous_proxy,v_is_satellite_provider);
393 --                 END IF;
394 -- 
395 --             END IF;
396 --             
397 --             IF v_count = v_total THEN
398 --               LEAVE read_loop;
399 --             END IF;
400 -- 
401 --         END LOOP;
402 --         CLOSE csr;
403 -- 
404 -- 
405 --         RETURN v_count;
406 --     END $$
407 -- DELIMITER ; 
408 -- 
409 -- 
410 -- 
411 -- 
412 -- 
413 -- DROP FUNCTION IF EXISTS core_city_locations;
414 -- DELIMITER $$
415 -- CREATE FUNCTION core_city_locations()  RETURNS INT DETERMINISTIC
416 --     BEGIN
417 --         DECLARE v_count INT DEFAULT 0;
418 --         DECLARE v_total INT DEFAULT 0;
419 -- 
420 --         DECLARE v_country_iso_code TEXT DEFAULT '';
421 --         DECLARE v_subdivision_iso_code TEXT DEFAULT '';
422 --         DECLARE v_subdivision_name TEXT DEFAULT '';
423 --         DECLARE v_city_name TEXT DEFAULT '';
424 --         DECLARE v_metro_code TEXT DEFAULT '';
425 --         DECLARE v_time_zone TEXT DEFAULT '';
426 -- 
427 --         DECLARE v_country_id INT DEFAULT 0;
428 --         DECLARE v_division_id INT DEFAULT 0;
429 --         DECLARE v_city_id INT DEFAULT 0;
430 -- 
431 --         DECLARE csr CURSOR FOR 
432 --         SELECT 
433 --             country_iso_code,subdivision_iso_code,subdivision_name,city_name,metro_code,time_zone
434 --         FROM 
435 --             city_locations
436 --         WHERE
437 --             subdivision_name != '' OR city_name != '';
438 --         
439 --         SELECT COUNT(geoname_id) INTO v_total FROM city_locations WHERE subdivision_name != '' OR city_name != '';;
440 -- 
441 --         SET v_count = 0;
442 -- 
443 --         OPEN csr;
444 --         read_loop: LOOP
445 --             FETCH csr INTO v_country_iso_code,v_subdivision_iso_code,v_subdivision_name,v_city_name,v_metro_code,v_time_zone;
446 --             
447 --             SET v_count = v_count + 1;
448 --             
449 --             SET v_country_id = 0;
450 --             SET v_division_id = 0;
451 --             SET v_city_id = 0;
452 --             
453 --             
454 --             IF (v_country_iso_code != '') THEN
455 --                 SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
456 --             END IF;
457 --     
458 --             IF v_subdivision_name != '' THEN
459 --                 SELECT id INTO v_division_id FROM core_geoip_division WHERE name = v_subdivision_name AND country_id = v_country_id;
460 -- 
461 --                 IF v_division_id = 0 THEN
462 --                     INSERT INTO core_geoip_division (code, name, country_id) VALUES (v_subdivision_iso_code, v_subdivision_name, v_country_id);
463 --                     SET v_division_id = LAST_INSERT_ID();
464 --                 END IF;
465 --                 
466 -- 
467 --             END IF;
468 -- 
469 --             IF v_city_name != '' THEN
470 --                 
471 --                 SELECT id INTO v_city_id FROM core_geoip_city WHERE name = v_city_name AND country_id = v_country_id AND division_id = v_division_id;
472 --                 
473 --                 IF v_city_id = 0 THEN
474 --                     INSERT INTO core_geoip_city (name, country_id, division_id, metro_code, time_zone) VALUES (v_city_name, v_country_id, v_division_id, v_metro_code, v_time_zone);
475 -- 
476 --                 END IF;
477 -- 
478 --             END IF;
479 -- 
480 --             IF v_count = v_total THEN
481 --               LEAVE read_loop;
482 --             END IF;
483 -- 
484 --         END LOOP;
485 --         CLOSE csr;
486 -- 
487 -- 
488 --         RETURN v_count;
489 --     END $$
490 -- DELIMITER ; 
491 -- 
492 -- 
493 -- 
494 -- DROP FUNCTION IF EXISTS core_city_blocks_mapping;
495 -- DELIMITER $$
496 -- CREATE FUNCTION core_city_blocks_mapping()  RETURNS INT DETERMINISTIC
497 --     BEGIN
498 --         DECLARE v_count INT DEFAULT 0;
499 --         DECLARE v_total INT DEFAULT 0;
500 --         
501 --         
502 --         DECLARE v_geoname_id INT DEFAULT 0;
503 -- 
504 --         DECLARE v_country_id INT DEFAULT 0;
505 --         DECLARE v_divison_id INT DEFAULT 0;
506 --         DECLARE v_city_id INT DEFAULT 0;
507 --         DECLARE v_mapping_id INT DEFAULT 0;
508 --         DECLARE v_country_iso_code TEXT DEFAULT '';
509 --         DECLARE v_subdivision_name TEXT DEFAULT '';
510 --         DECLARE v_city_name TEXT DEFAULT '';
511 -- 
512 --         DECLARE csr CURSOR FOR 
513 --         SELECT 
514 --             DISTINCT(geoname_id)
515 --         FROM 
516 --             city_blocks
517 --         WHERE 
518 --                 geoname_id != 0
519 --             AND
520 --                 network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
521 --         
522 --         SELECT COUNT(DISTINCT(geoname_id)) INTO v_total FROM city_blocks WHERE geoname_id != 0  AND network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
523 -- 
524 --         SET v_count = 0;
525 -- 
526 --         OPEN csr;
527 --         read_loop: LOOP
528 --             FETCH csr INTO v_geoname_id;
529 --             
530 --             SET v_count = v_count + 1;
531 --             
532 --             SET v_country_id = 0;
533 --             SET v_divison_id = 0;
534 --             SET v_city_id = 0;
535 --             SET v_mapping_id = 0;
536 -- 
537 --             SET v_country_iso_code = '';
538 --             SET v_subdivision_name = '';
539 --             SET v_city_name = '';
540 -- 
541 --             SELECT id INTO v_mapping_id FROM city_blocks_mapping WHERE geoname_id = v_geoname_id AND city_id = v_city_id;
542 --             
543 --             IF v_mapping_id = 0 THEN
544 --                 SELECT country_iso_code,subdivision_name,city_name INTO v_country_iso_code, v_subdivision_name, v_city_name FROM city_locations WHERE geoname_id = v_geoname_id;
545 -- 
546 --                 IF v_country_iso_code != '' THEN
547 --                     SELECT id INTO v_country_id FROM core_geoip_country WHERE code = v_country_iso_code;
548 --                 END IF;
549 -- 
550 --                 IF v_subdivision_name != '' THEN
551 --                     SELECT id INTO v_divison_id FROM core_geoip_division WHERE name = v_subdivision_name AND country_id = v_country_id;
552 --                 END IF;
553 -- 
554 --                 SELECT id INTO v_city_id FROM core_geoip_city WHERE name = v_city_name AND country_id = v_country_id AND division_id = v_divison_id;
555 -- 
556 --                 IF v_city_id != 0 THEN
557 --                     INSERT INTO city_blocks_mapping (geoname_id, city_id) VALUES (v_geoname_id, v_city_id);
558 --                     
559 --                 END IF;
560 -- 
561 --             END IF;
562 --             
563 --             
564 --             IF v_count = v_total THEN
565 --               LEAVE read_loop;
566 --             END IF;
567 -- 
568 --         END LOOP;
569 --         CLOSE csr;
570 -- 
571 --         RETURN v_count;
572 --     END $$
573 -- DELIMITER ; 
574 -- 
575 -- 
576 -- -- 
577 -- -- 
578 -- -- DROP FUNCTION IF EXISTS core_city_blocks;
579 -- -- DELIMITER $$
580 -- -- CREATE FUNCTION core_city_blocks()  RETURNS INT DETERMINISTIC
581 -- --     BEGIN
582 -- --         DECLARE v_count INT DEFAULT 0;
583 -- --         DECLARE v_total INT DEFAULT 0;
584 -- --         
585 -- --         DECLARE v_network_start_ip TEXT DEFAULT '';
586 -- --         DECLARE v_network_mask_length INT DEFAULT 0;
587 -- --         DECLARE v_geoname_id INT DEFAULT 0;
588 -- --         DECLARE v_latitude DECIMAL(11,8) DEFAULT 0;
589 -- --         DECLARE v_longitude DECIMAL(11,8) DEFAULT 0;
590 -- --         DECLARE v_is_anonymous_proxy INT DEFAULT 0;
591 -- --         DECLARE v_is_satellite_provider INT DEFAULT 0;
592 -- -- 
593 -- --         
594 -- --         DECLARE v_city_id INT DEFAULT 0;
595 -- --         DECLARE v_mapping_id INT DEFAULT 0;
596 -- -- 
597 -- --         DECLARE csr CURSOR FOR 
598 -- --         SELECT 
599 -- --             network_start_ip,network_mask_length,geoname_id,latitude, longitude, is_anonymous_proxy,is_satellite_provider
600 -- --         FROM 
601 -- --             city_blocks
602 -- --         WHERE 
603 -- --                 geoname_id != 0
604 -- --             AND
605 -- --                 network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
606 -- --         
607 -- --         SELECT COUNT(network_start_ip) INTO v_total FROM city_blocks WHERE geoname_id != 0  AND network_start_ip REGEXP '::ffff:[0-9]+.[0-9]+.[0-9]+.[0-9]+$';
608 -- -- 
609 -- --         SET v_count = 0;
610 -- -- 
611 -- --         OPEN csr;
612 -- --         read_loop: LOOP
613 -- --             FETCH csr INTO v_network_start_ip,v_network_mask_length,v_geoname_id,v_latitude,v_longitude,v_is_anonymous_proxy,v_is_satellite_provider;
614 -- --             
615 -- --             SET v_count = v_count + 1;
616 -- --             
617 -- --             SET v_city_id = 0;
618 -- --             SET v_mapping_id = 0;
619 -- -- 
620 -- --             SELECT id, city_id INTO v_mapping_id, v_city_id FROM city_blocks_mapping WHERE geoname_id = v_geoname_id;
621 -- -- 
622 -- --             IF v_mapping_id != 0 THEN
623 -- -- 
624 -- --                 INSERT INTO core_geoip_location (latitude, longitude, city_id) VALUES (v_latitude, v_longitude, v_city_id);
625 -- -- 
626 -- --                 INSERT INTO core_geoip_city_network_mapping (start_ip, mask_length, city_id, is_anonymous_proxy, is_satellite_provider) VALUES (SUBSTRING_INDEX(v_network_start_ip,':','-1'), POW(2, 128-v_network_mask_length),v_city_id,v_is_anonymous_proxy,v_is_satellite_provider);
627 -- --                 
628 -- --             END IF;
629 -- --             
630 -- --             IF v_count = v_total THEN
631 -- --               LEAVE read_loop;
632 -- --             END IF;
633 -- -- 
634 -- --         END LOOP;
635 -- --         CLOSE csr;
636 -- -- 
637 -- --         RETURN v_count;
638 -- --     END $$
639 -- -- DELIMITER ; 
640 --