Skip to content

Commit 0cfa118

Browse files
committed
Add test table and a test with metadata enabled
1 parent 55cb5d1 commit 0cfa118

File tree

53 files changed

+98
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+98
-1
lines changed

Diff for: plugin/trino-hudi/src/main/java/io/trino/plugin/hudi/HudiSessionProperties.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
public class HudiSessionProperties
4242
implements SessionPropertiesProvider
4343
{
44+
static final String METADATA_TABLE_ENABLED = "metadata_enabled";
4445
private static final String COLUMNS_TO_HIDE = "columns_to_hide";
45-
private static final String METADATA_TABLE_ENABLED = "metadata_enabled";
4646
private static final String USE_PARQUET_COLUMN_NAMES = "use_parquet_column_names";
4747
private static final String PARQUET_SMALL_FILE_THRESHOLD = "parquet_small_file_threshold";
4848
private static final String PARQUET_VECTORIZED_DECODING_ENABLED = "parquet_vectorized_decoding_enabled";

Diff for: plugin/trino-hudi/src/test/java/io/trino/plugin/hudi/TestHudiSmokeTest.java

+14
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import static io.trino.plugin.hudi.testing.ResourceHudiTablesInitializer.TestingTable.HUDI_COW_PT_TBL;
3030
import static io.trino.plugin.hudi.testing.ResourceHudiTablesInitializer.TestingTable.HUDI_NON_PART_COW;
31+
import static io.trino.plugin.hudi.testing.ResourceHudiTablesInitializer.TestingTable.HUDI_STOCK_TICKS_MOR;
3132
import static io.trino.plugin.hudi.testing.ResourceHudiTablesInitializer.TestingTable.STOCK_TICKS_COW;
3233
import static io.trino.plugin.hudi.testing.ResourceHudiTablesInitializer.TestingTable.STOCK_TICKS_MOR;
3334
import static org.assertj.core.api.Assertions.assertThat;
@@ -134,12 +135,25 @@ public void testMetaColumns()
134135
"VALUES ('719c3273-2805-4124-b1ac-e980dada85bf-0_0-27-1215_20220906063435640.parquet'), ('4a3fcb9b-65eb-4f6e-acf9-7b0764bb4dd1-0_0-70-2444_20220906063456550.parquet')");
135136
}
136137

138+
@Test
139+
public void testReadPartitionedMORTableWithMetadata()
140+
{
141+
getQueryRunner().execute(getSession(), "SET SESSION hudi.metadata_enabled=true");
142+
assertQuery("SELECT symbol, max(ts) FROM " + HUDI_STOCK_TICKS_MOR + " GROUP BY symbol HAVING symbol = 'GOOG'",
143+
"SELECT * FROM VALUES ('GOOG', '2018-08-31 10:59:00')");
144+
145+
assertQuery("SELECT date, count(1) FROM " + HUDI_STOCK_TICKS_MOR + " GROUP BY date",
146+
"SELECT * FROM VALUES ('2018-08-31', '99')");
147+
}
148+
137149
@Test
138150
public void testPathColumn()
139151
throws Exception
140152
{
141153
String path = (String) computeScalar("SELECT \"$path\" FROM " + HUDI_COW_PT_TBL + " WHERE id = 1");
142154
assertThat(toInputFile(path).exists()).isTrue();
155+
path = (String) computeScalar("SELECT \"$path\" FROM " + HUDI_STOCK_TICKS_MOR + " WHERE volume = 6794");
156+
assertThat(toInputFile(path).exists()).isTrue();
143157
}
144158

145159
@Test

Diff for: plugin/trino-hudi/src/test/java/io/trino/plugin/hudi/testing/ResourceHudiTablesInitializer.java

+27
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ public enum TestingTable
167167
HUDI_COW_PT_TBL(multiPartitionRegularColumns(), multiPartitionColumns(), multiPartitions()),
168168
STOCK_TICKS_COW(stockTicksRegularColumns(), stockTicksPartitionColumns(), stockTicksPartitions()),
169169
STOCK_TICKS_MOR(stockTicksRegularColumns(), stockTicksPartitionColumns(), stockTicksPartitions()),
170+
HUDI_STOCK_TICKS_MOR(metadataStockTicksRegularColumns(), metadataStockTicksPartitionColumns(), metadataStockTicksPartitions()),
170171
/**/;
171172

172173
private static final List<Column> HUDI_META_COLUMNS = ImmutableList.of(
@@ -176,6 +177,32 @@ public enum TestingTable
176177
new Column("_hoodie_partition_path", HIVE_STRING, Optional.empty(), Map.of()),
177178
new Column("_hoodie_file_name", HIVE_STRING, Optional.empty(), Map.of()));
178179

