Commit f5a215f0 authored by Matthias Körber's avatar Matthias Körber Committed by Commit Bot

Removed unused methods from |SqlTableBuilder|.

Change-Id: I652434b5c5d39461bb8226f59eae0c1ac3bea439
Bug: 875768
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1824468
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Reviewed-by: default avatarVadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700178}
parent 1c0ac8a9
......@@ -172,47 +172,6 @@ void SQLTableBuilder::AddIndex(std::string name,
kInvalidVersion});
}
void SQLTableBuilder::RenameIndex(const std::string& old_name,
const std::string& new_name) {
auto old_index = FindLastIndexByName(old_name);
// Check that there is an index with the old name.
DCHECK(old_index != indices_.rend());
if (old_name == new_name) // The easy case.
return;
// Check that there is no index with the new name.
DCHECK(FindLastIndexByName(new_name) == indices_.rend());
// Check that there is at least one sealed version.
DCHECK_NE(sealed_version_, kInvalidVersion);
// Check that the old index has been added before the last version was sealed.
DCHECK_LE(old_index->min_version, sealed_version_);
// Check that the old index has not been renamed or deleted yet.
DCHECK_EQ(old_index->max_version, kInvalidVersion);
// This index exists in the last sealed version. Therefore it cannot be
// just replaced, it needs to be kept for generating the migration code.
old_index->max_version = sealed_version_;
// Add the new index.
indices_.push_back(
{new_name, old_index->columns, sealed_version_ + 1, kInvalidVersion});
}
void SQLTableBuilder::DropIndex(const std::string& name) {
auto index = FindLastIndexByName(name);
// Check that an index with the name exists.
DCHECK(index != indices_.rend());
// Check that this index exists in the last sealed version and hasn't been
// renamed or deleted yet.
// Check that there is at least one sealed version.
DCHECK_NE(sealed_version_, kInvalidVersion);
// Check that the index has been added before the last version was sealed.
DCHECK_LE(index->min_version, sealed_version_);
// Check that the index has not been renamed or deleted yet.
DCHECK_EQ(index->max_version, kInvalidVersion);
// This index exists in the last sealed version. Therefore it cannot be
// just deleted, it needs to be kept for generating the migration code.
index->max_version = sealed_version_;
}
std::string SQLTableBuilder::ComputeConstraints(unsigned version) const {
std::string primary_key;
std::string unique_key;
......@@ -331,18 +290,6 @@ std::vector<base::StringPiece> SQLTableBuilder::AllPrimaryKeyNames() const {
return result;
}
std::vector<base::StringPiece> SQLTableBuilder::AllIndexNames() const {
DCHECK(IsVersionLastAndSealed(sealed_version_));
std::vector<base::StringPiece> result;
result.reserve(indices_.size());
for (const Index& index : indices_) {
if (IsIndexInLastVersion(index)) {
result.emplace_back(index.name);
}
}
return result;
}
size_t SQLTableBuilder::NumberOfColumns() const {
DCHECK(IsVersionLastAndSealed(sealed_version_));
return base::checked_cast<size_t>(std::count_if(
......@@ -350,13 +297,6 @@ size_t SQLTableBuilder::NumberOfColumns() const {
[this](const Column& column) { return IsColumnInLastVersion(column); }));
}
size_t SQLTableBuilder::NumberOfIndices() const {
DCHECK(IsVersionLastAndSealed(sealed_version_));
return base::checked_cast<size_t>(std::count_if(
indices_.begin(), indices_.end(),
[this](const Index& index) { return IsIndexInLastVersion(index); }));
}
bool SQLTableBuilder::MigrateToNextFrom(unsigned old_version,
sql::Database* db) const {
DCHECK_LT(old_version, sealed_version_);
......
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Copyright 2016 The Chromium Authors. All rights reserved. Use of this source
// code is governed by a BSD-style license that can be found in the LICENSE
// file.
#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_SQL_TABLE_BUILDER_H_
#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_SQL_TABLE_BUILDER_H_
......@@ -76,15 +76,6 @@ class SQLTableBuilder {
// referenced in |columns| must be unique and exist in the current version.
void AddIndex(std::string name, std::vector<std::string> columns);
// Renames index |old_name| to |new_name|. |new_name| can not exist already
// and |old_name| must have been added in a previously sealed version, and can
// not have been renamed already.
void RenameIndex(const std::string& old_name, const std::string& new_name);
// Removes index |name|. |name| must have been added in a previously sealed
// version.
void DropIndex(const std::string& name);
// Increments the internal version counter and marks the current state of the
// table as that version. Returns the sealed version. Calling any of the
// *Column* and *Index* methods above will result in starting a new version
......@@ -121,18 +112,10 @@ class SQLTableBuilder {
// version. The last version must be sealed.
std::vector<base::StringPiece> AllPrimaryKeyNames() const;
// Returns a vector of all index names that are present in the last
// version. The last version must be sealed.
std::vector<base::StringPiece> AllIndexNames() const;
// Returns the number of all columns present in the last version. The last
// version must be sealed.
size_t NumberOfColumns() const;
// Returns the number of all indices present in the last version. The last
// version must be sealed.
size_t NumberOfIndices() const;
private:
// Stores the information about one column (name, type, etc.).
struct Column;
......
......@@ -131,22 +131,6 @@ TEST_F(SQLTableBuilderTest, RenameColumn_InNextVersion) {
EXPECT_TRUE(IsColumnOfType("password_value", "BLOB"));
}
// There is no test for renaming an index in the same version, as this is a
// misuse of the API. Instead of invoking |builder()->AddIndex("foo", ...)| and
// |builder->RenameIndex("foo", "bar")| callers should simply use
// |builder->AddIndex("bar", ...)|.
TEST_F(SQLTableBuilderTest, RenameIndex_InNextVersion) {
builder()->AddIndex("old_index", {"signon_realm"});
EXPECT_EQ(0u, builder()->SealVersion());
builder()->RenameIndex("old_index", "new_index");
EXPECT_EQ(1u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
EXPECT_TRUE(db()->DoesTableExist("my_logins_table"));
EXPECT_FALSE(db()->DoesIndexExist("old_index"));
EXPECT_TRUE(db()->DoesIndexExist("new_index"));
}
TEST_F(SQLTableBuilderTest, RenameColumn_SameNameInSameVersion) {
builder()->AddColumn("name", "BLOB");
builder()->RenameColumn("name", "name");
......@@ -168,16 +152,6 @@ TEST_F(SQLTableBuilderTest, RenameColumn_SameNameInNextVersion) {
EXPECT_TRUE(IsColumnOfType("name", "BLOB"));
}
TEST_F(SQLTableBuilderTest, RenameIndex_SameNameInNextVersion) {
builder()->AddIndex("my_index", {"signon_realm"});
EXPECT_EQ(0u, builder()->SealVersion());
builder()->RenameIndex("my_index", "my_index");
EXPECT_EQ(1u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
EXPECT_TRUE(db()->DoesTableExist("my_logins_table"));
EXPECT_TRUE(db()->DoesIndexExist("my_index"));
}
TEST_F(SQLTableBuilderTest, DropColumn_InSameVersion) {
builder()->AddColumn("password_value", "BLOB");
builder()->DropColumn("password_value");
......@@ -197,29 +171,17 @@ TEST_F(SQLTableBuilderTest, DropColumn_InNextVersion) {
EXPECT_FALSE(db()->DoesColumnExist("my_logins_table", "password_value"));
}
TEST_F(SQLTableBuilderTest, DropIndex_InNextVersion) {
builder()->AddIndex("my_index", {"signon_realm"});
EXPECT_EQ(0u, builder()->SealVersion());
builder()->DropIndex("my_index");
EXPECT_EQ(1u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
EXPECT_TRUE(db()->DoesTableExist("my_logins_table"));
EXPECT_FALSE(db()->DoesIndexExist("my_index"));
}
TEST_F(SQLTableBuilderTest, MigrateFrom) {
// First, create a table at version 0, with some columns.
builder()->AddColumn("for_renaming", "INTEGER DEFAULT 100");
builder()->AddColumn("for_deletion", "INTEGER");
builder()->AddIndex("my_signon_index", {"signon_realm"});
builder()->AddIndex("my_changing_index_v0", {"for_renaming", "for_deletion"});
EXPECT_EQ(0u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
EXPECT_TRUE(db()->DoesTableExist("my_logins_table"));
EXPECT_TRUE(db()->DoesColumnExist("my_logins_table", "for_renaming"));
EXPECT_TRUE(db()->DoesColumnExist("my_logins_table", "for_deletion"));
EXPECT_TRUE(db()->DoesIndexExist("my_signon_index"));
EXPECT_TRUE(db()->DoesIndexExist("my_changing_index_v0"));
EXPECT_TRUE(
db()->Execute("INSERT INTO my_logins_table (signon_realm, for_renaming, "
"for_deletion) VALUES ('abc', 123, 456)"));
......@@ -235,7 +197,6 @@ TEST_F(SQLTableBuilderTest, MigrateFrom) {
EXPECT_TRUE(first_check.Succeeded());
// Now, specify some modifications for version 1.
builder()->DropIndex("my_changing_index_v0");
builder()->RenameColumn("for_renaming", "renamed");
builder()->DropColumn("for_deletion");
builder()->AddColumn("new_column", "INTEGER DEFAULT 789");
......@@ -255,7 +216,6 @@ TEST_F(SQLTableBuilderTest, MigrateFrom) {
EXPECT_TRUE(IsColumnOfType("renamed", "INTEGER"));
EXPECT_TRUE(db()->DoesColumnExist("my_logins_table", "new_column"));
EXPECT_TRUE(db()->DoesIndexExist("my_signon_index"));
EXPECT_FALSE(db()->DoesIndexExist("my_changing_index_v0"));
EXPECT_TRUE(db()->DoesIndexExist("my_changing_index_v1"));
sql::Statement second_check(
db()->GetCachedStatement(SQL_FROM_HERE, retrieval));
......@@ -297,27 +257,6 @@ TEST_F(SQLTableBuilderTest, MigrateFrom_RenameAndAddColumns) {
EXPECT_THAT(builder()->AllPrimaryKeyNames(), UnorderedElementsAre("id"));
}
TEST_F(SQLTableBuilderTest, MigrateFrom_RenameAndAddIndices) {
builder()->AddIndex("old_name", {"signon_realm"});
EXPECT_EQ(0u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
builder()->RenameIndex("old_name", "new_name");
EXPECT_EQ(1u, builder()->SealVersion());
builder()->AddIndex("added", {"signon_realm"});
EXPECT_EQ(2u, builder()->SealVersion());
EXPECT_TRUE(builder()->MigrateFrom(0, db()));
EXPECT_FALSE(db()->DoesIndexExist("old_name"));
EXPECT_TRUE(db()->DoesIndexExist("added"));
EXPECT_TRUE(db()->DoesIndexExist("new_name"));
EXPECT_EQ(2u, builder()->NumberOfIndices());
EXPECT_THAT(builder()->AllIndexNames(),
UnorderedElementsAre("new_name", "added"));
}
TEST_F(SQLTableBuilderTest, MigrateFrom_RenameAndAddAndDropColumns) {
builder()->AddColumnToPrimaryKey("pk_1", "VARCHAR NOT NULL");
builder()->AddColumnToPrimaryKey("pk_2", "VARCHAR NOT NULL");
......@@ -354,29 +293,6 @@ TEST_F(SQLTableBuilderTest, MigrateFrom_RenameAndAddAndDropColumns) {
UnorderedElementsAre("pk_1", "pk_2"));
}
TEST_F(SQLTableBuilderTest, MigrateFrom_RenameAndAddAndDropIndices) {
builder()->AddIndex("old_name", {"signon_realm"});
EXPECT_EQ(0u, builder()->SealVersion());
EXPECT_TRUE(builder()->CreateTable(db()));
builder()->RenameIndex("old_name", "new_name");
EXPECT_EQ(1u, builder()->SealVersion());
builder()->AddIndex("added", {"signon_realm"});
EXPECT_EQ(2u, builder()->SealVersion());
builder()->DropIndex("added");
EXPECT_EQ(3u, builder()->SealVersion());
EXPECT_TRUE(builder()->MigrateFrom(0, db()));
EXPECT_FALSE(db()->DoesIndexExist("old_name"));
EXPECT_FALSE(db()->DoesIndexExist("added"));
EXPECT_TRUE(db()->DoesIndexExist("new_name"));
EXPECT_EQ(1u, builder()->NumberOfColumns());
EXPECT_THAT(builder()->AllIndexNames(), UnorderedElementsAre("new_name"));
}
TEST_F(SQLTableBuilderTest, MigrateFrom_AddPrimaryKey) {
builder()->AddColumnToUniqueKey("uni", "VARCHAR NOT NULL");
EXPECT_EQ(0u, builder()->SealVersion());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment