This is an automated email from the ASF dual-hosted git repository.
dzamo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git
The following commit(s) were added to refs/heads/master by this push:
new 30104d9 DRILL-8118: Add Option to Allow Disk Use on Mongo Queries
(#2442)
30104d9 is described below
commit 30104d9faf3cf9fe3fcae4d109dc28f20f27f915
Author: Charles S. Givre <[email protected]>
AuthorDate: Sun Jan 30 06:26:39 2022 -0500
DRILL-8118: Add Option to Allow Disk Use on Mongo Queries (#2442)
* Initial commit
* Update
contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
Co-authored-by: luoc <[email protected]>
Co-authored-by: luoc <[email protected]>
---
.../java/org/apache/drill/exec/store/mongo/MongoRecordReader.java | 6 +++++-
.../apache/drill/exec/store/mongo/MongoStoragePluginConfig.java | 8 ++++++++
.../src/main/resources/bootstrap-storage-plugins.json | 1 +
.../java/org/apache/drill/exec/store/mongo/MongoTestBase.java | 2 +-
.../store/mongo/TestMongoStoragePluginUsesCredentialsStore.java | 2 +-
5 files changed, 16 insertions(+), 3 deletions(-)
diff --git
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
index 08219f6..93b2d16 100644
---
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
+++
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoRecordReader.java
@@ -198,7 +198,11 @@ public class MongoRecordReader extends
AbstractRecordReader {
if (!fields.isEmpty()) {
operations.add(Aggregates.project(fields));
}
- projection = collection.aggregate(operations);
+ if (plugin.getConfig().allowDiskUse()) {
+ projection = collection.aggregate(operations).allowDiskUse(true);
+ } else {
+ projection = collection.aggregate(operations);
+ }
} else {
projection = collection.find(filters).projection(fields);
}
diff --git
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoStoragePluginConfig.java
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoStoragePluginConfig.java
index be410ae..e1da24b 100644
---
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoStoragePluginConfig.java
+++
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/MongoStoragePluginConfig.java
@@ -40,6 +40,8 @@ public class MongoStoragePluginConfig extends
AbstractSecuredStoragePluginConfig
private final String connection;
+ private final boolean allowDiskUse;
+
@JsonIgnore
private final ConnectionString clientURI;
@@ -51,12 +53,14 @@ public class MongoStoragePluginConfig extends
AbstractSecuredStoragePluginConfig
public MongoStoragePluginConfig(@JsonProperty("connection") String
connection,
@JsonProperty("pluginOptimizations") MongoPluginOptimizations
pluginOptimizations,
@JsonProperty("batchSize") Integer batchSize,
+ @JsonProperty("allowDiskUse") Boolean allowDiskUse,
@JsonProperty("credentialsProvider") CredentialsProvider
credentialsProvider) {
super(getCredentialsProvider(credentialsProvider), credentialsProvider ==
null);
this.connection = connection;
this.clientURI = new ConnectionString(connection);
this.pluginOptimizations = ObjectUtils.defaultIfNull(pluginOptimizations,
new MongoPluginOptimizations());
this.batchSize = batchSize != null ? batchSize : 100;
+ this.allowDiskUse = allowDiskUse != null && allowDiskUse;
}
public MongoPluginOptimizations getPluginOptimizations() {
@@ -76,6 +80,10 @@ public class MongoStoragePluginConfig extends
AbstractSecuredStoragePluginConfig
return batchSize;
}
+ public boolean allowDiskUse() {
+ return allowDiskUse;
+ }
+
private static CredentialsProvider
getCredentialsProvider(CredentialsProvider credentialsProvider) {
return credentialsProvider != null ? credentialsProvider :
PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER;
}
diff --git
a/contrib/storage-mongo/src/main/resources/bootstrap-storage-plugins.json
b/contrib/storage-mongo/src/main/resources/bootstrap-storage-plugins.json
index 2010e32..7e3cd42 100644
--- a/contrib/storage-mongo/src/main/resources/bootstrap-storage-plugins.json
+++ b/contrib/storage-mongo/src/main/resources/bootstrap-storage-plugins.json
@@ -3,6 +3,7 @@
"mongo" : {
"type":"mongo",
"connection":"mongodb://localhost:27017/",
+ "allowDiskUse": false,
"enabled": false
}
}
diff --git
a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestBase.java
b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestBase.java
index 8224470..4b3cc1a 100644
---
a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestBase.java
+++
b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestBase.java
@@ -39,7 +39,7 @@ public class MongoTestBase extends ClusterTest implements
MongoTestConstants {
private static void initMongoStoragePlugin(String connectionURI) throws
Exception {
MongoStoragePluginConfig storagePluginConfig = new
MongoStoragePluginConfig(connectionURI,
- null, 100, PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER);
+ null, 100, false, PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER);
storagePluginConfig.setEnabled(true);
pluginRegistry.put(MongoStoragePluginConfig.NAME, storagePluginConfig);
diff --git
a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoStoragePluginUsesCredentialsStore.java
b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoStoragePluginUsesCredentialsStore.java
index 298744b..7a09abe 100644
---
a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoStoragePluginUsesCredentialsStore.java
+++
b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoStoragePluginUsesCredentialsStore.java
@@ -35,7 +35,7 @@ public class TestMongoStoragePluginUsesCredentialsStore
extends BaseTest {
private void test(String expectedUserName, String expectedPassword, String
connection, String name) throws ExecutionSetupException {
MongoStoragePlugin plugin = new MongoStoragePlugin(
- new MongoStoragePluginConfig(connection, null, 100,
PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER),
+ new MongoStoragePluginConfig(connection, null, 100, false,
PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER),
null, name);
MongoClientImpl client = (MongoClientImpl) plugin.getClient();
MongoCredential cred = client.getSettings().getCredential();