Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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 @@ -19,15 +19,15 @@ package com.nvidia.spark.rapids.iceberg
import scala.reflect.ClassTag
import scala.util.{Failure, Success, Try}

import com.nvidia.spark.rapids.{AppendDataExecMeta, FileFormatChecks, GpuExec, GpuExpression, GpuRowToColumnarExec, GpuScan, IcebergFormatType, RapidsConf, ReadFileOp, ScanMeta, ScanRule, ShimReflectionUtils, StaticInvokeMeta, TargetSize, WriteFileOp}
import com.nvidia.spark.rapids.{AppendDataExecMeta, FileFormatChecks, GpuExec, GpuExpression, GpuRowToColumnarExec, GpuScan, IcebergFormatType, OverwriteByExpressionExecMeta, RapidsConf, ReadFileOp, ScanMeta, ScanRule, ShimReflectionUtils, StaticInvokeMeta, TargetSize, WriteFileOp}
import org.apache.iceberg.spark.functions.{BucketFunction, GpuBucketExpression}
import org.apache.iceberg.spark.source.{GpuSparkBatchQueryScan, GpuSparkWrite}

import org.apache.spark.sql.catalyst.expressions.objects.StaticInvoke
import org.apache.spark.sql.connector.read.Scan
import org.apache.spark.sql.connector.write.Write
import org.apache.spark.sql.execution.SparkPlan
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, GpuAppendDataExec}
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, GpuAppendDataExec, GpuOverwriteByExpressionExec, OverwriteByExpressionExec}

class IcebergProviderImpl extends IcebergProvider {
override def getScans: Map[Class[_ <: Scan], ScanRule[_ <: Scan]] = {
Expand Down Expand Up @@ -124,4 +124,33 @@ class IcebergProviderImpl extends IcebergProvider {
cpuExec.refreshCache,
GpuSparkWrite.convert(cpuExec.write))
}

override def tagForGpu(cpuExec: OverwriteByExpressionExec,
meta: OverwriteByExpressionExecMeta): Unit = {
if (!meta.conf.isIcebergEnabled) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NIT: extract a method?

meta.willNotWorkOnGpu("Iceberg input and output has been disabled. To enable set " +
s"${RapidsConf.ENABLE_ICEBERG} to true")
}

if (!meta.conf.isIcebergWriteEnabled) {
meta.willNotWorkOnGpu("Iceberg output has been disabled. To enable set " +
s"${RapidsConf.ENABLE_ICEBERG_WRITE} to true")
}

FileFormatChecks.tag(meta, cpuExec.query.schema, IcebergFormatType, WriteFileOp)

GpuSparkWrite.tagForGpu(cpuExec.write, meta)
}

override def convertToGpu(cpuExec: OverwriteByExpressionExec,
meta: OverwriteByExpressionExecMeta): GpuExec = {
var child: SparkPlan = meta.childPlans.head.convertIfNeeded()
if (!child.supportsColumnar) {
child = GpuRowToColumnarExec(child, TargetSize(meta.conf.gpuTargetBatchSizeBytes))
}
GpuOverwriteByExpressionExec(
child,
cpuExec.refreshCache,
GpuSparkWrite.convert(cpuExec.write))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,19 @@ class GpuSparkWrite(cpu: SparkWrite) extends GpuWrite with RequiresDistributionA
private[source] val format: FileFormat = FieldUtils.readField(cpu, "format", true)
.asInstanceOf[FileFormat]

override def toBatch: BatchWrite = new GpuBatchAppend(this)
override def toBatch: BatchWrite = {
// Get the CPU BatchWrite to determine the operation type
val cpuBatchWrite = cpu.toBatch

// Check if this is an overwrite operation
val isOverwrite = cpuBatchWrite.getClass.getSimpleName == "OverwriteByFilter"
Comment thread
liurenjie1024 marked this conversation as resolved.
Outdated

if (isOverwrite) {
new GpuOverwriteByFilter(this, cpuBatchWrite)
} else {
new GpuBatchAppend(this)
}
}

override def toStreaming: StreamingWrite = throw new UnsupportedOperationException(
"GpuSparkWrite does not support streaming write")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,12 @@ class GpuBatchAppend(write: GpuSparkWrite) extends GpuBaseBatchWrite(write) {

write.commitOperation(append, s"append with $numFiles new data files")
}
}

