mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
revset: fix order of nested 'range' expression (BC)
Enforce range order only if necessary as the comment says "carrying the sorting over would be more efficient."
This commit is contained in:
parent
d7145726a7
commit
2ef98dedc5
@ -378,12 +378,12 @@ def rangeset(repo, subset, x, y, order):
|
||||
r = spanset(repo, m, n + 1)
|
||||
else:
|
||||
r = spanset(repo, m, n - 1)
|
||||
# XXX We should combine with subset first: 'subset & baseset(...)'. This is
|
||||
# necessary to ensure we preserve the order in subset.
|
||||
#
|
||||
# This has performance implication, carrying the sorting over when possible
|
||||
# would be more efficient.
|
||||
return r & subset
|
||||
|
||||
if order == defineorder:
|
||||
return r & subset
|
||||
else:
|
||||
# carrying the sorting over when possible would be more efficient
|
||||
return subset & r
|
||||
|
||||
def dagrange(repo, subset, x, y, order):
|
||||
r = fullreposet(repo)
|
||||
|
@ -1255,6 +1255,36 @@ ordering defined by it.
|
||||
1
|
||||
0
|
||||
|
||||
'x:y' takes ordering parameter into account:
|
||||
|
||||
$ try -p optimized '3:0 & 0:3 & not 2:1'
|
||||
* optimized:
|
||||
(difference
|
||||
(and
|
||||
(range
|
||||
('symbol', '3')
|
||||
('symbol', '0')
|
||||
define)
|
||||
(range
|
||||
('symbol', '0')
|
||||
('symbol', '3')
|
||||
follow)
|
||||
define)
|
||||
(range
|
||||
('symbol', '2')
|
||||
('symbol', '1')
|
||||
any)
|
||||
define)
|
||||
* set:
|
||||
<filteredset
|
||||
<filteredset
|
||||
<spanset- 0:3>,
|
||||
<spanset+ 0:3>>,
|
||||
<not
|
||||
<spanset+ 1:2>>>
|
||||
3
|
||||
0
|
||||
|
||||
'a + b', which is optimized to '_list(a b)', should take the ordering of
|
||||
the left expression:
|
||||
|
||||
@ -1377,12 +1407,11 @@ ordering defined by it.
|
||||
define)
|
||||
* set:
|
||||
<filteredset
|
||||
<spanset- 0:2>,
|
||||
<baseset [0, 2, 1]>>
|
||||
<baseset [0, 2, 1]>,
|
||||
<spanset- 0:2>>
|
||||
0
|
||||
2
|
||||
1
|
||||
0
|
||||
BROKEN: should be '0 2 1'
|
||||
|
||||
'_hexlist(a b)' should behave like 'a + b':
|
||||
|
||||
@ -1724,8 +1753,8 @@ ordering defined by it.
|
||||
define)
|
||||
* set:
|
||||
<filteredset
|
||||
<baseset [1]>,
|
||||
<spanset- 0:2>>
|
||||
<spanset- 0:2>,
|
||||
<baseset [1]>>
|
||||
1
|
||||
|
||||
'A & B' can be rewritten as 'B & A' by weight, but that's fine as long as
|
||||
|
Loading…
Reference in New Issue
Block a user