Returned support of (ignored) negative region ids or parent region ids in regions embedded dictionaries [#MTRSADMIN-2425].

This commit is contained in:
Alexey Milovidov 2016-11-01 15:57:58 +03:00
parent ecf2f6b6ab
commit bdde1b05cc
2 changed files with 15 additions and 10 deletions

View File

@ -102,14 +102,14 @@ public:
RegionID max_region_id = 0; RegionID max_region_id = 0;
while (!in.eof()) while (!in.eof())
{ {
RegionID region_id = 0; Int32 read_region_id = 0;
RegionID parent_id = 0; Int32 read_parent_id = 0;
RegionType type = 0; RegionType type = 0;
RegionPopulation population = 0; RegionPopulation population = 0;
DB::readIntText(region_id, in); DB::readIntText(read_region_id, in);
DB::assertChar('\t', in); DB::assertChar('\t', in);
DB::readIntText(parent_id, in); DB::readIntText(read_parent_id, in);
DB::assertChar('\t', in); DB::assertChar('\t', in);
DB::readIntText(type, in); DB::readIntText(type, in);
@ -127,11 +127,14 @@ public:
} }
DB::assertChar('\n', in); DB::assertChar('\n', in);
if (region_id <= 0) if (read_region_id <= 0)
continue; continue;
if (parent_id < 0) RegionID region_id = read_region_id;
parent_id = 0; RegionID parent_id = 0;
if (read_parent_id >= 0)
parent_id = read_parent_id;
if (region_id > max_region_id) if (region_id > max_region_id)
{ {

View File

@ -116,17 +116,19 @@ public:
while (!in.eof()) while (!in.eof())
{ {
RegionID region_id; Int32 read_region_id;
std::string region_name; std::string region_name;
DB::readIntText(region_id, in); DB::readIntText(read_region_id, in);
DB::assertChar('\t', in); DB::assertChar('\t', in);
DB::readString(region_name, in); DB::readString(region_name, in);
DB::assertChar('\n', in); DB::assertChar('\n', in);
if (region_id <= 0) if (read_region_id <= 0)
continue; continue;
RegionID region_id = read_region_id;
size_t old_size = new_chars.size(); size_t old_size = new_chars.size();
if (new_chars.capacity() < old_size + region_name.length() + 1) if (new_chars.capacity() < old_size + region_name.length() + 1)