~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to plugin/transaction_log/tests/r/transaction_log_replace.result

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-10-02 14:17:48 UTC
  • mfrom: (1.1.1 upstream)
  • mto: (2.1.17 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20101002141748-m6vbfbfjhrw1153e
Tags: 2010.09.1802-1
* New upstream release.
* Removed pid-file argument hack.
* Updated GPL-2 address to be new address.
* Directly copy in drizzledump.1 since debian doesn't have sphinx 1.0 yet.
* Link to jquery from libjs-jquery. Add it as a depend.
* Add drizzled.8 symlink to the install files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Testing REPLACE basic 
 
2
DROP TABLE IF EXISTS t1, t2;
 
3
CREATE TABLE t1(a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL, PRIMARY KEY(a), KEY b_key1 (b));
 
4
INSERT INTO t1 (b) VALUES (10),(20),(30),(40),(50),(60);
 
5
REPLACE INTO t1 VALUES (1,100),(3,300);
 
6
# check transaction_log
 
7
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG;
 
8
FILE_NAME       FILE_LENGTH     NUM_LOG_ENTRIES NUM_TRANSACTIONS        MIN_TRANSACTION_ID      MAX_TRANSACTION_ID      MIN_END_TIMESTAMP       MAX_END_TIMESTAMP       INDEX_SIZE_IN_BYTES
 
9
transaction.log 638     5       5       1       5       START_TIMESTAMP END_TIMESTAMP   INDEX_SIZE
 
10
 
 
11
Check transaction_log_entries
 
12
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_ENTRIES;
 
13
ENTRY_OFFSET    ENTRY_TYPE      ENTRY_LENGTH
 
14
0       TRANSACTION     75
 
15
75      TRANSACTION     75
 
16
150     TRANSACTION     201
 
17
351     TRANSACTION     171
 
18
522     TRANSACTION     116
 
19
 
 
20
Check transaction_log_transactions
 
21
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
 
22
ENTRY_OFFSET    TRANSACTION_ID  SERVER_ID       START_TIMESTAMP END_TIMESTAMP   NUM_STATEMENTS  CHECKSUM
 
23
0       1       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
24
75      2       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
25
150     3       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
26
351     4       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
27
522     5       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
28
Check transaction log contents
 
29
SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));
 
30
PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS))
 
31
transaction_context {
 
32
  server_id: 1
 
33
  transaction_id: 5
 
34
  START_TIMESTAMP
 
35
  END_TIMESTAMP
 
36
}
 
37
statement {
 
38
  type: UPDATE
 
39
  START_TIMESTAMP
 
40
  END_TIMESTAMP
 
41
  update_header {
 
42
    table_metadata {
 
43
      schema_name: "test"
 
44
      table_name: "t1"
 
45
    }
 
46
    key_field_metadata {
 
47
      type: INTEGER
 
48
      name: "a"
 
49
    }
 
50
    set_field_metadata {
 
51
      type: INTEGER
 
52
      name: "b"
 
53
    }
 
54
  }
 
55
  update_data {
 
56
    segment_id: 1
 
57
    end_segment: true
 
58
    record {
 
59
      key_value: "1"
 
60
      after_value: "100"
 
61
      is_null: false
 
62
    }
 
63
    record {
 
64
      key_value: "3"
 
65
      after_value: "300"
 
66
      is_null: false
 
67
    }
 
68
  }
 
69
}
 
70
 
 
71
 
 
72
 
 
73
DROP TABLE t1;
 
74
SET GLOBAL transaction_log_truncate_debug= true;
 
75
 
 
76
Testing REPLACE SET
 
77
DROP TABLE IF EXISTS t1, t2;
 
78
CREATE TABLE t1(a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL, c CHAR(100), PRIMARY KEY(a));
 
79
INSERT INTO t1 (b,c) VALUES (10,'a'),(20,'b'),(30,'c'),(40,'d'),(50,'e'),(60,'f');
 
80
REPLACE INTO t1 SET a=1,b=42,c='I have been replaced' ;
 
81
# check transaction_log
 
82
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG;
 
83
FILE_NAME       FILE_LENGTH     NUM_LOG_ENTRIES NUM_TRANSACTIONS        MIN_TRANSACTION_ID      MAX_TRANSACTION_ID      MIN_END_TIMESTAMP       MAX_END_TIMESTAMP       INDEX_SIZE_IN_BYTES
 