class GpuOverwriteByFilter(write: GpuSparkWrite, cpuOverwrite: BatchWrite)
extends GpuBaseBatchWrite(write) {
override def commit(messages: Array[WriterCommitMessage]): Unit = {
// Delegate to CPU OverwriteByFilter's commit method
cpuOverwrite.commit(messages)
}
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@

package com.nvidia.spark.rapids.iceberg

import com.nvidia.spark.rapids.{AppendDataExecMeta, GpuExec, GpuExpression, ScanRule, ShimLoader, ShimLoaderTemp, SparkShimVersion, StaticInvokeMeta, VersionUtils}
import com.nvidia.spark.rapids.{AppendDataExecMeta, GpuExec, GpuExpression, OverwriteByExpressionExecMeta, ScanRule, ShimLoader, ShimLoaderTemp, SparkShimVersion, StaticInvokeMeta, VersionUtils}

import org.apache.spark.sql.catalyst.expressions.objects.StaticInvoke
import org.apache.spark.sql.connector.read.Scan
import org.apache.spark.sql.connector.write.Write
import org.apache.spark.sql.execution.datasources.v2.AppendDataExec
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, OverwriteByExpressionExec}

/** Interfaces to avoid accessing the optional Apache Iceberg jars directly in common code. */
trait IcebergProvider {
Expand All @@ -33,6 +33,8 @@ trait IcebergProvider {
def isSupportedWrite(write: Class[_ <: Write]): Boolean
def tagForGpu(cpuExec: AppendDataExec, meta: AppendDataExecMeta): Unit
def convertToGpu(cpuExec: AppendDataExec, meta: AppendDataExecMeta): GpuExec
def tagForGpu(cpuExec: OverwriteByExpressionExec, meta: OverwriteByExpressionExecMeta): Unit
def convertToGpu(cpuExec: OverwriteByExpressionExec, meta: OverwriteByExpressionExecMeta): GpuExec
}

object IcebergProvider {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.nvidia.spark.rapids

import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, AppendDataExecV1, AtomicCreateTableAsSelectExec, AtomicReplaceTableAsSelectExec, OverwriteByExpressionExecV1}
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, AppendDataExecV1, AtomicCreateTableAsSelectExec, AtomicReplaceTableAsSelectExec, OverwriteByExpressionExec, OverwriteByExpressionExecV1}
import org.apache.spark.sql.rapids.ExternalSource

class AtomicCreateTableAsSelectExecMeta(
Expand Down Expand Up @@ -110,3 +110,19 @@ class AppendDataExecMeta(
ExternalSource.convertToGpu(wrapped, this)
}
}

class OverwriteByExpressionExecMeta(
wrapped: OverwriteByExpressionExec,
conf: RapidsConf,
parent: Option[RapidsMeta[_, _, _]],
rule: DataFromReplacementRule)
extends SparkPlanMeta[OverwriteByExpressionExec](wrapped, conf, parent, rule) {

override def tagPlanForGpu(): Unit = {
ExternalSource.tagForGpu(wrapped, this)
}

override def convertToGpu(): GpuExec = {
ExternalSource.convertToGpu(wrapped, this)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import org.apache.spark.sql.connector.read.Scan
import org.apache.spark.sql.execution.{FileSourceScanExec, SparkPlan}
import org.apache.spark.sql.execution.command.RunnableCommand
import org.apache.spark.sql.execution.datasources.{FileFormat, HadoopFsRelation}
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, AppendDataExecV1, AtomicCreateTableAsSelectExec, AtomicReplaceTableAsSelectExec, OverwriteByExpressionExecV1}
import org.apache.spark.sql.execution.datasources.v2.{AppendDataExec, AppendDataExecV1, AtomicCreateTableAsSelectExec, AtomicReplaceTableAsSelectExec, OverwriteByExpressionExec, OverwriteByExpressionExecV1}
import org.apache.spark.sql.sources.CreatableRelationProvider
import org.apache.spark.util.Utils

Expand Down Expand Up @@ -262,6 +262,30 @@ object ExternalSource extends Logging {
}
}

