CREATE PROCEDURE build_suggesting_languages(IN in_lang VARCHAR(2))
BEGIN
DECLARE build_done INT DEFAULT 0;
DECLARE l_town VARCHAR(60);
DECLARE l_state VARCHAR(60);
DECLARE l_country VARCHAR(60);
DECLARE l_countryCode VARCHAR(2);
DECLARE table_name VARCHAR(20);
DECLARE build_cursor CURSOR FOR SELECT town,state,country,countryCode FROM suggesting_places WHERE language = in_lang;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET build_done = 1;
SET table_name = CONCAT_WS('_', 'suggesting_places', in_lang);
SET @drop_table := CONCAT('DROP TABLE IF EXISTS ', table_name, ';');
PREPARE drop_table_sql FROM @drop_table;
EXECUTE drop_table_sql;
DEALLOCATE PREPARE drop_table_sql;
SET @create_table := CONCAT(
'CREATE TABLE ', table_name, ' ( ',
'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ',
'town VARCHAR(60) NOT NULL, ',
'state VARCHAR(60) NOT NULL, ',
'country VARCHAR(60) NOT NULL, ',
'countryCode VARCHAR(60) NOT NULL ',
') ENGINE=MyISAM DEFAULT CHARSET=utf8;'
);
PREPARE create_table_sql FROM @create_table;
EXECUTE create_table_sql;
DEALLOCATE PREPARE create_table_sql;
SET @indexing_table := CONCAT('CREATE FULLTEXT INDEX index_', table_name, ' ON ', table_name,' (town);');
PREPARE indexing_query FROM @indexing_table;
EXECUTE indexing_query;
DEALLOCATE PREPARE indexing_query;
OPEN build_cursor;
build_loop: LOOP
FETCH build_cursor INTO l_town, l_state, l_country, l_countryCode;
IF build_done = 1 THEN
LEAVE build_loop;
END IF;
SET @suggesting_table := CONCAT('INSERT INTO ', table_name, ' (town, state, country, countryCode) VALUES ("', l_town, '","', l_state, '","', l_country, '","', l_countryCode, '");');
PREPARE insert_query FROM @suggesting_table;
EXECUTE insert_query;
DEALLOCATE PREPARE insert_query;
END LOOP;
CLOSE build_cursor;
SET @optimize_table := CONCAT('OPTIMIZE TABLE ', table_name, ';');
PREPARE optimize_query FROM @optimize_table;
EXECUTE optimize_query;
DEALLOCATE PREPARE optimize_query;
END //
DELIMITER ;