Ronak
11/08/2021, 11:01 AMSELECT mapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES) FROM FeatureTest1 WHERE REGEXP_LIKE(mapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES), '^p.*') LIMIT 5
Tried similar query on (pinot 0.7.1) and getting exception.Mayank
Jackie
11/09/2021, 2:16 AMRonak
11/09/2021, 3:34 AMRonak
11/09/2021, 3:39 AMIt should work. What exception did you get?was getting below exception.
[
{
"message": "QueryExecutionError:\njava.lang.IndexOutOfBoundsException\n\tat java.base/java.nio.Buffer.checkIndex(Unknown Source)\n\tat java.base/java.nio.DirectByteBuffer.get(Unknown Source)\n\tat org.apache.pinot.core.segment.memory.PinotByteBuffer.getByte(PinotByteBuffer.java:78)\n\tat org.apache.pinot.core.io.util.FixedByteValueReaderWriter.getUnpaddedString(FixedByteValueReaderWriter.java:59)\n\tat org.apache.pinot.core.segment.index.readers.BaseImmutableDictionary.getUnpaddedString(BaseImmutableDictionary.java:283)\n\tat org.apache.pinot.core.segment.index.readers.StringDictionary.getStringValue(StringDictionary.java:69)\n\tat org.apache.pinot.core.operator.filter.predicate.RegexpLikePredicateEvaluatorFactory$DictionaryBasedRegexpLikePredicateEvaluator.applySV(RegexpLikePredicateEvaluatorFactory.java:82)\n\tat org.apache.pinot.core.operator.dociditerators.ExpressionScanDocIdIterator.processProjectionBlock(ExpressionScanDocIdIterator.java:128)\n\tat org.apache.pinot.core.operator.dociditerators.ExpressionScanDocIdIterator.next(ExpressionScanDocIdIterator.java:81)\n\tat org.apache.pinot.core.operator.dociditerators.ExpressionScanDocIdIterator.advance(ExpressionScanDocIdIterator.java:106)\n\tat org.apache.pinot.core.operator.dociditerators.AndDocIdIterator.next(AndDocIdIterator.java:51)\n\tat org.apache.pinot.core.operator.DocIdSetOperator.getNextBlock(DocIdSetOperator.java:69)\n\tat org.apache.pinot.core.operator.DocIdSetOperator.getNextBlock(DocIdSetOperator.java:35)\n\tat org.apache.pinot.core.operator.BaseOperator.nextBlock(BaseOperator.java:49)",
"errorCode": 200
}
]
Mayank
Ronak
11/09/2021, 5:55 AMRonak
11/09/2021, 11:26 AMSELECT mapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES) FROM FeatureTest1 WHERE REGEXP_LIKE(mapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES), '^p.*') LIMIT 5
once I added startTime and endTime filter on the time column and ``mapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES) != ''`. Looks like there was an issue if either key or value is missing on some of the rows.Jackie
11/09/2021, 7:31 PMmapValue(mapDim1__KEYS, 'k1', mapDim1__VALUES)
will throw exception when 'k1'
does not exist in the mapDim1__KEYS
. Can you try adding a filter AND mapDim1__KEYS = 'k1'
and see if it works?