84
transaction.log 701     5       5       1       5       START_TIMESTAMP END_TIMESTAMP   INDEX_SIZE
 
85
 
 
86
Check transaction_log_entries
 
87
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_ENTRIES;
 
88
ENTRY_OFFSET    ENTRY_TYPE      ENTRY_LENGTH
 
89
0       TRANSACTION     75
 
90
75      TRANSACTION     75
 
91
150     TRANSACTION     209
 
92
359     TRANSACTION     208
 
93
567     TRANSACTION     134
 
94
 
 
95
Check transaction_log_transactions
 
96
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
 
97
ENTRY_OFFSET    TRANSACTION_ID  SERVER_ID       START_TIMESTAMP END_TIMESTAMP   NUM_STATEMENTS  CHECKSUM
 
98
0       1       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
99
75      2       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
100
150     3       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
101
359     4       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
102
567     5       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
103
Check transaction log contents
 
104
SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));
 
105
PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS))
 
106
transaction_context {
 
107
  server_id: 1
 
108
  transaction_id: 5
 
109
  START_TIMESTAMP
 
110
  END_TIMESTAMP
 
111
}
 
112
statement {
 
113
  type: UPDATE
 
114
  START_TIMESTAMP
 
115
  END_TIMESTAMP
 
116
  update_header {
 
117
    table_metadata {
 
118
      schema_name: "test"
 
119
      table_name: "t1"
 
120
    }
 
121
    key_field_metadata {
 
122
      type: INTEGER
 
123
      name: "a"
 
124
    }
 
125
    set_field_metadata {
 
126
      type: INTEGER
 
127
      name: "b"
 
128
    }
 
129
    set_field_metadata {
 
130
      type: VARCHAR
 
131
      name: "c"
 
132
    }
 
133
  }
 
134
  update_data {
 
135
    segment_id: 1
 
136
    end_segment: true
 
137
    record {
 
138
      key_value: "1"
 
139
      after_value: "42"
 
140
      after_value: "I have been replaced"
 
141
      is_null: false
 
142
      is_null: false
 
143
    }
 
144
  }
 
145
}
 
146
 
 
147
 
 
148
 
 
149
DROP TABLE t1;
 
150
SET GLOBAL transaction_log_truncate_debug= true;
 
151
 
 
152
Testing REPLACE...SELECT 
 
153
DROP TABLE IF EXISTS t1, t2 ;
 
154
CREATE TABLE t1(a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL, c CHAR(100), d CHAR(20), PRIMARY KEY(a));
 
155
INSERT INTO t1 (b,c,d) VALUES (10,'a','f'),(20,'b','e'),(30,'c','d'),(40,'d','c'),(50,'e','b'),(60,'f','a');
 
156
CREATE TABLE t2 LIKE t1;
 
157
INSERT INTO t2  SELECT a, b*20, CONCAT(c,'replace'), CONCAT(d, 'replace_too') FROM t1;
 
158
REPLACE INTO t1 SELECT * FROM t2;
 
159
# check transaction_log
 
160
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG;
 
161
FILE_NAME       FILE_LENGTH     NUM_LOG_ENTRIES NUM_TRANSACTIONS        MIN_TRANSACTION_ID      MAX_TRANSACTION_ID      MIN_END_TIMESTAMP       MAX_END_TIMESTAMP       INDEX_SIZE_IN_BYTES
 
162
transaction.log 1596    7       7       1       7       START_TIMESTAMP END_TIMESTAMP   INDEX_SIZE
 
163
 
 
164
Check transaction_log_entries
 
165
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_ENTRIES;
 
166
ENTRY_OFFSET    ENTRY_TYPE      ENTRY_LENGTH
 
167
0       TRANSACTION     75
 
168
75      TRANSACTION     75
 
169
150     TRANSACTION     243
 
170
393     TRANSACTION     246
 
171
639     TRANSACTION     245
 
172
884     TRANSACTION     362
 
173
1246    TRANSACTION     350
 
174
 
 
175
Check transaction_log_transactions
 
176
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
 
