av9ash/GitBugs huggingface dataset:
Bug: Group exception messages in execution/streaming
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:02
Affects Version/s: 3.2.0

'sql/core/src/main/scala/org/apache/spark/sql/execution/streaming'
|| Filename                             ||   Count ||
| CheckpointFileManager.scala          |       3 |
| CommitLog.scala                      |       1 |
| CompactibleFileStreamLog.scala       |       2 |
| FileStreamOptions.scala              |       1 |
| FileStreamSink.scala                 |       1 |
| GroupStateImpl.scala                 |       5 |
| HDFSMetadataLog.scala                |       4 |
| ManifestFileCommitProtocol.scala     |       1 |
| MicroBatchExecution.scala            |       5 |
| OffsetSeqLog.scala                   |       1 |
| Sink.scala                           |       3 |
| Source.scala                         |       3 |
| StreamingQueryWrapper.scala          |       1 |
| StreamingRelation.scala              |       1 |
| StreamingSymmetricHashJoinExec.scala |       2 |
| Triggers.scala                       |       1 |
| WatermarkTracker.scala               |       1 |
| memory.scala                         |       4 |
| statefulOperators.scala              |       2 |
Bug: Support query some DDL with CTES
Status: In Progress | Priority: Major | Resolution: 
Created: 30/Apr/21 10:31
Affects Version/s: 3.2.0

Some command used to display some metadata, such as: SHOW TABLES, SHOW TABLE EXTENDED,SHOW TBLPROPERTIES and so no.

If the output rows much than screen height, the output very unfriendly to developers.
So we should have a way to filter the output like the behavior of
WITH s AS (SHOW NAMESPACES) SELECT * FROM s WHERE namespace = 'query_ddl_namespace';
Bug: Group exception messages in hive/client
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:06
Affects Version/s: 3.2.0

'sql/hive/src/main/scala/org/apache/spark/sql/hive/client'
|| Filename                   ||   Count ||
| HiveClient.scala           |       3 |
| HiveClientImpl.scala       |      11 |
| HiveShim.scala             |       8 |
| IsolatedClientLoader.scala |       1 |
Bug: Migrate to resolveWithPruning for two command rules
Status: Resolved | Priority: Major | Resolution: Done
Created: 20/Apr/21 08:01
Affects Version/s: 3.1.0

We can add one TreePattern called "COMMAND". Then, two rules to be migrated:
 * ResolvePartitionSpec
 * ResolveCommandsWithIfExists 

 

Commit [https://github.com/apache/spark/commit/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631] contains the framework level change and a few example rule changes.

 

Example patterns:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala#L24-L32]

 

Example rule:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/CostBasedJoinReorder.scala]

 

