-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathaside.py
153 lines (127 loc) · 2.81 KB
/
aside.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# The new MK 2.3 commit-aside feature, in Python
#
# Expected output:
# 1 2 3 ok
import os
import Mk4py
mk = Mk4py
def t1(): # add several rows using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I]")
vw.append(i=111)
vw.append(i=222)
vw.append(i=333)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 3
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 3
vw.append(i=444)
vw.append(i=555)
assert len(vw) == 5
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 3 # now it has three rows
assert vw[0].i == 111
assert vw[1].i == 222
assert vw[2].i == 333
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 5 # now it has five :)
assert vw[0].i == 111
assert vw[1].i == 222
assert vw[2].i == 333
assert vw[3].i == 444
assert vw[4].i == 555
def t2(): # add second property using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I]")
vw.append(i=111)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.getas("a[i:I,j:I]")
assert len(vw) == 1
vw.append(i=222,j=333)
assert len(vw) == 2
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1 # now it has one property and row
assert len(vw.structure()) == 1
assert vw[0].i == 111
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 2 # now it has two of both :)
assert len(vw.structure()) == 2
assert vw[0].i == 111
assert vw[0].j == 0
assert vw[1].i == 222
assert vw[1].j == 333
def t3(): # remove second property using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I,j:I]")
vw.append(i=111,j=222)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.getas("a[i:I]")
assert len(vw) == 1
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
assert len(vw.structure()) == 2 # now you see j
assert vw[0].i == 111
assert vw[0].j == 222
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 1
assert len(vw.structure()) == 1 # now you don't :)
assert vw[0].i == 111
print 1,
t1()
print 2,
t2()
print 3,
t3()
print "ok"
os.remove("_f.mk")
os.remove("_f.mka")