Skip to content

fix: validate CSV expression function options like Spark - #2255

Open
davidlghellin wants to merge 12 commits into
lakehq:mainfrom
davidlghellin:fix/csv_opt
Open

fix: validate CSV expression function options like Spark#2255
davidlghellin wants to merge 12 commits into
lakehq:mainfrom
davidlghellin:fix/csv_opt

Conversation

@davidlghellin

Copy link
Copy Markdown
Contributor

from_csv, to_csv and schema_of_csv silently ignored every option they did not themselves use, so a bad value was accepted where Spark rejects the call: from_csv('1', 'a INT', map('header', 'garbage')) returns {1} in Sail and fails in Spark.

Each from_map was an allowlist — it pulled out the keys it knew and dropped the rest. Spark instead builds CSVOptions eagerly, so every option is parsed as soon as the map is read, even by a function that never uses the resulting value: from_csv rejects a bad quoteAll and to_csv rejects a bad header. Validation now lives in one shared place that every function routes through.

Each behaviour below was measured against Spark 4.1.1 rather than inferred:

  • boolean options, including multiLine, which Spark reads with Scala's String.toBoolean and therefore reports differently to the other seven
  • single-character options, sized with Java's UTF-16 String.length: an emoji is two units and is rejected, ñ is one and is accepted
  • an empty sep, and an empty lineSep, which only the writer rejects
  • numeric and enum options, and DROPMALFORMED, which only from_csv rejects
  • NULL option values, which Spark rejects even under a key it does not know
  • option keys, matched case-insensitively and reported by their canonical name

The three copies of the map lookup had each drifted apart: one compared keys exactly, one guarded a NULL value and another did not, one built its default eagerly. They are now a single find_option, which makes the NULL bug unrepresentable rather than merely guarded.

Ten scenarios are tagged @sail-bug for divergences this does not fix: the parse mode (Sail reads no mode, so it always aborts where Spark's default PERMISSIVE nulls the failed field and keeps the good ones), the extra .trim() on every token, and schema_of_csv ignoring dateFormat and a time-less timestampFormat. They pass against the JVM and fail against Sail, so CI reports an XPASS the day any of them is fixed.

`from_csv`, `to_csv` and `schema_of_csv` silently ignored every option they did
not themselves use, so a bad value was accepted where Spark rejects the call:
`from_csv('1', 'a INT', map('header', 'garbage'))` returns `{1}` in Sail and
fails in Spark.

Each `from_map` was an allowlist — it pulled out the keys it knew and dropped
the rest. Spark instead builds `CSVOptions` eagerly, so every option is parsed
as soon as the map is read, even by a function that never uses the resulting
value: `from_csv` rejects a bad `quoteAll` and `to_csv` rejects a bad `header`.
Validation now lives in one shared place that every function routes through.

Each behaviour below was measured against Spark 4.1.1 rather than inferred:

- boolean options, including `multiLine`, which Spark reads with Scala's
  `String.toBoolean` and therefore reports differently to the other seven
- single-character options, sized with Java's UTF-16 `String.length`: an emoji
  is two units and is rejected, `ñ` is one and is accepted
- an empty `sep`, and an empty `lineSep`, which only the writer rejects
- numeric and enum options, and `DROPMALFORMED`, which only `from_csv` rejects
- NULL option values, which Spark rejects even under a key it does not know
- option keys, matched case-insensitively and reported by their canonical name

The three copies of the map lookup had each drifted apart: one compared keys
exactly, one guarded a NULL value and another did not, one built its default
eagerly. They are now a single `find_option`, which makes the NULL bug
unrepresentable rather than merely guarded.

Ten scenarios are tagged `@sail-bug` for divergences this does not fix: the
parse mode (Sail reads no `mode`, so it always aborts where Spark's default
PERMISSIVE nulls the failed field and keeps the good ones), the extra `.trim()`
on every token, and `schema_of_csv` ignoring `dateFormat` and a time-less
`timestampFormat`. They pass against the JVM and fail against Sail, so CI
reports an XPASS the day any of them is fixed.
Copilot AI review requested due to automatic review settings July 16, 2026 18:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR aligns Sail’s from_csv, to_csv, and schema_of_csv behavior with Spark by eagerly validating CSV option maps (including options the specific function doesn’t otherwise use), and centralizing the option lookup/validation logic to prevent drift across implementations.

Changes:

  • Added a shared CSV options module that provides case-insensitive option lookup and Spark-compatible eager validation.
  • Updated from_csv, to_csv, and schema_of_csv to route through the shared validation/lookup helpers.
  • Added extensive BDD coverage for Spark parity across boolean, char, numeric, enum, separator, and NULL option-value handling.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
python/pysail/tests/spark/function/features/csv_options.feature Adds Spark-parity BDD scenarios covering eager option validation and known divergences (xfail).
crates/sail-function/src/scalar/csv/spark_to_csv.rs Routes to_csv option parsing through shared validate_options / find_option / parse_bool_option.
crates/sail-function/src/scalar/csv/spark_from_csv.rs Routes from_csv option parsing through shared validate_options / find_option.
crates/sail-function/src/scalar/csv/schema_of_csv.rs Adds shared validation and makes option key matching case-insensitive when applying known options.
crates/sail-function/src/scalar/csv/options.rs Introduces shared Spark-like CSV option lookup and eager validation logic.
crates/sail-function/src/scalar/csv/mod.rs Registers the new options module.

Comment on lines +63 to +75
fn entry_columns(map: &MapArray) -> Option<(&StringArray, &StringArray)> {
let keys = map
.entries()
.column_by_name(SAIL_MAP_KEY_FIELD_NAME)?
.as_any()
.downcast_ref::<StringArray>()?;
let values = map
.entries()
.column_by_name(SAIL_MAP_VALUE_FIELD_NAME)?
.as_any()
.downcast_ref::<StringArray>()?;
Some((keys, values))
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch — confirmed: make_scalar_function chains Hint::Pad, so the literal map is expanded to one copy per row and validate_options was walking the same options once per row.

@davidlghellin

Copy link
Copy Markdown
Contributor Author

This is the CSV slice of a systemic gap: from_json/to_json and from_xml/to_xml build their options the same allowlist way and drop bad values just as silently. They are deliberately left out — each family is its own PR, with its own JVM sweep, since the option sets and error messages differ.

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Spark 3.5.7 Test Report

Commit Information

Commit Revision Branch
After e97466f refs/pull/2255/merge
Before b5195fe refs/heads/main

Test Summary

Suite Commit Failed Passed Skipped Warnings Time (s)
doctest-catalog After 10 14 1 6 6.21
Before 10 14 1 6 6.16
doctest-column After 33 2 6.34
Before 33 2 6.07
doctest-dataframe After 14 83 10 3 9.33
Before 14 83 10 3 8.63
doctest-functions After 13 387 9 7 17.69
Before 13 387 9 7 17.72
test-connect After 111 890 170 698 146.50
Before 111 890 170 700 145.22

Test Details

Error Counts
          148 Total
           85 Total Unique
-------- ---- ----------------------------------------------------------------------------------------------------------
           13 PySparkAssertionError: [DIFFERENT_PANDAS_DATAFRAME] DataFrames are not almost equal:
           10 handle add artifacts
            9 DocTestFailure
            6 UnsupportedOperationException: PlanNode::CacheTable
            5 UnsupportedOperationException: function: input_file_name
            4 AssertionError: False is not true
            3 ValueError: Converting to Python dictionary is not supported when duplicate field names are present
            2 AnalysisException: Could not find config namespace "spark"
            2 AnalysisException: Internal error: Function 'approx_percentile_cont' failed to match any signature, errors: Error during planning: Function 'approx_percentile_cont' expects 2 arguments but received 3,...
            2 AnalysisException: No table format found for: orc
            2 AnalysisException: explode should be rewritten during logical plan analysis
            2 AnalysisException: not supported: function exists
            2 AssertionError
            2 AssertionError: 0 not greater than or equal to 1
            2 IllegalArgumentException: expected value at line 1 column 1
            2 IllegalArgumentException: invalid argument: found FUNCTION at 7:15 expected 'DATABASE', 'SCHEMA', 'NAMESPACE', 'OR', 'TEMP', 'TEMPORARY', 'EXTERNAL', 'TABLE', 'GLOBAL', or 'VIEW'
            2 IllegalArgumentException: invalid argument: found RESET at 0:5 expected something else, ';', statement, or end of input
            2 PySparkNotImplementedError: [NOT_IMPLEMENTED] rdd() is not implemented.
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@bjwplt75b8s8lnn9byry0pm4s(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: approx quantile
            2 UnsupportedOperationException: collect metrics
            2 UnsupportedOperationException: freq items
            2 UnsupportedOperationException: function: session_window
            2 UnsupportedOperationException: handle analyze same semantics
            2 UnsupportedOperationException: user defined data type should only exist in a field
            2 UnsupportedOperationException: with watermark
            2 handle artifact statuses
            1 AnalysisException: Table already exists: tbl1
            1 AnalysisException: Temporary View not found: tab2
(+1)        1 AnalysisException: UNION queries have different number of columns: left has 3 columns whereas right has 2 columns
            1 AnalysisException: not supported: qualified function name
(+1)        1 AssertionError: "Database 'memory:09653c0b-4d58-46c0-b5bc-217ae82ab25e' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(+1)        1 AssertionError: "Database 'memory:f899f8ad-5094-4cc7-b141-fa32c9a6ce3f' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
            1 AssertionError: 1 != 0
            1 AssertionError: 4 != 10
            1 AssertionError: AnalysisException not raised
            1 AssertionError: AnalysisException not raised by <lambda>
            1 AssertionError: Exception not raised
            1 AssertionError: Exception not raised by <lambda>
            1 AssertionError: Lists differ: [Row([178 chars]on='<<'), Row(function='<='), Row(function='<=[13267 chars]'~')] != [Row([178 chars]on='<='), Row(function='<=>'), Row(function='<[11284 chars]'~')]
            1 AssertionError: Lists differ: [Row(id=90, name='90'), Row(id=91, name='91'), Ro[176 chars]99')] != [Row(id=15, name='15'), Row(id=16, name='16'), Ro[176 chars]24')]
            1 AssertionError: Lists differ: [Row(ln(id)=0.0, ln(id)=0.0, struct(id, name)=Row(id=[1232 chars]0'))] != [Row(ln(id)=4.31748811353631, ln(id)=4.31748811353631[1312 chars]4'))]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Andy', ag[374 chars]one)] != [Row(age=19, name='Justin'), Row(age=19, name=[374 chars]el')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Justin', [34 chars]one)] != [Row(_corrupt_record=' "age":19}\n', name=None[104 chars]el')]
            1 AssertionError: Row(point='[1.0, 2.0]', pypoint='[3.0, 4.0]') != Row(point='(1.0, 2.0)', pypoint='[3.0, 4.0]')
            1 AssertionError: StorageLevel(False, True, True, False, 1) != StorageLevel(False, False, False, False, 1)
            1 AssertionError: Struc[15 chars]eld('a', NullType(), True), StructField('b', L[51 chars]ue)]) != Struc[15 chars]eld('b', LongType(), True), StructField('c', S[15 chars]ue)])
            1 AssertionError: Struc[30 chars]estampType(), True), StructField('val', IntegerType(), True)]) != Struc[30 chars]estampType(), True), StructField('val', IntegerType(), False)])
            1 AssertionError: Struc[32 chars]e(), False), StructField('b', DoubleType(), Fa[158 chars]ue)]) != Struc[32 chars]e(), True), StructField('b', DoubleType(), Tru[154 chars]ue)])
            1 AssertionError: Struc[40 chars]ue), StructField('val', ArrayType(DoubleType(), False), True)]) != Struc[40 chars]ue), StructField('val', PythonOnlyUDT(), True)])
            1 AssertionError: YearMonthIntervalType(0, 1) != YearMonthIntervalType(0, 0)
            1 AssertionError: [1.0, 2.0] != ExamplePoint(1.0,2.0)
            1 AssertionError: dtype('<M8[us]') != 'datetime64[ns]'
            1 IllegalArgumentException: invalid argument: field not found in input schema: col1
            1 IllegalArgumentException: invalid argument: table does not exist: ObjectName([Identifier("test_table")])
            1 PySparkNotImplementedError: [NOT_IMPLEMENTED] toJSON() is not implemented.
            1 PythonException:  AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 PythonException:  AttributeError: 'list' object has no attribute 'x'
            1 PythonException:  AttributeError: 'list' object has no attribute 'y'
            1 SparkRuntimeException: Cast error: Cannot cast string '1997/02/28 10:30:00' to value of Date32 type
            1 SparkRuntimeException: Invalid argument error: 83.140 is too large to store in a Decimal128 of precision 4. Max is 9.999
            1 SparkRuntimeException: Json error: Not valid JSON: EOF while parsing a list at line 1 column 1
            1 SparkRuntimeException: Json error: Not valid JSON: expected value at line 1 column 2
            1 SparkRuntimeException: Parser error: Error while parsing value '0
            1 SparkRuntimeException: This feature is not implemented: Unsupported CAST from Map("entries": non-null Struct("key": non-null Int32, "value": non-null Int32), unsorted) to Null
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@bjwplt75b8s8lnn9byry0pm4s(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@bjwplt75b8s8lnn9byry0pm4s(plus_one@5u7wzy1x1zf4loxm9n1r277lw(#9)) PART...
            1 UnsupportedOperationException: PlanNode::ClearCache
            1 UnsupportedOperationException: PlanNode::IsCached
            1 UnsupportedOperationException: PlanNode::RecoverPartitions
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Float64 is not implemented
            1 UnsupportedOperationException: apply in pandas with state
            1 UnsupportedOperationException: bucketing for writing listing table format
            1 UnsupportedOperationException: deduplicate within watermark
            1 UnsupportedOperationException: function: input_file_block_length
            1 UnsupportedOperationException: function: input_file_block_start
            1 UnsupportedOperationException: function: map_filter
            1 UnsupportedOperationException: function: map_zip_with
            1 UnsupportedOperationException: function: transform_keys
            1 UnsupportedOperationException: function: transform_values
            1 UnsupportedOperationException: function: zip_with
            1 UnsupportedOperationException: handle analyze semantic hash
            1 UnsupportedOperationException: unknown function: distributed_sequence_id
            1 ValueError: The column label 'id' is not unique.
            1 ValueError: The column label 'struct' is not unique.
(-1)        0 AnalysisException: UNION queries have different number of columns: left has 2 columns whereas right has 3 columns
(-1)        0 AssertionError: "Database 'memory:14360c3e-d1e5-4b71-a502-9217e99a6f20' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 AssertionError: "Database 'memory:74a9e619-9e98-42ae-a4b4-3234d09c715f' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
Passed Tests Diff

(empty)

Failed Tests
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.cacheTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.clearCache
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.createTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.functionExists
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getFunction
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.isCached
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.recoverPartitions
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshByPath
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.uncacheTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.colRegex
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.dropDuplicatesWithinWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.explain
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.hint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.observe
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.randomSplit
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartition
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionByRange
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sameSemantics
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sampleBy
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.storageLevel
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.toJSON
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.withWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.sampleBy
pyspark/sql/functions.py::pyspark.sql.functions.approx_percentile
pyspark/sql/functions.py::pyspark.sql.functions.input_file_block_length
pyspark/sql/functions.py::pyspark.sql.functions.input_file_block_start
pyspark/sql/functions.py::pyspark.sql.functions.input_file_name
pyspark/sql/functions.py::pyspark.sql.functions.map_entries
pyspark/sql/functions.py::pyspark.sql.functions.map_filter
pyspark/sql/functions.py::pyspark.sql.functions.map_zip_with
pyspark/sql/functions.py::pyspark.sql.functions.percentile_approx
pyspark/sql/functions.py::pyspark.sql.functions.regexp_instr
pyspark/sql/functions.py::pyspark.sql.functions.session_window
pyspark/sql/functions.py::pyspark.sql.functions.transform_keys
pyspark/sql/functions.py::pyspark.sql.functions.transform_values
pyspark/sql/functions.py::pyspark.sql.functions.zip_with
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_basic_requests
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_cache_artifact
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_copy_from_local_to_fs
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_collect
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_collect_timestamp
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_column_regexp
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_create_global_temp_view
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_deduplicate_within_watermark_in_batch
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_describe
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_hint
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_join_hint
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_json
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_multi_paths
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_observe
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_orc
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_random_split
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_same_semantics
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_schema
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_semantic_hash
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_simple_udt_from_read
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_sql_with_command
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_approx_quantile
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_freq_items
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_sample_by
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_streaming_local_relation
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_tail
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_to
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_with_local_list
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_with_local_ndarray
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_write_operations
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectSessionTests::test_error_stack_trace
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_column_arithmetic_ops
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_decimal
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_distributed_sequence_id
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_aggregation_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_collection_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_date_ts_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_generator_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_lambda_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_map_collection_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_math_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_normal_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_string_functions_multi_args
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_time_window_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_udf
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_udtf
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_window_functions
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_createDataFrame_duplicate_field_names
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_pandas_self_destruct
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_toPandas_duplicate_field_names
pyspark/sql/tests/connect/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_function_exists
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_get_function
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_list_functions
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_refresh_table
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_table_cache
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_cache_dataframe
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_cache_table
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_duplicate_field_names
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_extended_hint_types
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_freqItems
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_generic_hints
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_input_files
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_to
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_to_pandas
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_checking_csv_header
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_encoding_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_ignore_column_of_all_nulls
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_jdbc
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_jdbc_format
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_linesep_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_multiline_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_read_multiple_orc_file
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_approxQuantile
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_functions_broadcast
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_input_file_name_udf
pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py::GroupedApplyInPandasTests::test_grouped_over_window
pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py::GroupedApplyInPandasTests::test_grouped_over_window_with_key
pyspark/sql/tests/connect/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_python_worker_random_failure
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_scalar_iter_udf_init
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_check_config
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_invalid_length
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_mixed
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_simple
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_shrinking_window
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_sliding_window
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_bucketed_write
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_save_and_load
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_save_and_load_builder
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterV2ParityTests::test_table_overwrite
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_cast_to_string_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_cast_to_udt_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_complex_nested_udt_in_df
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_negative_decimal
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_parquet_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_udf_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_udt_with_none
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_yearmonth_interval_type
pyspark/sql/tests/connect/test_parity_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_udtf.py::ArrowUDTFParityTests::test_udtf_arrow_sql_conf
pyspark/sql/tests/connect/test_utils.py::ConnectUtilsTests::test_assert_approx_equal_decimaltype_custom_rtol_pass
pyspark/sql/tests/connect/test_utils.py::ConnectUtilsTests::test_assert_equal_nested_struct_str_duplicate

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Spark 4.1.1 Test Report

Commit Information

Commit Revision Branch
After e97466f refs/pull/2255/merge
Before b5195fe refs/heads/main

Test Summary

Suite Commit Failed Passed Skipped Warnings Time (s)
doctest-catalog After 10 14 1 6.81
Before 10 14 1 6.08
doctest-column After 36 6.87
Before 36 6.03
doctest-dataframe After 27 92 3 2 10.91
Before 27 92 3 2 9.60
doctest-functions After 66 419 10 5 28.15
Before 66 419 10 5 24.67
test-connect After 647 1861 292 409 267.76
Before 647 1861 292 408 231.12

Test Details

Error Counts
          750 Total
          280 Total Unique
-------- ---- ----------------------------------------------------------------------------------------------------------
           60 IllegalArgumentException: missing argument: Python UDF output type
           50 UnsupportedOperationException: unresolved table valued function
           28 DocTestFailure
           22 UnsupportedOperationException: handle add artifacts
           20 AssertionError: 1 != 0 : dict_keys([])
           20 AssertionError: Exception not raised
           14 UnsupportedOperationException: unknown function: kll_sketch_agg_bigint
           12 PySparkAssertionError: [DIFFERENT_ROWS] Results do not match: ( 100.00000 % )
           10 PySparkAssertionError: [DIFFERENT_PANDAS_DATAFRAME] DataFrames are not almost equal:
           10 SparkRuntimeException: Python error: [test::partitions] NotImplementedError: 
           10 UnsupportedOperationException: unsupported subquery type
           10 UnsupportedOperationException: with watermark
            9 AssertionError: 3 != 0 : []
            9 IllegalArgumentException: expected value at line 1 column 1
            9 IllegalArgumentException: invalid argument: found range at 40:45 expected '->', '.', '(', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|'...
            9 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#1", data_type: Int64, nullable: true, metadata: {"SPARK::metadata::json": "{}"} },...
            9 UnsupportedOperationException: collect metrics
            8 AssertionError
            8 UnsupportedOperationException: unknown function: kll_sketch_agg_double
            8 UnsupportedOperationException: unknown function: kll_sketch_agg_float
            7 UnsupportedOperationException: function: input_file_name
            7 UnsupportedOperationException: user defined data type should only exist in a field
            6 AssertionError: 1 != 0
            6 AssertionError: False is not true
            6 IllegalArgumentException: data did not match any variant of untagged enum JsonDataType
            6 PythonException:  ValueError: invalid literal for int() with base 10: 'x'
            6 UnsupportedOperationException: PlanNode::CacheTable
            6 UnsupportedOperationException: direct shuffle partition ID expression
            5 AssertionError: `query_context_type` is required when QueryContext exists. QueryContext: [].
            5 IllegalArgumentException: invalid argument: output mode not supported in group map
            5 PythonException:  TypeError: argument of type 'VariantVal' is not iterable
            4 AnalysisException: Temporary View not found: t2
            4 AssertionError: 3 != 0 : dict_keys([])
            4 AssertionError: unexpectedly None
            4 UnsupportedOperationException: approx quantile
            4 UnsupportedOperationException: freq items
            4 UnsupportedOperationException: transpose
            4 clone session
            3 AnalysisException: Invalid Python user-defined table function return type. Expect a struct type, but got Int32.
            3 AssertionError: 0 not greater than or equal to 1
            3 AssertionError: DayTimeIntervalType(0, 3) != DayTimeIntervalType(1, 3)
            3 AssertionError: Struc[49 chars]valType(0, 3), True), StructField('name', StringType(), True)]) != Struc[49 chars]valType(1, 3), True), StructField('name', StringType(), True)])
            3 IllegalArgumentException: invalid argument: found PARTITION at 281:290 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            3 IllegalArgumentException: invalid argument: found PARTITION at 295:304 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            3 IllegalArgumentException: invalid argument: found PARTITION at 59:68 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            3 IllegalArgumentException: invalid argument: found WITH at 171:175 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            3 IllegalArgumentException: invalid argument: found WITH at 279:283 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            3 PythonException: 
            3 PythonException:  Exception: self._partition_col was 1 but the row value was 2 PySparkRuntimeError: [UDTF_EXEC_ERROR] User defined table function encountered an error in the 'eval' method: self._parti...
            3 PythonException:  PySparkRuntimeError: [UDTF_CONSTRUCTOR_INVALID_NO_ANALYZE_METHOD] Failed to evaluate the user-defined table function '' because its constructor is invalid: the function does not impl...
            3 PythonException:  TypeError: int() argument must be a string, a bytes-like object or a real number, not 'dict'
            3 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: Int64 }, Column { relation: None, name: "#0" })
            3 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#2", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t" ...
            3 UnsupportedOperationException: cached remote relation
            3 UnsupportedOperationException: table argument options in subquery expression
            3 UnsupportedOperationException: unknown function: distributed_sequence_id
            3 ValueError: Converting to Python dictionary is not supported when duplicate field names are present
            2 AnalysisException: Internal error: Function 'approx_percentile_cont' failed to match any signature, errors: Error during planning: Function 'approx_percentile_cont' expects 2 arguments but received 3,...
            2 AnalysisException: No table format found for: orc
            2 AnalysisException: Spark `variant_get` function: path must be a constant string
