Carries out an alter table operation. More...
#include <OperationAlterTable.h>
Public Member Functions | |
OperationAlterTable (ContextPtr &context, const MetaLog::EntityHeader &header_) | |
Constructor for constructing object from MetaLog entry. More... | |
OperationAlterTable (ContextPtr &context, EventPtr &event) | |
Constructor for constructing object from AsyncComm event Decodes m_params from message payload and then initializes the dependency graph state as follows: More... | |
virtual | ~OperationAlterTable () |
Destructor. More... | |
void | execute () override |
Carries out the alter table operation. More... | |
const String | name () override |
Returns name of operation ("OperationAlterTable") More... | |
const String | label () override |
Returns descriptive label for operation. More... | |
void | display_state (std::ostream &os) override |
Writes human readable representation of object to output stream. More... | |
uint8_t | encoding_version_state () const override |
Returns encoding version. More... | |
size_t | encoded_length_state () const override |
Returns serialized state length. More... | |
void | encode_state (uint8_t **bufp) const override |
Writes serialized encoding of object state. More... | |
void | decode_state (uint8_t version, const uint8_t **bufp, size_t *remainp) override |
Reads serialized encoding of object state. More... | |
void | decode_state_old (uint8_t version, const uint8_t **bufp, size_t *remainp) override |
Public Member Functions inherited from Hypertable::Operation | |
Operation (ContextPtr &context, int32_t type) | |
Constructor with operation type specifier. More... | |
Operation (ContextPtr &context, EventPtr &event, int32_t type) | |
Constructor with request Event and operation type specifier. More... | |
Operation (ContextPtr &context, const MetaLog::EntityHeader &header_) | |
Constructor with MetaLog::EntityHeader. More... | |
virtual | ~Operation () |
Destructor. More... | |
virtual const String | graphviz_label () |
Human readable operation label used in graphviz output. More... | |
virtual bool | exclusive () |
Indicates if operation is exclusive. More... | |
virtual size_t | encoded_result_length () const |
Length of encoded operation result. More... | |
virtual void | encode_result (uint8_t **bufp) const |
Encode operation result. More... | |
virtual void | decode_result (const uint8_t **bufp, size_t *remainp) |
Decode operation result. More... | |
void | decode (const uint8_t **bufp, size_t *remainp, uint16_t definition_version) override |
Decode operation. More... | |
void | display (std::ostream &os) override |
Write human readable string represenation of operation to output stream. More... | |
int64_t | id () |
Operation identifier. More... | |
ClockT::time_point | expiration_time () |
Returns operation expiration time. More... | |
void | set_remove_approval_mask (uint16_t mask) |
Sets the remove approvals bit mask. More... | |
uint16_t | get_remove_approval_mask () |
Gets the remove approvals bit mask. More... | |
bool | remove_approval_add (uint16_t approval) |
Sets remove approval bits. More... | |
bool | removal_approved () |
Checks if all remove approvals have been received. More... | |
void | record_state (std::vector< MetaLog::EntityPtr > &additional) |
Records operation state and additional entities to the MML. More... | |
void | record_state () |
Records operation state to the MML. More... | |
void | complete_error (int error, const String &msg, std::vector< MetaLog::EntityPtr > &additional) |
Completes operation with error. More... | |
void | complete_error (int error, const String &msg, MetaLog::EntityPtr additional=MetaLog::EntityPtr()) |
Completes operation with error. More... | |
void | complete_error (Exception &e, std::vector< MetaLog::EntityPtr > &additional) |
Completes operation with exception. More... | |
void | complete_error (Exception &e, MetaLog::EntityPtr additional=MetaLog::EntityPtr()) |
Completes operation with exception. More... | |
void | complete_ok (std::vector< MetaLog::EntityPtr > &additional) |
void | complete_ok (MetaLog::EntityPtr additional=MetaLog::EntityPtr()) |
virtual int64_t | hash_code () const |
virtual void | exclusivities (DependencySet &exclusivities) |
virtual void | dependencies (DependencySet &dependencies) |
virtual void | obstructions (DependencySet &obstructions) |
void | add_exclusivity (const String &exclusivity) |
void | add_dependency (const String &dependency) |
void | add_obstruction (const String &obstruction) |
void | add_obstruction_permanent (const String &obstruction) |
void | fetch_sub_operations (std::vector< std::shared_ptr< Operation > > &sub_ops) |
void | pre_run () |
void | post_run () |
int32_t | get_state () |
void | set_state (int32_t state) |
virtual bool | is_perpetual () |
bool | block () |
bool | unblock () |
bool | is_blocked () |
bool | is_complete () |
int32_t | get_original_type () |
void | set_original_type (int32_t original_type) |
void | set_ephemeral () |
Sets the ephemeral flag to true. More... | |
bool | ephemeral () |
Gets the ephemeral flag. More... | |
int32_t | get_error () |
Get error code. More... | |
String | get_error_msg () |
Get error message. More... | |
Public Member Functions inherited from Hypertable::MetaLog::Entity | |
Entity (int32_t type) | |
Constructor from entity type. More... | |
Entity (const EntityHeader &header_) | |
Constructor from entity header. More... | |
virtual | ~Entity () |
Destructor. More... | |
void | lock () |
Locks the entity's mutex. More... | |
void | unlock () |
Unlocks the entity's mutex. More... | |
void | mark_for_removal () |
Marks entity for removal. More... | |
bool | marked_for_removal () |
Checks if entity is marked for removal. More... | |
int64_t | id () const |
Returns the entity ID. More... | |
Public Member Functions inherited from Hypertable::Serializable | |
virtual size_t | encoded_length () const |
Returns serialized object length. More... | |
virtual void | encode (uint8_t **bufp) const |
Writes serialized representation of object to a buffer. More... | |
virtual void | decode (const uint8_t **bufp, size_t *remainp) |
Reads serialized representation of object from a buffer. More... | |
Private Member Functions | |
bool | get_schemas (SchemaPtr &original_schema, SchemaPtr &alter_schema) |
Gets schema objects. More... | |
TableParts | get_drop_index_parts (SchemaPtr &original_schema, SchemaPtr &alter_schema) |
Determines which index tables to drop. More... | |
TableParts | get_create_index_parts (SchemaPtr &original_schema, SchemaPtr &alter_schema) |
Determines which index tables to create. More... | |
Private Attributes | |
Lib::Master::Request::Parameters::AlterTable | m_params |
Request parmaeters. More... | |
String | m_schema |
Schema for the table More... | |
String | m_id |
Table identifier More... | |
StringSet | m_servers |
Set of participating range servers. More... | |
StringSet | m_completed |
Set of range servers that have completed operation. More... | |
TableParts | m_parts |
Index tables to be created or dropped. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Hypertable::Operation | |
uint8_t | encoding_version () const override |
Returns encoding version. More... | |
size_t | encoded_length_internal () const override |
Returns internal serialized length. More... | |
void | encode_internal (uint8_t **bufp) const override |
Writes serialized representation of object to a buffer. More... | |
void | decode_internal (uint8_t version, const uint8_t **bufp, size_t *remainp) override |
Reads serialized representation of object from a buffer. More... | |
void | decode_old (const uint8_t **bufp, size_t *remainp, uint16_t definition_version) |
bool | validate_subops () |
Handles the results of sub operations. More... | |
void | stage_subop (std::shared_ptr< Operation > operation) |
Stages a sub operation for execution. More... | |
Protected Member Functions inherited from Hypertable::MetaLog::Entity | |
void | encode_entry (uint8_t **bufp) |
Encodes entity header plus serialized state. More... | |
Protected Attributes inherited from Hypertable::Operation | |
ContextPtr | m_context |
Pointer to Master context. More... | |
EventPtr | m_event |
Pointer to client event (if any) that originated the operation. More... | |
uint16_t | m_remove_approvals {} |
Remove approvals received. More... | |
uint16_t | m_remove_approval_mask {} |
Remove approval mask. More... | |
int32_t | m_original_type {} |
Original entity type read from MML (prior to conversion) More... | |
int32_t | m_error {} |
Result error code. More... | |
String | m_error_msg |
Result error message. More... | |
bool | m_unblock_on_exit {} |
Flag to signal operation to be unblocked on exit (post_run()) More... | |
bool | m_blocked {} |
Flag indicating if operation is blocked. More... | |
bool | m_ephemeral {} |
Indicates if operation is ephemeral and does not get persisted to MML. More... | |
ClockT::time_point | m_expiration_time |
Expiration time (used by ResponseManager) More... | |
int64_t | m_hash_code |
Hash code uniqely identifying operation. More... | |
DependencySet | m_exclusivities |
Set of exclusivities. More... | |
DependencySet | m_dependencies |
Set of dependencies. More... | |
DependencySet | m_obstructions |
Set of obstructions. More... | |
DependencySet | m_obstructions_permanent |
Set of permanent obstructions. More... | |
std::vector< int64_t > | m_sub_ops |
Vector of sub operations IDs. More... | |
Protected Attributes inherited from Hypertable::MetaLog::Entity | |
std::mutex | m_mutex |
Mutex for serializing access to members More... | |
EntityHeader | header |
Entity header More... | |
Carries out an alter table operation.
Definition at line 42 of file OperationAlterTable.h.
OperationAlterTable::OperationAlterTable | ( | ContextPtr & | context, |
const MetaLog::EntityHeader & | header_ | ||
) |
Constructor for constructing object from MetaLog entry.
context | Master context |
header_ | MetaLog header |
Definition at line 57 of file OperationAlterTable.cc.
OperationAlterTable::OperationAlterTable | ( | ContextPtr & | context, |
EventPtr & | event | ||
) |
Constructor for constructing object from AsyncComm event Decodes m_params from message payload and then initializes the dependency graph state as follows:
context | Master context |
event | Event received from AsyncComm from client request |
Definition at line 62 of file OperationAlterTable.cc.
|
inlinevirtual |
Destructor.
Definition at line 62 of file OperationAlterTable.h.
|
overridevirtual |
Reads serialized encoding of object state.
This method restores the state of the object by decoding a serialized representation of the state from the memory location pointed to by *bufp
. See encode() for a description of the serialized format.
version | Encoding version |
bufp | Address of source buffer pointer (advanced by call) |
remainp | Amount of remaining buffer pointed to by *bufp (decremented by call) |
Implements Hypertable::Operation.
Definition at line 420 of file OperationAlterTable.cc.
|
overridevirtual |
Implements Hypertable::Operation.
Definition at line 433 of file OperationAlterTable.cc.
|
overridevirtual |
Writes human readable representation of object to output stream.
os | Output stream |
Implements Hypertable::Operation.
Definition at line 385 of file OperationAlterTable.cc.
|
overridevirtual |
Writes serialized encoding of object state.
This method writes a serialized encoding of object state to the memory location pointed to by *bufp
. The encoding has the following format:
Encoding | Description |
---|---|
vstr | Pathname of table to compact |
vstr | New table schema |
vstr | Table identifier |
i32 | Size of m_completed |
vstr | Foreach server in m_completed, server name |
i32 | [VERSION 2] Size of m_servers |
vstr | [VERSION 2] Foreach server in m_servers, server name |
TableParts | [VERSION 3] Index tables to be created or dropped |
bufp | Address of destination buffer pointer (advanced by call) |
Implements Hypertable::Operation.
Definition at line 407 of file OperationAlterTable.cc.
|
overridevirtual |
Returns serialized state length.
This method returns the length of the serialized representation of the object state. See encode() for a description of the serialized format.
Implements Hypertable::Operation.
Definition at line 393 of file OperationAlterTable.cc.
|
overridevirtual |
Returns encoding version.
Implements Hypertable::Operation.
Definition at line 389 of file OperationAlterTable.cc.
|
overridevirtual |
Carries out the alter table operation.
This method carries out the operation via the following states:
State | Description |
---|---|
INITIAL |
|
VALIDATE_SCHEMA |
|
CREATE_INDICES |
|
SCAN_METADATA |
|
ISSUE_REQUESTS |
|
UPDATE_HYPERSPACE |
|
SUSPEND_TABLE_MAINTENANCE |
|
DROP_INDICES |
|
RESUME_TABLE_MAINTENANCE |
|
FINALIZE |
|
Implements Hypertable::Operation.
Definition at line 199 of file OperationAlterTable.cc.
|
private |
Determines which index tables to create.
Determines if either the value or qualifier index table was not required in original_schema
but is required in alter_schema
. Each index type, for which this is the case, is marked in a TableParts object that is returned.
original_schema | Original schema |
alter_schema | New altered schema |
Definition at line 495 of file OperationAlterTable.cc.
|
private |
Determines which index tables to drop.
Determines if either the value or qualifier index table was required in original_schema
but not in alter_schema
. Each index type, for which this is the case, is marked in a TableParts object that is returned.
original_schema | Original schema |
alter_schema | New altered schema |
Definition at line 483 of file OperationAlterTable.cc.
|
private |
Gets schema objects.
If either original_schema
and alter_schema
are are set to nullptr, this member function constructs and returns original schema object and alter schema object. The original schema is constructed from XML read from Hyperspace and the alter schema is constructed from m_schema. If any errors are encountered, the operation is terminated with a call to complete_error() and false is returned.
original_schema | Reference to original schema |
alter_schema | Reference to alter schema |
Definition at line 465 of file OperationAlterTable.cc.
|
overridevirtual |
Returns descriptive label for operation.
Implements Hypertable::Operation.
Definition at line 461 of file OperationAlterTable.cc.
|
overridevirtual |
Returns name of operation ("OperationAlterTable")
Implements Hypertable::Operation.
Definition at line 457 of file OperationAlterTable.cc.
|
private |
Set of range servers that have completed operation.
Definition at line 180 of file OperationAlterTable.h.
|
private |
Table identifier
Definition at line 174 of file OperationAlterTable.h.
|
private |
Request parmaeters.
Definition at line 168 of file OperationAlterTable.h.
|
private |
Index tables to be created or dropped.
Definition at line 183 of file OperationAlterTable.h.
|
private |
Schema for the table
Definition at line 171 of file OperationAlterTable.h.
|
private |
Set of participating range servers.
Definition at line 177 of file OperationAlterTable.h.