Max Gekk created SPARK-59571:
--------------------------------

             Summary: Cover every TIME precision, null pattern and interval 
sign in ArrowCachedBatchSerializerSuite
                 Key: SPARK-59571
                 URL: https://issues.apache.org/jira/browse/SPARK-59571
             Project: Spark
          Issue Type: Sub-task
          Components: SQL, Tests
    Affects Versions: 4.3.0
            Reporter: Max Gekk


h3. What

Add two tests to \{{ArrowCachedBatchSerializerSuite}} for the Arrow cache 
serializer (SPARK-57268) over the \{{TIME}} and \{{INTERVAL DAY TO SECOND}} 
types:

* \{{TIME(p)}} for p in 0, 3, 6 and 9, each at three null patterns (every 31st 
row null, no nulls, all nulls), a thousand rows in one partition. Each case 
checks that the cached frame answers what the uncached one did, that the cached 
\{{InMemoryRelation}} keeps \{{TimeType(p)}} with the declared precision, and 
that the serializer's own columnar read path yields a \{{TimeNanoVector}} per 
batch whose row and null counts add up to the input's. The values are truncated 
to the declared precision so a precision loss could not hide behind a value the 
type would round anyway.
* \{{INTERVAL DAY TO SECOND}} with whole microseconds of both signs, at the 
same three null patterns, checking the same three things against a 
\{{DurationVector}}.

h3. Why

The suite today round-trips \{{TIME}} once, at precision 6, over two non-null 
rows, and checks its \{{LongColumnStats}}. Every precision of \{{TIME}} is 
written to the same \{{TimeNanoVector}}, and the precision travels only in the 
Arrow field metadata, so a regression that dropped it on the way back through 
the cache would leave the values intact and fail no existing test. The all-null 
column takes a branch of its own in the vector (no validity buffer), and 
negative intervals are not covered at all. \{{TIME}} is about to be enabled by 
default, and the Arrow cache is one of the paths it takes.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to