voonhous commented on code in PR #19236:
URL: https://github.com/apache/hudi/pull/19236#discussion_r3560444596


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/hudi/functional/TestLanceDataSource.scala:
##########
@@ -1443,6 +1481,150 @@ class TestLanceDataSource extends 
HoodieSparkClientTestBase {
     }
   }
 
+  /**
+   * Clustering must preserve INLINE blob bytes under the DESCRIPTOR default. 
Clustering rewrites
+   * ALL rows through 
MultipleSparkJobExecutionStrategy.readRecordsForGroupAsRow, which reads base
+   * files through the same internal write-side reader context as compaction
+   * (SparkReaderContextFactory -> SparkFileFormatInternalRowReaderContext -> 
SparkLanceReaderBase).
+   * Before SparkReaderContextFactory pinned {@code 
hoodie.read.blob.inline.mode=CONTENT} for
+   * internal reads, the first clustering of a Lance table with INLINE blobs 
read null {@code data}
+   * (the DESCRIPTOR default) and rewrote every row's blob with null bytes, 
silently losing all
+   * blob content (#19232). This test bulk-inserts INLINE blobs, triggers 
inline clustering,
+   * asserts a replacecommit actually completed, and verifies every row's 
bytes survived.
+   */
+  @Test
+  def testBlobInlineClusteringRoundTrip(): Unit = {

Review Comment:
   Added testBlobInlineCowUpsertMergeRoundTrip: CoW bulk_insert of INLINE blobs 
into a single file group, then an upsert of a subset. It pins the merge 
actually ran (two commits, no deltacommits, post-upsert base file disjoint from 
pre-upsert) and checks touched rows carry the new bytes while untouched rows 
keep the originals, with the same DESCRIPTOR-shape and CONTENT-mode checks as 
the compaction/clustering tests. The class's write helper uses 
DefaultSparkRecordMerger, so this exercises the SPARK branch of 
getReaderContextFactoryForWrite (SparkReaderContextFactory), i.e. the default 
datasource path.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to