(+1)        2 AnalysisException: Write failed for partition 1: External error: Python error: [TestJsonWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
            2 AnalysisException: ambiguous attribute: ObjectName([Identifier("id")])
            2 AnalysisException: element_at expects List or Map type as first argument, got Null
            2 AnalysisException: explode should be rewritten during logical plan analysis
            2 AnalysisException: not supported: function exists
            2 AssertionError: AnalysisException not raised
            2 AssertionError: AnalysisException not raised by <lambda>
            2 AssertionError: PythonException not raised
            2 AssertionError: StructType([StructField('value', BinaryTy[55 chars]se)]) != VariantType()
            2 IllegalArgumentException: invalid argument: found FUNCTION at 7:15 expected 'DATABASE', 'SCHEMA', 'NAMESPACE', 'OR', 'TEMP', 'TEMPORARY', 'EXTERNAL', 'TABLE', 'GLOBAL', or 'VIEW'
            2 IllegalArgumentException: invalid argument: found PARTITION at 97:106 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!='...
            2 IllegalArgumentException: invalid argument: initial input not supported in group map
            2 IllegalArgumentException: invalid argument: missing data source format
            2 PythonException:  AssertionError: assert None is not None
            2 PythonException:  AttributeError: 'NoneType' object has no attribute 'cpus'
            2 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (int64) with name 'decimal_result' to Arrow Array (decimal128(10, 2)).
            2 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (int8) with name 'None' to Arrow Array (decimal128(10, 0)).
            2 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (object) with name 'None' to Arrow Array (int32).
            2 SparkRuntimeException: Error during planning: Correlated scalar subquery must be aggregated to return at most one row
            2 SparkRuntimeException: Python error: [TestDataSource::partitions] NotImplementedError: 
            2 SparkRuntimeException: Python error: [my-json::partitions] AttributeError: 'pyarrow.lib.Schema' object has no attribute 'fieldNames'
            2 TypeError: 'NoneType' object is not iterable
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@42nxldcwlikpshede68hki4hd(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@9iphoaj9v2becke5sqyqokbpc(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: mean_udf@56f23o3q96gbgh8wooin3wlez(#3) PARTITION BY [#2] ORDER BY [#3 ASC ...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: mean_udf@6blgh7qrs537jqp40qew4vlxb(#3) PARTITION BY [#2] ORDER BY [#3 ASC ...
            2 UnsupportedOperationException: CLUSTER BY for write
            2 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t1"...
(-1)        2 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: List(Field { data_type: Float64 }), nullable: true, metadata: {"SAI...
            2 UnsupportedOperationException: Physical plan does not support logical expression Wildcard { qualifier: None, options: WildcardOptions { ilike: None, exclude: None, except: None, replace: None, rename:...
            2 UnsupportedOperationException: create resource profile command
            2 UnsupportedOperationException: function: st_setsrid
            2 UnsupportedOperationException: function: st_srid
            2 UnsupportedOperationException: function: try_make_interval
            2 UnsupportedOperationException: handle analyze same semantics
            2 UnsupportedOperationException: named window function arguments
            2 UnsupportedOperationException: unknown function: try_to_date
            2 UnsupportedOperationException: wildcard with plan ID
            2 handle artifact statuses
            1 AnalysisException: Could not find config namespace "mapred"
            1 AnalysisException: Could not find config namespace "spark"
            1 AnalysisException: Database not found: testcat
            1 AnalysisException: Failed to parse date '02-29' with format '%m-%d': input is not enough for unique date and time
            1 AnalysisException: Failed to parse schema '{"fields":[{"metadata":{},"name":"a","nullable":true,"type":"long"}],"type":"struct"}': error in SQL parser: found { at 7:8 expected identifier, or '>'
            1 AnalysisException: No table format found for: xml
            1 AnalysisException: Spark `try_variant_get` function: path must be a constant string
            1 AnalysisException: Table already exists: tbl1
            1 AnalysisException: Temporary View not found: tab2
            1 AnalysisException: UNION queries have different number of columns: left has 3 columns whereas right has 2 columns
            1 AnalysisException: Write failed for partition 0: External error: Python error: [TestArrowWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 AnalysisException: Write failed for partition 0: External error: Python error: [TestJsonWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 AnalysisException: ambiguous attribute: ObjectName([Identifier("b")])
            1 AnalysisException: ambiguous attribute: ObjectName([Identifier("i")])
            1 AnalysisException: array_except received incompatible types: List(non-null Int32), List(Int32)
            1 AnalysisException: attribute ObjectName([Identifier("t")]) is missing from the schema: cannot resolve attribute
            1 AnalysisException: attribute ObjectName([Identifier("x")]) is missing from the schema: cannot resolve attribute
            1 AnalysisException: foobar
            1 AnalysisException: join condition should not be empty
            1 AnalysisException: not supported: qualified function name
            1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#0" }), Literal(Int32(123), None)]
(+1)        1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(6355083396916630630), None)]
(+1)        1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(7626147624006295250), None)]
            1 AnalysisException: too big
            1 AnalysisException: unsupported extension node for streaming: PythonWriteNode { input: Projection(Projection { expr: [Column(Column { relation: None, name: "_marker" }), Column(Column { relation: None,...
            1 AnalysisException: zero values expected: [Literal(Int32(123), None)]
            1 AssertionError: "'path' is not specified." does not match "missing path in listing table options"
            1 AssertionError: "ARROW_TYPE_MISMATCH.*SQL_MAP_ARROW_ITER_UDF" does not match "Struct field count mismatch: expected 1 fields but found 2 fields"
            1 AssertionError: "DATA_SOURCE_EXTRANEOUS_FILTERS" does not match "Python error: [test::partitions] AssertionError: assert False
            1 AssertionError: "DATA_SOURCE_PUSHDOWN_DISABLED" does not match "Python error: [<reader>::read] AssertionError: assert False
(+1)        1 AssertionError: "Database 'memory:572e2e65-2729-4e8c-950a-05bd0c58860b' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(+1)        1 AssertionError: "Database 'memory:bd5eb0a3-4941-4261-8dfb-e975c2ffae9f' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
            1 AssertionError: "Invalid return type" does not match " AttributeError: 'Series' object has no attribute 'columns'
            1 AssertionError: "Python worker process terminated due to idle timeout \(timeout: 1 seconds\)" does not match " PySparkRuntimeError: [UDTF_INVALID_OUTPUT_ROW_TYPE] The type of an individual output row ...
            1 AssertionError: "UNRESOLVED_COLUMN.WITH_SUGGESTION" does not match "attribute ObjectName([Identifier("b")]) is missing from the schema: cannot resolve attribute"
            1 AssertionError: "is null" does not match " ArrowException: Invalid argument error: Column 'a' is declared as non-nullable but contains null values
            1 AssertionError: "requirement failed: Cogroup keys must have same size: 2 != 1" does not match "invalid argument: child plan grouping expressions must have the same length"
            1 AssertionError: '+------------------+\n|from_xml(a, a INT)|\n+--------[75 chars]-+\n' != '+-----------+\n|from_xml(a)|\n+-----------+\n|       [33 chars]-+\n'
            1 AssertionError: '+---[1064 chars]---------------------------------+\nonly showing top 20 rows\n' != '+---[1064 chars]---------------------------------+\nonly showing top 20 rows'
            1 AssertionError: '+---[23 chars]---+-----+\n|  1|    1|\n+---+-----+\nonly showing top 1 row' != '+---[23 chars]---+-----+\n|  1|    1|\n+---+-----+\nonly showing top 1 row\n'
            1 AssertionError: 'INVALID_CLONE_SESSION_REQUEST.TARGET_SESSION_ID_FORMAT' not found in '<_InactiveRpcError of RPC that terminated with:\n\tstatus = StatusCode.UNIMPLEMENTED\n\tdetails = "clone session"...
            1 AssertionError: 'ST_INVALID_SRID_VALUE' != None : Expected error class was 'ST_INVALID_SRID_VALUE', got 'None'.
            1 AssertionError: 'UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY.UNSUPPORTED_IN_EXISTS_SUBQUERY' != None : Expected error class was 'UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY.UNSUPPORTED_IN_EXISTS_SUBQUERY', ...
            1 AssertionError: 'a NULL, b BOOLEAN, c BINARY' != 'a VOID,b BOOLEAN,c BINARY'
            1 AssertionError: 'bytearray' != 'bytes'
            1 AssertionError: 0 not greater than 0
            1 AssertionError: 0.6363787615254752 != 0.9531453492357947 : Column<'rand(1)'>
            1 AssertionError: 4 != 10
            1 AssertionError: 6 != 0 : []
            1 AssertionError: Exception not raised by <lambda>
            1 AssertionError: Lists differ: [Row([22 chars]e(2018, 12, 31, 16, 0), aware=datetime.datetim[16 chars] 0))] != [Row([22 chars]e(2019, 1, 1, 0, 0), aware=datetime.datetime(2[13 chars] 0))]
            1 AssertionError: Lists differ: [Row([259 chars]681098, ln(id)=1.0986122886681098, struct(id, [975 chars]0'))] != [Row([259 chars]681096, ln(id)=1.0986122886681096, struct(id, [975 chars]0'))]
            1 AssertionError: Lists differ: [Row([47 chars] 3, 6: 3}), Row(map={4: 3, 6: 3}), Row(map={4: 5, 6: 3})] != [Row([47 chars] 3, 6: 3, 5: 5}), Row(map={4: 3, 6: 3}), Row(map={4: 3, 6: 3})]
            1 AssertionError: Lists differ: [Row([719 chars]on='array'), Row(function='array_agg'), Row(fu[12726 chars]'~')] != [Row([719 chars]on='approx_top_k'), Row(function='approx_top_k[13765 chars]'~')]
            1 AssertionError: Lists differ: [Row(id=90, name='90'), Row(id=91, name='91'), Ro[176 chars]99')] != [Row(id=15, name='15'), Row(id=16, name='16'), Ro[176 chars]24')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Andy', ag[374 chars]one)] != [Row(age=19, name='Justin'), Row(age=19, name=[374 chars]el')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Justin', [34 chars]one)] != [Row(_corrupt_record=' "age":19}\n', name=None[104 chars]el')]
            1 AssertionError: Row(name='Bob', age=27, height=66.0) != Row(name='Alice', age=10, height=10.0)
            1 AssertionError: Row(point='[1.0, 2.0]', pypoint='[3.0, 4.0]') != Row(point='(1.0, 2.0)', pypoint='[3.0, 4.0]')
            1 AssertionError: SparkConnectGrpcException not raised
            1 AssertionError: StorageLevel(False, True, True, False, 1) != StorageLevel(False, False, False, False, 1)
            1 AssertionError: Struc[15 chars]eld('a', NullType(), True), StructField('b', L[51 chars]ue)]) != Struc[15 chars]eld('b', LongType(), True), StructField('c', S[15 chars]ue)])
            1 AssertionError: Struc[23 chars]st', StructType([StructField('value', BinaryTy[194 chars]ue)]) != Struc[23 chars]st', VariantType(), True), StructField('last',[18 chars]ue)])
            1 AssertionError: Struc[30 chars]estampType(), True), StructField('val', IntegerType(), True)]) != Struc[30 chars]estampType(), True), StructField('val', IntegerType(), False)])
            1 AssertionError: Struc[32 chars]e(), False), StructField('b', DoubleType(), Fa[158 chars]ue)]) != Struc[32 chars]e(), True), StructField('b', DoubleType(), Tru[154 chars]ue)])
            1 AssertionError: Struc[40 chars]ue), StructField('val', ArrayType(DoubleType(), False), True)]) != Struc[40 chars]ue), StructField('val', PythonOnlyUDT(), True)])
            1 AssertionError: Struc[99 chars]uct(n, l), x_4)), x_3)))', ArrayType(StructTyp[93 chars]ue)]) != Struc[99 chars]uct(namedlambdavariable() AS n, namedlambdavar[181 chars]se)])
            1 AssertionError: True is not false : Default URL is not secure
            1 AssertionError: VariantType() != StructType([StructField('value', BinaryTy[55 chars]se)])
            1 AssertionError: YearMonthIntervalType(0, 1) != YearMonthIntervalType(0, 0)
            1 AssertionError: [1.0, 2.0] != ExamplePoint(1.0,2.0)
            1 AttributeError: 'NoneType' object has no attribute 'extract_graph'
            1 AttributeError: 'NoneType' object has no attribute 'toText'
            1 DateTimeException: Error parsing timestamp from '082017' using format '%m%Y': input is not enough for unique date and time
            1 DateTimeException: Error parsing timestamp from '2014-31-12' using format '%Y-%d-%pa': input contains invalid characters
            1 FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/work/sail/sail/.venvs/test-spark.spark-4.1.1/lib/python3.11/site-packages/pyspark/data/artifact-tests/junitLargeJar.jar'
