This is an automated email from the ASF dual-hosted git repository.
junhao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new e603e4a448 [flink][spark] path_to_descriptor function supports http
url (#7529)
e603e4a448 is described below
commit e603e4a448c54baddd5c7fabb92855ead5ac049a
Author: Faiz <[email protected]>
AuthorDate: Wed Mar 25 22:06:20 2026 +0800
[flink][spark] path_to_descriptor function supports http url (#7529)
---
.../paimon/flink/function/PathToDescriptor.java | 2 +-
.../org/apache/paimon/flink/BlobTableITCase.java | 31 ++++++++++++++++++++++
.../spark/function/PathToDescriptorFunction.java | 2 +-
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/function/PathToDescriptor.java
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/function/PathToDescriptor.java
index 87d136f717..210116b9ca 100644
---
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/function/PathToDescriptor.java
+++
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/function/PathToDescriptor.java
@@ -30,7 +30,7 @@ public class PathToDescriptor extends ScalarFunction {
return null;
}
- BlobDescriptor descriptor = new BlobDescriptor(path, 0,
Long.MAX_VALUE);
+ BlobDescriptor descriptor = new BlobDescriptor(path, 0, -1);
return descriptor.serialize();
}
}
diff --git
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/BlobTableITCase.java
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/BlobTableITCase.java
index 29938f36be..e490020709 100644
---
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/BlobTableITCase.java
+++
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/BlobTableITCase.java
@@ -25,6 +25,7 @@ import org.apache.paimon.data.BlobRef;
import org.apache.paimon.fs.FileIO;
import org.apache.paimon.fs.local.LocalFileIO;
import org.apache.paimon.options.Options;
+import org.apache.paimon.rest.TestHttpWebServer;
import org.apache.paimon.table.FileStoreTable;
import org.apache.paimon.types.RowType;
import org.apache.paimon.utils.UriReader;
@@ -299,6 +300,36 @@ public class BlobTableITCase extends CatalogITCaseBase {
assertThat(allColumns).hasSize(1);
}
+ @Test
+ public void testWriteBlobWithHttpUrlDescriptor() throws Exception {
+ TestHttpWebServer httpServer = new TestHttpWebServer("/blob_data");
+ httpServer.start();
+ try {
+ String blobContent = "hello-http-blob";
+ String httpUrl = httpServer.getBaseUrl();
+
+ // Enqueue response for the write phase
+ httpServer.enqueueResponse(blobContent, 200);
+
+ // Use sys.path_to_descriptor with HTTP URL
+ batchSql(
+ "INSERT INTO blob_table_descriptor VALUES (1, 'http-blob',
sys.path_to_descriptor('"
+ + httpUrl
+ + "'))");
+
+ // Read back with blob-as-descriptor=false to get raw data
+ batchSql("ALTER TABLE blob_table_descriptor SET
('blob-as-descriptor'='false')");
+ List<Row> result = batchSql("SELECT * FROM blob_table_descriptor");
+ assertThat(result).hasSize(1);
+ assertThat(result.get(0).getField(0)).isEqualTo(1);
+ assertThat(result.get(0).getField(1)).isEqualTo("http-blob");
+ assertThat((byte[]) result.get(0).getField(2))
+
.isEqualTo(blobContent.getBytes(java.nio.charset.StandardCharsets.UTF_8));
+ } finally {
+ httpServer.stop();
+ }
+ }
+
@Test
public void testBlobTypeSchemaEquals() throws Exception {
// Step 1: Create a Paimon table with blob field via Flink SQL
diff --git
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/function/PathToDescriptorFunction.java
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/function/PathToDescriptorFunction.java
index ea6f306cc3..8c26b5eefd 100644
---
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/function/PathToDescriptorFunction.java
+++
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/function/PathToDescriptorFunction.java
@@ -45,7 +45,7 @@ public class PathToDescriptorFunction implements
ScalarFunction<byte[]>, Seriali
return null;
}
- BlobDescriptor descriptor = new BlobDescriptor(path.toString(), 0,
Long.MAX_VALUE);
+ BlobDescriptor descriptor = new BlobDescriptor(path.toString(), 0, -1);
return descriptor.serialize();
}