177
ENTRY_OFFSET    TRANSACTION_ID  SERVER_ID       START_TIMESTAMP END_TIMESTAMP   NUM_STATEMENTS  CHECKSUM
 
178
0       1       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
179
75      2       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
180
150     3       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
181
393     4       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
182
639     5       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
183
884     6       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
184
1246    7       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
185
Check transaction log contents
 
186
SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));
 
187
PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS))
 
188
transaction_context {
 
189
  server_id: 1
 
190
  transaction_id: 7
 
191
  START_TIMESTAMP
 
192
  END_TIMESTAMP
 
193
}
 
194
statement {
 
195
  type: UPDATE
 
196
  START_TIMESTAMP
 
197
  END_TIMESTAMP
 
198
  update_header {
 
199
    table_metadata {
 
200
      schema_name: "test"
 
201
      table_name: "t1"
 
202
    }
 
203
    key_field_metadata {
 
204
      type: INTEGER
 
205
      name: "a"
 
206
    }
 
207
    set_field_metadata {
 
208
      type: INTEGER
 
209
      name: "b"
 
210
    }
 
211
    set_field_metadata {
 
212
      type: VARCHAR
 
213
      name: "c"
 
214
    }
 
215
    set_field_metadata {
 
216
      type: VARCHAR
 
217
      name: "d"
 
218
    }
 
219
  }
 
220
  update_data {
 
221
    segment_id: 1
 
222
    end_segment: true
 
223
    record {
 
224
      key_value: "1"
 
225
      after_value: "200"
 
226
      after_value: "areplace"
 
227
      after_value: "freplace_too"
 
228
      is_null: false
 
229
      is_null: false
 
230
      is_null: false
 
231
    }
 
232
    record {
 
233
      key_value: "2"
 
234
      after_value: "400"
 
235
      after_value: "breplace"
 
236
      after_value: "ereplace_too"
 
237
      is_null: false
 
238
      is_null: false
 
239
      is_null: false
 
240
    }
 
241
    record {
 
242
      key_value: "3"
 
243
      after_value: "600"
 
244
      after_value: "creplace"
 
245
      after_value: "dreplace_too"
 
246
      is_null: false
 
247
      is_null: false
 
248
      is_null: false
 
249
    }
 
250
    record {
 
251
      key_value: "4"
 
252
      after_value: "800"
 
253
      after_value: "dreplace"
 
254
      after_value: "creplace_too"
 
255
      is_null: false
 
256
      is_null: false
 
257
      is_null: false
 
258
    }
 
259
    record {
 
260
      key_value: "5"
 
261
      after_value: "1000"
 
262
      after_value: "ereplace"
 
263
      after_value: "breplace_too"
 
264
      is_null: false
 
265
      is_null: false
 
266
      is_null: false
 
267
    }
 
268
    record {
 
269
      key_value: "6"
 
270
      after_value: "1200"
 
271
      after_value: "freplace"
 
272
      after_value: "areplace_too"
 
273
      is_null: false
 
274
      is_null: false
 
275
      is_null: false
 
276
    }
 
277
  }
 
278
}
 
279
 
 
280
 
 
281
 
 
282
DROP TABLE t1, t2;
 
283
SET GLOBAL transaction_log_truncate_debug= true;
 
284
 
 
285
Testing multi-row REPLACE
 
286
DROP TABLE IF EXISTS t1 ;
 
287
CREATE TABLE t1(a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL, c CHAR(100), d CHAR(20), PRIMARY KEY(a), UNIQUE KEY(b), UNIQUE KEY(c));
 
288
INSERT INTO t1 (b,c,d) VALUES (10,'a','f'),(20,'b','e'),(30,'c','d'),(40,'d','c'),(50,'e','b'),(60,'f','a');
 
289
SELECT * FROM t1;
 
290
a       b       c       d
 
291
1       10      a       f
 
292
2       20      b       e
 
293
3       30      c       d
 
294
4       40      d       c
 
295
5       50      e       b
 
296
6       60      f       a
 
297
REPLACE INTO t1 VALUES (1, 20, 'd','x');
 
298
# check transaction_log
 
299
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG;
 
