[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



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 redhat com [mailto:augeas-devel-bounces redhat com] On Behalf Of Mol, Xavier (SCC)
> Sent: Friday, August 28, 2015 11:02 AM
> To: Dominic Cleal
> Cc: augeas-devel 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 redhat com]
> > Sent: Friday, August 28, 2015 10:58 AM
> > To: Mol, Xavier (SCC)
> > Cc: augeas-devel 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

Attachment: smime.p7s
Description: S/MIME cryptographic signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]