Package com.apple.foundationdb.record
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,- StreamingValue,- 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,- ArrayDistinctValue,- AvailableFields.ConditionalUponPathPredicate,- AvailableFields.TruePredicate,- BaseField,- BaseKeyExpression,- BaseNestedField,- CastValue,- 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,- EvaluatesToValue,- ExistsPredicate,- ExistsValue,- FieldKeyExpression,- FieldValue,- FieldWithComparison,- FirstOrDefaultStreamingValue,- FirstOrDefaultValue,- FromOrderedBytesValue,- FunctionKeyExpression,- GroupByExpression.UnmatchedAggregateValue,- 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,- ParameterObjectValue,- PatternForLikeValue,- PickValue,- Placeholder,- PredicateWithValueAndRanges,- PromoteValue,- PromoteValue.ArrayCoercionBiFunction,- PromoteValue.PrimitiveCoercionBiFunction,- ProtoUtils.DynamicEnum,- QuantifiedObjectValue,- QuantifiedRecordValue,- QueriedValue,- QueryKeyExpressionWithComparison,- QueryKeyExpressionWithOneOfComparison,- QueryPlanConstraint,- QueryPlanResult,- QueryRecordFunction,- QueryRecordFunctionWithComparison,- RangeConstraints,- RangeConstraints.CompilableRange,- RangeValue,- 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,- RecordQueryMultiIntersectionOnValuesPlan,- RecordQueryPredicatesFilterPlan,- RecordQueryRangePlan,- RecordQueryRecursiveDfsJoinPlan,- RecordQueryRecursiveLevelUnionPlan,- RecordQueryScanPlan,- RecordQueryScoreForRankPlan,- RecordQueryScoreForRankPlan.ScoreForRank,- RecordQuerySelectorPlan,- RecordQuerySetPlan.ComparisonKeyFunction.OnKeyExpression,- RecordQuerySetPlan.ComparisonKeyFunction.OnValues,- RecordQuerySortKey,- RecordQuerySortPlan,- RecordQueryStreamingAggregationPlan,- RecordQueryTableFunctionPlan,- 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,- SubscriptValue,- TempTableInsertPlan,- TempTableScanPlan,- TextScan,- ThenKeyExpression,- ThrowsValue,- TimeWindowAggregateFunction,- TimeWindowForFunction,- TimeWindowRecordFunction,- TimeWindowScanComparisons,- ToOrderedBytesValue,- UdfValue,- ValuePredicate,- VariadicFunctionValue,- VersionKeyExpression,- VersionValue,- WindowedValue
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)
- 
Nested Class SummaryNested ClassesModifier and TypeInterfaceDescriptionstatic enumThe "kinds" of planHash calculations.static enumA mode for a plan hash which captures both kind and version.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final PlanHashable.PlanHashModestatic final PlanHashable.PlanHashMode
- 
Method SummaryModifier and TypeMethodDescriptionstatic intcombineHashes(List<Integer> hashes) static intiterablePlanHash(PlanHashable.PlanHashKind kind, Iterable<?> objects) Deprecated, for removal: This API element is subject to removal in a future version.static intiterablePlanHash(PlanHashable.PlanHashMode mode, Iterable<?> objects) static intmapsPlanHash(PlanHashable.PlanHashMode mode, Map<?, ?> map) static intobjectPlanHash(PlanHashable.PlanHashKind kind, Object obj) Deprecated, for removal: This API element is subject to removal in a future version.static intobjectPlanHash(PlanHashable.PlanHashMode mode, Object obj) static intobjectsPlanHash(PlanHashable.PlanHashKind kind, Object... objects) Deprecated, for removal: This API element is subject to removal in a future version.static intobjectsPlanHash(PlanHashable.PlanHashMode mode, Object... objects) default intplanHash()Deprecated, for removal: This API element is subject to removal in a future version.default intDeprecated, for removal: This API element is subject to removal in a future version.static intplanHash(PlanHashable.PlanHashKind kind, PlanHashable... hashables) Deprecated, for removal: This API element is subject to removal in a future version.static intplanHash(PlanHashable.PlanHashKind kind, Iterable<? extends PlanHashable> hashables) Deprecated, for removal: This API element is subject to removal in a future version.intplanHash(PlanHashable.PlanHashMode hashMode) Return a hash similar tohashCode, but with the additional guarantee that is is stable across JVMs.static intplanHash(PlanHashable.PlanHashMode mode, PlanHashable... hashables) static intplanHash(PlanHashable.PlanHashMode mode, Iterable<? extends PlanHashable> hashables) static intplanHashUnordered(PlanHashable.PlanHashKind kind, Iterable<? extends PlanHashable> hashables) Deprecated, for removal: This API element is subject to removal in a future version.static intplanHashUnordered(PlanHashable.PlanHashMode hashMode, Iterable<? extends PlanHashable> hashables) static intprimitiveArrayHash(Object primitiveArray) static intsetsPlanHash(PlanHashable.PlanHashMode mode, Set<?> objects) static intstringHashUnordered(Iterable<String> strings) Deprecated, for removal: This API element is subject to removal in a future version.
- 
Field Details- 
CURRENT_LEGACY
- 
CURRENT_FOR_CONTINUATION
 
