Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,14 @@ abstract class TreeNode[BaseType <: TreeNode[BaseType]]
* ineffective for subsequent apply calls on this tree because query plan structures are
* immutable.
*/
private val ineffectiveRules: BitSet = new BitSet(RuleIdCollection.NumRules)
private[this] var _ineffectiveRules: BitSet = null
private def ineffectiveRules: BitSet = {
if (_ineffectiveRules eq null) {
_ineffectiveRules = new BitSet(RuleIdCollection.NumRules)
}
_ineffectiveRules
}
private def isIneffectiveRulesEmpty = _ineffectiveRules eq null

/**
* @return a sequence of tree pattern enums in a TreeNode T. It does not include propagated
Expand Down Expand Up @@ -149,7 +156,7 @@ abstract class TreeNode[BaseType <: TreeNode[BaseType]]
* UnknownId, it returns false.
*/
protected def isRuleIneffective(ruleId : RuleId): Boolean = {
if (ruleId eq UnknownRuleId) {
if (isIneffectiveRulesEmpty || (ruleId eq UnknownRuleId)) {
return false
}
ineffectiveRules.get(ruleId.id)
Expand Down