diff --git a/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.cpp b/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.cpp index f202a5cbf9a643f9dcb3661c730f69acac4a24b1..e3a90b828871beee84d93d88b61b7b368faddb68 100644 --- a/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.cpp +++ b/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.cpp @@ -470,19 +470,29 @@ JNIEXPORT jfloat JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniRe * Signature: (J)F */ JNIEXPORT void JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader_recordReaderClose(JNIEnv *env, - jobject jObj, jlong rowReader, jlong reader, jlong batchReader) + jobject jObj, jlong rowReader) { JNI_FUNC_START omniruntime::reader::OmniRowReaderImpl *rowReaderPtr = (omniruntime::reader::OmniRowReaderImpl *)rowReader; - if (nullptr == rowReaderPtr) { - env->ThrowNew(runtimeExceptionClass, "delete nullptr error for row reader"); + if (nullptr != rowReaderPtr) { + delete rowReaderPtr; } - delete rowReaderPtr; + JNI_FUNC_END_VOID(runtimeExceptionClass) +} + +/* + * Class: com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader + * Method: readerClose + * Signature: (J)F + */ +JNIEXPORT void JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader_readerClose(JNIEnv *env, + jobject jObj, jlong reader) +{ + JNI_FUNC_START omniruntime::reader::OmniReaderImpl *readerPtr = (omniruntime::reader::OmniReaderImpl *)reader; - if (nullptr == readerPtr) { - env->ThrowNew(runtimeExceptionClass, "delete nullptr error for reader"); + if (nullptr != readerPtr) { + delete readerPtr; } - delete readerPtr; JNI_FUNC_END_VOID(runtimeExceptionClass) } diff --git a/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.h b/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.h index 3f5fb7a6e3c87694ad72cf257b74fa6087d67f4e..7b3f27c85585839eeb58b12bb0c5cce510c23bd8 100644 --- a/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.h +++ b/omnioperator/omniop-native-reader/cpp/src/jni/OrcColumnarBatchJniReader.h @@ -119,7 +119,15 @@ JNIEXPORT jfloat JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniRe * Signature: (JJJ)F */ JNIEXPORT void JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader_recordReaderClose - (JNIEnv *, jobject, jlong, jlong, jlong); + (JNIEnv *, jobject, jlong); + +/* + * Class: com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader + * Method: readerClose + * Signature: (J)F + */ +JNIEXPORT void JNICALL Java_com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader_readerClose + (JNIEnv *, jobject, jlong); /* * Class: com_huawei_boostkit_scan_jni_OrcColumnarBatchJniReader diff --git a/omnioperator/omniop-native-reader/java/src/main/java/com/huawei/boostkit/scan/jni/OrcColumnarBatchJniReader.java b/omnioperator/omniop-native-reader/java/src/main/java/com/huawei/boostkit/scan/jni/OrcColumnarBatchJniReader.java index ca4e479f3c4280d08679a157ccce1a8f4ecb1948..783f32afc2cf3c1c0c60d8dfe2b796f7ea3ddbe8 100644 --- a/omnioperator/omniop-native-reader/java/src/main/java/com/huawei/boostkit/scan/jni/OrcColumnarBatchJniReader.java +++ b/omnioperator/omniop-native-reader/java/src/main/java/com/huawei/boostkit/scan/jni/OrcColumnarBatchJniReader.java @@ -39,7 +39,9 @@ public class OrcColumnarBatchJniReader { public native float recordReaderGetProgress(long rowReader); - public native void recordReaderClose(long rowReader, long reader, long batchReader); + public native void recordReaderClose(long rowReader); + + public native void readerClose(long reader); public native void recordReaderSeekToRow(long rowReader, long rowNumber); diff --git a/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/com/huawei/boostkit/spark/jni/OrcColumnarBatchScanReader.java b/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/com/huawei/boostkit/spark/jni/OrcColumnarBatchScanReader.java index 3f8b2db2cba5e7347d8ff5117f8980f6cb062258..c87dfe2cf0ff7c0575c0ebb4f6d82adf895069ee 100644 --- a/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/com/huawei/boostkit/spark/jni/OrcColumnarBatchScanReader.java +++ b/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/com/huawei/boostkit/spark/jni/OrcColumnarBatchScanReader.java @@ -230,7 +230,14 @@ public class OrcColumnarBatchScanReader { } public void close() { - jniReader.recordReaderClose(recordReader, reader, batchReader); + if (recordReader != 0) { + jniReader.recordReaderClose(recordReader); + recordReader = 0; + } + if (reader != 0) { + jniReader.readerClose(reader); + reader = 0; + } } public void seekToRow(long rowNumber) { diff --git a/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/org/apache/spark/sql/execution/datasources/orc/OmniOrcColumnarBatchReader.java b/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/org/apache/spark/sql/execution/datasources/orc/OmniOrcColumnarBatchReader.java index 1f3c1a8ef01a4b7d493f77b4ce1ab1e70af93157..9748151d48bc72acc277913fc5c1d5469445b936 100644 --- a/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/org/apache/spark/sql/execution/datasources/orc/OmniOrcColumnarBatchReader.java +++ b/omnioperator/omniop-spark-extension/spark-extension-core/src/main/java/org/apache/spark/sql/execution/datasources/orc/OmniOrcColumnarBatchReader.java @@ -107,11 +107,14 @@ public class OmniOrcColumnarBatchReader extends RecordReader