[
https://issues.apache.org/jira/browse/HIVE-1626?focusedWorklogId=795634&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-795634
]
ASF GitHub Bot logged work on HIVE-1626:
----------------------------------------
Author: ASF GitHub Bot
Created on: 27/Jul/22 12:27
Start Date: 27/Jul/22 12:27
Worklog Time Spent: 10m
Work Description: pudidic commented on PR #3441:
URL: https://github.com/apache/hive/pull/3441#issuecomment-1196663673
@cmunkey
I tried to minimize indexed accessors of Stack, exposing push/pop/peek only.
Because there already are several use cases of Stack#get(int), I implemented
ArrayStack#get(int) also.
However, LevelOrderWalker has a unique usage of Stack. LevelOrderWalker
calls stack.add(0, element) and stack.remove(0) to add/remove elements at the
start of the stack. They are inverse of stack.pop/push, which add/remove at the
end. The rest of part still calls Stack.pop/push, as not inverse. I tried to
replace stack.add(0, element) with stack.push and stack.remove(0) with
stack.pop, but it behaved very differently. The inverse push/pop is not I
wanted to expose. So I implemented a subclass in LevelOrderWalker to isolate
its use from others. Maybe I need to document to make its purpose clear.
I'll replace == with equals in indexOf(). Thank you for advice.
Issue Time Tracking
-------------------
Worklog Id: (was: 795634)
Time Spent: 1.5h (was: 1h 20m)
> stop using java.util.Stack
> --------------------------
>
> Key: HIVE-1626
> URL: https://issues.apache.org/jira/browse/HIVE-1626
> Project: Hive
> Issue Type: Improvement
> Components: Query Processor
> Affects Versions: 0.7.0
> Reporter: John Sichi
> Assignee: Teddy Choi
> Priority: Major
> Labels: pull-request-available
> Attachments: HIVE-1626.2.patch, HIVE-1626.2.patch, HIVE-1626.3.patch,
> HIVE-1626.3.patch, HIVE-1626.3.patch
>
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> We currently use Stack as part of the generic node walking library. Stack
> should not be used for this since its inheritance from Vector incurs
> superfluous synchronization overhead.
> Most projects end up adding an ArrayStack implementation and using that
> instead.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)