300
FILE_NAME       FILE_LENGTH     NUM_LOG_ENTRIES NUM_TRANSACTIONS        MIN_TRANSACTION_ID      MAX_TRANSACTION_ID      MIN_END_TIMESTAMP       MAX_END_TIMESTAMP       INDEX_SIZE_IN_BYTES
 
301
transaction.log 860     4       4       1       4       START_TIMESTAMP END_TIMESTAMP   INDEX_SIZE
 
302
 
 
303
Check transaction_log_entries
 
304
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_ENTRIES;
 
305
ENTRY_OFFSET    ENTRY_TYPE      ENTRY_LENGTH
 
306
0       TRANSACTION     75
 
307
75      TRANSACTION     292
 
308
367     TRANSACTION     246
 
309
613     TRANSACTION     247
 
310
 
 
311
Check transaction_log_transactions
 
312
SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
 
313
ENTRY_OFFSET    TRANSACTION_ID  SERVER_ID       START_TIMESTAMP END_TIMESTAMP   NUM_STATEMENTS  CHECKSUM
 
314
0       1       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
315
75      2       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
316
367     3       1       START_TIMESTAMP END_TIMESTAMP   1       0
 
317
613     4       1       START_TIMESTAMP END_TIMESTAMP   3       0
 
318
Check transaction log contents
 
319
SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));
 
320
PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS))
 
321
transaction_context {
 
322
  server_id: 1
 
323
  transaction_id: 4
 
324
  START_TIMESTAMP
 
325
  END_TIMESTAMP
 
326
}
 
327
statement {
 
328
  type: DELETE
 
329
  START_TIMESTAMP
 
330
  END_TIMESTAMP
 
331
  delete_header {
 
332
    table_metadata {
 
333
      schema_name: "test"
 
334
      table_name: "t1"
 
335
    }
 
336
    key_field_metadata {
 
337
      type: INTEGER
 
338
      name: "a"
 
339
    }
 
340
  }
 
341
  delete_data {
 
342
    segment_id: 1
 
343
    end_segment: true
 
344
    record {
 
345
      key_value: "1"
 
346
    }
 
347
  }
 
348
}
 
349
statement {
 
350
  type: DELETE
 
351
  START_TIMESTAMP
 
352
  END_TIMESTAMP
 
353
  delete_header {
 
354
    table_metadata {
 
355
      schema_name: "test"
 
356
      table_name: "t1"
 
357
    }
 
358
    key_field_metadata {
 
359
      type: INTEGER
 
360
      name: "a"
 
361
    }
 
362
  }
 
363
  delete_data {
 
364
    segment_id: 1
 
365
    end_segment: true
 
366
    record {
 
367
      key_value: "2"
 
368
    }
 
369
  }
 
370
}
 
371
statement {
 
372
  type: UPDATE
 
373
  START_TIMESTAMP
 
374
  END_TIMESTAMP
 
375
  update_header {
 
376
    table_metadata {
 
377
      schema_name: "test"
 
378
      table_name: "t1"
 
379
    }
 
380
    key_field_metadata {
 
381
      type: INTEGER
 
382
      name: "a"
 
383
    }
 
384
    set_field_metadata {
 
385
      type: INTEGER
 
386
      name: "a"
 
387
    }
 
388
    set_field_metadata {
 
389
      type: INTEGER
 
390
      name: "b"
 
391
    }
 
392
    set_field_metadata {
 
393
      type: VARCHAR
 
394
      name: "c"
 
395
    }
 
396
    set_field_metadata {
 
397
      type: VARCHAR
 
398
      name: "d"
 
399
    }
 
400
  }
 
401
  update_data {
 
402
    segment_id: 1
 
403
    end_segment: true
 
404
    record {
 
405
      key_value: "4"
 
406
      after_value: "1"
 
407
      after_value: "20"
 
408
      after_value: "d"
 
409
      after_value: "x"
 
410
      is_null: false
 
411
      is_null: false
 
412
      is_null: false
 
413
      is_null: false
 
414
    }
 
415
  }
 
416
}
 
417
 
 
418
 
 
419
 
 
420
SELECT * FROM t1;
 
421
a       b       c       d
 
422
1       20      d       x
 
423
3       30      c       d
 
424
5       50      e       b
 
425
6       60      f       a
 
426
DROP TABLE t1;
 
427
SET GLOBAL transaction_log_truncate_debug= true;
 
428