You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

References

CPS-1215 - Getting issue details... STATUS

Query data node using cps-path

1.Using AND condition

In query of data node, when we can combine two leaf elements using “AND” condition this would give result only if both leaf values are under same list. Below are the examples:

  • Here cps-path  //books[@pub_year=1994 and @price=895]
    • Since, pub_year=1994 and price=895 are under same list it gives the response

         

  • Similarly when cps-path  //books[@pub_year=1994 and @price=1099]
    • Since, pub_year=1994 and price=1099 are under different list it gives the empty response

2.Using OR condition

In order to search across given json data here OR condition support this implementation

we combine two leaf elements using “OR” condition this would give result. Below are the examples:

  • Here cps-path //books[@pub_year=1994 or @price=1099]]
    • Since, pub_year=1994 and price=1099 are under different list it gives the required response

  • Here cps-path //books[@pub_year=1994 or @price=895 or @title="Far Horizons"]
    • pub_year=1994 and price=895 and title=Far Horizons  are under different list it gives the required response                                                        

  • Also cps-path //books[@price=895 or @title="xyz"]
    •  price=895 and title=xyz  which non-json value 

//books[@pub_year=1994 or @price=895 or @title="Far Horizons"]

Implementation of OR Operator

1.Update antlr parser to recognize OR in leaf-condition
2.Implement required (native) query
3.Add Integration tests for
     a.filter on  mix of string and integer leaf-values
     b.filter on non-json data
     c.filter on combination of multiple AND's as well as OR's
4.Update documentation
5.demo to team 

  Query used  : SELECT * FROM FRAGMENT WHERE anchor_id = :anchorId AND xpath ~ :xpathRegex AND ( attributes @> '{"price":895}' or  attributes @> '{"title":"Far Horizons"}')

Limitations

1.Since leaf are stored in Hashmap same keys are not supported, unique keys only supports.

2.Only leaves can be used, leaf-list are not supported

3.Only string and integer values are supported, boolean and float values are not supported.

4.Multiple attributes can only be combined using AND, OR , multiple AND's , multiple OR's and bracketing is not supported.

5.Also the order of leaf elements in the map is not preserved , so combination of And/Or  would not give expected result. Currently working on the ordering of leaf elements to give proper support for combination of and/or  CPS-1629.




  • No labels