(+1)        1 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpcab02o2m'
            1 IllegalArgumentException: invalid argument: empty data type
            1 IllegalArgumentException: invalid argument: expecting column to drop
            1 IllegalArgumentException: invalid argument: field not found in input schema: col1
            1 IllegalArgumentException: invalid argument: found PARTITION at 100:109 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 103:112 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 108:117 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 111:120 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 117:126 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 118:127 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 53:62 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found PARTITION at 69:78 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found PARTITION at 90:99 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found WITH at 115:119 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            1 IllegalArgumentException: invalid argument: found abc at 0:3 expected something else, ';', statement, or end of input
            1 IllegalArgumentException: invalid argument: found collate at 13:20 expected string, '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|',...
            1 IllegalArgumentException: invalid argument: grouping sets with grouping expressions
            1 IllegalArgumentException: invalid argument: invalid user-defined window function type
            1 IllegalArgumentException: invalid argument: table does not exist: ObjectName([Identifier("test_table")])
            1 IndexError: list index out of range
(+1)        1 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (7439c9cc-3f91-4bbf-aec9-c45dc49c3ed4 != b6ea29e1-937c-4250-88a2-c...
(+1)        1 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (bd55b8b6-00db-4dd2-b779-0c423d5faaf4 != 9ba5c712-db17-4098-9ab3-3...
            1 PySparkNotImplementedError: [NOT_IMPLEMENTED] Invalid return type with grouped aggregate Pandas UDFs: StructType([StructField('value', BinaryType(), False), StructField('metadata', BinaryType(), False...
            1 PySparkNotImplementedError: [NOT_IMPLEMENTED] toJSON() is not implemented.
            1 PythonException:  AssertionError: Undefined error message parameter for error class: UDTF_ARROW_TYPE_CONVERSION_ERROR. Parameters: {'data': "[('x',)]", 'schema': 'struct<a:int>', 'arrow_schema': 'stru...
            1 PythonException:  AssertionError: Undefined error message parameter for error class: UDTF_ARROW_TYPE_CONVERSION_ERROR. Parameters: {'data': '[(ExamplePoint(10.0,20.0),)]', 'schema': 'struct<point:arra...
            1 PythonException:  AssertionError: Undefined error message parameter for error class: UDTF_ARROW_TYPE_CONVERSION_ERROR. Parameters: {'data': '[(ExamplePoint(10.0,20.0),)]', 'schema': 'struct<udt:array<...
            1 PythonException:  AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 PythonException:  AttributeError: 'list' object has no attribute 'x'
            1 PythonException:  AttributeError: 'list' object has no attribute 'y'
            1 PythonException:  KeyError: 'v'
            1 PythonException:  PySparkRuntimeError: [UDTF_ARROW_TYPE_CAST_ERROR] Cannot convert the output value of the column 'point' with type 'object' to the specified return type of the column: 'list<item: dou...
            1 PythonException:  PySparkRuntimeError: [UDTF_ARROW_TYPE_CAST_ERROR] Cannot convert the output value of the column 'udt' with type 'object' to the specified return type of the column: 'list<item: doubl...
            1 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (int64) with name 'None' to Arrow Array (decimal128(10, 2)).
            1 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (int8) with name 'int8' to Arrow Array (decimal128(10, 0)).
            1 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (int8) with name 'value' to Arrow Array (decimal128(10, 0)).
            1 PythonException:  PySparkValueError: Exception thrown when converting pandas.Series (object) with name 'value' to Arrow Array (int32).
            1 PythonException:  TypeError: 'str' object cannot be interpreted as an integer
            1 PythonException:  TypeError: cannot unpack non-iterable NoneType object
            1 PythonException:  ValueError: invalid literal for int() with base 10: 'z'
            1 SparkRuntimeException: Exception: path is not specified
            1 SparkRuntimeException: Execution error: Schema field count mismatch: expected 1 fields, got 2
            1 SparkRuntimeException: Internal error: Cannot run range queries on datatype: Time64(µs).
            1 SparkRuntimeException: Invalid argument error: Column '#3' is declared as non-nullable but contains null values
            1 SparkRuntimeException: Invalid argument error: column types must match schema types, expected List(Struct("value": non-null Binary, "metadata": non-null Binary, metadata: {"variant": "true"}), metadat...
            1 SparkRuntimeException: Json error: Not valid JSON: EOF while parsing a list at line 1 column 1
            1 SparkRuntimeException: Json error: Not valid JSON: expected value at line 1 column 2
            1 SparkRuntimeException: No field named t1."#0". Did you mean '#2'?.
            1 SparkRuntimeException: Parser error: Error while parsing value '0
            1 SparkRuntimeException: Parser error: Invalid timezone "+7:30": failed to parse timezone
            1 SparkRuntimeException: Python error: [TestDataSource::writer] PySparkNotImplementedError: [NOT_IMPLEMENTED] writer is not implemented.
            1 SparkRuntimeException: Python error: [my-json::writer] AttributeError: 'pyarrow.lib.Schema' object has no attribute 'fieldNames'
            1 SparkRuntimeException: Python error: [test::partitions] AssertionError: assert False
            1 SparkRuntimeException: Python error: [testdatasourcepyarrow::partitions] PySparkNotImplementedError: [NOT_IMPLEMENTED] reader is not implemented.
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: List { data_type: Int32, nullable: true }. Use PyArrow Schema for complex types.
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Struct { fields: Fields([Field { name: "a", data_type: Int32, nullable: true, metadata: [] }, Field { name: "b", data_type: Int32, ...
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Struct { fields: Fields([Field { name: "y", data_type: Int32, nullable: true, metadata: [] }]) }. Use PyArrow Schema for complex ty...
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Variant. Use PyArrow Schema for complex types.
            1 SparkRuntimeException: This feature is not implemented: Data type Decimal128(38, 18) not supported in row-based write path. Use DataSourceArrowWriter for full type support.
            1 SparkRuntimeException: This feature is not implemented: Unsupported CAST from Map("entries": non-null Struct("key": non-null Int32, "value": non-null Int32), unsorted) to Null
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@42nxldcwlikpshede68hki4hd(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@42nxldcwlikpshede68hki4hd(plus_one@37pn5wx7sqmlbvfr2ebnbd6a0(#9)) PART...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@9iphoaj9v2becke5sqyqokbpc(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@9iphoaj9v2becke5sqyqokbpc(plus_one@8f9fwaevnfdj031wzemmraerh(#9)) PART...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@1h5j8ehtp238nduw020pdafyp(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@1z16p7g8orl8a73u97f1704fz(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@5lgtucrfqmvjc9hq9885z0x6d(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@bqv855sdysxo4klnvnyi7f0v3(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: LATERAL table function with criteria
(+1)        1 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: List(Field { data_type: Float64 }), nullable: true, metadata: {"SPA...
            1 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#1", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t1"...
            1 UnsupportedOperationException: Physical plan does not support logical expression ScalarSubquery(<subquery>)
            1 UnsupportedOperationException: Physical plan does not support undecorrelated Subquery
            1 UnsupportedOperationException: PlanNode::ClearCache
            1 UnsupportedOperationException: PlanNode::IsCached
            1 UnsupportedOperationException: PlanNode::RecoverPartitions
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Float64 is not implemented
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Struct("name": Utf8, metadata: {"SPARK::metadata::json": "{}"}, "value": Int64, metadata: {"SPARK::metadata::json": "{}"}) is...
            1 UnsupportedOperationException: Unsupported CAST from Struct("c": Int64, metadata: {"SPARK::metadata::json": "{}"}, "d": Float64, metadata: {"SPARK::metadata::json": "{}"}) to Struct("a": Int64, metada...
            1 UnsupportedOperationException: Unsupported CAST from Struct("value": non-null Binary, "metadata": non-null Binary) to Int32
            1 UnsupportedOperationException: apply in pandas with state
            1 UnsupportedOperationException: as of join
            1 UnsupportedOperationException: bucketing for writing listing table format
            1 UnsupportedOperationException: cast Time64(Nanosecond) to Spark data type
            1 UnsupportedOperationException: deduplicate within watermark
            1 UnsupportedOperationException: function: collate
            1 UnsupportedOperationException: function: collation
            1 UnsupportedOperationException: function: input_file_block_length
            1 UnsupportedOperationException: function: input_file_block_start
            1 UnsupportedOperationException: function: java_method
            1 UnsupportedOperationException: function: map_filter
            1 UnsupportedOperationException: function: map_zip_with
            1 UnsupportedOperationException: function: reflect
            1 UnsupportedOperationException: function: schema_of_xml
            1 UnsupportedOperationException: function: session_window
            1 UnsupportedOperationException: function: transform_keys
            1 UnsupportedOperationException: function: transform_values
            1 UnsupportedOperationException: function: try_reflect
            1 UnsupportedOperationException: function: zip_with
            1 UnsupportedOperationException: handle analyze semantic hash
            1 UnsupportedOperationException: unknown function: RANGE
            1 UnsupportedOperationException: unknown function: unwrap_udt
            1 ValueError: The column label 'id' is not unique.
            1 ValueError: The column label 'struct' is not unique.
            1 handle add artifacts
(-1)        0 AnalysisException: Write failed for partition 2: External error: Python error: [TestJsonWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
(-1)        0 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(30003494678750975), None)]
(-1)        0 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(8242261192211071229), None)]
(-1)        0 AssertionError: "Database 'memory:25206eac-6c4a-4195-9da2-415988c8f5f0' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 AssertionError: "Database 'memory:48b8c2d6-4381-4e6a-990c-1b715ef17a6e' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpd3tfxq8_'
(-1)        0 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (65b23f6b-8264-4245-8b1a-caa8ff7ee7d4 != a92bb821-5d76-43ca-8234-0...
(-1)        0 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (69486240-6b80-4742-aa97-cc423562ff85 != e3e9e38a-d3f4-439c-89a0-4...
Passed Tests Diff

(empty)

Failed Tests
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.cacheTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.clearCache
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.createTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.functionExists
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getFunction
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.isCached
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.recoverPartitions
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshByPath
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.uncacheTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame._joinAsOf
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.approxQuantile
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.asTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.cache
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.colRegex
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.dropDuplicatesWithinWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.explain
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.freqItems
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.groupingSets
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.hint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.lateralJoin
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.localCheckpoint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.observe
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.pandas_api
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.persist
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.randomSplit
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionById
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionByRange
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sameSemantics
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sampleBy
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.storageLevel
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.toJSON
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.transpose
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.withWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.approxQuantile
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.freqItems
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.sampleBy
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.approx_count_distinct
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.approx_percentile
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.collation
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.corr
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.cosh
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.degrees
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.exp
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.from_json
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.from_xml
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.get_json_object
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.hash
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.histogram_numeric
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.inline_outer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_block_length
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_block_start
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_name
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.java_method
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.log2
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.map_filter
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.map_zip_with
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.percentile_approx
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.reflect
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.schema_of_csv
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.schema_of_xml
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.session_window
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.shuffle
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.sin
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_setsrid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_srid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tan
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.transform_keys
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.transform_values
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_add
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_avg
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_make_interval
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_make_timestamp
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_parse_url
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_reflect
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_subtract
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_to_date
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_variant_get
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.udf
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.unwrap_udt
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.uuid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.variant_get
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.window
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.xxhash64
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.zip_with
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_createDataFrame_pandas_duplicate_field_names
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_pandas_self_destruct
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_toPandas_duplicate_field_names
pyspark/sql/tests/connect/arrow/test_parity_arrow_cogrouped_map.py::CogroupedMapInArrowParityTests::test_cogroup_apply_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_iter_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_map_in_arrow_with_barrier_mode
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_map_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_nested_extraneous_field
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_nullability_widen
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_top_level_wrong_order
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_binary_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_binary_type_in_nested_structures
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_complex_variant_input
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf.py::ArrowPythonUDFParityTests::test_arrow_udf_basic_with_return_type_string
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf.py::ArrowPythonUDFParityTests::test_arrow_udf_wrong_arg
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_grouped_agg.py::GroupedAggArrowPythonUDFParityTests::test_grouped_agg_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_grouped_agg.py::GroupedAggArrowPythonUDFParityTests::test_input_output_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_arrow_udf_output_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_scalar_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_scalar_iter_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_bounded_mixed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_bounded_simple
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_complex_window_collect_as_map
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_kwargs
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_named_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_named_arguments_negative
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_shrinking_window
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_sliding_window
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_time_min
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_window_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_error_mismatched_schema
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_lateral_join_disallowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_lateral_join_with_table_argument_disallowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_by_all_columns
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_by_single_partition_multiple_input_partitions
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_column_removal
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_argument_with_regular_udtf_lateral_join_allowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_partition_by_multiple_columns
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_partition_by_single_column
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_type_coercion_string_to_int
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_empty_column_result
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_named_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_and_order_by
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_and_terminate
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_empty_input_batch
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_null_values
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_skip_rest_of_input
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_scalar_first_table_second
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_and_struct_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_and_scalar
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_basic
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_in_middle
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_then_lateral_join_allowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_return_type_coercion_overflow
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_artifacts_cannot_be_overwritten
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_cache_artifact
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_copy_from_local_to_fs
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_single_chunked_and_chunked_artifact
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_artifacts_cannot_be_overwritten
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_fewer_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_more_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_no_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_no_state_no_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_with_null
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_python_worker_random_failure
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_composite_output_schema
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_schema_evolution_fails
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_batch_query
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_batch_query_initial_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_chaining_ops
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_in_pandas_composite_type
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_large_values
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_non_contiguous_grouping_cols
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_non_contiguous_grouping_cols_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_proc_timer
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_query_restarts
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_bytes_limit
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_wmark_and_non_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_list_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_map_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_map_state_metadata_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state_with_extra_transformation
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state_with_timers
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state_large_list
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_map_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_map_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_non_exist_value_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_restart_with_multiple_rows_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_value_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_value_state_ttl_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_composite_output_schema
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_schema_evolution_fails
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_batch_query
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_batch_query_initial_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_chaining_ops
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_in_pandas_composite_type
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_large_values
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_non_contiguous_grouping_cols
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_non_contiguous_grouping_cols_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_proc_timer
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_query_restarts
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_with_wmark_and_non_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_list_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_map_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_map_state_metadata_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state_with_extra_transformation
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state_with_timers
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state_large_list
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_map_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_map_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_non_exist_value_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_restart_with_multiple_rows_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_value_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_value_state_ttl_basic
pyspark/sql/tests/connect/pandas/test_parity_pandas_cogrouped_map.py::CogroupedApplyInPandasTests::test_cogroup_apply_in_pandas_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_cogrouped_map.py::CogroupedApplyInPandasTests::test_cogroup_apply_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/test_parity_pandas_cogrouped_map.py::CogroupedApplyInPandasTests::test_different_group_key_cardinality
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_apply_in_pandas_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_apply_in_pandas_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_arrow_cast_enabled_numeric_to_decimal
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_arrow_cast_enabled_str_to_numeric
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_grouped_over_window
pyspark/sql/tests/connect/pandas/test_parity_pandas_grouped_map.py::ApplyInPandasTests::test_grouped_over_window_with_key
pyspark/sql/tests/connect/pandas/test_parity_pandas_map.py::MapInPandasParityTests::test_map_in_pandas_with_barrier_mode
pyspark/sql/tests/connect/pandas/test_parity_pandas_map.py::MapInPandasParityTests::test_map_in_pandas_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_map.py::MapInPandasParityTests::test_violate_not_null
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf.py::PandasUDFParityTests::test_pandas_udf_basic_with_return_type_string
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf.py::PandasUDFParityTests::test_pandas_udf_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf.py::PandasUDFParityTests::test_pandas_udf_return_type_error
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf.py::PandasUDFParityTests::test_udf_wrong_arg
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_grouped_agg.py::PandasUDFGroupedAggParityTests::test_arrow_cast_enabled_numeric_to_decimal
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_grouped_agg.py::PandasUDFGroupedAggParityTests::test_grouped_agg_pandas_udf_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_arrow_cast_enabled_numeric_to_decimal
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_arrow_cast_enabled_str_to_numeric
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_scalar_iter_pandas_udf_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_scalar_iter_udf_init
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_scalar_pandas_udf_with_logging
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_udafs_with_complex_variant_input
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_udafs_with_complex_variant_output
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_udafs_with_variant_output
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_check_config
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_invalid_length
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_arrow_cast_numeric_to_decimal
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_arrow_cast_str_to_numeric
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_mixed
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_simple
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_invalid_args
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_kwargs
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_named_arguments
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_named_arguments_negative
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_shrinking_window
pyspark/sql/tests/connect/pandas/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_sliding_window
pyspark/sql/tests/connect/pandas/test_pari

(truncated)

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Ibis Test Report

Commit Information

Commit Revision Branch
After c9eec6a refs/pull/2255/merge
Before 4c6f463 refs/heads/main

Test Summary

Suite Commit Failed Passed Skipped Warnings Time (s)
test-ibis After 32 1537 166 4535 134.70
Before 32 1537 166 4535 237.01

Test Details

Error Counts
           33 Total
           24 Total Unique
-------- ---- ----------------------------------------------------------------------------------------------------------
            5 IllegalArgumentException: invalid argument: found TRUNCATE at 0:8 expected something else, ';', statement, or end of input
            2 AnalysisException: Internal error: Function 'approx_percentile_cont' failed to match any signature, errors: Error during planning: Function 'approx_percentile_cont' requires Float64, but received List...
            2 AssertionError
            2 AssertionError: Series are different
            2 IllegalArgumentException: invalid argument: found PARTITIONS at 5:15 expected 'DATABASES', 'SCHEMAS', 'NAMESPACES', 'CATALOGS', 'TABLES', 'TABLE', 'CREATE', 'COLUMNS', 'VIEWS', 'ALL', 'USER', 'SYSTEM'...
            2 assert ibis.Schema {... float64\n} == ibis.Schema {... float64\n} Full diff: ibis.Schema { carat float64 cut string color string clarity string depth float64 table float64 - price int32 ? ^^ + price i...
            1 AnalysisException: Catalog not found: local
(+1)        1 AnalysisException: Database not found: ibis_database_qdzr2cwwz5evxbfmjfeotorpg4
            1 AssertionError: DataFrame.iloc[:, 0] (column name="id") are different
            1 AssertionError: DataFrame.iloc[:, 0] (column name="playerID") are different
            1 AssertionError: Series NA mask are different
(+1)        1 AssertionError: assert 'ibis_cached_q2onq6rpgze6vfdg6gpx5fzdwq' not in ['array_types', 'astronauts', 'awards_players', 'basic_table', 'batting', 'complicated', ...]
            1 AssertionError: assert nan == 22
            1 Failed: DID NOT RAISE <class 'pyspark.errors.exceptions.base.AnalysisException'>
            1 SparkRuntimeException: Cast error: Casting from Date32 to Float64 not supported
            1 SparkRuntimeException: Error during planning: expr type Struct("StructColumn({'x': xs, 'y': ys})": non-null Struct("x": non-null Int32, "y": non-null Int32)) can't cast to Struct("x": Int64, metadata:...
            1 TypeError: Cannot convert pyarrow.lib.ChunkedArray to pyarrow.lib.Array
            1 UnsupportedOperationException: CommandNode::AnalyzeTable
            1 UnsupportedOperationException: Physical plan does not support logical expression AggregateFunction(AggregateFunction { func: AggregateUDF { inner: ArrayAgg { signature: Signature { type_signature: Any...
            1 UnsupportedOperationException: Physical plan does not support logical expression InSubquery(InSubquery { expr: Column(Column { relation: Some(Bare { table: "t0" }), name: "#0" }), subquery: <subquery>...
            1 UnsupportedOperationException: Physical plan does not support logical expression InSubquery(InSubquery { expr: Column(Column { relation: Some(Bare { table: "t0" }), name: "#1" }), subquery: <subquery>...
            1 UnsupportedOperationException: unsupported ALTER TABLE operation
            1 assert frozenset({None}) == frozenset({None, 47}) Extra items in the right set: 47 Full diff: frozenset({ None, - 47, })
            1 assert {0.0, 1.0, 2.0, 3.0} == {1, 2, 3} Extra items in the left set: 0.0 Full diff: { + 0.0, - 1, + 1.0, ? ++ - 2, + 2.0, ? ++ - 3, + 3.0, ? ++ }
(-1)        0 AnalysisException: Database not found: ibis_database_lsfvttk2nfg3zgxze36vnapbaa
(-1)        0 AssertionError: assert 'ibis_cached_w7uqywelynfnnfjpctg6gdzyke' not in ['array_types', 'astronauts', 'awards_players', 'basic_table', 'batting', 'complicated', ...]
Passed Tests Diff

(empty)

Failed Tests
ibis/backends/pyspark/tests/test_basic.py::test_group_by
ibis/backends/pyspark/tests/test_client.py::test_catalog_db_args
ibis/backends/pyspark/tests/test_client.py::test_create_table_with_partition_and_catalog
ibis/backends/pyspark/tests/test_client.py::test_create_table_with_partition_no_catalog
ibis/backends/pyspark/tests/test_ddl.py::test_compute_stats
ibis/backends/pyspark/tests/test_ddl.py::test_drop_non_empty_database
ibis/backends/pyspark/tests/test_ddl.py::test_insert_table
ibis/backends/pyspark/tests/test_ddl.py::test_truncate_table
ibis/backends/tests/test_aggregation.py::test_approx_quantile[pyspark-True-False]
ibis/backends/tests/test_aggregation.py::test_approx_quantile[pyspark-True-True]
ibis/backends/tests/test_aggregation.py::test_date_quantile[pyspark]
ibis/backends/tests/test_aggregation.py::test_group_concat_over_window[pyspark]
ibis/backends/tests/test_client.py::test_insert_overwrite_from_dataframe[pyspark]
ibis/backends/tests/test_client.py::test_insert_overwrite_from_expr[pyspark]
ibis/backends/tests/test_client.py::test_insert_overwrite_from_list[pyspark]
ibis/backends/tests/test_client.py::test_rename_table[pyspark]
ibis/backends/tests/test_export.py::test_table_to_csv[pyspark]
ibis/backends/tests/test_expr_caching.py::test_persist_expression_contextmanager[pyspark]
ibis/backends/tests/test_expr_caching.py::test_persist_expression_release[pyspark]
ibis/backends/tests/test_expr_caching.py::test_persist_expression_repeated_cache[pyspark]
ibis/backends/tests/test_generic.py::test_isin_uncorrelated[pyspark]
ibis/backends/tests/test_generic.py::test_isin_uncorrelated_simple[pyspark]
ibis/backends/tests/test_io.py::test_read_csv[pyspark-default]
ibis/backends/tests/test_io.py::test_read_csv[pyspark-file_name]
ibis/backends/tests/test_join.py::test_join_with_pandas[pyspark]
ibis/backends/tests/test_json.py::test_json_getitem_array[pyspark]
ibis/backends/tests/test_struct.py::test_field_overwrite_always_prefers_unpacked[pyspark]
ibis/backends/tests/test_struct.py::test_isin_struct[pyspark]
ibis/backends/tests/test_struct.py::test_single_field[pyspark-a]
ibis/backends/tests/test_struct.py::test_single_field[pyspark-b]
ibis/backends/tests/test_struct.py::test_single_field[pyspark-c]
ibis/backends/tests/test_temporal.py::test_delta[pyspark-time]

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.65241% with 10 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
crates/sail-function/src/scalar/csv/options.rs 93.23% 9 Missing ⚠️
...ates/sail-function/src/scalar/csv/schema_of_csv.rs 93.33% 1 Missing ⚠️
@@            Coverage Diff             @@
##             main    #2255      +/-   ##
==========================================
- Coverage   79.35%   78.18%   -1.18%     
==========================================
  Files         916      917       +1     
  Lines      176215   176280      +65     
==========================================
- Hits       139844   137831    -2013     
- Misses      36371    38449    +2078     
Flag Coverage Δ *Carryforward flag
catalog-integration-tests ?
ibis-tests 16.87% <0.00%> (-0.01%) ⬇️
python-unit-tests 62.59% <94.65%> (+0.02%) ⬆️
rust-slow-tests 47.09% <ø> (-0.02%) ⬇️ Carriedforward from 4c6f463
rust-unit-tests 42.04% <64.17%> (-1.36%) ⬇️
spark-tests 31.80% <72.72%> (+0.01%) ⬆️

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
...tes/sail-function/src/scalar/csv/spark_from_csv.rs 76.31% <100.00%> (-0.19%) ⬇️
...rates/sail-function/src/scalar/csv/spark_to_csv.rs 90.90% <100.00%> (+0.26%) ⬆️
...ates/sail-function/src/scalar/csv/schema_of_csv.rs 81.21% <93.33%> (+3.94%) ⬆️
crates/sail-function/src/scalar/csv/options.rs 93.23% <93.23%> (ø)

... and 61 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@shehabgamin shehabgamin added run spark tests Trigger Spark tests on a pull request run ibis tests Trigger Ibis tests on a pull request labels Jul 16, 2026
@shehabgamin
shehabgamin requested a review from Copilot July 16, 2026 20:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.

@shehabgamin shehabgamin self-assigned this Jul 17, 2026
@shehabgamin

Copy link
Copy Markdown
Contributor

@davidlghellin I had Codex 5.6 ultra do a first pass. Let me know if any of this is relevant or not. If it is, please re-ping me when ready for re-review!

The added cases are useful, but the implementation is not yet Spark-equivalent and introduces a null-handling regression.

  ## Findings

  1. P1 — The validator omits options Spark validates eagerly.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:29 and /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:140 use a partial allowlist. Missing
     options include preferDate, columnPruning, enableDateTimeParsingFallback, ignoreCorruptFiles, ignoreMissingFiles, inputBufferSize, encoding/charset, compression/codec, timeZone, and extension.

     For example, Spark rejects:

     SELECT from_csv('1', 'a INT', map('preferDate', 'garbage'))

     with a Boolean-option error, while this implementation does not validate preferDate and proceeds. Similar discrepancies occur for invalid encodings, compression codecs, time zones, and buffer sizes. Spark
     parses these in opt/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/csv/CSVOptions.scala:107 and inherited file options.

  2. P1 — Eager validation breaks Spark’s null propagation.
     Options are validated before inspecting the input at /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/spark_from_csv.rs:233 and /private/tmp/sail-pr2255-review/crates/sail-function/src/
     scalar/csv/spark_to_csv.rs:264.

     Spark returns NULL for both:

     SELECT from_csv(
       CAST(NULL AS STRING),
       'a INT',
       map('header', 'garbage')
     );

     SELECT to_csv(
       CAST(NULL AS STRUCT<a: INT>),
       map('lineSep', '')
     );

     The PR raises an option error before null propagation. Spark creates the parser/writer lazily inside the non-null evaluation path; see opt/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/
     expressions/csv/CsvExpressionEvalUtils.scala:52. Validation of option values should therefore wait until a non-null input is encountered. Structural errors such as null option-map entries must remain eager
     because Spark rejects those during map conversion.

  3. P1 — Duplicate keys, casing, and aliases do not follow Spark’s effective-map semantics.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:96 finds the first case-insensitive match, while /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/
     options.rs:121 validates every raw entry. Spark first creates a CaseInsensitiveMap, where the last case-variant wins, and then reads canonical options in a fixed order.

     Confirmed differences include:
      - map('header','garbage','HEADER','true'): Spark succeeds; the PR rejects the shadowed first value.
      - map('quoteAll','false','QUOTEALL','true'): Spark uses true; the PR retrieves false.
      - map('sep','|','delimiter',''): Spark uses sep and ignores the shadowed invalid alias; the PR rejects delimiter.
      - /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/schema_of_csv.rs:195 manually overwrites sep with a later delimiter, whereas Spark gives sep canonical priority.

     The cleanest fix—and the main simplification identified by the ponytail review—is one normalized, case-insensitive effective option map reused by all three expressions, with Spark’s alias precedence encoded
     once.

  4. P2 — Delimiter parsing does not implement Spark’s escape grammar.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:154 checks only character count and callers retain the raw string. Spark runs separators through CSVExprUtils.toDelimiterStr.

     Consequently:
      - \q is rejected by Spark as an unsupported special character but accepted by this validator.
      - \t means an actual tab in Spark but remains an unconverted two-character value here.

     See opt/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/csv/CSVExprUtils.scala:120.

  5. P2 — samplingRatio uses Rust’s float grammar instead of Java’s.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:162 uses Rust f64 parsing. Spark uses Java/Scala Double.parseDouble semantics.

     Spark accepts values such as " 1 ", "1d", and "0x1.0p0" that this implementation rejects. Conversely, Rust accepts "inf", which Spark rejects.

  6. P2 — lineSep length validation is missing for to_csv.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:178 checks only for an empty value. Spark’s writer rejects separators longer than one Unicode character—implemented as more than
     two UTF-16 code units—so lineSep='abc' must fail. Reader expressions intentionally override/ignore this option, meaning the validation must be expression-specific. Spark’s behavior is in opt/spark/sql/
     catalyst/src/main/scala/org/apache/spark/sql/catalyst/csv/CSVOptions.scala:264.

  7. P2 — Nonliteral or non-string option maps still bypass Spark analysis rules.
     /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:65 reads only row zero and silently treats a failed StringArray downcast as no options. The expression coercion accepts any map
     type.

     Spark requires a foldable map<string,string> expression and rejects option columns, map_from_arrays, and non-string maps during analysis. Sail can instead apply one row’s options globally or silently fall
     back to defaults. Although some acceptance predates this PR, the new common validator relies on that incorrect invariant and therefore cannot provide the claimed Spark validation parity.

  8. P3 — ASCII-only case folding differs from Spark for Unicode values.
     The eq_ignore_ascii_case checks at /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:143 and /private/tmp/sail-pr2255-review/crates/sail-function/src/scalar/csv/options.rs:211
     differ from Java/Scala Unicode case handling. For example, Spark accepts the long-s forms multiLine='falſe' and unescapedQuoteHandling='ſkip_value'; the PR rejects them. This is obscure but observable, and
     this project requires exact parity.

@davidlghellin

Copy link
Copy Markdown
Contributor Author

@davidlghellin I had Codex 5.6 ultra do a first pass. Let me know if any of this is relevant or not. If it is, please re-ping me when ready for re-review!

Thanks for the thorough review — and for running Codex on it. I went through all 8 findings against Spark JVM, measuring each one rather than trusting the diff. Answering in your order:

1. (P1) Validator omits options Spark validates eagerly
Partially fixed. Added the boolean/int ones (preferDate, columnPruning, inputBufferSize, enableDateTimeParsingFallback, ignoreCorruptFiles, ignoreMissingFiles). The domain ones (encoding/compression/timeZone) are deferred with a @sail-bug — they need charset/zone/codec validation.

2. (P1) Eager validation breaks Spark's null propagation (the regression)
Fixed. Value validation is now lazy (inside the non-null path); the structural NULL-entry check stays eager, matching CsvExpressionEvalUtils' lazy parser and convertToMapData's eager NPE.

3. (P1) Duplicate keys / casing / aliases don't follow the effective-map semantics
Fixed. Read-driven CaseInsensitiveMap: last case-variant wins, sep takes precedence over delimiter, shadowed values are never validated. This was the main simplification you flagged, and it made the code shorter.

4. (P2) Delimiter parsing doesn't implement Spark's escape grammar (\t ≠ tab, \q)
Deferred (@sail-bug). Needs a full CSVExprUtils.toDelimiterStr port — validation and unescaping are coupled.

5. (P2) samplingRatio uses Rust's float grammar instead of Java's
Deferred (@sail-bug). I measured Java Double.parseDouble vs Rust f64: 8 divergent cases (whitespace, d/f suffix, case-sensitive Infinity/NaN, hex floats). A partial parser would introduce new divergences, so it deserves its own change.

6. (P2) lineSep length validation missing for to_csv
Fixed. encode_utf16().count() > 2, so ab is accepted and abc rejected.

7. (P2) Non-literal / non-string option maps bypass Spark's analysis rules
Deferred (@sail-bug). This is analysis-time rejection, which lives in sail-plan, not the expression.

8. (P3) ASCII-only case folding differs from Spark for Unicode
Fixed. getBool folds ASCII-only (toLowerCase(ROOT)); toBoolean/enum options fold Unicode (equalsIgnoreCase).


Summary: 2, 3, 6, 8 fully fixed · 1 partially · 4, 5, 7 deferred — each deferred item is tracked with a red @sail-bug (passes on JVM, fails on Sail), so nothing is lost. Happy to fold any of them into this PR if you'd prefer — just say the word. Re-ping when ready for re-review.

@shehabgamin shehabgamin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Well done! I only have a couple of comments

}
for option in INT_OPTIONS {
if let Some(value) = find_option(map, option)
&& value.parse::<i32>().is_err()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is it possible to use Java/Scala numeric parsing here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch — I measured it, and there is a real divergence, though a narrow one:

value Java Rust parse::<i32>()
٥ (Arabic-Indic), १२ (Devanagari) accepts rejects
" 5 ", "5 " rejects rejects ✓
+5 accepts accepts ✓
2147483648 (overflow) rejects rejects ✓

Whitespace, sign and overflow already match. The only gap is Unicode decimal digits: Java's Integer.parseInt goes through Character.digit (Unicode Nd), while Rust's parse is ASCII-only. Matching it isn't a one-liner — Rust's char::to_digit is ASCII-only too, so it needs an Nd table or a new dependency.

Added a test for it (@sail-bug, so CI tracks it):

@sail-bug
Scenario: from_csv accepts a Unicode decimal digit in an integer option
  SELECT from_csv('1', 'a INT', map('maxColumns', '٥')) AS result
  → | {1} |

/// not seen when every input row is NULL. Callers therefore invoke this only when the input has at
/// least one non-null row; the structural NULL-entry check ([`reject_null_entries`]) runs
/// unconditionally instead. Unknown keys are ignored, also matching Spark.
pub(super) fn validate_options(map: &MapArray, function: CsvFunction) -> Result<()> {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think Spark also validates extension, charset, time zone, compression codec, etc. But this can be followup work.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed — encoding/charset, timeZone and compression are tracked with @sail-bug scenarios so CI keeps an eye on them, and they're on the followup list.

One caveat on extension specifically: I measured it and it looks like a Spark quirk rather than validation we should mirror. It's a file-writer option (added by SPARK-50616 for the CSV DataSource writer), not an expression option. Passing it to to_csv accepts ab/abc/abcd but throws INTERNAL_ERROR on a non-letter value like a1 — and INTERNAL_ERROR is Spark's "this shouldn't happen" class, not a user-facing validation. So I'd lean toward leaving Sail ignoring it as an unknown option on the expression path, rather than replicating it. Happy to revisit if you'd rather match it.

@github-actions

Copy link
Copy Markdown

Spark 3.5.9 Test Report

Commit Information

Commit Revision Branch
After c9eec6a refs/pull/2255/merge
Before 4c6f463 refs/heads/main

Test Summary

Suite Commit Failed Passed Skipped Warnings Time (s)
doctest-catalog After 10 14 1 6 6.01
Before 10 14 1 6 4.92
doctest-column After 33 2 5.46
Before 33 2 4.39
doctest-dataframe After 14 83 10 3 8.59
Before 14 83 10 3 6.48
doctest-functions After 13 387 9 7 16.53
Before 13 387 9 7 13.01
test-connect After 112 890 170 698 140.46
Before 112 890 170 696 106.17

Test Details

Error Counts
          149 Total
           86 Total Unique
-------- ---- ----------------------------------------------------------------------------------------------------------
           13 PySparkAssertionError: [DIFFERENT_PANDAS_DATAFRAME] DataFrames are not almost equal:
           10 handle add artifacts
            9 DocTestFailure
            6 UnsupportedOperationException: PlanNode::CacheTable
            5 UnsupportedOperationException: function: input_file_name
            4 AssertionError: False is not true
            3 ValueError: Converting to Python dictionary is not supported when duplicate field names are present
            2 AnalysisException: Could not find config namespace "spark"
            2 AnalysisException: Internal error: Function 'approx_percentile_cont' failed to match any signature, errors: Error during planning: Function 'approx_percentile_cont' expects 2 arguments but received 3,...
            2 AnalysisException: No table format found for: orc
            2 AnalysisException: explode should be rewritten during logical plan analysis
            2 AnalysisException: not supported: function exists
            2 AssertionError
            2 AssertionError: 0 not greater than or equal to 1
            2 IllegalArgumentException: expected value at line 1 column 1
            2 IllegalArgumentException: invalid argument: found FUNCTION at 7:15 expected 'DATABASE', 'SCHEMA', 'NAMESPACE', 'OR', 'TEMP', 'TEMPORARY', 'EXTERNAL', 'TABLE', 'GLOBAL', or 'VIEW'
            2 IllegalArgumentException: invalid argument: found RESET at 0:5 expected something else, ';', statement, or end of input
            2 PySparkNotImplementedError: [NOT_IMPLEMENTED] rdd() is not implemented.
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@erzsltwcoqsbwy1i96c08zbvk(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: approx quantile
            2 UnsupportedOperationException: collect metrics
            2 UnsupportedOperationException: freq items
            2 UnsupportedOperationException: function: session_window
            2 UnsupportedOperationException: handle analyze same semantics
            2 UnsupportedOperationException: user defined data type should only exist in a field
            2 UnsupportedOperationException: with watermark
            2 handle artifact statuses
            1 AnalysisException: Table already exists: tbl1
            1 AnalysisException: Temporary View not found: tab2
            1 AnalysisException: UNION queries have different number of columns: left has 2 columns whereas right has 3 columns
            1 AnalysisException: expected datetime literal '-' at byte offset 2
            1 AnalysisException: not supported: qualified function name
(+1)        1 AssertionError: "Database 'memory:443c0122-eb67-4cc3-a618-c05ac154c2c5' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(+1)        1 AssertionError: "Database 'memory:86816e6e-18e9-4fb8-8ad2-8f7e89f6247e' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
            1 AssertionError: 1 != 0
            1 AssertionError: 4 != 10
            1 AssertionError: AnalysisException not raised
            1 AssertionError: AnalysisException not raised by <lambda>
            1 AssertionError: Exception not raised
            1 AssertionError: Exception not raised by <lambda>
            1 AssertionError: Lists differ: [Row([178 chars]on='<<'), Row(function='<='), Row(function='<=[13267 chars]'~')] != [Row([178 chars]on='<='), Row(function='<=>'), Row(function='<[11284 chars]'~')]
            1 AssertionError: Lists differ: [Row(id=90, name='90'), Row(id=91, name='91'), Ro[176 chars]99')] != [Row(id=15, name='15'), Row(id=16, name='16'), Ro[176 chars]24')]
            1 AssertionError: Lists differ: [Row(ln(id)=0.0, ln(id)=0.0, struct(id, name)=Row(id=[1232 chars]0'))] != [Row(ln(id)=4.31748811353631, ln(id)=4.31748811353631[1312 chars]4'))]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Andy', ag[374 chars]one)] != [Row(age=19, name='Justin'), Row(age=19, name=[374 chars]el')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Justin', [34 chars]one)] != [Row(_corrupt_record=' "age":19}\n', name=None[104 chars]el')]
            1 AssertionError: Row(point='[1.0, 2.0]', pypoint='[3.0, 4.0]') != Row(point='(1.0, 2.0)', pypoint='[3.0, 4.0]')
            1 AssertionError: StorageLevel(False, True, True, False, 1) != StorageLevel(False, False, False, False, 1)
            1 AssertionError: Struc[15 chars]eld('a', NullType(), True), StructField('b', L[51 chars]ue)]) != Struc[15 chars]eld('b', LongType(), True), StructField('c', S[15 chars]ue)])
            1 AssertionError: Struc[30 chars]estampType(), True), StructField('val', IntegerType(), True)]) != Struc[30 chars]estampType(), True), StructField('val', IntegerType(), False)])
            1 AssertionError: Struc[32 chars]e(), False), StructField('b', DoubleType(), Fa[158 chars]ue)]) != Struc[32 chars]e(), True), StructField('b', DoubleType(), Tru[154 chars]ue)])
            1 AssertionError: Struc[40 chars]ue), StructField('val', ArrayType(DoubleType(), False), True)]) != Struc[40 chars]ue), StructField('val', PythonOnlyUDT(), True)])
            1 AssertionError: YearMonthIntervalType(0, 1) != YearMonthIntervalType(0, 0)
            1 AssertionError: [1.0, 2.0] != ExamplePoint(1.0,2.0)
            1 AssertionError: dtype('<M8[us]') != 'datetime64[ns]'
            1 IllegalArgumentException: invalid argument: field not found in input schema: col1
            1 IllegalArgumentException: invalid argument: table does not exist: ObjectName([Identifier("test_table")])
            1 PySparkNotImplementedError: [NOT_IMPLEMENTED] toJSON() is not implemented.
            1 PythonException:  AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 PythonException:  AttributeError: 'list' object has no attribute 'x'
            1 PythonException:  AttributeError: 'list' object has no attribute 'y'
            1 SparkRuntimeException: Cast error: Cannot cast string '1997/02/28 10:30:00' to value of Date32 type
            1 SparkRuntimeException: Invalid argument error: 83.140 is too large to store in a Decimal128 of precision 4. Max is 9.999
            1 SparkRuntimeException: Json error: Not valid JSON: EOF while parsing a list at line 1 column 1
            1 SparkRuntimeException: Json error: Not valid JSON: expected value at line 1 column 2
            1 SparkRuntimeException: Parser error: Error while parsing value '0
            1 SparkRuntimeException: This feature is not implemented: Unsupported CAST from Map("entries": non-null Struct("key": non-null Int32, "value": non-null Int32), unsorted) to Null
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@erzsltwcoqsbwy1i96c08zbvk(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@erzsltwcoqsbwy1i96c08zbvk(plus_one@b0z7ywph6dm2fca6bfkma9vd7(#9)) PART...
            1 UnsupportedOperationException: PlanNode::ClearCache
            1 UnsupportedOperationException: PlanNode::IsCached
            1 UnsupportedOperationException: PlanNode::RecoverPartitions
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Float64 is not implemented
            1 UnsupportedOperationException: apply in pandas with state
            1 UnsupportedOperationException: bucketing for writing listing table format
            1 UnsupportedOperationException: deduplicate within watermark
            1 UnsupportedOperationException: function: input_file_block_length
            1 UnsupportedOperationException: function: input_file_block_start
            1 UnsupportedOperationException: function: map_filter
            1 UnsupportedOperationException: function: map_zip_with
            1 UnsupportedOperationException: function: transform_keys
            1 UnsupportedOperationException: function: transform_values
            1 UnsupportedOperationException: function: zip_with
            1 UnsupportedOperationException: handle analyze semantic hash
            1 UnsupportedOperationException: unknown function: distributed_sequence_id
            1 ValueError: The column label 'id' is not unique.
            1 ValueError: The column label 'struct' is not unique.
(-1)        0 AssertionError: "Database 'memory:de89ae30-d231-47bb-8fc1-4596f0f02d7f' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 AssertionError: "Database 'memory:ec6eb73e-e50d-4015-8d7f-61480b6b6541' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
Passed Tests Diff

(empty)

Failed Tests
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.cacheTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.clearCache
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.createTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.functionExists
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getFunction
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.isCached
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.recoverPartitions
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshByPath
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.uncacheTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.colRegex
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.dropDuplicatesWithinWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.explain
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.hint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.observe
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.randomSplit
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartition
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionByRange
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sameSemantics
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sampleBy
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.storageLevel
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.toJSON
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.withWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.sampleBy
pyspark/sql/functions.py::pyspark.sql.functions.approx_percentile
pyspark/sql/functions.py::pyspark.sql.functions.input_file_block_length
pyspark/sql/functions.py::pyspark.sql.functions.input_file_block_start
pyspark/sql/functions.py::pyspark.sql.functions.input_file_name
pyspark/sql/functions.py::pyspark.sql.functions.map_entries
pyspark/sql/functions.py::pyspark.sql.functions.map_filter
pyspark/sql/functions.py::pyspark.sql.functions.map_zip_with
pyspark/sql/functions.py::pyspark.sql.functions.percentile_approx
pyspark/sql/functions.py::pyspark.sql.functions.regexp_instr
pyspark/sql/functions.py::pyspark.sql.functions.session_window
pyspark/sql/functions.py::pyspark.sql.functions.transform_keys
pyspark/sql/functions.py::pyspark.sql.functions.transform_values
pyspark/sql/functions.py::pyspark.sql.functions.zip_with
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_basic_requests
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_cache_artifact
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_copy_from_local_to_fs
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::LocalClusterArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_collect
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_collect_timestamp
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_column_regexp
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_create_global_temp_view
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_deduplicate_within_watermark_in_batch
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_describe
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_hint
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_join_hint
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_json
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_multi_paths
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_observe
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_orc
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_random_split
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_same_semantics
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_schema
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_semantic_hash
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_simple_udt_from_read
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_sql_with_command
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_approx_quantile
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_freq_items
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_stat_sample_by
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_streaming_local_relation
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_tail
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_to
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_with_local_list
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_with_local_ndarray
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectBasicTests::test_write_operations
pyspark/sql/tests/connect/test_connect_basic.py::SparkConnectSessionTests::test_error_stack_trace
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_column_arithmetic_ops
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_decimal
pyspark/sql/tests/connect/test_connect_column.py::SparkConnectColumnTests::test_distributed_sequence_id
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_aggregation_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_collection_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_date_ts_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_generator_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_lambda_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_map_collection_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_math_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_normal_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_string_functions_multi_args
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_time_window_functions
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_udf
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_udtf
pyspark/sql/tests/connect/test_connect_function.py::SparkConnectFunctionTests::test_window_functions
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_createDataFrame_duplicate_field_names
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_pandas_self_destruct
pyspark/sql/tests/connect/test_parity_arrow.py::ArrowParityTests::test_toPandas_duplicate_field_names
pyspark/sql/tests/connect/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_function_exists
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_get_function
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_list_functions
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_refresh_table
pyspark/sql/tests/connect/test_parity_catalog.py::CatalogParityTests::test_table_cache
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_cache_dataframe
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_cache_table
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_duplicate_field_names
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_extended_hint_types
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_freqItems
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_generic_hints
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_input_files
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_to
pyspark/sql/tests/connect/test_parity_dataframe.py::DataFrameParityTests::test_to_pandas
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_checking_csv_header
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_encoding_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_ignore_column_of_all_nulls
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_jdbc
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_jdbc_format
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_linesep_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_multiline_json
pyspark/sql/tests/connect/test_parity_datasources.py::DataSourcesParityTests::test_read_multiple_orc_file
pyspark/sql/tests/connect/test_parity_errors.py::ErrorsParityTests::test_date_time_exception
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_approxQuantile
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_functions_broadcast
pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_input_file_name_udf
pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py::GroupedApplyInPandasTests::test_grouped_over_window
pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py::GroupedApplyInPandasTests::test_grouped_over_window_with_key
pyspark/sql/tests/connect/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_python_worker_random_failure
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_scalar_iter_udf_init
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_check_config
pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py::PandasUDFScalarParityTests::test_vectorized_udf_invalid_length
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_mixed
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_bounded_simple
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_shrinking_window
pyspark/sql/tests/connect/test_parity_pandas_udf_window.py::PandasUDFWindowParityTests::test_sliding_window
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_bucketed_write
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_save_and_load
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterParityTests::test_save_and_load_builder
pyspark/sql/tests/connect/test_parity_readwriter.py::ReadwriterV2ParityTests::test_table_overwrite
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_cast_to_string_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_cast_to_udt_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_complex_nested_udt_in_df
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_negative_decimal
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_parquet_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_udf_with_udt
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_udt_with_none
pyspark/sql/tests/connect/test_parity_types.py::TypesParityTests::test_yearmonth_interval_type
pyspark/sql/tests/connect/test_parity_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/test_parity_udtf.py::ArrowUDTFParityTests::test_udtf_arrow_sql_conf
pyspark/sql/tests/connect/test_utils.py::ConnectUtilsTests::test_assert_approx_equal_decimaltype_custom_rtol_pass
pyspark/sql/tests/connect/test_utils.py::ConnectUtilsTests::test_assert_equal_nested_struct_str_duplicate

@github-actions

Copy link
Copy Markdown

Spark 4.2.0 Test Report

Commit Information

Commit Revision Branch
After c9eec6a refs/pull/2255/merge
Before 4c6f463 refs/heads/main

Test Summary

Suite Commit Failed Passed Skipped Warnings Time (s)
doctest-catalog After 21 13 1 6.94
Before 21 13 1 4.81
doctest-column After 36 7.05
Before 36 4.84
doctest-dataframe After 28 93 3 2 10.96
Before 28 93 3 2 7.59
doctest-functions After 107 414 10 5 27.57
Before 107 414 10 5 19.02
test-connect After 836 1955 304 389 226.27
Before 838 1953 304 389 154.68

Test Details

Error Counts
(-2)      992 Total
(+1)      324 Total Unique
-------- ---- ----------------------------------------------------------------------------------------------------------
           66 IllegalArgumentException: missing argument: Python UDF output type
           60 PythonException:  AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct_array'
           50 UnsupportedOperationException: unresolved table valued function
           34 DocTestFailure
           26 AssertionError: 1 != 0 : dict_keys([])
           24 UnsupportedOperationException: unknown function: tuple_sketch_agg_integer
           23 UnsupportedOperationException: unknown function: tuple_sketch_agg_double
           22 UnsupportedOperationException: handle add artifacts
           19 AssertionError: Exception not raised
           19 UnsupportedOperationException: unsupported subquery type
           18 UnsupportedOperationException: unknown function: kll_sketch_agg_bigint
           13 UnsupportedOperationException: collect metrics
           10 AnalysisException: attribute ObjectName([Identifier("c")]) is missing from the schema: cannot resolve attribute
           10 PySparkAssertionError: [DIFFERENT_PANDAS_DATAFRAME] DataFrames are not almost equal:
           10 UnsupportedOperationException: unknown function: kll_sketch_agg_double
           10 UnsupportedOperationException: unknown function: kll_sketch_agg_float
           10 UnsupportedOperationException: with watermark
            9 AssertionError: 3 != 0 : []
            9 IllegalArgumentException: expected value at line 1 column 1
            9 IllegalArgumentException: invalid argument: found range at 40:45 expected '->', '.', '(', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|'...
            9 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#1", data_type: Int64, nullable: true, metadata: {"SPARK::metadata::json": "{}"} },...
            8 AssertionError
            8 AssertionError: "DATAFRAME_INPUT_NOT_SINGLE_COLUMN" does not match "parse"
            8 UnsupportedOperationException: nearest-by join
            8 UnsupportedOperationException: parse
            7 UnsupportedOperationException: function: input_file_name
            7 UnsupportedOperationException: user defined data type should only exist in a field
            6 AssertionError: "Exception thrown when converting pandas.Series" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct_array'
            6 AssertionError: 1 != 0
            6 AssertionError: False is not true
            6 IllegalArgumentException: data did not match any variant of untagged enum JsonDataType
            6 UnsupportedOperationException: PlanNode::CacheTable
            6 UnsupportedOperationException: direct shuffle partition ID expression
            5 AssertionError: AnalysisException not raised
            5 AssertionError: `query_context_type` is required when QueryContext exists. QueryContext: [].
            5 IllegalArgumentException: invalid argument: output mode not supported in group map
(-2)        5 PySparkAssertionError: [DIFFERENT_ROWS] Results do not match: ( 100.00000 % )
            5 PythonException: 
            5 UnsupportedOperationException: streaming source name
            5 UnsupportedOperationException: unknown function: distributed_sequence_id
            4 AnalysisException: Temporary View not found: t2
            4 AnalysisException: ambiguous attribute: ObjectName([Identifier("id")])
            4 AssertionError: "DATAFRAME_INPUT_NOT_SINGLE_COLUMN" does not match "XML parse relation"
            4 AssertionError: "DATAFRAME_INPUT_NOT_STRING_TYPE" does not match "parse"
            4 AssertionError: 3 != 0 : dict_keys([])
            4 AssertionError: PythonException not raised
            4 AssertionError: unexpectedly None
            4 UnsupportedOperationException: XML parse relation
            4 UnsupportedOperationException: approx quantile
            4 UnsupportedOperationException: freq items
            4 UnsupportedOperationException: transpose
            4 UnsupportedOperationException: wildcard with plan ID
            4 clone session
            3 AnalysisException: Invalid Python user-defined table function return type. Expect a struct type, but got Int32.
            3 AssertionError: ".*AnalyzeResult.*schema.*" does not match "TypeError: 'StringType' object is not iterable"
            3 AssertionError: 0 not greater than or equal to 1
            3 AssertionError: DayTimeIntervalType(0, 3) != DayTimeIntervalType(1, 3)
            3 AssertionError: Struc[49 chars]valType(0, 3), True), StructField('name', StringType(), True)]) != Struc[49 chars]valType(1, 3), True), StructField('name', StringType(), True)])
            3 IllegalArgumentException: invalid argument: found PARTITION at 281:290 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            3 IllegalArgumentException: invalid argument: found PARTITION at 295:304 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            3 IllegalArgumentException: invalid argument: found PARTITION at 59:68 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            3 IllegalArgumentException: invalid argument: found WITH at 171:175 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            3 IllegalArgumentException: invalid argument: found WITH at 279:283 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            3 PythonException:  Exception: self._partition_col was 1 but the row value was 2 PySparkRuntimeError: [UDTF_EXEC_ERROR] User defined table function encountered an error in the 'eval' method: self._parti...
            3 PythonException:  PySparkRuntimeError: [UDTF_CONSTRUCTOR_INVALID_NO_ANALYZE_METHOD] Failed to evaluate the user-defined table function '' because its constructor is invalid: the function does not impl...
            3 PythonException:  PySparkValueError: Failed to convert the value of the column '_0' with type 'int8' to Arrow type 'decimal128(10, 0)'.
            3 SparkRuntimeException: Exception: path is not specified
            3 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: Int64 }, Column { relation: None, name: "#0" })
            3 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#2", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t" ...
            3 UnsupportedOperationException: cached remote relation
            3 UnsupportedOperationException: drop database
            3 UnsupportedOperationException: table argument options in subquery expression
            3 ValueError: Converting to Python dictionary is not supported when duplicate field names are present
            2 AnalysisException: Internal error: Function 'approx_percentile_cont' failed to match any signature, errors: Error during planning: Function 'approx_percentile_cont' expects 2 arguments but received 3,...
            2 AnalysisException: No table format found for: orc
(+1)        2 AnalysisException: Write failed for partition 1: External error: Python error: [TestJsonWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
            2 AnalysisException: ambiguous attribute: ObjectName([Identifier("b")])
            2 AnalysisException: attribute ObjectName([Identifier("t")]) is missing from the schema: cannot resolve attribute
            2 AnalysisException: element_at expects List or Map type as first argument, got Null
            2 AnalysisException: explode should be rewritten during logical plan analysis
            2 AnalysisException: not supported: function exists
            2 AssertionError: "DATAFRAME_INPUT_NOT_STRING_TYPE" does not match "XML parse relation"
            2 AssertionError: AnalysisException not raised by <lambda>
            2 AssertionError: Lists differ: [Row([29 chars]alue=0), Row(value=0), Row(value=0), Row(value[195 chars]e=3)] != [Row([29 chars]alue=1), Row(value=1), Row(value=2), Row(value[27 chars]e=3)]
            2 AssertionError: StructType([StructField('value', BinaryTy[55 chars]se)]) != VariantType()
            2 IllegalArgumentException: invalid argument: cross join with join criteria
            2 IllegalArgumentException: invalid argument: found FUNCTION at 7:15 expected 'DATABASE', 'SCHEMA', 'NAMESPACE', 'OR', 'TEMP', 'TEMPORARY', 'EXTERNAL', 'TABLE', 'GLOBAL', or 'VIEW'
            2 IllegalArgumentException: invalid argument: found PARTITION at 97:106 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!='...
            2 IllegalArgumentException: invalid argument: initial input not supported in group map
            2 IllegalArgumentException: invalid argument: missing data source format
            2 PySparkAssertionError: [DIFFERENT_ROWS] Results do not match: ( 150.00000 % )
            2 PySparkValueError: [MALFORMED_GEOMETRY] Geometry binary is malformed. Please check the data source is valid.
            2 PythonException:  AssertionError: 1
            2 PythonException:  AssertionError: Expected Series, got <class 'pandas.core.frame.DataFrame'>
            2 PythonException:  AssertionError: assert None is not None
            2 PythonException:  AttributeError: 'NoneType' object has no attribute 'cpus'
            2 PythonException:  PySparkValueError: Failed to convert the value of the column '_0' with type 'object' to Arrow type 'int32'.
            2 SparkRuntimeException: Error during planning: Correlated scalar subquery must be aggregated to return at most one row
            2 SparkRuntimeException: Python error: [my-json::partitions] AttributeError: 'pyarrow.lib.Schema' object has no attribute 'fieldNames'
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@7bmjouo64lso5qdqluibcbhzy(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@crhcwp7r85ckiofu16firpfxa(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: mean_udf@3fddo8bo7kth5837d5ilvxmoh(#3) PARTITION BY [#2] ORDER BY [#3 ASC ...
            2 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: mean_udf@eggoe33fhsc8reagr6h5cfwtn(#3) PARTITION BY [#2] ORDER BY [#3 ASC ...
            2 UnsupportedOperationException: CLUSTER BY for write
            2 UnsupportedOperationException: PARTITION for write
            2 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t1"...
(-1)        2 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: List(Field { data_type: Float64 }), nullable: true, metadata: {"SPA...
            2 UnsupportedOperationException: Physical plan does not support logical expression Wildcard { qualifier: None, options: WildcardOptions { ilike: None, exclude: None, except: None, replace: None, rename:...
            2 UnsupportedOperationException: analyze table
            2 UnsupportedOperationException: create resource profile command
            2 UnsupportedOperationException: drop table
            2 UnsupportedOperationException: drop view
            2 UnsupportedOperationException: function: st_setsrid
            2 UnsupportedOperationException: function: st_srid
            2 UnsupportedOperationException: function: try_make_interval
            2 UnsupportedOperationException: get create table string
            2 UnsupportedOperationException: get table properties
            2 UnsupportedOperationException: handle analyze same semantics
            2 UnsupportedOperationException: list views
            2 UnsupportedOperationException: named window function arguments
            2 UnsupportedOperationException: truncate table
            2 UnsupportedOperationException: unknown function: is_valid_variant
            2 UnsupportedOperationException: unknown function: try_to_date
            2 handle add artifacts
            2 handle artifact statuses
            1 AnalysisException: Could not find config namespace "mapred"
            1 AnalysisException: Could not find config namespace "spark"
            1 AnalysisException: Database not found: testcat
            1 AnalysisException: Failed to parse schema '{"fields":[{"metadata":{},"name":"a","nullable":true,"type":"long"}],"type":"struct"}': error in SQL parser: found { at 7:8 expected identifier, or '>'
            1 AnalysisException: Invalid WKB at index 0: WKB data too short
            1 AnalysisException: No table format found for: xml
            1 AnalysisException: Spark `try_variant_get` function: path must be a constant string
            1 AnalysisException: Spark `variant_get` function: path must be a constant string
            1 AnalysisException: Table already exists: tbl1
            1 AnalysisException: Temporary View not found: tab2
(+1)        1 AnalysisException: UNION queries have different number of columns: left has 2 columns whereas right has 3 columns
            1 AnalysisException: Write failed for partition 0: External error: Python error: [TestArrowWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
(-1)        1 AnalysisException: Write failed for partition 0: External error: Python error: [TestJsonWriter::write] AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 AnalysisException: ambiguous attribute: ObjectName([Identifier("i")])
            1 AnalysisException: array_except received incompatible types: List(non-null Int32), List(Int32)
            1 AnalysisException: array_reverse does not support type 'Binary'.
            1 AnalysisException: attribute ObjectName([Identifier("x")]) is missing from the schema: cannot resolve attribute
            1 AnalysisException: expected AM/PM marker at byte offset 8
            1 AnalysisException: expected datetime literal '-' at byte offset 2
            1 AnalysisException: foobar
            1 AnalysisException: invalid parsed date: input is out of range
            1 AnalysisException: join condition should not be empty
            1 AnalysisException: not supported: qualified function name
            1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#0" }), Literal(Int32(123), None)]
(+1)        1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(4599660510022212355), None)]
(+1)        1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(867428976917152620), None)]
            1 AnalysisException: one value expected: [Column(Column { relation: None, name: "#2" }), Column(Column { relation: None, name: "#3" })]
            1 AnalysisException: one value expected: [ScalarFunction(ScalarFunction { func: ScalarUDF { inner: StGeogFromWKB { signature: Signature { type_signature: Exact([Binary]), volatility: Immutable, paramete...
            1 AnalysisException: too big
            1 AnalysisException: unsupported extension node for streaming: PythonWriteNode { input: Projection(Projection { expr: [Column(Column { relation: None, name: "_marker" }), Column(Column { relation: None,...
            1 AnalysisException: zero values expected: [Literal(Int32(123), None)]
            1 AssertionError: "'path' is not specified." does not match "missing path in listing table options"
            1 AssertionError: "ARROW_TYPE_MISMATCH.*SQL_MAP_ARROW_ITER_UDF" does not match "Struct field count mismatch: expected 1 fields but found 2 fields"
            1 AssertionError: "CANNOT_RESOLVE_DATAFRAME_COLUMN" does not match "attribute ObjectName([Identifier("b")]) is missing from the schema: cannot resolve attribute"
            1 AssertionError: "DATA_SOURCE_EXTRANEOUS_FILTERS" does not match "Python error: [test::partitions] AssertionError: assert False
            1 AssertionError: "DATA_SOURCE_PUSHDOWN_DISABLED" does not match "Python error: [<reader>::read] AssertionError: assert False
(+1)        1 AssertionError: "Database 'memory:0e0474bf-8727-42de-9b42-2c9c353a2ecc' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(+1)        1 AssertionError: "Database 'memory:6947c25f-9cec-4ac1-ad6c-8287dfec4ae4' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
            1 AssertionError: "Python worker process terminated due to idle timeout \(timeout: 1 seconds\)" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct...
            1 AssertionError: "Python worker process terminated due to idle timeout \(timeout: 1 seconds\)" does not match " PySparkRuntimeError: [UDTF_INVALID_OUTPUT_ROW_TYPE] The type of an individual output row ...
            1 AssertionError: "UDTF_RETURN_SCHEMA_MISMATCH" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct_array'
            1 AssertionError: "\[UDTF_EXEC_ERROR\] User defined table function encountered an error in the 'terminate' method: terminate error" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' obj...
            1 AssertionError: "is null" does not match "Invalid argument error: Column 'a' is declared as non-nullable but contains null values"
            1 AssertionError: "requirement failed: Cogroup keys must have same size: 2 != 1" does not match "invalid argument: child plan grouping expressions must have the same length"
            1 AssertionError: "terminate error" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct_array'
            1 AssertionError: "terminate\(\) missing 1 required positional argument: 'a'" does not match " AttributeError: 'ArrowStreamPandasUDTFSerializer' object has no attribute '_create_struct_array'
            1 AssertionError: '+------------------+\n|from_xml(a, a INT)|\n+--------[75 chars]-+\n' != '+-----------+\n|from_xml(a)|\n+-----------+\n|       [33 chars]-+\n'
            1 AssertionError: '+---[1064 chars]---------------------------------+\nonly showing top 20 rows\n' != '+---[1064 chars]---------------------------------+\nonly showing top 20 rows'
            1 AssertionError: '+---[23 chars]---+-----+\n|  1|    1|\n+---+-----+\nonly showing top 1 row' != '+---[23 chars]---+-----+\n|  1|    1|\n+---+-----+\nonly showing top 1 row\n'
            1 AssertionError: 'INVALID_CLONE_SESSION_REQUEST.TARGET_SESSION_ID_FORMAT' not found in '<_InactiveRpcError of RPC that terminated with:\n\tstatus = StatusCode.UNIMPLEMENTED\n\tdetails = "clone session"...
            1 AssertionError: 'ST_INVALID_SRID_VALUE' != None : Expected error class was 'ST_INVALID_SRID_VALUE', got 'None'.
            1 AssertionError: 'UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY.UNSUPPORTED_IN_EXISTS_SUBQUERY' != None : Expected error class was 'UNSUPPORTED_SUBQUERY_EXPRESSION_CATEGORY.UNSUPPORTED_IN_EXISTS_SUBQUERY', ...
            1 AssertionError: 'a NULL, b BOOLEAN, c BINARY' != 'a VOID,b BOOLEAN,c BINARY'
            1 AssertionError: 'b' != ['b', 'd', 'e']
            1 AssertionError: 'bytearray' != 'bytes'
            1 AssertionError: 0 not greater than 0
            1 AssertionError: 0.6363787615254752 != 0.9531453492357947 : Column<'rand(1)'>
            1 AssertionError: 1 not greater than 1
            1 AssertionError: 1 not greater than 1 : Expected multiple batches for key 0
            1 AssertionError: 4 != 10
            1 AssertionError: 6 != 0 : []
            1 AssertionError: 6 != 4 : Group 1 should process only 2 batches (4 values)
            1 AssertionError: Exception not raised by <lambda>
            1 AssertionError: Lists differ: [Row([259 chars]681098, ln(id)=1.0986122886681098, struct(id, [975 chars]0'))] != [Row([259 chars]681096, ln(id)=1.0986122886681096, struct(id, [975 chars]0'))]
            1 AssertionError: Lists differ: [Row([28 chars], 5, 15, 0, 1)), Row(ts=datetime.datetime(2023[63 chars] 3))] != [Row([28 chars], 5, 7, 0, 1)), Row(ts=datetime.datetime(2023,[60 chars] 3))]
            1 AssertionError: Lists differ: [Row([47 chars] 3, 6: 3}), Row(map={4: 3, 6: 3}), Row(map={4: 5, 6: 3})] != [Row([47 chars] 3, 6: 3, 5: 5}), Row(map={4: 3, 6: 3}), Row(map={4: 3, 6: 3})]
            1 AssertionError: Lists differ: [Row([719 chars]on='array'), Row(function='array_agg'), Row(fu[12726 chars]'~')] != [Row([719 chars]on='approx_top_k'), Row(function='approx_top_k[15483 chars]'~')]
            1 AssertionError: Lists differ: [Row(id=90, name='90'), Row(id=91, name='91'), Ro[176 chars]99')] != [Row(id=15, name='15'), Row(id=16, name='16'), Ro[176 chars]24')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Andy', ag[374 chars]one)] != [Row(age=19, name='Justin'), Row(age=19, name=[374 chars]el')]
            1 AssertionError: Lists differ: [Row(name='Andy', age=30), Row(name='Justin', [34 chars]one)] != [Row(_corrupt_record=' "age":19}\n', name=None[104 chars]el')]
            1 AssertionError: PythonException not raised by collect
            1 AssertionError: Row(name='Bob', age=10, height=66.0) != Row(name='Alice', age=10, height=10.0)
            1 AssertionError: Row(point='[1.0, 2.0]', pypoint='[3.0, 4.0]') != Row(point='(1.0, 2.0)', pypoint='[3.0, 4.0]')
            1 AssertionError: SparkConnectGrpcException not raised
            1 AssertionError: StorageLevel(False, True, True, False, 1) != StorageLevel(False, False, False, False, 1)
            1 AssertionError: Struc[15 chars]eld('a', NullType(), True), StructField('b', L[51 chars]ue)]) != Struc[15 chars]eld('b', LongType(), True), StructField('c', S[15 chars]ue)])
            1 AssertionError: Struc[23 chars]st', StructType([StructField('value', BinaryTy[194 chars]ue)]) != Struc[23 chars]st', VariantType(), True), StructField('last',[18 chars]ue)])
            1 AssertionError: Struc[32 chars]e(), False), StructField('b', DoubleType(), Fa[158 chars]ue)]) != Struc[32 chars]e(), True), StructField('b', DoubleType(), Tru[154 chars]ue)])
            1 AssertionError: Struc[40 chars]ue), StructField('val', ArrayType(DoubleType(), False), True)]) != Struc[40 chars]ue), StructField('val', PythonOnlyUDT(), True)])
            1 AssertionError: Struc[99 chars]uct(n, l), x_2)), x_1)))', ArrayType(StructTyp[93 chars]ue)]) != Struc[99 chars]uct(namedlambdavariable() AS n, namedlambdavar[181 chars]se)])
            1 AssertionError: True is not false : Default URL is not secure
            1 AssertionError: VariantType() != StructType([StructField('value', BinaryTy[55 chars]se)])
            1 AssertionError: YearMonthIntervalType(0, 1) != YearMonthIntervalType(0, 0)
            1 AssertionError: [1.0, 2.0] != ExamplePoint(1.0,2.0)
            1 AttributeError: 'NoneType' object has no attribute 'extract_graph'
            1 AttributeError: 'NoneType' object has no attribute 'toText'
(+1)        1 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpl0x53sr7'
            1 IllegalArgumentException: invalid argument: empty data type
            1 IllegalArgumentException: invalid argument: expecting column to drop
            1 IllegalArgumentException: invalid argument: field not found in input schema: col1
            1 IllegalArgumentException: invalid argument: found DEFAULT_PATH at 11:23 expected string, '+', '-', number, 'TRUE', or 'FALSE'
            1 IllegalArgumentException: invalid argument: found PARTITION at 100:109 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 103:112 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 108:117 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 111:120 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 117:126 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 118:127 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=...
            1 IllegalArgumentException: invalid argument: found PARTITION at 53:62 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found PARTITION at 69:78 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found PARTITION at 90:99 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=',...
            1 IllegalArgumentException: invalid argument: found WITH at 115:119 expected '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|', '!=', '!...
            1 IllegalArgumentException: invalid argument: found abc at 0:3 expected something else, ';', statement, or end of input
            1 IllegalArgumentException: invalid argument: found collate at 13:20 expected string, '.', '[', '::', 'ESCAPE', 'IS', 'NOT', 'IN', '*', '/', '%', 'DIV', '+', '-', '||', '>>>', '>>', '<<', '&', '^', '|',...
            1 IllegalArgumentException: invalid argument: found spark_catalog at 11:24 expected string, '+', '-', number, 'TRUE', or 'FALSE'
            1 IllegalArgumentException: invalid argument: grouping sets with grouping expressions
            1 IllegalArgumentException: invalid argument: invalid user-defined window function type
            1 IllegalArgumentException: invalid argument: table does not exist: ObjectName([Identifier("test_table")])
            1 IndexError: list index out of range
(+1)        1 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (42f2c5b9-4a8c-45a3-92ab-d0beb57635fa != a7e1e51f-dd03-4628-adfd-1...
(+1)        1 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (4a675a2f-3179-42f3-b07a-5f0122efd499 != b3b14c15-fae6-43d8-90c4-9...
            1 PySparkAssertionError: [DIFFERENT_ROWS] Results do not match: ( 50.00000 % )
            1 PySparkNotImplementedError: [NOT_IMPLEMENTED] Invalid return type with grouped aggregate Pandas UDFs: StructType([StructField('value', BinaryType(), False), StructField('metadata', BinaryType(), False...
            1 PythonException:  AssertionError: assert 1 == 2
            1 PythonException:  AttributeError: 'NoneType' object has no attribute 'partitionId'
            1 PythonException:  AttributeError: 'list' object has no attribute 'x'
            1 PythonException:  AttributeError: 'list' object has no attribute 'y'
            1 PythonException:  KeyError: 'v'
            1 PythonException:  PySparkRuntimeError: [UDTF_ARROW_DATA_CONVERSION_ERROR] Cannot convert UDTF output to Arrow. Data: [(ExamplePoint(10.0,20.0),)]. Schema: struct<point:array<double>>. Arrow Schema: st...
            1 PythonException:  PySparkRuntimeError: [UDTF_ARROW_DATA_CONVERSION_ERROR] Cannot convert UDTF output to Arrow. Data: [(ExamplePoint(10.0,20.0),)]. Schema: struct<udt:array<double>>. Arrow Schema: stru...
            1 PythonException:  PySparkValueError: Failed to convert the value of the column '_0' with type 'int64' to Arrow type 'decimal128(10, 2)'.
            1 PythonException:  PySparkValueError: Failed to convert the value of the column 'decimal_result' with type 'int64' to Arrow type 'decimal128(10, 2)'.
            1 PythonException:  TypeError: 'NoneType' object is not subscriptable
            1 PythonException:  TypeError: 'str' object cannot be interpreted as an integer
            1 PythonException:  TypeError: argument of type 'VariantVal' is not iterable
            1 PythonException:  TypeError: cannot unpack non-iterable NoneType object
            1 SparkRuntimeException: AttributeError: 'NoneType' object has no attribute '__next__'
            1 SparkRuntimeException: Execution error: Schema field count mismatch: expected 1 fields, got 2
            1 SparkRuntimeException: Internal error: Cannot run range queries on datatype: Time64(µs).
            1 SparkRuntimeException: Invalid argument error: Column '#3' is declared as non-nullable but contains null values
            1 SparkRuntimeException: Invalid argument error: column types must match schema types, expected List(Struct("value": non-null Binary, "metadata": non-null Binary, metadata: {"variant": "true"}), metadat...
            1 SparkRuntimeException: Json error: Not valid JSON: EOF while parsing a list at line 1 column 1
            1 SparkRuntimeException: Json error: Not valid JSON: expected value at line 1 column 2
            1 SparkRuntimeException: No field named t1."#0". Did you mean '#2'?.
            1 SparkRuntimeException: Parser error: Error while parsing value '0
            1 SparkRuntimeException: Parser error: Invalid timezone "+7:30": failed to parse timezone
            1 SparkRuntimeException: Python error: [TestDataSource::writer] PySparkNotImplementedError: [NOT_IMPLEMENTED] writer is not implemented.
            1 SparkRuntimeException: Python error: [my-json::writer] AttributeError: 'pyarrow.lib.Schema' object has no attribute 'fieldNames'
            1 SparkRuntimeException: Python error: [test::partitions] AssertionError: assert False
            1 SparkRuntimeException: Python error: [testdatasourcepyarrow::partitions] PySparkNotImplementedError: [NOT_IMPLEMENTED] reader is not implemented.
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: List { data_type: Int32, nullable: true }. Use PyArrow Schema for complex types.
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Struct { fields: Fields([Field { name: "a", data_type: Int32, nullable: true, metadata: [] }, Field { name: "b", data_type: Int32, ...
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Struct { fields: Fields([Field { name: "y", data_type: Int32, nullable: true, metadata: [] }]) }. Use PyArrow Schema for complex ty...
            1 SparkRuntimeException: Schema error: Unsupported type in DDL schema: Variant. Use PyArrow Schema for complex types.
            1 SparkRuntimeException: This feature is not implemented: Data type Decimal128(38, 18) not supported in row-based write path. Use DataSourceArrowWriter for full type support.
            1 SparkRuntimeException: This feature is not implemented: Unsupported CAST from Map("entries": non-null Struct("key": non-null Int32, "value": non-null Int32), unsorted) to Null
            1 SparkRuntimeException: TypeError: 'int' object is not an instance of 'str'
            1 SparkRuntimeException: TypeError: 'int' object is not subscriptable
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@7bmjouo64lso5qdqluibcbhzy(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@7bmjouo64lso5qdqluibcbhzy(plus_one@8yksnm5ftyza3az1fzuom7doj(#9)) PART...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@crhcwp7r85ckiofu16firpfxa(#9) PARTITION BY [#8] ORDER BY [#9 ASC NULLS...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: avg@crhcwp7r85ckiofu16firpfxa(plus_one@c7c4u6r15v9oxkclxs12pae19(#9)) PART...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@3nf1zn9mhhkqipuis990zftby(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@6me3jhxj7qv47kzaq810c1te(#9, #10) PARTITION BY [#8] ORDER BY...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@bhwolimzvcsd1zcnuq8fmlmns(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: Aggregate can not be used as a sliding accumulator because `retract_batch` is not implemented: weighted_mean@dieuo322vxjbend6vddych8sp(#9, #10) PARTITION BY [#8] ORDER B...
            1 UnsupportedOperationException: LATERAL table function with criteria
(+1)        1 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#0", data_type: List(Field { data_type: Float64 }), nullable: true, metadata: {"SAI...
            1 UnsupportedOperationException: Physical plan does not support logical expression OuterReferenceColumn(Field { name: "#1", data_type: Int32, nullable: true }, Column { relation: Some(Bare { table: "t1"...
            1 UnsupportedOperationException: Physical plan does not support logical expression ScalarSubquery(<subquery>)
            1 UnsupportedOperationException: Physical plan does not support undecorrelated Subquery
            1 UnsupportedOperationException: PlanNode::ClearCache
            1 UnsupportedOperationException: PlanNode::IsCached
            1 UnsupportedOperationException: PlanNode::RecoverPartitions
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Float64 is not implemented
            1 UnsupportedOperationException: Support for 'approx_distinct' for data type Struct("name": Utf8, metadata: {"SPARK::metadata::json": "{}"}, "value": Int64, metadata: {"SPARK::metadata::json": "{}"}) is...
            1 UnsupportedOperationException: Unsupported CAST from Struct("c": Int64, metadata: {"SPARK::metadata::json": "{}"}, "d": Float64, metadata: {"SPARK::metadata::json": "{}"}) to Struct("a": Int64, metada...
            1 UnsupportedOperationException: Unsupported CAST from Struct("value": non-null Binary, "metadata": non-null Binary) to Int32
            1 UnsupportedOperationException: apply in pandas with state
            1 UnsupportedOperationException: as of join
            1 UnsupportedOperationException: bucketing for writing listing table format
            1 UnsupportedOperationException: cast Time64(Nanosecond) to Spark data type
            1 UnsupportedOperationException: deduplicate within watermark
            1 UnsupportedOperationException: function: collate
            1 UnsupportedOperationException: function: collation
            1 UnsupportedOperationException: function: input_file_block_length
            1 UnsupportedOperationException: function: input_file_block_start
            1 UnsupportedOperationException: function: java_method
            1 UnsupportedOperationException: function: map_filter
            1 UnsupportedOperationException: function: map_zip_with
            1 UnsupportedOperationException: function: reflect
            1 UnsupportedOperationException: function: schema_of_xml
            1 UnsupportedOperationException: function: session_window
            1 UnsupportedOperationException: function: transform_keys
            1 UnsupportedOperationException: function: transform_values
            1 UnsupportedOperationException: function: try_reflect
            1 UnsupportedOperationException: function: zip_with
            1 UnsupportedOperationException: handle analyze semantic hash
            1 UnsupportedOperationException: unknown function: RANGE
            1 UnsupportedOperationException: unknown function: current_path
            1 UnsupportedOperationException: unknown function: time_bucket
            1 UnsupportedOperationException: unknown function: time_from_micros
            1 UnsupportedOperationException: unknown function: time_from_millis
            1 UnsupportedOperationException: unknown function: time_from_seconds
            1 UnsupportedOperationException: unknown function: time_to_micros
            1 UnsupportedOperationException: unknown function: time_to_millis
            1 UnsupportedOperationException: unknown function: time_to_seconds
            1 UnsupportedOperationException: unknown function: unwrap_udt
            1 ValueError: The column label 'id' is not unique.
            1 ValueError: The column label 'struct' is not unique.
(-1)        0 AnalysisException: UNION queries have different number of columns: left has 3 columns whereas right has 2 columns
(-1)        0 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(2387305283296368050), None)]
(-1)        0 AnalysisException: one value expected: [Column(Column { relation: None, name: "#1" }), Literal(Int64(8323913513044928005), None)]
(-1)        0 AssertionError: "Database 'memory:a3171eb8-afb1-4cbd-91dd-b7be9d193916' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 AssertionError: "Database 'memory:d2ba129d-b5d1-41db-b119-38225757114d' dropped." does not match "No table format found for: jdbc. The JDBC data source is provided by pysail and must be registered bef...
(-1)        0 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpgnismuov'
(-1)        0 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (095e9009-c87c-4199-8e9c-01c5bd66c6a6 != d9dde0d1-0670-4047-b249-c...
(-1)        0 PySparkAssertionError: Received incorrect server side session identifier for request. Please create a new Spark Session to reconnect. (776af850-e53f-438b-8c8b-b6cd856291d1 != eaccdd5e-0990-4552-bb

(truncated)

Passed Tests Diff
--- before.txt	2026-07-28 08:32:56.835377765 +0000
+++ after.txt	2026-07-28 08:32:57.440376818 +0000
@@ -1888,0 +1889 @@
+pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_make_timestamp
@@ -1931,0 +1933 @@
+pyspark/sql/tests/connect/test_parity_functions.py::FunctionsParityTests::test_try_make_timestamp
Failed Tests
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.analyzeTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.cacheTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.clearCache
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.createDatabase
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.createTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.dropDatabase
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.dropTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.dropView
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.functionExists
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getCreateTableString
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getFunction
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.getTableProperties
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.isCached
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.listPartitions
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.listTables
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.listViews
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.recoverPartitions
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshByPath
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.refreshTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.truncateTable
pyspark/sql/catalog.py::pyspark.sql.catalog.Catalog.uncacheTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame._joinAsOf
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.approxQuantile
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.asTable
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.cache
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.colRegex
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.dropDuplicatesWithinWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.explain
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.freqItems
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.groupingSets
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.hint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.lateralJoin
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.localCheckpoint
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.nearestByJoin
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.observe
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.pandas_api
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.persist
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.randomSplit
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionById
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.repartitionByRange
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sameSemantics
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.sampleBy
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.storageLevel
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.transpose
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.withWatermark
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrame.zipWithIndex
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.approxQuantile
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.freqItems
pyspark/sql/dataframe.py::pyspark.sql.dataframe.DataFrameStatFunctions.sampleBy
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.approx_count_distinct
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.approx_percentile
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.collation
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.corr
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.cosh
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.degrees
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.exp
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.from_json
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.from_xml
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.get_json_object
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.hash
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.histogram_numeric
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.inline_outer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_block_length
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_block_start
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.input_file_name
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.is_valid_variant
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.java_method
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_merge_agg_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_merge_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_merge_agg_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_agg_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_n_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_quantile_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_get_rank_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_merge_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_bigint
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.kll_sketch_to_string_float
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.log2
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.map_filter
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.map_zip_with
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.max_by
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.min_by
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.percentile_approx
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.reflect
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.reverse
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.schema_of_csv
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.schema_of_xml
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.session_window
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.shuffle
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.sin
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_asbinary
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_geogfromwkb
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_geomfromwkb
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_setsrid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.st_srid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tan
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_bucket
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_from_micros
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_from_millis
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_from_seconds
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_to_micros
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_to_millis
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.time_to_seconds
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.transform_keys
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.transform_values
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_add
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_avg
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_make_interval
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_make_timestamp
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_parse_url
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_reflect
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_subtract
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_to_date
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.try_variant_get
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_difference_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_difference_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_difference_theta_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_difference_theta_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_agg_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_theta_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_intersection_theta_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_agg_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_estimate_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_estimate_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_summary_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_summary_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_theta_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_sketch_theta_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_agg_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_agg_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_theta_double
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.tuple_union_theta_integer
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.udf
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.unwrap_udt
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.uuid
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.variant_get
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.window
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.xxhash64
pyspark/sql/functions/builtin.py::pyspark.sql.functions.builtin.zip_with
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_createDataFrame_pandas_duplicate_field_names
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_large_local_relation_size_limit_exceeded
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_pandas_self_destruct
pyspark/sql/tests/connect/arrow/test_parity_arrow.py::ArrowParityTests::test_toPandas_duplicate_field_names
pyspark/sql/tests/connect/arrow/test_parity_arrow_cogrouped_map.py::CogroupedMapInArrowParityTests::test_cogroup_apply_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_batching
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_iter_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_partial_iteration
pyspark/sql/tests/connect/arrow/test_parity_arrow_grouped_map.py::ApplyInArrowParityTests::test_apply_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_map_in_arrow_with_barrier_mode
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_map_in_arrow_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_nested_extraneous_field
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_nullability_widen
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_passing_metadata
pyspark/sql/tests/connect/arrow/test_parity_arrow_map.py::ArrowMapParityTests::test_top_level_wrong_order
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityLegacyTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityNonLegacyTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_day_time_interval_in_struct
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_day_time_interval_type_casting
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::ArrowPythonUDFParityTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_chained_udfs_with_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_multiple_udfs_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_cache
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_kill_on_timeout
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_char_varchar_return_type
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_collated_string_types
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_input_file_name
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_pyspark_logger
pyspark/sql/tests/connect/arrow/test_parity_arrow_python_udf.py::UDFParityTests::test_udf_with_udt
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf.py::ArrowPythonUDFParityTests::test_arrow_udf_basic_with_return_type_string
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf.py::ArrowPythonUDFParityTests::test_arrow_udf_wrong_arg
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_grouped_agg.py::GroupedAggArrowPythonUDFParityTests::test_grouped_agg_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_grouped_agg.py::GroupedAggArrowPythonUDFParityTests::test_input_output_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_arrow_udf_output_timestamps_ltz
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_arrow_udf_output_variant
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_scalar_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_scalar_iter_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_scalar.py::ScalarArrowPythonUDFParityTests::test_scalar_iter_arrow_udf_with_single_output_batch
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_bounded_mixed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_bounded_simple
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_complex_window_collect_as_map
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_kwargs
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_named_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_named_arguments_negative
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_shrinking_window
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_sliding_window
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_time_min
pyspark/sql/tests/connect/arrow/test_parity_arrow_udf_window.py::WindowArrowPythonUDFParityTests::test_window_arrow_udf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_error_mismatched_schema
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_lateral_join_disallowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_lateral_join_with_table_argument_disallowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_by_all_columns
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_by_single_partition_multiple_input_partitions
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_partition_column_removal
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_argument_with_regular_udtf_lateral_join_allowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_partition_by_multiple_columns
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_table_partition_by_single_column
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_type_coercion_string_to_int
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_empty_column_result
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_logging
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_named_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_and_order_by
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_and_terminate
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_empty_input_batch
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_null_values
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_partition_by_skip_rest_of_input
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_scalar_first_table_second
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_and_struct_arguments
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_and_scalar
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_basic
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_in_middle
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_arrow_udtf_with_table_argument_then_lateral_join_allowed
pyspark/sql/tests/connect/arrow/test_parity_arrow_udtf.py::ArrowUDTFParityTests::test_return_type_coercion_overflow
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_artifacts_cannot_be_overwritten
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_basic_requests
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_cache_artifact
pyspark/sql/tests/connect/client/test_artifact.py::ArtifactTests::test_copy_from_local_to_fs
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_archive
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_file
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_pyfile
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_add_zipped_package
pyspark/sql/tests/connect/client/test_artifact_localcluster.py::LocalClusterArtifactTests::test_artifacts_cannot_be_overwritten
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_fewer_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_more_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_no_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_no_state_no_data
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_basic_with_null
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_grouped_map_with_state.py::GroupedApplyInPandasWithStateTests::test_apply_in_pandas_with_state_python_worker_random_failure
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_composite_output_schema
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_schema_evolution_fails
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_batch_query
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_batch_query_initial_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_chaining_ops
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_in_pandas_composite_type
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_int_to_decimal_coercion
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_large_values
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_non_contiguous_grouping_cols
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_non_contiguous_grouping_cols_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_proc_timer
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_query_restarts
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_bytes_limit
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_records_limit
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state.py::TransformWithStateInPandasParityTests::test_transform_with_state_with_wmark_and_non_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_list_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_map_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_map_state_metadata_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state_with_extra_transformation
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_init_state_with_timers
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state_large_list
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_list_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_map_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_map_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_non_exist_value_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_restart_with_multiple_rows_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_transform_with_value_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_pandas_transform_with_state_state_variable.py::TransformWithStateInPandasStateVariableParityTests::test_value_state_ttl_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_composite_output_schema
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_schema_evolution_fails
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_batch_query
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_batch_query_initial_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_chaining_ops
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_in_pandas_composite_type
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_large_values
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_non_contiguous_grouping_cols
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_non_contiguous_grouping_cols_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_proc_timer
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_query_restarts
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state.py::TransformWithStateInPySparkParityTests::test_transform_with_state_with_wmark_and_non_event_time
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_list_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_map_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_map_state_metadata_with_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_basic
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state_with_extra_transformation
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_init_state_with_timers
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state_large_list
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_list_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_map_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_map_state_large_ttl
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_non_exist_value_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_restart_with_multiple_rows_init_state
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_state_with_timers_single_partition
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py::TransformWithStateInPySparkStateVariableParityTests::test_transform_with_value_state_metadata
pyspark/sql/tests/connect/pandas/streaming/test_parity_transform_with_state_state_variable.py

(truncated)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run ibis tests Trigger Ibis tests on a pull request run spark tests Trigger Spark tests on a pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants