1. The problem
Incorrect use of the term key
was noted by a reviewer of the ticket:
The current implementation of the code is referring to columns representing so-called "object identifiers" as the keys
rather than the columns
. Examples:
// File: core/modules/replica/ConfigDatabase.h /** * Class DatabaseInfo encapsulates various parameters describing databases. */ class DatabaseInfo { public: ... std::map<std::string, // The table name (partitioned tables only!). std::string> directorTableKey; // The name of the table's key representing object identifiers. // NOTES: (1) In the "dependent" tables the key represents the FK // associated with the corresponding PK of the "director" table. // (2) The key is allowed to be empty for the "dependent" tables // that don't have any objectId-based association with // the "director" table.
The very same problem exists in many other locations, including in the schema of the JSON configurations required by the REST server of the Master Replication Controller.