public void ReadShouldReadUncommittedRecordFromSameTransaction() { var db = new SimpleDatabase_Accessor("2PC1", true); db.Initialize(); const int rowSize = 100; var key1 = new string('1', 36); var key2 = new string('2', 36); var encoder = new UTF8Encoding(); var tid = new Transaction(); db.CreateTable("Inventory.Car", rowSize); db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("Seattle, 123") }); db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize) { Data = encoder.GetBytes("New York, 456") }); var rows = db.ReadAllRecords(tid, "Inventory.Car"); Assert.AreEqual(2, rows.Keys.Count); }
public void InsertDeleteCommitTest() { var db = new SimpleDatabase_Accessor("2PC8", true); db.Initialize(); const int rowSize = 100; var key1 = new string('1', 36); var encoder = new UTF8Encoding(); var tid = new Transaction(); db.CreateTable("Inventory.Car", rowSize); db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAA") }); db.DeleteRecord(tid, "Inventory.Car", key1); db.Prepare(tid); db.Commit(tid); var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car"); Assert.AreEqual(0, rows.Keys.Count); }
public void PageAllocationTest() { var db = new SimpleDatabase_Accessor("MMM", false); db.Initialize(); const int rowSize = 100; var tid = new Transaction(); var encoder = new UTF8Encoding(); db.CreateTable("Hotel", rowSize); var table = db.OpenTable("Hotel"); var keys = new string[table.PageTable.RecordIndices.Length]; var values = new string[table.PageTable.RecordIndices.Length]; for (int index = 0; index < table.PageTable.RecordIndices.Length; index++) { keys[index] = Guid.NewGuid().ToString(); values[index] = "VVVVVVVVVVVVVVVVVVVVV_" + index; } for (int index = 0; index < table.PageTable.RecordIndices.Length; index++) { db.InsertRecord(tid, table.Name, keys[index], new Row(rowSize) { Data = encoder.GetBytes(values[index]) }); } for (int index = 0; index < table.PageTable.RecordIndices.Length; index++) { var row = db.ReadRecord(tid, table.Name, keys[index]); Assert.AreEqual(values[index], row.DataString); } var rows = db.ReadAllRecords(null, "Hotel"); Assert.AreEqual(table.PageTable.RecordIndices.Length, rows.Count); }
public void InsertAbortTest() { var db = new SimpleDatabase_Accessor("2PC7", true); db.Initialize(); const int rowSize = 100; var key1 = new string('1', 36); var encoder = new UTF8Encoding(); var tid = new Transaction(); db.CreateTable("Inventory.Car", rowSize); db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAA") }); db.Prepare(tid); db.Abort(tid); var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car"); Assert.AreEqual(0, rows.Keys.Count); }
public void InsertUpdateRecord() { var db = new SimpleDatabase_Accessor("EEE", false); db.Initialize(); const int rowSize = 100; var key1 = new string('1', 36); var key2 = new string('2', 36); var key3 = new string('3', 36); var key4 = new string('4', 36); var encoder = new UTF8Encoding(); var tid = new Transaction(); db.CreateTable("Inventory.Car", rowSize); db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("Seattle, 123") }); var row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, 123", row.DataString); db.InsertRecord(tid, "Inventory.Car", key2, new Row(rowSize) { Data = encoder.GetBytes("New York, 456") }); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, 123", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, 456", row.DataString); db.InsertRecord(tid, "Inventory.Car", key3, new Row(rowSize) { Data = encoder.GetBytes("London, 789") }); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, 123", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, 456", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key3); Assert.AreEqual("London, 789", row.DataString); db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize) { Data = encoder.GetBytes("Phoenix, 012") }); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, 123", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, 456", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key3); Assert.AreEqual("London, 789", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key4); Assert.AreEqual("Phoenix, 012", row.DataString); // Update db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("Seattle, key1") }); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, key1", row.DataString); db.UpdateRecord(tid, "Inventory.Car", key2, new Row(rowSize) { Data = encoder.GetBytes("New York, key2") }); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, key2", row.DataString); db.UpdateRecord(tid, "Inventory.Car", key3, new Row(rowSize) { Data = encoder.GetBytes("London, key3") }); row = db.ReadRecord(tid, "Inventory.Car", key3); Assert.AreEqual("London, key3", row.DataString); db.UpdateRecord(tid, "Inventory.Car", key4, new Row(rowSize) { Data = encoder.GetBytes("Phoenix, key4") }); row = db.ReadRecord(tid, "Inventory.Car", key4); Assert.AreEqual("Phoenix, key4", row.DataString); db.DeleteRecord(tid, "Inventory.Car", key4); RecordNotFoundException exception = null; try { row = db.ReadRecord(tid, "Inventory.Car", key4); Assert.Fail(); } catch (RecordNotFoundException e) { exception = e; } Assert.IsNotNull(exception); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, key1", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, key2", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key3); Assert.AreEqual("London, key3", row.DataString); db.InsertRecord(tid, "Inventory.Car", key4, new Row(rowSize) { Data = encoder.GetBytes("Oregon, 345") }); row = db.ReadRecord(tid, "Inventory.Car", key1); Assert.AreEqual("Seattle, key1", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key2); Assert.AreEqual("New York, key2", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key3); Assert.AreEqual("London, key3", row.DataString); row = db.ReadRecord(tid, "Inventory.Car", key4); Assert.AreEqual("Oregon, 345", row.DataString); }
public void InsertCommitUpdateUpdateUpdateTest() { var db = new SimpleDatabase_Accessor("2PC4", true); db.Initialize(); const int rowSize = 100; var key1 = new string('1', 36); var encoder = new UTF8Encoding(); var tid = new Transaction(); db.CreateTable("Inventory.Car", rowSize); db.InsertRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAA") }); db.Prepare(tid); db.Commit(tid); var rows = db.ReadAllRecords(new Transaction(), "Inventory.Car"); Assert.AreEqual(1, rows.Keys.Count); Assert.AreEqual("AAA", rows[key1].DataString); tid = new Transaction(); db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAABBB") }); db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAABBBCCC") }); db.UpdateRecord(tid, "Inventory.Car", key1, new Row(rowSize) { Data = encoder.GetBytes("AAABBBCCCDDD") }); db.Prepare(tid); db.Commit(tid); rows = db.ReadAllRecords(new Transaction(), "Inventory.Car"); Assert.AreEqual(1, rows.Keys.Count); Assert.AreEqual("AAABBBCCCDDD", rows[key1].DataString); }