From 5ae5e35067e2724719900cdee03426d0f18b00d0 Mon Sep 17 00:00:00 2001 From: robbcamera Date: Mon, 3 Mar 2025 12:44:07 -0500 Subject: [PATCH] test: DH-18259: Add empty-table test for Iceberg (#6678) --- .../io/deephaven/iceberg/Pyiceberg2Test.java | 16 +++++++++++++++- ...-a7b1-43bb-9cac-7d9081820b06.metadata.json | 1 + .../sqlite/db_resource/dh-iceberg-test.db | Bin 20480 -> 20480 bytes .../db_resource/generate-pyiceberg-2.py | 8 ++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/catalogs/pyiceberg-2/trading.db/data_empty/metadata/00000-ba9e11f2-a7b1-43bb-9cac-7d9081820b06.metadata.json diff --git a/extensions/iceberg/src/test/java/io/deephaven/iceberg/Pyiceberg2Test.java b/extensions/iceberg/src/test/java/io/deephaven/iceberg/Pyiceberg2Test.java index db2bbf13731..66b83363eea 100644 --- a/extensions/iceberg/src/test/java/io/deephaven/iceberg/Pyiceberg2Test.java +++ b/extensions/iceberg/src/test/java/io/deephaven/iceberg/Pyiceberg2Test.java @@ -35,6 +35,7 @@ class Pyiceberg2Test { private static final Namespace NAMESPACE = Namespace.of("trading"); private static final TableIdentifier TRADING_DATA = TableIdentifier.of(NAMESPACE, "data"); + private static final TableIdentifier EMPTY_DATA = TableIdentifier.of(NAMESPACE, "data_empty"); // This will need to be updated if the data is regenerated private static final long SNAPSHOT_1_ID = 2806418501596315192L; @@ -55,7 +56,7 @@ void setUp() throws URISyntaxException { @Test void catalogInfo() { assertThat(catalogAdapter.listNamespaces()).containsExactly(NAMESPACE); - assertThat(catalogAdapter.listTables(NAMESPACE)).containsExactly(TRADING_DATA); + assertThat(catalogAdapter.listTables(NAMESPACE)).containsExactly(TRADING_DATA, EMPTY_DATA); final IcebergTableAdapter tableAdapter = catalogAdapter.loadTable(TRADING_DATA); final List snapshots = tableAdapter.listSnapshots(); @@ -105,4 +106,17 @@ void testData() { TstUtils.assertTableEquals(expectedData.sort("datetime", "symbol"), fromIceberg.sort("datetime", "symbol")); } + + @Test + void testEmpty() { + final IcebergTableAdapter tableAdapter = catalogAdapter.loadTable(EMPTY_DATA); + final Table fromIceberg = tableAdapter.table(); + assertThat(fromIceberg.size()).isEqualTo(0); + final Table expectedData = TableTools.newTable(TABLE_DEFINITION, + TableTools.col("datetime", new LocalDateTime[0]), + TableTools.stringCol("symbol"), + TableTools.doubleCol("bid"), + TableTools.doubleCol("ask")); + TstUtils.assertTableEquals(expectedData, fromIceberg); + } } diff --git a/extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/catalogs/pyiceberg-2/trading.db/data_empty/metadata/00000-ba9e11f2-a7b1-43bb-9cac-7d9081820b06.metadata.json b/extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/catalogs/pyiceberg-2/trading.db/data_empty/metadata/00000-ba9e11f2-a7b1-43bb-9cac-7d9081820b06.metadata.json new file mode 100644 index 00000000000..aadcd08f342 --- /dev/null +++ b/extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/catalogs/pyiceberg-2/trading.db/data_empty/metadata/00000-ba9e11f2-a7b1-43bb-9cac-7d9081820b06.metadata.json @@ -0,0 +1 @@ +{"location":"catalogs/pyiceberg-2/trading.db/data_empty","table-uuid":"c6d40ecb-6228-4ce8-b5a9-b7d27c965fb2","last-updated-ms":1740686637766,"last-column-id":4,"schemas":[{"type":"struct","fields":[{"id":1,"name":"datetime","type":"timestamp","required":false},{"id":2,"name":"symbol","type":"string","required":false},{"id":3,"name":"bid","type":"double","required":false},{"id":4,"name":"ask","type":"double","required":false}],"schema-id":0,"identifier-field-ids":[]}],"current-schema-id":0,"partition-specs":[{"spec-id":0,"fields":[{"source-id":1,"field-id":1000,"transform":"day","name":"datetime_day"},{"source-id":2,"field-id":1001,"transform":"identity","name":"symbol"}]}],"default-spec-id":0,"last-partition-id":1001,"properties":{},"snapshots":[],"snapshot-log":[],"metadata-log":[],"sort-orders":[{"order-id":0,"fields":[]}],"default-sort-order-id":0,"refs":{},"format-version":2,"last-sequence-number":0} \ No newline at end of file diff --git a/extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/dh-iceberg-test.db b/extensions/iceberg/src/test/resources/io/deephaven/iceberg/sqlite/db_resource/dh-iceberg-test.db index 44c557bd98e7ef25e87f75b12468e8578ad72d7d..bbf059363753d8e786a3408d3ac76b28b0aa9188 100644 GIT binary patch delta 217 zcmZozz}T>Wae_1>_e2?IR&EBpaIcLi3;4O1d0QFyS@^_xTQ>^|l=G@J@-wq5ODi^} zG89y1CZ{H)7NzSNl@ukWWag!(B$gz`r{)%vR8F2Jr{V!&>gT4GB!Xo04M0FQDbX_3 z&@jzNH_<%FP}jsbDM{BdIWbw+JjK$$!qCFVAj!Z?52i;it2jSzv$)(_MlNRl`3(H` d`492W-z=ywkzZMf73d5`e2!q=d`RC;0RSk