Interface PlanHashable

All Known Subinterfaces:
AggregateValue, AtomKeyExpression, AvailableFields.CopyIfPredicate, BooleanComponent, BooleanValue, Comparisons.Comparison, Comparisons.ComparisonWithParameter, ComponentWithChildren, ComponentWithComparison, ComponentWithNoChildren, ComponentWithSingleChild, CreatesDynamicTypesValue, IndexableAggregateValue, IndexKeyValueToPartialRecord.Copier, IndexScanParameters, KeyExpression, KeyExpressionWithChild, KeyExpressionWithChildren, KeyExpressionWithoutChildren, KeyExpressionWithValue, LeafQueryPredicate, LeafValue, MessageHelpers.CoercionBiFunction, Ordering.DirectOrderPreservingValue, Ordering.InverseOrderPreservingValue, Ordering.OrderPreservingValue, PlanSelector, PredicateWithValue, QuantifiedValue, QueryableKeyExpression, QueryComponent, QueryPlan<T>, QueryPredicate, QueryPredicateWithChild, RecordQueryLoadByKeysPlan.KeysSource, RecordQueryPlan, RecordQueryPlanWithChild, RecordQueryPlanWithChildren, RecordQueryPlanWithComparisonKeyValues, RecordQueryPlanWithComparisons, RecordQueryPlanWithIndex, RecordQueryPlanWithMatchCandidate, RecordQueryPlanWithNoChildren, RecordQuerySetPlan, RecordQuerySetPlan.ComparisonKeyFunction, StreamableAggregateValue, SyntheticRecordFromStoredRecordPlan, SyntheticRecordPlan, Value, Value.IndexOnlyValue, Value.InvertableValue<V>, Value.NondeterministicValue, Value.NonEvaluableValue, Value.RangeMatchableValue, ValueWithChild
All Known Implementing Classes:
AbstractArrayConstructorValue, AbstractArrayConstructorValue.LightArrayConstructorValue, AbstractQueryPredicate, AbstractValue, AndComponent, AndOrComponent, AndOrPredicate, AndOrValue, AndPredicate, ArithmeticValue, AvailableFields.ConditionalUponPathPredicate, AvailableFields.TruePredicate, BaseField, BaseKeyExpression, BaseNestedField, CollateFunctionKeyExpression, CollateFunctionKeyExpressionFactoryJRE.CollateFunctionKeyExpressionJRE, CollateValue, Column, ComparisonRange, ComparisonRanges, Comparisons.InvertedFunctionComparison, Comparisons.ListComparison, Comparisons.MultiColumnComparison, Comparisons.NullComparison, Comparisons.OpaqueEqualityComparison, Comparisons.ParameterComparison, Comparisons.ParameterComparisonBase, Comparisons.SimpleComparison, Comparisons.SimpleComparisonBase, Comparisons.TextComparison, Comparisons.TextContainsAllPrefixesComparison, Comparisons.TextWithMaxDistanceComparison, Comparisons.ValueComparison, CompatibleTypeEvolutionPredicate, CompatibleTypeEvolutionPredicate.FieldAccessTrieNode, ComposedBitmapIndexQueryPlan, ComposedBitmapIndexQueryPlan.ComposerBase, ConditionSelectorValue, ConstantObjectValue, ConstantPredicate, ConstantValue, CountValue, DatabaseObjectDependenciesPredicate, DatabaseObjectDependenciesPredicate.UsedIndex, DerivedValue, DimensionsKeyExpression, EmptyComparison, EmptyKeyExpression, EmptyValue, ExistsPredicate, ExistsValue, FieldKeyExpression, FieldValue, FieldWithComparison, FirstOrDefaultValue, FromOrderedBytesValue, FunctionKeyExpression, GroupingKeyExpression, InComparandSource, IndexAggregateFunction, IndexedValue, IndexEntryObjectValue, IndexKeyValueToPartialRecord, IndexKeyValueToPartialRecord.FieldCopier, IndexKeyValueToPartialRecord.FieldWithValueCopier, IndexKeyValueToPartialRecord.MessageCopier, IndexOnlyAggregateValue, IndexOnlyAggregateValue.MaxEverValue, IndexOnlyAggregateValue.MinEverValue, IndexRecordFunction, IndexScanComparisons, IndexScanType, InOpValue, InParameterSource, InSource, InValuesSource, InvertibleFunctionKeyExpression, KeyWithValueExpression, LikeOperatorValue, ListKeyExpression, LiteralKeyExpression, LiteralValue, LongArithmethicFunctionKeyExpression, MessageHelpers.CoercionTrieNode, MessageHelpers.TransformationTrieNode, MultidimensionalIndexScanComparisons, NestedField, NestingKeyExpression, NotComponent, NotPredicate, NotValue, NullValue, NumericAggregationValue, NumericAggregationValue.Avg, NumericAggregationValue.BitmapConstructAgg, NumericAggregationValue.Max, NumericAggregationValue.Min, NumericAggregationValue.Sum, ObjectPlanHash, ObjectValue, OfTypeValue, OneOfThemWithComparison, OneOfThemWithComponent, OrComponent, OrderFunctionKeyExpression, OrPredicate, PatternForLikeValue, PickValue, Placeholder, PredicateWithValueAndRanges, PromoteValue, PromoteValue.ArrayCoercionBiFunction, PromoteValue.PrimitiveCoercionBiFunction, ProtoUtils.DynamicEnum, QuantifiedObjectValue, QuantifiedRecordValue, QueriedValue, QueryKeyExpressionWithComparison, QueryKeyExpressionWithOneOfComparison, QueryPlanConstraint, QueryPlanResult, QueryRecordFunction, QueryRecordFunctionWithComparison, RangeConstraints, RangeConstraints.CompilableRange, RankValue, RecordConstructorValue, RecordFunction, RecordQueryAbstractDataModificationPlan, RecordQueryAggregateIndexPlan, RecordQueryChooserPlanBase, RecordQueryComparatorPlan, RecordQueryCoveringIndexPlan, RecordQueryDamPlan, RecordQueryDefaultOnEmptyPlan, RecordQueryDeletePlan, RecordQueryExplodePlan, RecordQueryFetchFromPartialRecordPlan, RecordQueryFilterPlan, RecordQueryFilterPlanBase, RecordQueryFirstOrDefaultPlan, RecordQueryFlatMapPlan, RecordQueryInComparandJoinPlan, RecordQueryIndexPlan, RecordQueryInJoinPlan, RecordQueryInParameterJoinPlan, RecordQueryInsertPlan, RecordQueryIntersectionOnKeyExpressionPlan, RecordQueryIntersectionOnValuesPlan, RecordQueryIntersectionPlan, RecordQueryInUnionOnKeyExpressionPlan, RecordQueryInUnionOnValuesPlan, RecordQueryInUnionPlan, RecordQueryInValuesJoinPlan, RecordQueryLoadByKeysPlan, RecordQueryMapPlan, RecordQueryPredicatesFilterPlan, RecordQueryRangePlan, RecordQueryRecursiveUnionPlan, RecordQueryScanPlan, RecordQueryScoreForRankPlan, RecordQueryScoreForRankPlan.ScoreForRank, RecordQuerySelectorPlan, RecordQuerySetPlan.ComparisonKeyFunction.OnKeyExpression, RecordQuerySetPlan.ComparisonKeyFunction.OnValues, RecordQuerySortKey, RecordQuerySortPlan, RecordQueryStreamingAggregationPlan, RecordQueryTextIndexPlan, RecordQueryTypeFilterPlan, RecordQueryUnionOnKeyExpressionPlan, RecordQueryUnionOnValuesPlan, RecordQueryUnionPlan, RecordQueryUnionPlanBase, RecordQueryUnorderedDistinctPlan, RecordQueryUnorderedPrimaryKeyDistinctPlan, RecordQueryUnorderedUnionPlan, RecordQueryUpdatePlan, RecordTypeKeyComparison, RecordTypeKeyComparison.RecordTypeComparison, RecordTypeKeyExpression, RecordTypeValue, RelativeProbabilityPlanSelector, RelOpValue, RelOpValue.BinaryRelOpValue, RelOpValue.UnaryRelOpValue, ScanComparisons, ScanComparisons.Builder, SortedInComparandSource, SortedInParameterSource, SortedInValuesSource, SplitKeyExpression, StoreRecordFunction, TempTableInsertPlan, TempTableScanPlan, TextScan, ThenKeyExpression, ThrowsValue, TimeWindowAggregateFunction, TimeWindowForFunction, TimeWindowRecordFunction, TimeWindowScanComparisons, ToOrderedBytesValue, UdfValue, ValuePredicate, VariadicFunctionValue, VersionKeyExpression, VersionValue, WindowedValue

@API(UNSTABLE) public interface PlanHashable
A more stable version of Object.hashCode(). The planHash semantics are different from Object.hashCode() in a few ways:
  • planHash(PlanHashMode) values should be stable across runtime instance changes. The reason is that these values can be used to validate outstanding continuations, and a change in hash value caused by an application restart or refactoring will invalidate all those outstanding continuations
  • planHash(PlanHashMode) supports multiple flavors of hash calculations (See PlanHashable.PlanHashMode). The various kinds of plan hash algorithms are used for different purposes and include/exclude different parts of the target query plan
  • planHash(PlanHashMode) is meant to imply a certain identity of a plan, and reflects on the entire structure of the plan. The intent is to be able to correlate various plans for "identity" (using different definitions for this identity as specified by PlanHashable.PlanHashMode). This requirement drives a desire to reduce collisions as much as possible since not in all cases can we actually use "equals" to verify identity (e.g. log messages)