def tagForGpu(
cpuExec: OverwriteByExpressionExec,
meta: OverwriteByExpressionExecMeta): Unit = {
val writeClass = cpuExec.write.getClass

if (hasIcebergJar && icebergProvider.isSupportedWrite(writeClass)) {
icebergProvider.tagForGpu(cpuExec, meta)
} else {
meta.willNotWorkOnGpu(s"Overwrite data $writeClass is not supported")
}
}

def convertToGpu(
cpuExec: OverwriteByExpressionExec,
meta: OverwriteByExpressionExecMeta): GpuExec = {
val writeClass = cpuExec.write.getClass

if (hasIcebergJar && icebergProvider.isSupportedWrite(writeClass)) {
icebergProvider.convertToGpu(cpuExec, meta)
} else {
throw new IllegalStateException("No GPU conversion")
}
}

def tagForGpu(expr: StaticInvoke, meta: StaticInvokeMeta): Unit = {
if (hasIcebergJar) {
icebergProvider.tagForGpu(expr, meta)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,13 @@ trait Spark350PlusNonDBShims extends Spark340PlusNonDBShims {
GpuTypeShims.additionalCommonOperatorSupportedTypes).nested(),
TypeSig.all),
(p, conf, parent, r) => new AppendDataExecMeta(p, conf, parent, r)),
exec[org.apache.spark.sql.execution.datasources.v2.OverwriteByExpressionExec](
"Overwrite data in a datasource V2 table",
ExecChecks((TypeSig.commonCudfTypes + TypeSig.DECIMAL_128 +
TypeSig.STRUCT + TypeSig.MAP + TypeSig.ARRAY + TypeSig.BINARY +
GpuTypeShims.additionalCommonOperatorSupportedTypes).nested(),
TypeSig.all),
(p, conf, parent, r) => new OverwriteByExpressionExecMeta(p, conf, parent, r)),
InMemoryTableScanUtils.getTableCacheQueryStageExecRule
).map(r => (r.getClassFor.asSubclass(classOf[SparkPlan]), r)).toMap

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,36 @@ case class GpuAppendDataExec(
}
}

/**
* Physical plan node for overwrite into a v2 table.
*
* Overwrites data in a table matched by filters. Rows matching all of the filters will be
* deleted and rows in the output data set are appended.
*/
case class GpuOverwriteByExpressionExec(
inner: SparkPlan,
refreshCache: () => Unit,
write: GpuWrite) extends GpuV2ExistingTableWriteExec {

override def supportsColumnar: Boolean = false

override def query: SparkPlan = {
inner match {
case c2r: GpuColumnarToRowExec => c2r.child
case _ => inner
}
}

override protected def internalDoExecuteColumnar(): RDD[ColumnarBatch] = {
throw new IllegalStateException(
"GpuOverwriteByExpressionExec does not support columnar execution")
}

override protected def withNewChildInternal(newChild: SparkPlan): GpuOverwriteByExpressionExec = {
copy(inner = newChild)
}
}

/**
* This class is derived from [[org.apache.spark.sql.execution.datasources.v2.WritingSparkTask]].
*/
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/350/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/350/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/351/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/351/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/352/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/352/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/353/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/353/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/354/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/354/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/355/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/355/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/356/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/356/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/400/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/400/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/401/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,3.0
AtomicCreateTableAsSelectExec,3.0
AtomicReplaceTableAsSelectExec,3.0
BatchScanExec,3.0
OverwriteByExpressionExec,3.0
OverwriteByExpressionExecV1,3.0
BroadcastExchangeExec,3.0
ShuffleExchangeExec,4.2
Expand Down
1 change: 1 addition & 0 deletions tools/generated_files/401/supportedExecs.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ AppendDataExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,
AtomicCreateTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
AtomicReplaceTableAsSelectExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BatchScanExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
OverwriteByExpressionExecV1,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,NS,S,NS,PS,PS,PS,NS,S,S
BroadcastExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,NS,NS
ShuffleExchangeExec,S,None,Input/Output,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS,S,S
Expand Down