~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/replication.proto

  • Committer: Padraig O'Sullivan
  • Date: 2009-09-13 01:03:01 UTC
  • mto: (1126.9.2 captain-20090915-01)
  • mto: This revision was merged to the branch mainline in revision 1133.
  • Revision ID: osullivan.padraig@gmail.com-20090913010301-tcvvezipx1124acy
Added calls to the dtrace delete begin/end probes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import "table.proto";
 
2
 
 
3
package drizzled.message;
 
4
option optimize_for = SPEED;
 
5
 
 
6
/*
 
7
  Context for a transaction.
 
8
*/
 
9
message TransactionContext
 
10
{
 
11
  required int32 server_id = 1;
 
12
  required int64 transaction_id = 2;
 
13
}
 
14
 
 
15
/*
 
16
  Insert one record into a single table.
 
17
*/
 
18
message InsertRecord
 
19
{
 
20
  repeated Table.Field insert_field = 3;
 
21
  repeated bytes insert_value = 4;
 
22
}
 
23
 
 
24
/*
 
25
  Update one record in a single table.
 
26
*/
 
27
message UpdateRecord
 
28
{
 
29
  repeated Table.Field update_field = 3;
 
30
  repeated bytes before_value = 4;
 
31
  repeated bytes after_value = 5;
 
32
  repeated Table.Field where_field = 6;
 
33
  repeated bytes where_value = 7;
 
34
}
 
35
 
 
36
/*
 
37
  Deletes one record in a single table
 
38
*/
 
39
message DeleteRecord
 
40
{
 
41
  repeated Table.Field where_field = 3;
 
42
  repeated bytes where_value = 4;
 
43
}
 
44
 
 
45
/*
 
46
  A component of a transaction -- a single instruction or command
 
47
*/
 
48
message Command
 
49
{
 
50
  enum Type 
 
51
  {
 
52
    START_TRANSACTION = 0;        /* A START TRANSACTION statement */
 
53
    COMMIT = 1;                   /* A COMMIT statement */
 
54
    ROLLBACK = 2;                 /* A ROLLBACK statement */
 
55
    INSERT = 3;                   /* An insert of a single record */
 
56
    DELETE = 4;                   /* A delete of a single record */
 
57
    UPDATE = 5;                   /* An update of a single record */
 
58
    RAW_SQL = 6;                  /* A raw SQL statement */
 
59
  }
 
60
  required Type type = 1;
 
61
  required uint64 timestamp = 2;  /* A nanosecond precision timestamp */
 
62
  /* 
 
63
    Transaction Context is duplicated here so that ChangeRecords may
 
64
    be sent over the wire separately from the rest of the records in
 
65
    a transaction.
 
66
  */
 
67
  required TransactionContext transaction_context = 3;
 
68
  optional string schema = 4;     /* The schema affected */
 
69
  optional string table = 5;      /* The table affected */
 
70
 
 
71
  optional string sql = 6;  /* May contain the actual SQL supplied for the original statement */
 
72
 
 
73
  /* 
 
74
    The below implement the actual change.  Each ChangeRecord will 
 
75
    have zero or one of the below sub-messages defined. 
 
76
  */
 
77
  optional InsertRecord      insert_record = 7;
 
78
  optional DeleteRecord      delete_record = 8;
 
79
  optional UpdateRecord      update_record = 9;
 
80
}
 
81
 
 
82
message Transaction
 
83
{
 
84
  required TransactionContext transaction_context = 1;
 
85
  required uint64 start_timestamp = 2;
 
86
  required uint64 end_timestamp = 3;
 
87
  repeated Command command = 4;
 
88
}
 
89
 
 
90
/*
 
91
 * Describes a server used in replication.  This message
 
92
 * class is passed in the Publisher::registerSubscriber()
 
93
 * and Subscriber::subscribe() methods.
 
94
 */
 
95
message Server
 
96
{
 
97
  required int32 server_id = 1; /* A unique numeric identifier for this server */
 
98
  required string ip_address = 2; /* A valid IP address */
 
99
  required uint32 port = 3; /* Port that this server is listening for replication events */
 
100
  optional string name = 4; /* Optional name for the server */
 
101
}
 
102
 
 
103
/*
 
104
 * A subscriber manifest describes the state of
 
105
 * a subscriber in replication.  This message class
 
106
 * is passed in the replication API in the 
 
107
 * drizzled::plugin::Publisher's dataIsAvailable() and
 
108
 * pullData() calls.
 
109
 */
 
110
message SubscriberManifest
 
111
{
 
112
  required int32 server_id = 1; /* Only need to pass the ID...not the whole Server message */
 
113
  required uint64 last_applied_timestamp = 2; /* The timestamp of the last time this subscriber communicated with the publisher */
 
114
  required int64 last_applied_transaction_id = 3; /* The timestamp of last applied transaction or command */
 
115
}