Revision 62d938dc pithos/backends/lib/sqlalchemy/node.py
b/pithos/backends/lib/sqlalchemy/node.py | ||
---|---|---|
39 | 39 |
|
40 | 40 |
from dbworker import DBWorker |
41 | 41 |
|
42 |
ROOTNODE = 0
|
|
42 |
ROOTNODE = 1
|
|
43 | 43 |
|
44 | 44 |
( SERIAL, NODE, HASH, SIZE, SOURCE, MTIME, MUSER, CLUSTER ) = range(8) |
45 | 45 |
|
... | ... | |
117 | 117 |
columns.append(Column('path', String(2048), default='', nullable=False)) |
118 | 118 |
self.nodes = Table('nodes', metadata, *columns) |
119 | 119 |
# place an index on path |
120 |
Index('idx_nodes_path', self.nodes.c.path, unique=True)
|
|
120 |
Index('idx_nodes_path', self.nodes.c.path) |
|
121 | 121 |
|
122 | 122 |
#create statistics table |
123 | 123 |
columns=[] |
... | ... | |
255 | 255 |
c1 = select([self.nodes.c.node], |
256 | 256 |
self.nodes.c.parent == parent) |
257 | 257 |
where_clause = and_(self.versions.c.node.in_(c1), |
258 |
self.versions.c.cluster == cluster, |
|
259 |
self.versions.c.mtime <= before) |
|
258 |
self.versions.c.cluster == cluster) |
|
260 | 259 |
s = select([func.count(self.versions.c.serial), |
261 | 260 |
func.sum(self.versions.c.size)]) |
262 | 261 |
s = s.where(where_clause) |
262 |
if before != inf: |
|
263 |
s = s.where(self.versions.c.mtime <= before) |
|
263 | 264 |
r = self.conn.execute(s) |
264 | 265 |
row = r.fetchone() |
265 | 266 |
r.close() |
... | ... | |
305 | 306 |
s = select([func.count(self.versions.c.serial), |
306 | 307 |
func.sum(self.versions.c.size)]) |
307 | 308 |
where_clause = and_(self.versions.c.node == node, |
308 |
self.versions.c.cluster == cluster, |
|
309 |
self.versions.c.mtime <= before) |
|
309 |
self.versions.c.cluster == cluster) |
|
310 | 310 |
s = s.where(where_clause) |
311 |
if before != inf: |
|
312 |
s = s.where(self.versions.c.mtime <= before) |
|
311 | 313 |
r = self.conn.execute(s) |
312 | 314 |
row = r.fetchone() |
313 | 315 |
nr, size = row[0], row[1] |
... | ... | |
450 | 452 |
self.versions.c.mtime, |
451 | 453 |
self.versions.c.muser, |
452 | 454 |
self.versions.c.cluster]) |
455 |
filtered = select([func.max(self.versions.c.serial)], |
|
456 |
self.versions.c.node == node) |
|
457 |
if before != inf: |
|
458 |
filtered = filtered.where(self.versions.c.mtime < before) |
|
453 | 459 |
s = s.where(and_(self.versions.c.cluster != except_cluster, |
454 |
self.versions.c.serial == select( |
|
455 |
[func.max(self.versions.c.serial)], |
|
456 |
and_(self.versions.c.node == node, |
|
457 |
self.versions.c.mtime < before)))) |
|
460 |
self.versions.c.serial == filtered)) |
|
458 | 461 |
r = self.conn.execute(s) |
459 | 462 |
props = r.fetchone() |
460 | 463 |
r.close() |
... | ... | |
467 | 470 |
s = select([func.count(v.c.serial), |
468 | 471 |
func.sum(v.c.size), |
469 | 472 |
func.max(v.c.mtime)]) |
470 |
c1 = select([func.max(self.versions.c.serial)],
|
|
471 |
and_(self.versions.c.node == v.c.node,
|
|
472 |
self.versions.c.mtime < before))
|
|
473 |
c1 = select([func.max(self.versions.c.serial)])
|
|
474 |
if before != inf:
|
|
475 |
c1 = c1.where(self.versions.c.mtime < before)
|
|
473 | 476 |
c2 = select([self.nodes.c.node], self.nodes.c.parent == node) |
474 |
s = s.where(and_(v.c.serial == c1, |
|
477 |
s = s.where(and_(v.c.serial == c1.where(self.versions.c.node == v.c.node),
|
|
475 | 478 |
v.c.cluster != except_cluster, |
476 | 479 |
v.c.node.in_(c2))) |
477 | 480 |
rp = self.conn.execute(s) |
... | ... | |
490 | 493 |
func.sum(v.c.size), |
491 | 494 |
func.max(v.c.mtime)]) |
492 | 495 |
c1 = select([func.max(self.versions.c.serial)], |
493 |
and_(self.versions.c.node == v.c.node, |
|
494 |
self.versions.c.mtime < before)) |
|
496 |
self.versions.c.node == v.c.node) |
|
497 |
if before != inf: |
|
498 |
c1 = c1.where(self.versions.c.mtime < before) |
|
495 | 499 |
c2 = select([self.nodes.c.node], self.nodes.c.path.like(path + '%')) |
496 | 500 |
s = s.where(and_(v.c.serial == c1, |
497 | 501 |
v.c.cluster != except_cluster, |
... | ... | |
528 | 532 |
s = select([v.c.serial, v.c.node, v.c.hash, v.c.size, |
529 | 533 |
v.c.source, v.c.mtime, v.c.muser, v.c.cluster]) |
530 | 534 |
c = select([func.max(self.versions.c.serial)], |
531 |
and_(self.versions.c.node == node, |
|
532 |
self.versions.c.mtime < before)) |
|
535 |
self.versions.c.node == node) |
|
536 |
if before != inf: |
|
537 |
c = c.where(self.versions.c.mtime < before) |
|
533 | 538 |
s = s.where(and_(v.c.serial == c, |
534 | 539 |
v.c.cluster == cluster)) |
535 | 540 |
r = self.conn.execute(s) |
... | ... | |
682 | 687 |
v = self.versions.alias('v') |
683 | 688 |
n = self.nodes.alias('n') |
684 | 689 |
s = select([a.c.key]).distinct() |
685 |
s = s.where(v.c.serial == select([func.max(self.versions.c.serial)], |
|
686 |
and_(self.versions.c.node == v.c.node, |
|
687 |
self.versions.c.mtime < before))) |
|
690 |
filtered = select([func.max(self.versions.c.serial)]) |
|
691 |
if before != inf: |
|
692 |
filtered = filtered.where(self.versions.c.mtime < before) |
|
693 |
s = s.where(v.c.serial == filtered.where(self.versions.c.node == v.c.node)) |
|
688 | 694 |
s = s.where(v.c.cluster != except_cluster) |
689 | 695 |
s = s.where(v.c.node.in_(select([self.nodes.c.node], |
690 | 696 |
self.nodes.c.parent == parent))) |
... | ... | |
757 | 763 |
v = self.versions.alias('v') |
758 | 764 |
n = self.nodes.alias('n') |
759 | 765 |
s = select([n.c.path, v.c.serial]).distinct() |
760 |
s = s.where(v.c.serial == select([func.max(self.versions.c.serial)], |
|
761 |
and_(self.versions.c.node == v.c.node, |
|
762 |
self.versions.c.mtime < before))) |
|
766 |
filtered = select([func.max(self.versions.c.serial)]) |
|
767 |
if before != inf: |
|
768 |
filtered = filtered.where(self.versions.c.mtime < before) |
|
769 |
s = s.where(v.c.serial == filtered.where(self.versions.c.node == v.c.node)) |
|
763 | 770 |
s = s.where(v.c.cluster != except_cluster) |
764 | 771 |
s = s.where(v.c.node.in_(select([self.nodes.c.node], |
765 | 772 |
self.nodes.c.parent == parent))) |
Also available in: Unified diff