[https://github.com/apache/spark/pull/32247] is another example
Bug: Group exception messages in hive/execution
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:06
Affects Version/s: 3.2.0

'sql/hive/src/main/scala/org/apache/spark/sql/hive/execution'
|| Filename                             ||   Count ||
| CreateHiveTableAsSelectCommand.scala |       1 |
| HiveFileFormat.scala                 |       1 |
| HiveOptions.scala                    |       2 |
| InsertIntoHiveTable.scala            |       4 |
| SaveAsHiveFile.scala                 |       4 |
Bug: Migrate to transformWithPruning for leftover optimizer rules
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 19:54
Affects Version/s: 3.1.0

E.g., PushDownPredicates and a few others.

 

Commit [https://github.com/apache/spark/commit/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631] contains the framework level change and a few example rule changes.

 

Example patterns:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala#L24-L32]

 

Example rule:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/CostBasedJoinReorder.scala]

 

[https://github.com/apache/spark/pull/32247] is another example
Bug: Improve the subquery decorrelation framework
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 07/Apr/21 01:57
Affects Version/s: 3.2.0

Currently, Spark has limited support for correlated subqueries. It only allows Filter to have outer column references and does not support non-equality predicates when the subquery is aggregated. Please see https://issues.apache.org/jira/browse/SPARK-18455 for more details on how subquery decorrelation works in Spark.

The task here is to implement the technique introduced in "Unnesting Arbitrary Queries" by T. Neumann; A. Kemper
 ([http://www.btw-2015.de/res/proceedings/Hauptband/Wiss/Neumann-Unnesting_Arbitrary_Querie.pdf]). This allows Spark to have outer query column references other than Filter, decorrelate subqueries with more types of operators, and support correlated non-equality predicates.

This will also enable supporting lateral derived table (https://issues.apache.org/jira/browse/SPARK-34382) in the future.
Bug: The implementation of RocksDBCheckpointMetadata
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 21/Apr/21 09:17
Affects Version/s: 3.2.0

The RocksDBCheckpointMetadata persists the metadata for each committed batch in JSON format. The object contains all RocksDB file names and the number of total keys.
 The metadata binds closely with the directory structure of RocksDBFileManager, as described in the design doc - [Directory Structure and Format for Files stored in DFS|https://docs.google.com/document/d/10wVGaUorgPt4iVe4phunAcjU924fa3-_Kf29-2nxH6Y/edit#heading=h.zgvw85ijoz2]
Bug: Group exception messages in hive/thriftserver
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:05
Affects Version/s: 3.2.0

'sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver'
|| Filename                             ||   Count ||
| SparkExecuteStatementOperation.scala |       2 |
| SparkGetColumnsOperation.scala       |       1 |
| SparkOperation.scala                 |       2 |
| SparkSQLCLIDriver.scala              |       2 |
| SparkSQLCLIService.scala             |       2 |
| SparkSQLSessionManager.scala         |       1 |


'sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui'
|| Filename               ||   Count ||
| ThriftServerPage.scala |       2 |
| ThriftServerTab.scala  |       1 |
Bug: Spark Streaming LocationStrategy should provide a random option that mapping kafka partitions randomly to spark executors
Status: In Progress | Priority: Major | Resolution: 
Created: 24/Apr/21 16:34
Affects Version/s: 3.1.1

There are three LocationStrategy: PreferBrokers, PreferConsistent, PreferFixed. I got a scenario that I need a random one. There are plenty of topic partitions that are varies from each other with different records inside. And I have a lot of executors. PreferBrokers does not help here. PreferConsistent will make things worse that some executor will always get heavy tasks. PreferFixed does not help too, because it is fixed, neither to say I have to create a mapping manually.

A random LocationStrategy should dispatch a topic partition to different executors in different window. This would balance the load among spark executors.
Bug: JDBC datasources should accept refreshKrb5Config parameter
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 26/Apr/21 05:25
Affects Version/s: 3.1.1

In the current master, JDBC datasources can't accept refreshKrb5Config which is defined in Krb5LoginModule.
So even if we change the krb5.conf after establishing  a connection, the change will not be reflected.
Bug: AQE columnar mismatch on exchange reuse
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 15/Apr/21 16:09
Affects Version/s: 3.0.2

With AQE enabled, AdaptiveSparkPlanExec will attempt to reuse exchanges that are semantically equal.

This is done by comparing the canonicalized plan for two Exchange nodes to see if they are the same.

Unfortunately this does not take into account the fact that two exchanges with the same canonical plan might be replaced by a plugin in a way that makes them not compatible. For example, a plugin could create one version with supportsColumnar=true and another with supportsColumnar=false. It is not valid to re-use exchanges if there is a supportsColumnar mismatch.

I have tested a fix for this and will put up a PR once I figure out how to write the tests.
Bug: Refactor ShuffleBlockFetcherIteratorSuite to reduce duplicated code
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 28/Apr/21 20:12
Affects Version/s: 3.1.1

{{ShuffleFetcherBlockIteratorSuite}} has tons of duplicate code, like:
{code}
    val iterator = new ShuffleBlockFetcherIterator(
      taskContext,
      transfer,
      blockManager,
      blocksByAddress,
      (_, in) => in,
      48 * 1024 * 1024,
      Int.MaxValue,
      Int.MaxValue,
      Int.MaxValue,
      true,
      false,
      metrics,
      false)
{code}
It's challenging to tell what the interesting parts are vs. what is just being set to some default/unused value.

Similarly but not as bad, there are 10 calls like:
{code}
verify(transfer, times(1)).fetchBlocks(any(), any(), any(), any(), any(), any())
{code}
and 7 like
{code}
when(transfer.fetchBlocks(any(), any(), any(), any(), any(), any())).thenAnswer ...
{code}

This can result in about 10% reduction in both lines and characters in the file:
{code}
# Before
> wc core/src/test/scala/org/apache/spark/storage/ShuffleBlockFetcherIteratorSuite.scala
    1063    3950   43201 core/src/test/scala/org/apache/spark/storage/ShuffleBlockFetcherIteratorSuite.scala

# After
> wc core/src/test/scala/org/apache/spark/storage/ShuffleBlockFetcherIteratorSuite.scala
     928    3609   39053 core/src/test/scala/org/apache/spark/storage/ShuffleBlockFetcherIteratorSuite.scala
{code}

It also helps readability:
{code}
    val iterator = createShuffleBlockIteratorWithDefaults(
      transfer,
      blocksByAddress,
      maxBytesInFlight = 1000L
    )
{code}
Now I can clearly tell that {{maxBytesInFlight}} is the main parameter we're interested in here.
Bug: Upgrade SBT to 1.5.0
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 05/Apr/21 18:23
Affects Version/s: 3.2.0

This JIRA issue aims to upgrade SBT to 1.5.0 which has built-in Scala 3 support.

https://github.com/sbt/sbt/releases/tag/v1.5.0
Bug: hash() and other hash builtins do not normalize negative zero
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 23/Apr/21 21:47
Affects Version/s: 3.1.1

I would generally expect that {{x = y => hash( x ) = hash( y )}}. However +-0 hash to different values for floating point types. 

{noformat}
scala> spark.sql("select hash(cast('0.0' as double)), hash(cast('-0.0' as double))").show
+-------------------------+--------------------------+
|hash(CAST(0.0 AS DOUBLE))|hash(CAST(-0.0 AS DOUBLE))|
+-------------------------+--------------------------+
|              -1670924195|                -853646085|
+-------------------------+--------------------------+
scala> spark.sql("select cast('0.0' as double) == cast('-0.0' as double)").show
+--------------------------------------------+
|(CAST(0.0 AS DOUBLE) = CAST(-0.0 AS DOUBLE))|
+--------------------------------------------+
|                                        true|
+--------------------------------------------+
{noformat}

I'm not sure how likely this is to cause issues in practice, since only a limited number of calculations can produce -0 and joining or aggregating with floating point keys is a bad practice as a general rule, but I think it would be safer if we normalised -0.0 to +0.0.
Bug: Group exception messages in sql/streaming
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:13
Affects Version/s: 3.2.0

'sql/core/src/main/scala/org/apache/spark/sql/streaming'
|| Filename                    ||   Count ||
| DataStreamReader.scala      |       2 |
| DataStreamWriter.scala      |       9 |
| StreamingQueryManager.scala |       1 |


'sql/core/src/main/scala/org/apache/spark/sql/streaming/ui'
|| Filename                           ||   Count ||
| StreamingQueryPage.scala           |       1 |
| StreamingQueryStatisticsPage.scala |       1 |
Bug: Migrate to transformWithPruning or resolveWithPruning for rules in finishAnalysis
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 20/Apr/21 07:53
Affects Version/s: 3.1.0

Rules in org/apache/spark/sql/catalyst/optimizer/finishAnalysis.Scala, except RewriteNonCorrelatedExists which was done in SPARK-35075.

 

Commit [https://github.com/apache/spark/commit/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631] contains the framework level change and a few example rule changes.

 

Example patterns:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala#L24-L32]

 

Example rule:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/CostBasedJoinReorder.scala]

 

[https://github.com/apache/spark/pull/32247] is another example
Bug: Group exception messages in connector/catalog
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 10/Apr/21 22:07
Affects Version/s: 3.2.0

'sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog'
|| Filename                 ||   Count ||
| CatalogManager.scala     |       2 |
| CatalogV2Implicits.scala |       3 |
| CatalogV2Util.scala      |       8 |
| LookupCatalog.scala      |       2 |
Bug: Migrate to transformWithPruning or resolveWithPruning for object rules
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 20/Apr/21 07:27
Affects Version/s: 3.1.0

Rules in org/apache/spark/sql/catalyst/optimizer/objects.Scala

 

Commit [https://github.com/apache/spark/commit/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631] contains the framework level change and a few example rule changes.

 

Example patterns:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala#L24-L32]

 

Example rule:

[https://github.com/apache/spark/blob/3db8ec258c4a8438bda73c26fc7b1eb6f9d51631/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/CostBasedJoinReorder.scala]

 

[https://github.com/apache/spark/pull/32247] is another example
Bug: Group exception messages in catalyst/util
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 10/Apr/21 22:03
Affects Version/s: 3.2.0

'sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util'
|| Filename                      ||   Count ||
| ArrayBasedMapBuilder.scala    |       3 |
| DateTimeFormatterHelper.scala |       3 |
| DateTimeUtils.scala           |       3 |
| IntervalUtils.scala           |       2 |
| TimestampFormatter.scala      |       1 |
| TypeUtils.scala               |       1 |
Bug: CombineFilters support non-deterministic expressions
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 29/Apr/21 13:11
Affects Version/s: 3.2.0

For example:
{code:scala}
spark.sql("create table t1(id int) using parquet")
spark.sql("select * from (select * from t1 where id not in (1, 3, 6)) t where id = 7 and rand() <= 0.01").explain("cost")
{code}

Current:
{noformat}
== Optimized Logical Plan ==
Filter (isnotnull(id#0) AND ((id#0 = 7) AND (rand(-639771619343876662) <= 0.01))), Statistics(sizeInBytes=1.0 B)
+- Filter NOT id#0 IN (1,3,6), Statistics(sizeInBytes=1.0 B)
   +- Relation default.t1[id#0] parquet, Statistics(sizeInBytes=0.0 B)
{noformat}

Expected:
{noformat}
== Optimized Logical Plan ==
Filter ((rand(-639771619343876662) <= 0.01))), Statistics(sizeInBytes=1.0 B)
+- Filter NOT id#0 IN (1,3,6) and isnotnull(id#0) AND ((id#0 = 7) , Statistics(sizeInBytes=1.0 B)
   +- Relation default.t1[id#0] parquet, Statistics(sizeInBytes=0.0 B)
{noformat}


Another example:
{code:scala}
spark.sql("create table t1(id int) using parquet")
spark.sql("create view v1 as select * from t1 where id not in (1, 3, 6)")
spark.sql("select * from v1 where id = 7 and rand() <= 0.01").explain("cost")
{code}
Bug: Use CheckpointFileManager for checkpoint manipulation
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 27/Apr/21 07:11
Affects Version/s: 3.2.0

`CheckpointFileManager` is designed to handle checkpoint file manipulation. However, there are a few places exposing FileSystem from checkpoint files/paths. We should use `CheckpointFileManager` to manipulate checkpoint files. For example, we may want to have one storage system for checkpoint file. If all checkpoint file manipulation is performed through `CheckpointFileManager`, we can only implement `CheckpointFileManager` for the storage system, and don't need to implement FileSystem API for it.
Bug: OptimizeSkewedJoin support ShuffledHashJoinExec
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 25/Apr/21 05:06
Affects Version/s: 3.2.0

Currently, we have already supported all type of join through hint that make it easy to choose the join implementation.

We would choose `ShuffledHashJoin` if one table is not big but over the broadcast threshold. It's better that we can support optimize it in `OptimizeSkewedJoin`.
Bug: to_timestamp can't parse 6 digit microsecond SSSSSS
Status: Resolved | Priority: Major | Resolution: Cannot Reproduce
Created: 28/Apr/21 00:22
Affects Version/s: 2.4.6

spark-sql> select x, to_timestamp(x,"MMM dd yyyy hh:mm:ss.SSSSSS") from (select 'Apr 13 2021 12:00:00.001000AM' x);
Apr 13 2021 12:00:00.001000AM NULL

 

Why doesn't the to_timestamp work?
Bug: Invoke should find the method with correct number of parameters
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 30/Apr/21 03:38
Affects Version/s: 2.4.7

`Invoke` will find out the method on the target object with given method name. If there are more than one method with the name, currently it is undeterministic which method will be used. We should add the condition of parameter number when finding the method.
Bug: After CrossValidator/TrainValidationSplit fit raised error, some backgroud threads may still continue run or launch new spark jobs
Status: In Progress | Priority: Major | Resolution: 
Created: 29/Apr/21 10:06
Affects Version/s: 3.0.1

CrossValidator/TrainValidationSplit fit will spawn many threads to run trial tasks.
if one of the trial tasks failed, the CrossValidator/TrainValidationSplit fit will raise error and break the main thread, but other backgroud threads running other trial tasks will continue to run, and trial tasks which are pending to run in thread queue will also continue to launch.
Bug: Reserve format of the stage failureMessage
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 27/Apr/21 02:52
Affects Version/s: 3.2.0

 
{code:java}
s"""$failedStage (${failedStage.name})
  |has failed the maximum allowable number of
  |times: $maxConsecutiveStageAttempts.
  |Most recent failure reason: $failureMessage""".stripMargin.replaceAll("\n", " ")
{code}
 

The failureMessage is already formatted, but "replaceAll("\n", " ")" destroy the format, which is inconvenient to check error stacks.
Bug: Replace Bintray with the new repository service for the spark-packages resolver in SparkSubmit
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 26/Apr/21 06:47
Affects Version/s: 2.4.7

As Bintray is being shut down, we have setup a new repository service at repos.spark-packages.org. We need to replace Bintray with the new service for the spark-packages resolver in SparkSumit.
Bug: Accelerate fallback BLAS with dev.ludovic.netlib
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 20/Apr/21 14:20
Affects Version/s: 3.2.0

Following https://github.com/apache/spark/pull/30810, I've continued looking for ways to accelerate the usage of BLAS in Spark. With this PR, I integrate work done in the [{{dev.ludovic.netlib}}|https://github.com/luhenry/netlib/] Maven package.

The {{dev.ludovic.netlib}} library wraps the original {{com.github.fommil.netlib}} library and focus on accelerating the linear algebra routines in use in Spark. When running the {{org.apache.spark.ml.linalg.BLASBenchmark}}benchmarking suite, I get the results at [1] on an Intel machine. Moreover, this library is thoroughly tested to return the exact same results as the reference implementation.

Under the hood, it reimplements the necessary algorithms in pure autovectorization-friendly Java 8, as well as takes advantage of the Vector API and Foreign Linker API introduced in JDK 16 when available.
Bug: Support ANSI intervals by date_part()
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 15/Apr/21 12:41
Affects Version/s: 3.2.0

Support year-month and day-time intervals by date_part(). For example:

{code:sql}
      > SELECT date_part('days', interval '5 0:0:0' day to second);
       5
      > SELECT date_part('seconds', interval '10 11:12:30.001001' DAY TO SECOND);
       30.001001
{code}
Bug: Group exception messages in sql/types
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 14/Apr/21 06:08
Affects Version/s: 3.2.0

'sql/catalyst/src/main/scala/org/apache/spark/sql/types'
|| Filename         ||   Count ||
| Decimal.scala    |       4 |
| Metadata.scala   |       4 |
| StructType.scala |       1 |
| numerics.scala   |       7 |
Bug: Wrong result of min ANSI interval division by -1
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 21/Apr/21 06:42
Affects Version/s: 3.2.0

The code below portraits the issue:

{code:scala}
scala> Seq(java.time.Period.ofMonths(Int.MinValue)).toDF("i").select($"i" / -1).show(false)
+-------------------------------------+
|(i / -1)                             |
+-------------------------------------+
|INTERVAL '-178956970-8' YEAR TO MONTH|
+-------------------------------------+
scala> Seq(java.time.Duration.of(Long.MinValue, java.time.temporal.ChronoUnit.MICROS)).toDF("i").select($"i" / -1).show(false)
+---------------------------------------------------+
|(i / -1)                                           |
+---------------------------------------------------+
|INTERVAL '-106751991 04:00:54.775808' DAY TO SECOND|
+---------------------------------------------------+
{code}
The result cannot be a negative interval. Spark must throw an overflow exception.
Bug: Switch from bintray to scala.jfrog.io for SBT download in branch 2.4 and 3.0
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 26/Apr/21 18:28
Affects Version/s: 2.4.8

As bintray is going to be [deprecated|https://eed3si9n.com/bintray-to-jfrog-artifactory-migration-status-and-sbt-1.5.1], the download of {{sot-launch.jar}} will fail. This proposes to migrate the URL from {{https://dl.bintray.com/typesafe}} to {{https://scala.jfrog.io/artifactory}} for branch-2.4 and branch-3.0 which are affected by this.
Bug: Flaky MutableProjectionSuite
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 25/Apr/21 18:46
Affects Version/s: 3.0.3

The test suite MutableProjectionSuite fails sometimes with:

{code:java}
- unsafe buffer with CODEGEN_ONLY (50 milliseconds)
- unsafe buffer with NO_CODEGEN *** FAILED *** (55 milliseconds)
  [true,-103,18142,0,369759,1.3E-44,2.0556913947E-314,0,0,2102131330,0] did not equal [false,1,9,-18,53,3.2,7.8,4,9,-2147483648,9223372036854775807] (MutableProjectionSuite.scala:57)
{code}