Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Plain Text by Joe ( 16 years ago )
DROP TABLE IF EXISTS t1;
--enable_warnings

CREATE TABLE t1 (
  id INT NOT NULL
, padding VARCHAR(200) NOT NULL
, PRIMARY KEY (id)
);


INSERT INTO t1 VALUES (1, "I love testing.");
INSERT INTO t1 VALUES (3, "I hate testing.");
INSERT INTO t1 VALUES (5, "I still hate testing.");

connect (conn1, localhost, root,,);
connect (conn2, localhost, root,,);

connection conn1;
--source ../plugin/transaction_log/tests/t/truncate_log.inc
--echo

START TRANSACTION;
INSERT INTO t1 VALUES (7, "I still still hate testing.");
SELECT id FROM t1 FOR UPDATE;

connection conn2;
# This should timeout and not appear in the transaction log
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t1 SET id=1000 WHERE padding='I love testing.';

connection conn1;
UPDATE t1 SET id=id + 1;

COMMIT;

--source ../plugin/transaction_log/tests/t/check_transaction_log.inc
--echo

+# check transaction_log
+SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG;
+FILE_NAME      FILE_LENGTH     NUM_LOG_ENTRIES NUM_TRANSACTIONS        MIN_TRANSACTION_ID      MAX_TRANSACTION_IDMIN_END_TIMESTAMP       MAX_END_TIMESTAMP       INDEX_SIZE_IN_BYTES
+transaction.log        223     1       1       1       1       START_TIMESTAMP END_TIMESTAMP   73736
+
+Check transaction_log_entries
+SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_ENTRIES;
+ENTRY_OFFSET   ENTRY_TYPE      ENTRY_LENGTH
+0      TRANSACTION     223
+
+Check transaction_log_transactions
+SELECT * FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
+ENTRY_OFFSET   TRANSACTION_ID  SERVER_ID       START_TIMESTAMP END_TIMESTAMP   NUM_STATEMENTS  CHECKSUM
+0      1       1       START_TIMESTAMP END_TIMESTAMP   2       0
+Check transaction log contents
+SELECT PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS));
+PRINT_TRANSACTION_MESSAGE('transaction.log',(select max(entry_offset) from DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS))
+transaction_context {
+  server_id: 1
+  transaction_id: 1
+  START_TIMESTAMP
+  END_TIMESTAMP
+}
+statement {
+  type: INSERT
+  START_TIMESTAMP
+  END_TIMESTAMP
+  insert_header {
+    table_metadata {
+      schema_name: "test"
+      table_name: "t1"
+    }
+    field_metadata {
+      type: INTEGER
+      name: "id"
+    }
+    field_metadata {
+      type: VARCHAR
+      name: "padding"
+    }
+  }
+  insert_data {
+    segment_id: 1
+    end_segment: true
+    record {
+      insert_value: "7"
+      insert_value: "I still still hate testing."
+    }
+  }
+}
+statement {
+  type: UPDATE
+  start_timestamp: 1278004207819349
+  end_timestamp: 1278004207819976
+  update_header {
+    table_metadata {
+      schema_name: "test"
+      table_name: "t1"
+    }
+    key_field_metadata {
+      type: INTEGER
+      name: "id"
+    }
+    set_field_metadata {
+      type: INTEGER
+      name: "id"
+    }
+  }
+  update_data {
+    segment_id: 1
+    end_segment: true
+    record {
+      key_value: "1"
+      after_value: "2"
+    }
+    record {
+      key_value: "3"
+      after_value: "4"
+    }
+    record {
+      key_value: "5"
+      after_value: "6"
+    }
+    record {
+      key_value: "7"
+      after_value: "8"
+    }
+}
+
+
+
+DROP TABLE t1;
+SET GLOBAL transaction_log_truncate_debug= true;

 

Revise this Paste

Your Name: Code Language: