Catalyst code review
package org.apache.spark.sql.catalyst
JoinType¶
¶
/**
* Given a [[plans.logical.LogicalPlan LogicalPlan]], returns a list of `PhysicalPlan`s that can
* be used for execution. If this strategy does not apply to the give logical operation then an
* empty list should be returned.
*/
abstract class GenericStrategy[PhysicalPlan <: TreeNode[PhysicalPlan]] extends Logging {
def apply(plan: LogicalPlan): Seq[PhysicalPlan]
}
directory structures¶
.
├── analysis
│ ├── AlreadyExistException.scala
│ ├── Analyzer.scala
│ ├── AnsiTypeCoercion.scala
│ ├── CannotReplaceMissingTableException.scala
│ ├── CheckAnalysis.scala
│ ├── CTESubstitution.scala
│ ├── DecimalPrecision.scala
│ ├── DeduplicateRelations.scala
│ ├── FunctionRegistry.scala
│ ├── higherOrderFunctions.scala
│ ├── HintErrorLogger.scala
│ ├── MultiInstanceRelation.scala
│ ├── NamedRelation.scala
│ ├── NoSuchItemException.scala
│ ├── package.scala
│ ├── PullOutNondeterministic.scala
│ ├── ResolveCatalogs.scala
│ ├── ResolveCommandsWithIfExists.scala
│ ├── ResolveHints.scala
│ ├── ResolveInlineTables.scala
│ ├── ResolvePartitionSpec.scala
│ ├── ResolveTableValuedFunctions.scala
│ ├── ResolveUnion.scala
│ ├── ResolveWithCTE.scala
│ ├── StreamingJoinHelper.scala
│ ├── SubstituteUnresolvedOrdinals.scala
│ ├── TableOutputResolver.scala
│ ├── timeZoneAnalysis.scala
│ ├── TypeCheckResult.scala
│ ├── TypeCoercion.scala
│ ├── unresolved.scala
│ ├── UnsupportedOperationChecker.scala
│ ├── UpdateAttributeNullability.scala
│ ├── v2ResolutionPlans.scala
│ └── view.scala
├── catalog
│ ├── events.scala
│ ├── ExternalCatalog.scala
│ ├── ExternalCatalogUtils.scala
│ ├── ExternalCatalogWithListener.scala
│ ├── functionResources.scala
│ ├── GlobalTempViewManager.scala
│ ├── InMemoryCatalog.scala
│ ├── interface.scala
│ ├── InvalidUDFClassException.scala
│ └── SessionCatalog.scala
├── CatalystTypeConverters.scala
├── csv
│ ├── CSVExprUtils.scala
│ ├── CSVHeaderChecker.scala
│ ├── CSVInferSchema.scala
│ ├── CSVOptions.scala
│ ├── UnivocityGenerator.scala
│ └── UnivocityParser.scala
├── CurrentUserContext.scala
├── DeserializerBuildHelper.scala
├── dsl
│ └── package.scala
├── encoders
│ ├── ExpressionEncoder.scala
│ ├── OuterScopes.scala
│ ├── package.scala
│ └── RowEncoder.scala
├── expressions
│ ├── aggregate
│ │ ├── ApproxCountDistinctForIntervals.scala
│ │ ├── ApproximatePercentile.scala
│ │ ├── Average.scala
│ │ ├── bitwiseAggregates.scala
│ │ ├── CentralMomentAgg.scala
│ │ ├── collect.scala
│ │ ├── Corr.scala
│ │ ├── CountIf.scala
│ │ ├── CountMinSketchAgg.scala
│ │ ├── Count.scala
│ │ ├── Covariance.scala
│ │ ├── First.scala
│ │ ├── HyperLogLogPlusPlus.scala
│ │ ├── interfaces.scala
│ │ ├── Last.scala
│ │ ├── MaxByAndMinBy.scala
│ │ ├── Max.scala
│ │ ├── Min.scala
│ │ ├── Percentile.scala
│ │ ├── PivotFirst.scala
│ │ ├── Product.scala
│ │ ├── Sum.scala
│ │ ├── UnevaluableAggs.scala
│ │ └── V2Aggregator.scala
│ ├── AliasHelper.scala
│ ├── ApplyFunctionExpression.scala
│ ├── arithmetic.scala
│ ├── AttributeSet.scala
│ ├── bitwiseExpressions.scala
│ ├── BoundAttribute.scala
│ ├── CallMethodViaReflection.scala
│ ├── Canonicalize.scala
│ ├── Cast.scala
│ ├── codegen
│ │ ├── CodeFormatter.scala
│ │ ├── CodeGenerator.scala
│ │ ├── CodegenFallback.scala
│ │ ├── GenerateMutableProjection.scala
│ │ ├── GenerateOrdering.scala
│ │ ├── GeneratePredicate.scala
│ │ ├── GenerateSafeProjection.scala
│ │ ├── GenerateUnsafeProjection.scala
│ │ ├── GenerateUnsafeRowJoiner.scala
│ │ ├── javaCode.scala
│ │ └── package.scala
│ ├── CodeGeneratorWithInterpretedFallback.scala
│ ├── collectionOperations.scala
│ ├── complexTypeCreator.scala
│ ├── complexTypeExtractors.scala
│ ├── conditionalExpressions.scala
│ ├── constraintExpressions.scala
│ ├── csvExpressions.scala
│ ├── datetimeExpressions.scala
│ ├── decimalExpressions.scala
│ ├── DynamicPruning.scala
│ ├── EquivalentExpressions.scala
│ ├── ExpectsInputTypes.scala
│ ├── Expression.scala
│ ├── ExpressionSet.scala
│ ├── ExprUtils.scala
│ ├── generators.scala
│ ├── GetStructFieldObject.scala
│ ├── grouping.scala
│ ├── hash.scala
│ ├── higherOrderFunctions.scala
│ ├── inputFileBlock.scala
│ ├── InterpretedMutableProjection.scala
│ ├── InterpretedSafeProjection.scala
│ ├── InterpretedUnsafeProjection.scala
│ ├── intervalExpressions.scala
│ ├── JoinedRow.scala
│ ├── jsonExpressions.scala
│ ├── literals.scala
│ ├── mathExpressions.scala
│ ├── misc.scala
│ ├── MonotonicallyIncreasingID.scala
│ ├── namedExpressions.scala
│ ├── nullExpressions.scala
│ ├── objects
│ │ └── objects.scala
│ ├── ordering.scala
│ ├── package.scala
│ ├── PartitionTransforms.scala
│ ├── predicates.scala
│ ├── ProjectionOverSchema.scala
│ ├── Projection.scala
│ ├── PythonUDF.scala
│ ├── randomExpressions.scala
│ ├── regexpExpressions.scala
│ ├── rows.scala
│ ├── ScalaUDF.scala
│ ├── SchemaPruning.scala
│ ├── SelectedField.scala
│ ├── SessionWindow.scala
│ ├── SortOrder.scala
│ ├── SparkPartitionID.scala
│ ├── SpecificInternalRow.scala
│ ├── stringExpressions.scala
│ ├── SubExprEvaluationRuntime.scala
│ ├── subquery.scala
│ ├── TimeWindow.scala
│ ├── TryCast.scala
│ ├── TryEval.scala
│ ├── V2ExpressionUtils.scala
│ ├── windowExpressions.scala
│ └── xml
│ └── xpath.scala
├── identifiers.scala
├── InternalRow.scala
├── JavaTypeInference.scala
├── json
│ ├── CreateJacksonParser.scala
│ ├── JacksonGenerator.scala
│ ├── JacksonParser.scala
│ ├── JacksonUtils.scala
│ ├── JsonFilters.scala
│ ├── JsonInferSchema.scala
│ └── JSONOptions.scala
├── optimizer
│ ├── ComplexTypes.scala
│ ├── CostBasedJoinReorder.scala
│ ├── DecorrelateInnerQuery.scala
│ ├── EliminateResolvedHint.scala
│ ├── expressions.scala
│ ├── finishAnalysis.scala
│ ├── InlineCTE.scala
│ ├── joins.scala
│ ├── LimitPushDownThroughWindow.scala
│ ├── NestedColumnAliasing.scala
│ ├── NormalizeFloatingNumbers.scala
│ ├── objects.scala
│ ├── OptimizeCsvJsonExprs.scala
│ ├── Optimizer.scala
│ ├── PropagateEmptyRelation.scala
│ ├── PullOutGroupingExpressions.scala
│ ├── PushDownLeftSemiAntiJoin.scala
│ ├── PushExtraPredicateThroughJoin.scala
│ ├── RemoveRedundantAggregates.scala
│ ├── ReplaceExceptWithFilter.scala
│ ├── ReplaceNullWithFalseInPredicate.scala
│ ├── RewriteDistinctAggregates.scala
│ ├── SimplifyConditionalsInPredicate.scala
│ ├── StarSchemaDetection.scala
│ ├── subquery.scala
│ ├── UnwrapCastInBinaryComparison.scala
│ └── UpdateFields.scala
├── OrderedFilters.scala
├── package.scala
├── parser
│ ├── AstBuilder.scala
│ ├── LegacyTypeStringParser.scala
│ ├── ParseDriver.scala
│ ├── ParserInterface.scala
│ └── ParserUtils.scala
├── planning
│ ├── package.scala
│ ├── patterns.scala
│ └── QueryPlanner.scala
├── plans
│ ├── DescribeCommandSchema.scala
│ ├── joinTypes.scala
│ ├── logical
│ │ ├── AnalysisHelper.scala
│ │ ├── basicLogicalOperators.scala
│ │ ├── Command.scala
│ │ ├── EventTimeWatermark.scala
│ │ ├── hints.scala
│ │ ├── IgnoreCachedData.scala
│ │ ├── LocalRelation.scala
│ │ ├── LogicalPlan.scala
│ │ ├── LogicalPlanVisitor.scala
│ │ ├── object.scala
│ │ ├── PlanHelper.scala
│ │ ├── pythonLogicalOperators.scala
│ │ ├── QueryPlanConstraints.scala
│ │ ├── ScriptTransformation.scala
│ │ ├── statements.scala
│ │ ├── Statistics.scala
│ │ ├── statsEstimation
│ │ │ ├── AggregateEstimation.scala
│ │ │ ├── BasicStatsPlanVisitor.scala
│ │ │ ├── EstimationUtils.scala
│ │ │ ├── FilterEstimation.scala
│ │ │ ├── JoinEstimation.scala
│ │ │ ├── LogicalPlanStats.scala
│ │ │ ├── ProjectEstimation.scala
│ │ │ ├── SizeInBytesOnlyStatsPlanVisitor.scala
│ │ │ ├── UnionEstimation.scala
│ │ │ └── ValueInterval.scala
│ │ ├── v2AlterTableCommands.scala
│ │ └── v2Commands.scala
│ ├── package.scala
│ ├── physical
│ │ ├── broadcastMode.scala
│ │ └── partitioning.scala
│ └── QueryPlan.scala
├── QueryPlanningTracker.scala
├── rules
│ ├── package.scala
│ ├── QueryExecutionMetering.scala
│ ├── RuleExecutor.scala
│ ├── RuleIdCollection.scala
│ └── Rule.scala
├── ScalaReflection.scala
├── SerializerBuildHelper.scala
├── SQLConfHelper.scala
├── streaming
│ ├── InternalOutputModes.scala
│ ├── StreamingRelationV2.scala
│ ├── WriteToStream.scala
│ └── WriteToStreamStatement.scala
├── StructFilters.scala
├── trees
│ ├── package.scala
│ ├── TreeNode.scala
│ ├── TreePatternBits.scala
│ └── TreePatterns.scala
├── util
│ ├── ArrayBasedMapBuilder.scala
│ ├── ArrayBasedMapData.scala
│ ├── ArrayData.scala
│ ├── BadRecordException.scala
│ ├── CharVarcharUtils.scala
│ ├── CompressionCodecs.scala
│ ├── DataTypeJsonUtils.scala
│ ├── DateFormatter.scala
│ ├── DateTimeFormatterHelper.scala
│ ├── DateTimeUtils.scala
│ ├── FailureSafeParser.scala
│ ├── GenericArrayData.scala
│ ├── HyperLogLogPlusPlusHelper.scala
│ ├── IntervalUtils.scala
│ ├── MapData.scala
│ ├── NumberConverter.scala
│ ├── package.scala
│ ├── ParseMode.scala
│ ├── QuantileSummaries.scala
│ ├── RandomIndicesGenerator.scala
│ ├── RandomUUIDGenerator.scala
│ ├── RebaseDateTime.scala
│ ├── SQLOrderingUtil.scala
│ ├── StringKeyHashMap.scala
│ ├── StringUtils.scala
│ ├── TimestampFormatter.scala
│ ├── TypeUtils.scala
│ └── UnsafeRowUtils.scala
└── WalkedTypePath.scala
22 directories, 291 files