Revision 7fef13f0 snf-pithos-backend/pithos/backends/lib/sqlalchemy/node.py
b/snf-pithos-backend/pithos/backends/lib/sqlalchemy/node.py | ||
---|---|---|
102 | 102 |
'muser': 7, |
103 | 103 |
'uuid': 8, |
104 | 104 |
'checksum': 9, |
105 |
'cluster': 10 |
|
105 |
'cluster': 10,
|
|
106 | 106 |
} |
107 | 107 |
|
108 | 108 |
|
... | ... | |
672 | 672 |
|
673 | 673 |
# All children (get size and mtime). |
674 | 674 |
# This is why the full path is stored. |
675 |
s = select([func.count(v.c.serial), |
|
675 |
if before != inf: |
|
676 |
s = select([func.count(v.c.serial), |
|
676 | 677 |
func.sum(v.c.size), |
677 | 678 |
func.max(v.c.mtime)]) |
678 |
if before != inf: |
|
679 | 679 |
c1 = select([func.max(self.versions.c.serial)], |
680 | 680 |
self.versions.c.node == v.c.node) |
681 | 681 |
c1 = c1.where(self.versions.c.mtime < before) |
682 | 682 |
else: |
683 |
c1 = select([self.nodes.c.latest_version], |
|
684 |
self.nodes.c.node == v.c.node) |
|
683 |
inner_join = \ |
|
684 |
self.versions.join(self.nodes, onclause=\ |
|
685 |
self.versions.c.serial == self.nodes.c.latest_version) |
|
686 |
s = select([func.count(self.versions.c.serial), |
|
687 |
func.sum(self.versions.c.size), |
|
688 |
func.max(self.versions.c.mtime)], from_obj=[inner_join]) |
|
689 |
|
|
685 | 690 |
c2 = select([self.nodes.c.node], |
686 | 691 |
self.nodes.c.path.like(self.escape_like(path) + '%', |
687 | 692 |
escape=ESCAPE_CHAR)) |
688 |
s = s.where(and_(v.c.serial == c1, |
|
693 |
if before != inf: |
|
694 |
s = s.where(and_(v.c.serial == c1, |
|
689 | 695 |
v.c.cluster != except_cluster, |
690 | 696 |
v.c.node.in_(c2))) |
697 |
else: |
|
698 |
s = s.where(and_(self.versions.c.cluster != except_cluster, |
|
699 |
self.versions.c.node.in_(c2))) |
|
700 |
|
|
691 | 701 |
rp = self.conn.execute(s) |
692 | 702 |
r = rp.fetchone() |
693 | 703 |
rp.close() |
... | ... | |
1233 | 1243 |
def get_props(self, paths): |
1234 | 1244 |
inner_join = \ |
1235 | 1245 |
self.nodes.join(self.versions, |
1236 |
onclause=self.versions.c.serial==self.nodes.c.latest_version)
|
|
1246 |
onclause=self.versions.c.serial == self.nodes.c.latest_version)
|
|
1237 | 1247 |
cc = self.nodes.c.path.in_(paths) |
1238 |
s = select([self.nodes.c.path,self.versions.c.type], |
|
1248 |
s = select([self.nodes.c.path, self.versions.c.type],
|
|
1239 | 1249 |
from_obj=[inner_join]).where(cc).distinct() |
1240 | 1250 |
r = self.conn.execute(s) |
1241 | 1251 |
rows = r.fetchall() |
Also available in: Unified diff