[augeas-devel] Inconsistent matching of multiple predicates (involving last/position)

Mol, Xavier (SCC) xavier.mol at kit.edu
Fri Aug 28 11:57:41 UTC 2015


Hi Dominic,

I've updated Augeas, but for me the results stay the same...

augtool> match /augeas/version
/augeas/version = 1.4.0
augtool> match $master/*[label() != '#comment'][map]
/files/etc/auto.master/1 = /misc
/files/etc/auto.master/2 = /net
/files/etc/auto.master/3 = +
augtool> match $master/*[label() != '#comment'][position() = 2]
  (no matches)
augtool> match $master/*[label() != '#comment'][last()]
  (no matches)


Maybe I misunderstand how to use last()/position() in the first place, because even this fails:

augtool> match $master/*[last()]
  (no matches)
augtool> match $master/*[position() = 1]
  (no matches)


This should return the very last and first node, regardless whether it’s a comment or a mapping, right? Though it may work, if I mess around with the lens and introduce a label for the mount points.

augtool> print $master/*[label() != '#comment']
/files/etc/auto.master/mount[1] = "/misc"
/files/etc/auto.master/mount[1]/map = "/etc/auto.misc"
/files/etc/auto.master/mount[2] = "/net"
/files/etc/auto.master/mount[2]/map = "-hosts"
/files/etc/auto.master/mount[3] = "+"
/files/etc/auto.master/mount[3]/map = "auto.master"
augtool> match $master/mount[last()]
/files/etc/auto.master/mount[3] = +
augtool> match $master/mount[position() = 2]
/files/etc/auto.master/mount[2] = /net


> > I'd guess position() is the position under the original node, not in the
> > filtered results (!= '#comment').
Then this would qualify as a bug, correct? Quote from the Augeas wiki "Multiple predicates are evaluated by filtering node sets successively". 

match $master/*[label() != '#comment'][position() = 2]

_in general_ should not yield the same result as

match $master/*[position() = 2][label() != '#comment']

which is what you assume position() does (the result will be the same only if the filter for comments has no effect, e.g. when both first nodes are no comment)?


Best regards,
Xavier.

> -----Original Message-----
> From: augeas-devel-bounces at redhat.com [mailto:augeas-devel-bounces at redhat.com] On Behalf Of Mol, Xavier (SCC)
> Sent: Friday, August 28, 2015 11:02 AM
> To: Dominic Cleal
> Cc: augeas-devel at redhat.com
> Subject: Re: [augeas-devel] Inconsistent matching of multiple predicates (involving last/position)
> 
> Thank you for your quick reply, Dominic!
> 
> I'll see if I can update Augeas first.
> 
> Best regards,
> Xavier.
> 
> > -----Original Message-----
> > From: Dominic Cleal [mailto:dcleal at redhat.com]
> > Sent: Friday, August 28, 2015 10:58 AM
> > To: Mol, Xavier (SCC)
> > Cc: augeas-devel at redhat.com
> > Subject: Re: Inconsistent matching of multiple predicates (involving last/position)
> >
> > On 28/08/15 09:50, Mol, Xavier (SCC) wrote:
> > > What Augeas version?
> > > 	augeas-1.0.0-10.el6.x86_64
> >
> > This is quite old, it appears to have been fixed some time since.
> >
> > > augtool> defvar master /files/etc/auto.master
> > > augtool> match $master/*[map]
> > > /files/etc/auto.master/1 = /misc
> > > /files/etc/auto.master/2 = /net
> > > /files/etc/auto.master/3 = +
> > > augtool> match $master/*[label() != '#comment']
> > > /files/etc/auto.master/1 = /misc
> > > /files/etc/auto.master/2 = /net
> > > /files/etc/auto.master/3 = +
> > >
> > > **)
> > > augtool> match $master/*[map][last()]
> > > /files/etc/auto.master/3 = +
> > > augtool> match $master/*[map][position() = 2]
> > > /files/etc/auto.master/2 = /net
> > > augtool> match $master/*[label() != '#comment'][last()]
> > >   (no matches)
> >
> > On 1.4.0:
> >
> > augtool> match $master/*[label() != '#comment'][last()]
> > /files/etc/auto.master/3 = +
> >
> > > augtool> match $master/*[label() != '#comment'][position() = 2]
> > >   (no matches)
> >
> > augtool> match $master/*[label() != '#comment'][position() = 3]
> > /files/etc/auto.master/1 = /misc
> > augtool> match $master/*[label() != '#comment'][position() = 6]
> > /files/etc/auto.master/2 = /net
> >
> >
> > A git bisect would probably narrow down which commit fixed it, as I
> > can't remember now.  If you need it fixed in el6, please file a BZ with
> > Red Hat.
> >
> > --
> > Dominic Cleal
> > Red Hat Engineering
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6401 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20150828/010a8b20/attachment.p7s>


More information about the augeas-devel mailing list