Skip to content

Commit 8908635

Browse files
authored
Dataset API: Allow empty projection (#24)
1 parent 46879ca commit 8908635

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

cpp/src/jni/dataset/jni_wrapper.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -590,9 +590,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_arrow_dataset_jni_JniWrapper_createScann
590590
JniAssertOkOrThrow(scanner_builder->Pool(pool));
591591

592592
std::vector<std::string> column_vector = ToStringVector(env, columns);
593-
if (!column_vector.empty()) {
594-
JniAssertOkOrThrow(scanner_builder->Project(column_vector));
595-
}
593+
JniAssertOkOrThrow(scanner_builder->Project(column_vector));
596594
JniAssertOkOrThrow(scanner_builder->BatchSize(batch_size));
597595
// initialize filters
598596
jsize exprs_len = env->GetArrayLength(filter);

java/dataset/src/test/java/org/apache/arrow/dataset/file/TestFileSystemDataset.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,27 @@ public void testParquetProjector() throws Exception {
137137
AutoCloseables.close(factory);
138138
}
139139

140+
@Test
141+
public void testEmptyProjector() throws Exception {
142+
ParquetWriteSupport writeSupport = ParquetWriteSupport.writeTempFile(AVRO_SCHEMA_USER, TMP.newFolder(), 1, "a",
143+
2, "b");
144+
145+
FileSystemDatasetFactory factory = new FileSystemDatasetFactory(rootAllocator(), NativeMemoryPool.getDefault(),
146+
FileFormat.PARQUET, writeSupport.getOutputURI());
147+
ScanOptions options = new ScanOptions(new String[]{}, Filter.EMPTY, 100);
148+
Schema schema = inferResultSchemaFromFactory(factory, options);
149+
List<ArrowRecordBatch> datum = collectResultFromFactory(factory, options);
150+
org.apache.avro.Schema expectedSchema = truncateAvroSchema(writeSupport.getAvroSchema(), 0, 1);
151+
152+
assertSingleTaskProduced(factory, options);
153+
assertEquals(0, schema.getFields().size());
154+
assertEquals(1, datum.size());
155+
156+
AutoCloseables.close(datum);
157+
AutoCloseables.close(factory);
158+
}
159+
160+
140161
@Test
141162
public void testParquetBatchSize() throws Exception {
142163
ParquetWriteSupport writeSupport = ParquetWriteSupport.writeTempFile(AVRO_SCHEMA_USER, TMP.newFolder(),

0 commit comments

Comments
 (0)