[GRASS-dev] Re: [bug #2829] (grass) v.to.db: the 'option' is parsed wrong if multiple 'option's are given in particular order

Markus Neteler neteler at itc.it
Thu Sep 21 11:54:47 EDT 2006


On Thu, Sep 21, 2006 at 05:10:54PM +0200, Maciek Sieczka via RT wrote:
> Markus,
> 
> As you have just fixed one parser error in the v.to.db, do you mind if I
> trigger your attention to another long-standing one?
> 
> If all the valid 'options', or specific combinations of them, are listed in a
> row, v.to.db accepts it *if they come in the same order as the are listed in
> the Description*.
> 
> spearfish60
> 
> For example - this works while it should not:
> 
> $ v.to.db -p map=landuse
> option=cat,area,compact,perimeter,length,count,coor,start,end,sides,query
> type=centroid col=col1
> 
> 8 categories read from map
> 0 records selected from table
> 0 categories read from map exist in selection from table
> 0 categories read from map don't exist in selection from table
> 0 records updated/inserted
> 0 update/insert errors
> 
> I can remove an option from the end of the comma-separated list and from the
> beginnig, and this will still work:
> 
> $ v.to.db -p map=landuse
> option=area,compact,perimeter,length,count,coor,start,end,sides type=centroid
> col=col1
> 
> And this too:
> 
> v.to.db -p map=landuse option=perimeter,length,count,coor type=centroid col=col1
> 
> But if I take out one somewhere in the middle *so that the order they are
> listed in Description IS NOT PRESERVED*, v.to.db returns an error like it should:
> 
> $ v.to.db -p map=landuse option=perimeter,length,coor type=centroid col=col1
> 
> Error: value <perimeter,length,coor> out of range for parameter <option>
>        Legal range:
> cat,area,compact,perimeter,length,count,coor,start,end,sides,query

I thought that it should *never* work since
vector/v.to.db/parse.c
    parms.option->multiple     = NO;

A bug in the parser?

Markus




More information about the grass-dev mailing list