def main(cls, args): # db = SimpleDB("scantest2") fm = FileMgr(File("scantest2"), 400) lm = LogMgr(fm, "simpledb.log") bm = BufferMgr(fm, lm, 8) tx = Transaction(fm, lm, bm) sch1 = Schema() sch1.addIntField("A") sch1.addStringField("B", 9) layout1 = Layout(sch1) us1 = TableScan(tx, "T1", layout1) us1.beforeFirst() n = 200 print("Inserting " + str(n) + " records into T1.") for i in range(n): us1.insert() us1.setInt("A", i) us1.setString("B", "bbb" + str(i)) us1.close() sch2 = Schema() sch2.addIntField("C") sch2.addStringField("D", 9) layout2 = Layout(sch2) us2 = TableScan(tx, "T2", layout2) us2.beforeFirst() print("Inserting " + str(n) + " records into T2.") for i in range(n): us2.insert() us2.setInt("C", n - i - 1) us2.setString("D", "ddd" + str((n - i - 1))) us2.close() s1 = TableScan(tx, "T1", layout1) s2 = TableScan(tx, "T2", layout2) s3 = ProductScan(s1, s2) # selecting all records where A=C t = Term(Expression("A"), Expression("C")) pred = Predicate(t) print("The predicate is " + pred.__str__()) s4 = SelectScan(s3, pred) # projecting on [B,D] c = ["B", "D"] s5 = ProjectScan(s4, c) while s5.next(): print(s5.getString("B") + " " + s5.getString("D")) s5.close() tx.commit()
def main(cls, args): # db = SimpleDB("tabletest", 400, 8) fm = FileMgr(File("tabletest"), 400) lm = LogMgr(fm, "simpledb.log") bm = BufferMgr(fm, lm, 8) tx = Transaction(fm, lm, bm) sch = Schema() sch.addIntField("A") sch.addStringField("B", 9) layout = Layout(sch) for fldname in layout.schema().fields(): offset = layout.offset(fldname) print(fldname + " has offset " + str(offset)) print("Filling the table with 50 random records.") ts = TableScan(tx, "T", layout) for i in range(50): ts.insert() n = random.randint(0, 50) ts.setInt("A", n) ts.setString("B", "rec" + str(n)) print("inserting into slot " + ts.getRid().__str__() + ": {" + str(n) + ", " + "rec" + str(n) + "}") print("Deleting these records, whose A-values are less than 25.") count = 0 ts.beforeFirst() while ts.next(): a = ts.getInt("A") b = ts.getString("B") if a < 25: count += 1 print("slot " + ts.getRid().__str__() + ": {" + str(a) + ", " + b + "}") ts.delete() print(str(count) + " values under 10 were deleted.\n") print("Here are the remaining records.") ts.beforeFirst() while ts.next(): a = ts.getInt("A") b = ts.getString("B") print("slot " + ts.getRid().__str__() + ": {" + str(a) + ", " + b + "}") ts.close() tx.commit()
def main(cls, args): # db = SimpleDB("producttest") fm = FileMgr(File("producttest"), 400) lm = LogMgr(fm, "simpledb.log") bm = BufferMgr(fm, lm, 8) tx = Transaction(fm, lm, bm) sch1 = Schema() sch1.addIntField("A") sch1.addStringField("B", 9) layout1 = Layout(sch1) ts1 = TableScan(tx, "T1", layout1) sch2 = Schema() sch2.addIntField("C") sch2.addStringField("D", 9) layout2 = Layout(sch2) ts2 = TableScan(tx, "T2", layout2) ts1.beforeFirst() n = 200 print("Inserting " + str(n) + " records into T1.") for i in range(n): ts1.insert() ts1.setInt("A", i) ts1.setString("B", "aaa" + str(i)) ts1.close() ts2.beforeFirst() print("Inserting " + str(n) + " records into T2.") for i in range(n): ts2.insert() ts2.setInt("C", n - i - 1) ts2.setString("D", "bbb" + str((n - i - 1))) ts2.close() s1 = TableScan(tx, "T1", layout1) s2 = TableScan(tx, "T2", layout2) s3 = ProductScan(s1, s2) while s3.next(): print(s3.getString("B")) s3.close() tx.commit()
def main(cls, args): # db = SimpleDB("scantest1") fm = FileMgr(File("scantest1"), 400) lm = LogMgr(fm, "simpledb.log") bm = BufferMgr(fm, lm, 8) tx = Transaction(fm, lm, bm) sch1 = Schema() sch1.addIntField("A") sch1.addStringField("B", 9) layout = Layout(sch1) s1 = TableScan(tx, "T", layout) s1.beforeFirst() n = 200 print("Inserting " + str(n) + " random records.") for i in range(n): s1.insert() k = random.randint(0, 50) s1.setInt("A", k) s1.setString("B", "rec" + str(k)) s1.close() s2 = TableScan(tx, "T", layout) # selecting all records where A=10 c = Constant(10) t = Term(Expression("A"), Expression(c)) pred = Predicate(t) print("The predicate is " + pred.__str__()) s3 = SelectScan(s2, pred) fields = ["B"] s4 = ProjectScan(s3, fields) while s4.next(): print(s4.getString("B")) s4.close() tx.commit()