Revision 33b4e4a6 pithos/backends/lib/sqlite/node.py
b/pithos/backends/lib/sqlite/node.py | ||
---|---|---|
40 | 40 |
|
41 | 41 |
ROOTNODE = 0 |
42 | 42 |
|
43 |
( SERIAL, NODE, HASH, SIZE, TYPE, SOURCE, MTIME, MUSER, UUID, CLUSTER ) = range(10)
|
|
43 |
( SERIAL, NODE, HASH, SIZE, TYPE, SOURCE, MTIME, MUSER, UUID, CHECKSUM, CLUSTER ) = range(11)
|
|
44 | 44 |
|
45 | 45 |
( MATCH_PREFIX, MATCH_EXACT ) = range(2) |
46 | 46 |
|
... | ... | |
92 | 92 |
'mtime' : 6, |
93 | 93 |
'muser' : 7, |
94 | 94 |
'uuid' : 8, |
95 |
'cluster' : 9 |
|
95 |
'checksum' : 9, |
|
96 |
'cluster' : 10 |
|
96 | 97 |
} |
97 | 98 |
|
98 | 99 |
|
... | ... | |
153 | 154 |
mtime integer, |
154 | 155 |
muser text not null default '', |
155 | 156 |
uuid text not null default '', |
157 |
checksum text not null default '', |
|
156 | 158 |
cluster integer not null default 0, |
157 | 159 |
foreign key (node) |
158 | 160 |
references nodes(node) |
... | ... | |
211 | 213 |
def node_get_versions(self, node, keys=(), propnames=_propnames): |
212 | 214 |
"""Return the properties of all versions at node. |
213 | 215 |
If keys is empty, return all properties in the order |
214 |
(serial, node, hash, size, type, source, mtime, muser, uuid, cluster). |
|
216 |
(serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster).
|
|
215 | 217 |
""" |
216 | 218 |
|
217 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, cluster " |
|
219 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster "
|
|
218 | 220 |
"from versions " |
219 | 221 |
"where node = ?") |
220 | 222 |
self.execute(q, (node,)) |
... | ... | |
417 | 419 |
parent, path = props |
418 | 420 |
|
419 | 421 |
# The latest version. |
420 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, cluster " |
|
422 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster "
|
|
421 | 423 |
"from versions " |
422 | 424 |
"where serial = (select max(serial) " |
423 | 425 |
"from versions " |
... | ... | |
467 | 469 |
mtime = max(mtime, r[2]) |
468 | 470 |
return (count, size, mtime) |
469 | 471 |
|
470 |
def version_create(self, node, hash, size, type, source, muser, uuid, cluster=0): |
|
472 |
def version_create(self, node, hash, size, type, source, muser, uuid, checksum, cluster=0):
|
|
471 | 473 |
"""Create a new version from the given properties. |
472 | 474 |
Return the (serial, mtime) of the new version. |
473 | 475 |
""" |
474 | 476 |
|
475 |
q = ("insert into versions (node, hash, size, type, source, mtime, muser, uuid, cluster) " |
|
476 |
"values (?, ?, ?, ?, ?, ?, ?, ?, ?)") |
|
477 |
q = ("insert into versions (node, hash, size, type, source, mtime, muser, uuid, checksum, cluster) "
|
|
478 |
"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
|
|
477 | 479 |
mtime = time() |
478 |
props = (node, hash, size, type, source, mtime, muser, uuid, cluster) |
|
480 |
props = (node, hash, size, type, source, mtime, muser, uuid, checksum, cluster)
|
|
479 | 481 |
serial = self.execute(q, props).lastrowid |
480 | 482 |
self.statistics_update_ancestors(node, 1, size, mtime, cluster) |
481 | 483 |
return serial, mtime |
... | ... | |
483 | 485 |
def version_lookup(self, node, before=inf, cluster=0): |
484 | 486 |
"""Lookup the current version of the given node. |
485 | 487 |
Return a list with its properties: |
486 |
(serial, node, hash, size, type, source, mtime, muser, uuid, cluster) |
|
488 |
(serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster)
|
|
487 | 489 |
or None if the current version is not found in the given cluster. |
488 | 490 |
""" |
489 | 491 |
|
490 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, cluster " |
|
492 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster "
|
|
491 | 493 |
"from versions " |
492 | 494 |
"where serial = (select max(serial) " |
493 | 495 |
"from versions " |
... | ... | |
503 | 505 |
"""Return a sequence of values for the properties of |
504 | 506 |
the version specified by serial and the keys, in the order given. |
505 | 507 |
If keys is empty, return all properties in the order |
506 |
(serial, node, hash, size, type, source, mtime, muser, uuid, cluster). |
|
508 |
(serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster).
|
|
507 | 509 |
""" |
508 | 510 |
|
509 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, cluster " |
|
511 |
q = ("select serial, node, hash, size, type, source, mtime, muser, uuid, checksum, cluster "
|
|
510 | 512 |
"from versions " |
511 | 513 |
"where serial = ?") |
512 | 514 |
self.execute(q, (serial,)) |
... | ... | |
518 | 520 |
return r |
519 | 521 |
return [r[propnames[k]] for k in keys if k in propnames] |
520 | 522 |
|
523 |
def version_put_property(self, serial, key, value): |
|
524 |
"""Set value for the property of version specified by key.""" |
|
525 |
|
|
526 |
if key not in _propnames: |
|
527 |
return |
|
528 |
q = "update versions set %s = ? where serial = ?" % key |
|
529 |
self.execute(q, (value, serial)) |
|
530 |
|
|
521 | 531 |
def version_recluster(self, serial, cluster): |
522 | 532 |
"""Move the version into another cluster.""" |
523 | 533 |
|
Also available in: Unified diff