Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-9004

Issues with queries targeting a map field

    XMLWordPrintableJSON

Details

    Description

      When defining indexes on a map field several issues have been found:

      • If the index is defined for one specific key in the map, e.g. positions['SUN'], then an index entry is created for every entry, no matter if the entry contains the 'SUN' key in its map or not. This makes the index take a lot of memory (unnecessarily?).
      • If the index is specified for more than one key in the map or for all ('*'), then queries in which the "where" contains a != condition for the map, e.g. "p.positions['SUN'] != '3'" return less values than those returned when the query is run without the index.
      • If the index is specified for more than one key in the map or for all ('*'), then queries in which the "where" contains a "= null" condition for the map, e.g. "p.positions['SUN'] = null" return less values than those returned when the query is run without the index.
      • If the index is defined for one specific key in the map, e.g. positions['SUN'], queries in which the "where" contains a "!=" condition for the map or a " = null" condition sometimes return less values than those returned when the query is run without the index.

      Apart from the above, looking at the indexes documentation, it seems that Map indexes are only those indexes for which more than one key or '*' is specified for the Map. But if just one key is specified for the Map in the index, then the index is not a Map index but a range index. This should be clarified.

      Attachments

        Activity

          People

            alberto.gomez Alberto Gomez
            alberto.gomez Alberto Gomez
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: