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;
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)
{

View File

@ -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)