[ https://issues.apache.org/jira/browse/HIVE-26447?focusedWorklogId=798185&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-798185 ]
ASF GitHub Bot logged work on HIVE-26447: ----------------------------------------- Author: ASF GitHub Bot Created on: 04/Aug/22 21:42 Start Date: 04/Aug/22 21:42 Worklog Time Spent: 10m Work Description: prasanthj commented on code in PR #3492: URL: https://github.com/apache/hive/pull/3492#discussion_r938270084 ########## ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMapIndexStringScalar.java: ########## @@ -66,10 +66,13 @@ public int findScalarInMap(MapColumnVector mapColumnVector, int mapBatchIndex) { byte[][] keyVector = keyColVector.vector; int[] keyStart = keyColVector.start; int[] keyLength = keyColVector.length; + final boolean isRepeating = keyColVector.isRepeating; for (int i = 0; i < count; i++) { final int keyOffset = offset + i; + final int len = isRepeating? keyLength[i]: keyLength[keyOffset]; Review Comment: Agree with Gopal. If isRepeating=true, then keyLength and keyVector will have to be looked at index = 0. I was also expecting something like below ``` final int len = isRepeating? keyLength[0]: keyLength[keyOffset]; ``` Issue Time Tracking ------------------- Worklog Id: (was: 798185) Time Spent: 40m (was: 0.5h) > Vectorization: wrong results when filter on repeating map key orc table > ----------------------------------------------------------------------- > > Key: HIVE-26447 > URL: https://issues.apache.org/jira/browse/HIVE-26447 > Project: Hive > Issue Type: Bug > Components: Hive > Affects Versions: 3.1.3, 4.0.0 > Reporter: Yi Zhang > Assignee: Yi Zhang > Priority: Major > Labels: pull-request-available > Time Spent: 40m > Remaining Estimate: 0h > > Example reproducible case: > > set hive.vectorized.execution.enabled=true; > set hive.fetch.task.conversion=none; > create temporary table foo (id int, x map<string,int>) stored as orc; > insert into foo values(1, map('ABC', 9)), (2, map('ABC', 7)), (3, map('ABC', > 8)), (4, map('ABC', 9)); > select id from foo where x['ABC']=9; > this only gives 1, when correct result should be 1,4 > For every VectorizedRowBatch, only the first row is checked. > This seems to be a corner case of ORC table have repeating string type key > for map field in the MapColumnVector. -- This message was sent by Atlassian Jira (v8.20.10#820010)