180+
private static List<Column> metadataStockTicksRegularColumns()
181+
{
182+
return ImmutableList.of(
183+
column("volume", HIVE_LONG),
184+
column("ts", HIVE_STRING),
185+
column("symbol", HIVE_STRING),
186+
column("year", HIVE_INT),
187+
column("month", HIVE_STRING),
188+
column("high", HIVE_DOUBLE),
189+
column("low", HIVE_DOUBLE),
190+
column("key", HIVE_STRING),
191+
column("close", HIVE_DOUBLE),
192+
column("open", HIVE_DOUBLE),
193+
column("day", HIVE_STRING));
194+
}
195+
196+
private static List<Column> metadataStockTicksPartitionColumns()
197+
{
198+
return ImmutableList.of(column("date", HIVE_STRING));
199+
}
200+
201+
private static Map<String, String> metadataStockTicksPartitions()
202+
{
203+
return ImmutableMap.of("date=2018-08-31", "2018/08/31");
204+
}
205+
179206
private final List<Column> regularColumns;
180207
private final List<Column> partitionColumns;
181208
private final Map<String, String> partitions;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#Updated at 2025-01-06T01:29:42.850Z
2+
#Sun Jan 05 17:29:42 PST 2025
3+
hoodie.table.timeline.timezone=LOCAL
4+
hoodie.table.version=8
5+
hoodie.database.name=
6+
hoodie.table.initial.version=8
7+
hoodie.datasource.write.hive_style_partitioning=false
8+
hoodie.table.metadata.partitions.inflight=
9+
hoodie.table.checksum=1806126834
10+
hoodie.table.keygenerator.type=SIMPLE
11+
hoodie.partition.metafile.use.base.format=false
12+
hoodie.archivelog.folder=history
13+
hoodie.table.cdc.enabled=false
14+
hoodie.table.name=hudi_stock_ticks_mor
15+
hoodie.record.merge.strategy.id=eeb8d96f-b1e4-49fd-bbf8-28ac514178e5
16+
hoodie.timeline.history.path=history
17+
hoodie.compaction.payload.class=org.apache.hudi.common.model.DefaultHoodieRecordPayload
18+
hoodie.populate.meta.fields=true
19+
hoodie.table.type=MERGE_ON_READ
20+
hoodie.datasource.write.partitionpath.urlencode=false
21+
hoodie.table.base.file.format=PARQUET
22+
hoodie.datasource.write.drop.partition.columns=false
23+
hoodie.table.metadata.partitions=files
24+
hoodie.timeline.layout.version=2
25+
hoodie.table.multiple.base.file.formats.enable=false
26+
hoodie.record.merge.mode=EVENT_TIME_ORDERING
27+
hoodie.table.recordkey.fields=key
28+
hoodie.table.partition.fields=date
29+
hoodie.timeline.path=timeline
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#Properties saved on 2025-01-06T01:29:41.549Z
2+
#Sun Jan 05 17:29:41 PST 2025
3+
hoodie.table.initial.version=8
4+
hoodie.datasource.write.drop.partition.columns=false
5+
hoodie.table.type=MERGE_ON_READ
6+
hoodie.archivelog.folder=history
7+
hoodie.populate.meta.fields=false
8+
hoodie.compaction.payload.class=org.apache.hudi.metadata.HoodieMetadataPayload
9+
hoodie.timeline.path=timeline
10+
hoodie.timeline.layout.version=2
11+
hoodie.table.version=8
12+
hoodie.record.merge.strategy.id=00000000-0000-0000-0000-000000000000
13+
hoodie.record.merge.mode=CUSTOM
14+
hoodie.table.base.file.format=HFILE
15+
hoodie.table.recordkey.fields=key
16+
hoodie.table.keygenerator.type=HOODIE_TABLE_METADATA
17+
hoodie.table.name=hudi_stock_ticks_mor_metadata
18+
hoodie.timeline.history.path=history
19+
hoodie.table.checksum=100423886

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/metadata/.hoodie/timeline/00000000000000000.deltacommit.inflight

Whitespace-only changes.

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/metadata/.hoodie/timeline/00000000000000000.deltacommit.requested

Whitespace-only changes.

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/metadata/.hoodie/timeline/20250105172941176.deltacommit.requested

Whitespace-only changes.

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/metadata/.hoodie/timeline/20250105172945774.deltacommit.requested

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#partition metadata
2+
#Sun Jan 05 17:29:42 PST 2025
3+
commitTime=00000000000000000
4+
partitionDepth=1

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/timeline/20250105172941176.deltacommit.requested

Whitespace-only changes.

Diff for: plugin/trino-hudi/src/test/resources/hudi-testing-data/hudi_stock_ticks_mor/.hoodie/timeline/20250105172945774.deltacommit.requested

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#partition metadata
2+
#Sun Jan 05 17:29:43 PST 2025
3+
commitTime=20250105172941176
4+
partitionDepth=3

0 commit comments

Comments
 (0)