diff --git a/dbms/include/DB/Dictionaries/Embedded/RegionsHierarchy.h b/dbms/include/DB/Dictionaries/Embedded/RegionsHierarchy.h index 56e7de0854d..0c3062f7ea7 100644 --- a/dbms/include/DB/Dictionaries/Embedded/RegionsHierarchy.h +++ b/dbms/include/DB/Dictionaries/Embedded/RegionsHierarchy.h @@ -102,14 +102,14 @@ public: RegionID max_region_id = 0; while (!in.eof()) { - RegionID region_id = 0; - RegionID parent_id = 0; + Int32 read_region_id = 0; + Int32 read_parent_id = 0; RegionType type = 0; RegionPopulation population = 0; - DB::readIntText(region_id, in); + DB::readIntText(read_region_id, in); DB::assertChar('\t', in); - DB::readIntText(parent_id, in); + DB::readIntText(read_parent_id, in); DB::assertChar('\t', in); DB::readIntText(type, in); @@ -127,11 +127,14 @@ public: } DB::assertChar('\n', in); - if (region_id <= 0) + if (read_region_id <= 0) continue; - if (parent_id < 0) - parent_id = 0; + RegionID region_id = read_region_id; + RegionID parent_id = 0; + + if (read_parent_id >= 0) + parent_id = read_parent_id; if (region_id > max_region_id) { diff --git a/dbms/include/DB/Dictionaries/Embedded/RegionsNames.h b/dbms/include/DB/Dictionaries/Embedded/RegionsNames.h index b56f3fbc3e5..6f02c5122cc 100644 --- a/dbms/include/DB/Dictionaries/Embedded/RegionsNames.h +++ b/dbms/include/DB/Dictionaries/Embedded/RegionsNames.h @@ -116,17 +116,19 @@ public: while (!in.eof()) { - RegionID region_id; + Int32 read_region_id; std::string region_name; - DB::readIntText(region_id, in); + DB::readIntText(read_region_id, in); DB::assertChar('\t', in); DB::readString(region_name, in); DB::assertChar('\n', in); - if (region_id <= 0) + if (read_region_id <= 0) continue; + RegionID region_id = read_region_id; + size_t old_size = new_chars.size(); if (new_chars.capacity() < old_size + region_name.length() + 1)