- 
- 
Method Details- 
planHashReturn a hash similar tohashCode, but with the additional guarantee that is is stable across JVMs.- Parameters:
- hashMode- the "mode" of hash to calculate. Each mode contains a hash kind which has a particular logic with regards to included and excluded items. It is also versioned to support for the evolution of the plan hash when the underlying plan objects evolve
- Returns:
- a stable hash code
 
- 
planHashDeprecated, for removal: This API element is subject to removal in a future version.Return a hash similar tohashCode, but with the additional guarantee that is is stable across JVMs.- Parameters:
- kind- the "kind" of hash to calculate. Each kind of hash has a particular logic with regards to included and excluded items.
- Returns:
- a stable hash code
 
- 
planHashDeprecated, for removal: This API element is subject to removal in a future version.Parameterless overload of planHash(). This method delegates to theplanHash(PlanHashKind). This method is deprecated. In order to achieve the same result, useplanHash(PlanHashKind)directly passing inPlanHashable.PlanHashKind.LEGACY.- Returns:
- a stable ash code using PlanHashable.PlanHashKind.LEGACY
 
- 
planHash@Deprecated(forRemoval=true) static int planHash(@Nonnull PlanHashable.PlanHashKind kind, @Nonnull Iterable<? extends PlanHashable> hashables) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseplanHash(PlanHashMode, Iterable)instead.- Parameters:
- kind- plan hash kind
- hashables- an iterable to be hashed
- Returns:
- a stable hash code
 
- 
planHashstatic int planHash(@Nonnull PlanHashable.PlanHashMode mode, @Nonnull Iterable<? extends PlanHashable> hashables) 
- 
planHash@Deprecated(forRemoval=true) static int planHash(@Nonnull PlanHashable.PlanHashKind kind, PlanHashable... hashables) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseplanHash(PlanHashMode, PlanHashable...)instead.- Parameters:
- kind- plan hash kind
- hashables- a varargs array to be hashed
- Returns:
- a stable hash code
 
- 
planHash
- 
planHashUnordered@Deprecated(forRemoval=true) static int planHashUnordered(@Nonnull PlanHashable.PlanHashKind kind, @Nonnull Iterable<? extends PlanHashable> hashables) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseplanHashUnordered(PlanHashMode, Iterable)instead.- Parameters:
- kind- plan hash kind
- hashables- a varargs array to be hashed
- Returns:
- a stable hash code
 
- 
planHashUnorderedstatic int planHashUnordered(@Nonnull PlanHashable.PlanHashMode hashMode, @Nonnull Iterable<? extends PlanHashable> hashables) 
- 
stringHashUnorderedDeprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. Use an order-independent hash algorithm instead, i.e.AbstractSet.hashCode().- Parameters:
- strings- an iterable of strings
- Returns:
- a stable hash code
 
- 
combineHashes
- 
objectPlanHash@Deprecated(forRemoval=true) static int objectPlanHash(@Nonnull PlanHashable.PlanHashKind kind, @Nullable Object obj) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseobjectPlanHash(PlanHashMode, Object)instead.- Parameters:
- kind- plan hash kind
- obj- an object to be hashed
- Returns:
- a stable hash code
 
- 
objectPlanHash
- 
iterablePlanHash@Deprecated(forRemoval=true) static int iterablePlanHash(@Nonnull PlanHashable.PlanHashKind kind, @Nonnull Iterable<?> objects) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseiterablePlanHash(PlanHashMode, Iterable)instead.- Parameters:
- kind- plan hash kind
- objects- an iterable of objects to be hashed
- Returns:
- a stable hash code
 
- 
iterablePlanHash
- 
setsPlanHash
- 
mapsPlanHash
- 
objectsPlanHash@Deprecated(forRemoval=true) static int objectsPlanHash(@Nonnull PlanHashable.PlanHashKind kind, Object... objects) Deprecated, for removal: This API element is subject to removal in a future version.This method is deprecated. UseobjectsPlanHash(PlanHashMode, Object...)instead.- Parameters:
- kind- plan hash kind
- objects- a varargs of objects to be hashed
- Returns:
- a stable hash code
 
- 
objectsPlanHash
- 
primitiveArrayHash
 
-