@@ -60,6 +60,7 @@ use jni::{
6060 objects:: GlobalRef ,
6161 sys:: { jboolean, jdouble, jintArray, jobjectArray, jstring} ,
6262} ;
63+ use std:: collections:: HashMap ;
6364use std:: path:: PathBuf ;
6465use std:: time:: { Duration , Instant } ;
6566use std:: { sync:: Arc , task:: Poll } ;
@@ -151,6 +152,7 @@ pub unsafe extern "system" fn Java_org_apache_comet_Native_createPlan(
151152 id : jlong ,
152153 iterators : jobjectArray ,
153154 serialized_query : jbyteArray ,
155+ serialized_spark_configs : jbyteArray ,
154156 partition_count : jint ,
155157 metrics_node : JObject ,
156158 metrics_update_interval : jlong ,
@@ -173,12 +175,20 @@ pub unsafe extern "system" fn Java_org_apache_comet_Native_createPlan(
173175
174176 let start = Instant :: now ( ) ;
175177
178+ // Deserialize query plan
176179 let array = unsafe { JPrimitiveArray :: from_raw ( serialized_query) } ;
177180 let bytes = env. convert_byte_array ( array) ?;
178-
179- // Deserialize query plan
180181 let spark_plan = serde:: deserialize_op ( bytes. as_slice ( ) ) ?;
181182
183+ // Deserialize Spark configs
184+ let array = unsafe { JPrimitiveArray :: from_raw ( serialized_spark_configs) } ;
185+ let bytes = env. convert_byte_array ( array) ?;
186+ let spark_configs = serde:: deserialize_config ( bytes. as_slice ( ) ) ?;
187+
188+ // Convert Spark configs to HashMap
189+ let _spark_config_map: HashMap < String , String > =
190+ spark_configs. entries . into_iter ( ) . collect ( ) ;
191+
182192 let metrics = Arc :: new ( jni_new_global_ref ! ( env, metrics_node) ?) ;
183193
184194 // Get the global references of input sources
0 commit comments