Revision ae0a4858
b/snf-pithos-backend/pithos/backends/lib/sqlalchemy/node.py | ||
---|---|---|
986 | 986 |
pathq = pathq or [] |
987 | 987 |
|
988 | 988 |
# TODO: Use another table to store before=inf results. |
989 |
a = self.attributes.alias('a') |
|
990 | 989 |
v = self.versions.alias('v') |
991 |
n = self.nodes.alias('n') |
|
992 | 990 |
s = select([self.attributes.c.key]).distinct() |
993 | 991 |
if before != inf: |
994 |
filtered = select([func.max(self.versions.c.serial)],
|
|
995 |
and_(self.versions.c.mtime < before,
|
|
996 |
self.versions.c.node == v.c.node))
|
|
992 |
filtered = select([func.max(v.c.serial)],
|
|
993 |
and_(v.c.mtime < before,
|
|
994 |
v.c.node == self.versions.c.node))
|
|
997 | 995 |
else: |
998 | 996 |
filtered = select([self.nodes.c.latest_version]) |
999 | 997 |
filtered = filtered.where(self.nodes.c.node == \ |
... | ... | |
1005 | 1003 |
s = s.where(self.attributes.c.serial == self.versions.c.serial) |
1006 | 1004 |
s = s.where(self.attributes.c.domain == domain) |
1007 | 1005 |
s = s.where(self.nodes.c.node == self.versions.c.node) |
1006 |
s = s.order_by(self.attributes.c.key) |
|
1008 | 1007 |
conja = [] |
1009 | 1008 |
conjb = [] |
1010 | 1009 |
for path, match in pathq: |
... | ... | |
1082 | 1081 |
v = self.versions.alias('v') |
1083 | 1082 |
n = self.nodes.alias('n') |
1084 | 1083 |
if before != inf: |
1085 |
filtered = select([func.max(self.versions.c.serial)],
|
|
1086 |
and_(self.versions.c.mtime < before,
|
|
1087 |
self.versions.c.node == v.c.node))
|
|
1084 |
filtered = select([func.max(v.c.serial)],
|
|
1085 |
and_(v.c.mtime < before,
|
|
1086 |
v.c.node == self.versions.c.node))
|
|
1088 | 1087 |
inner_join = \ |
1089 | 1088 |
self.nodes.join(self.versions, |
1090 | 1089 |
onclause=self.versions.c.serial==filtered) |
Also available in: Unified diff