Line | Count | Source |
1 | | // Licensed to the Apache Software Foundation (ASF) under one |
2 | | // or more contributor license agreements. See the NOTICE file |
3 | | // distributed with this work for additional information |
4 | | // regarding copyright ownership. The ASF licenses this file |
5 | | // to you under the Apache License, Version 2.0 (the |
6 | | // "License"); you may not use this file except in compliance |
7 | | // with the License. You may obtain a copy of the License at |
8 | | // |
9 | | // http://www.apache.org/licenses/LICENSE-2.0 |
10 | | // |
11 | | // Unless required by applicable law or agreed to in writing, |
12 | | // software distributed under the License is distributed on an |
13 | | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
14 | | // KIND, either express or implied. See the License for the |
15 | | // specific language governing permissions and limitations |
16 | | // under the License. |
17 | | |
18 | | #pragma once |
19 | | |
20 | | #include <butil/macros.h> |
21 | | #include <jni.h> |
22 | | #include <limits.h> |
23 | | #include <stddef.h> |
24 | | #include <stdint.h> |
25 | | |
26 | | #include <atomic> |
27 | | #include <cstdlib> |
28 | | #include <optional> |
29 | | #include <string> |
30 | | #include <string_view> |
31 | | #include <vector> |
32 | | |
33 | | #include "common/status.h" |
34 | | #include "jni_md.h" |
35 | | #include "util/defer_op.h" |
36 | | #include "util/thrift_util.h" |
37 | | |
38 | | // defined in hadoop/hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/jni_helper.c |
39 | | extern "C" JNIEnv* getJNIEnv(void); |
40 | | |
41 | | namespace doris { |
42 | | |
43 | | #define RETURN_ERROR_IF_EXC(env) \ |
44 | 9 | do { \ |
45 | 9 | if (env->ExceptionCheck()) [[unlikely]] \ |
46 | 0 | return Jni::Env::GetJniExceptionMsg(env); \ |
47 | 9 | } while (false) |
48 | | |
49 | | //In order to reduce the potential risks caused by not handling exceptions, |
50 | | // you need to refer to https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/functions.html |
51 | | // to confirm whether the jni method will throw an exception. |
52 | | |
53 | | namespace Jni { |
54 | | class JvmLauncher; |
55 | | |
56 | | class Env { |
57 | | public: |
58 | 3 | static Status Get(JNIEnv** env) { |
59 | 3 | if (tls_env_) { |
60 | 3 | *env = tls_env_; |
61 | 3 | } else { |
62 | 0 | Status status = GetJNIEnvSlowPath(env); |
63 | 0 | if (!status.ok()) { |
64 | 0 | return status; |
65 | 0 | } |
66 | 0 | } |
67 | 3 | if (*env == nullptr) [[unlikely]] { |
68 | 0 | return Status::JniError("Failed to get JNIEnv: it is nullptr."); |
69 | 0 | } |
70 | 3 | return Status::OK(); |
71 | 3 | } |
72 | | |
73 | 0 | static Status Init() { return init_throw_exception(); } |
74 | | |
75 | | static Status GetJniExceptionMsg(JNIEnv* env, bool log_stack = true, |
76 | | const std::string& prefix = "") WARN_UNUSED_RESULT; |
77 | | |
78 | | private: |
79 | | static Status GetJNIEnvSlowPath(JNIEnv** env); |
80 | | // What the JVM of this process was created from, for the one error message that has to |
81 | | // report a deployment problem rather than a programming one. Says so explicitly when the |
82 | | // variable is unset, which is what a BE not started by bin/start_be.sh looks like. |
83 | 0 | static std::string class_path_of_this_process() { |
84 | 0 | const char* class_path = getenv("CLASSPATH"); |
85 | 0 | return class_path == nullptr ? std::string("<CLASSPATH unset>") : std::string(class_path); |
86 | 0 | } |
87 | 0 | static Status init_throw_exception() { |
88 | 0 | JNIEnv* env = nullptr; |
89 | 0 | RETURN_IF_ERROR(Jni::Env::Get(&env)); |
90 | | |
91 | | // Find JniUtil class and create a global ref. |
92 | 0 | jclass local_jni_util_cl = env->FindClass("org/apache/doris/jni/spi/utils/JniUtil"); |
93 | 0 | if (local_jni_util_cl == nullptr) { |
94 | 0 | if (env->ExceptionOccurred()) { |
95 | 0 | env->ExceptionDescribe(); |
96 | 0 | } |
97 | | // Named rather than left as a bare FindClass failure: this is the first class BE |
98 | | // resolves out of the shared layer, so a deployment whose lib/jni/spi is missing or |
99 | | // was not put on the class path fails exactly here, and the answer is a directory |
100 | | // name and a jar name. The failure is then cached for the life of the process, so |
101 | | // this is also the only chance to say it. |
102 | 0 | return Status::JniError( |
103 | 0 | "Failed to find the JniUtil class of the Java plugin SPI. It ships in " |
104 | 0 | "doris-jni-spi.jar under DORIS_HOME/lib/jni/spi, which bin/start_be.sh puts " |
105 | 0 | "on the class path; check that the directory exists and holds " |
106 | 0 | "doris-jni-spi.jar and doris-jni-bootstrap.jar. Class path: {}", |
107 | 0 | class_path_of_this_process()); |
108 | 0 | } |
109 | 0 | jni_util_cl_ = reinterpret_cast<jclass>(env->NewGlobalRef(local_jni_util_cl)); |
110 | 0 | env->DeleteLocalRef(local_jni_util_cl); |
111 | 0 | if (jni_util_cl_ == nullptr) { |
112 | 0 | if (env->ExceptionOccurred()) { |
113 | 0 | env->ExceptionDescribe(); |
114 | 0 | } |
115 | 0 | return Status::JniError("Failed to create global reference to JniUtil class."); |
116 | 0 | } |
117 | 0 | if (env->ExceptionOccurred()) { |
118 | 0 | return Status::JniError("Failed to delete local reference to JniUtil class."); |
119 | 0 | } |
120 | | |
121 | | // Throwable toString() |
122 | 0 | throwable_to_string_id_ = env->GetStaticMethodID( |
123 | 0 | jni_util_cl_, "throwableToString", "(Ljava/lang/Throwable;)Ljava/lang/String;"); |
124 | 0 | if (throwable_to_string_id_ == nullptr) { |
125 | 0 | if (env->ExceptionOccurred()) { |
126 | 0 | env->ExceptionDescribe(); |
127 | 0 | } |
128 | 0 | return Status::JniError("Failed to find JniUtil.throwableToString method."); |
129 | 0 | } |
130 | | |
131 | | // throwableToStackTrace() |
132 | 0 | throwable_to_stack_trace_id_ = env->GetStaticMethodID( |
133 | 0 | jni_util_cl_, "throwableToStackTrace", "(Ljava/lang/Throwable;)Ljava/lang/String;"); |
134 | 0 | if (throwable_to_stack_trace_id_ == nullptr) { |
135 | 0 | if (env->ExceptionOccurred()) { |
136 | 0 | env->ExceptionDescribe(); |
137 | 0 | } |
138 | 0 | return Status::JniError("Failed to find JniUtil.throwableToFullStackTrace method."); |
139 | 0 | } |
140 | 0 | return Status::OK(); |
141 | 0 | } |
142 | | |
143 | | // Drops the cached JNIEnv of the calling thread. Only the thread exit hook and the JVM |
144 | | // bootstrap may call this: the env it caches is gone the moment the thread is detached, |
145 | | // and anything reading it afterwards - another thread exit hook, say - would read freed |
146 | | // memory. |
147 | 0 | static void reset_tls_env() { tls_env_ = nullptr; } |
148 | | // Caches an env the bootstrap attached by itself, so that resolving the JNI base right |
149 | | // after the JVM comes up stays on Get()'s fast path instead of re-entering ensure_jvm(). |
150 | 0 | static void set_tls_env(JNIEnv* env) { tls_env_ = env; } |
151 | | // What Get() would hand out on this thread without asking anyone, nullptr when nothing is |
152 | | // cached. For JvmLauncher::ScopedVmEnv, which primes the cache for one scope and has to put |
153 | | // back what it found rather than assume there was nothing: on the bootstrap thread there is. |
154 | 0 | static JNIEnv* tls_env() { return tls_env_; } |
155 | | friend class JvmLauncher; |
156 | | |
157 | | private: |
158 | | // Thread-local cache of the JNIEnv for this thread. |
159 | | static __thread JNIEnv* tls_env_; |
160 | | |
161 | | //for exception |
162 | | static jclass jni_util_cl_; |
163 | | static jmethodID throwable_to_string_id_; |
164 | | static jmethodID throwable_to_stack_trace_id_; |
165 | | }; |
166 | | |
167 | | enum RefType { Local, Global }; |
168 | | |
169 | | enum BufferType { Chars, ByteArray }; |
170 | | |
171 | | template <RefType Ref> |
172 | | struct RefHelper {}; |
173 | | |
174 | | template <> |
175 | | struct RefHelper<Local> { |
176 | 0 | static jobject create(JNIEnv* env, jobject obj) { return env->NewLocalRef(obj); } |
177 | | |
178 | 3 | static void destroy(JNIEnv* env, jobject obj) { env->DeleteLocalRef(obj); } |
179 | | |
180 | 3 | static Status get_env(JNIEnv** env) { |
181 | | // Get the JNIEnv* corresponding to current thread. |
182 | 3 | return Jni::Env::Get(env); |
183 | 3 | } |
184 | | }; |
185 | | |
186 | | template <> |
187 | | struct RefHelper<Global> { |
188 | 2 | static jobject create(JNIEnv* env, jobject obj) { return env->NewGlobalRef(obj); } |
189 | | |
190 | 0 | static void destroy(JNIEnv* env, jobject obj) { env->DeleteGlobalRef(obj); } |
191 | | |
192 | 0 | static Status get_env(JNIEnv** env) { return Jni::Env::Get(env); } |
193 | | }; |
194 | | |
195 | | template <RefType Ref> |
196 | | class Object; |
197 | | |
198 | | template <RefType Ref> |
199 | | class Class; |
200 | | |
201 | | class MethodId { |
202 | | public: |
203 | 25 | MethodId() = default; |
204 | 0 | bool uninitialized() const { return _id == nullptr; } |
205 | | |
206 | | template <RefType U> |
207 | | friend class Object; |
208 | | |
209 | | template <RefType U> |
210 | | friend class Class; |
211 | | |
212 | | private: |
213 | | jmethodID _id = nullptr; |
214 | | }; |
215 | | |
216 | | class FieldId { |
217 | | public: |
218 | 0 | FieldId() = default; |
219 | 0 | bool uninitialized() const { return _id == nullptr; } |
220 | | |
221 | | template <RefType U> |
222 | | friend class Object; |
223 | | |
224 | | template <RefType U> |
225 | | friend class Class; |
226 | | |
227 | | private: |
228 | | jfieldID _id = nullptr; |
229 | | }; |
230 | | |
231 | | enum CallTag { |
232 | | ObjectMethod, |
233 | | IntMethod, |
234 | | LongMethod, |
235 | | VoidMethod, |
236 | | BooleanMethod, |
237 | | |
238 | | StaticObjectMethod, |
239 | | StaticIntMethod, |
240 | | StaticLongMethod, |
241 | | StaticVoidMethod, |
242 | | |
243 | | NewObject, |
244 | | |
245 | | NonvirtualVoidMethod, |
246 | | NonvirtualObjectMethod, |
247 | | NonvirtualIntMethod, |
248 | | NonvirtualBooleanMethod, |
249 | | }; |
250 | | |
251 | | template <CallTag Tag> |
252 | | struct CallHelper {}; |
253 | | |
254 | | template <> |
255 | | struct CallHelper<ObjectMethod> { |
256 | 0 | static jobject call_impl(JNIEnv* env, jobject obj, jmethodID methodID, const jvalue* args) { |
257 | 0 | return env->CallObjectMethodA(obj, methodID, args); |
258 | 0 | } |
259 | | using BASE_TYPE = jobject; |
260 | | using RETURN_TYPE = jobject; |
261 | | }; |
262 | | |
263 | | template <> |
264 | | struct CallHelper<IntMethod> { |
265 | 0 | static jint call_impl(JNIEnv* env, jobject obj, jmethodID methodID, const jvalue* args) { |
266 | 0 | return env->CallIntMethodA(obj, methodID, args); |
267 | 0 | } |
268 | | using BASE_TYPE = jobject; |
269 | | using RETURN_TYPE = jint; |
270 | | }; |
271 | | |
272 | | template <> |
273 | | struct CallHelper<LongMethod> { |
274 | 0 | static jlong call_impl(JNIEnv* env, jobject obj, jmethodID methodID, const jvalue* args) { |
275 | 0 | return env->CallLongMethodA(obj, methodID, args); |
276 | 0 | } |
277 | | using BASE_TYPE = jobject; |
278 | | using RETURN_TYPE = jlong; |
279 | | }; |
280 | | |
281 | | template <> |
282 | | struct CallHelper<VoidMethod> { |
283 | 0 | static void call_impl(JNIEnv* env, jobject obj, jmethodID methodID, const jvalue* args) { |
284 | 0 | env->CallVoidMethodA(obj, methodID, args); |
285 | 0 | } |
286 | | using BASE_TYPE = jobject; |
287 | | using RETURN_TYPE = void; |
288 | | }; |
289 | | |
290 | | template <> |
291 | | struct CallHelper<BooleanMethod> { |
292 | 0 | static jboolean call_impl(JNIEnv* env, jobject obj, jmethodID methodID, const jvalue* args) { |
293 | 0 | return env->CallBooleanMethodA(obj, methodID, args); |
294 | 0 | } |
295 | | using BASE_TYPE = jobject; |
296 | | using RETURN_TYPE = jboolean; |
297 | | }; |
298 | | |
299 | | template <> |
300 | | struct CallHelper<StaticObjectMethod> { |
301 | 0 | static jobject call_impl(JNIEnv* env, jclass cls, jmethodID methodID, const jvalue* args) { |
302 | 0 | return env->CallStaticObjectMethodA(cls, methodID, args); |
303 | 0 | } |
304 | | using BASE_TYPE = jclass; |
305 | | using RETURN_TYPE = jobject; |
306 | | }; |
307 | | |
308 | | template <> |
309 | | struct CallHelper<StaticIntMethod> { |
310 | 0 | static jint call_impl(JNIEnv* env, jclass cls, jmethodID methodID, const jvalue* args) { |
311 | 0 | return env->CallStaticIntMethodA(cls, methodID, args); |
312 | 0 | } |
313 | | using BASE_TYPE = jclass; |
314 | | using RETURN_TYPE = jint; |
315 | | }; |
316 | | |
317 | | template <> |
318 | | struct CallHelper<StaticLongMethod> { |
319 | 0 | static jlong call_impl(JNIEnv* env, jclass cls, jmethodID methodID, const jvalue* args) { |
320 | 0 | return env->CallStaticLongMethodA(cls, methodID, args); |
321 | 0 | } |
322 | | using BASE_TYPE = jclass; |
323 | | using RETURN_TYPE = jlong; |
324 | | }; |
325 | | |
326 | | template <> |
327 | | struct CallHelper<StaticVoidMethod> { |
328 | 0 | static void call_impl(JNIEnv* env, jclass cls, jmethodID methodID, const jvalue* args) { |
329 | 0 | return env->CallStaticVoidMethodA(cls, methodID, args); |
330 | 0 | } |
331 | | |
332 | | using BASE_TYPE = jclass; |
333 | | using RETURN_TYPE = void; |
334 | | }; |
335 | | |
336 | | template <> |
337 | | struct CallHelper<NewObject> { |
338 | 0 | static jobject call_impl(JNIEnv* env, jclass cls, jmethodID methodID, const jvalue* args) { |
339 | 0 | return env->NewObjectA(cls, methodID, args); |
340 | 0 | } |
341 | | |
342 | | using BASE_TYPE = jclass; |
343 | | using RETURN_TYPE = jobject; |
344 | | }; |
345 | | |
346 | | template <> |
347 | | struct CallHelper<NonvirtualVoidMethod> { |
348 | | static void call_impl(JNIEnv* env, jobject obj, jclass clazz, jmethodID methodID, |
349 | 0 | const jvalue* args) { |
350 | 0 | return env->CallNonvirtualVoidMethodA(obj, clazz, methodID, args); |
351 | 0 | } |
352 | | |
353 | | using BASE_TYPE = jobject; |
354 | | using RETURN_TYPE = void; |
355 | | }; |
356 | | |
357 | | template <> |
358 | | struct CallHelper<NonvirtualObjectMethod> { |
359 | | static jobject call_impl(JNIEnv* env, jobject obj, jclass clazz, jmethodID methodID, |
360 | 0 | const jvalue* args) { |
361 | 0 | return env->CallNonvirtualObjectMethodA(obj, clazz, methodID, args); |
362 | 0 | } |
363 | | |
364 | | using BASE_TYPE = jobject; |
365 | | using RETURN_TYPE = jobject; |
366 | | }; |
367 | | |
368 | | template <> |
369 | | struct CallHelper<NonvirtualIntMethod> { |
370 | | static jint call_impl(JNIEnv* env, jobject obj, jclass clazz, jmethodID methodID, |
371 | 0 | const jvalue* args) { |
372 | 0 | return env->CallNonvirtualIntMethodA(obj, clazz, methodID, args); |
373 | 0 | } |
374 | | |
375 | | using BASE_TYPE = jobject; |
376 | | using RETURN_TYPE = jint; |
377 | | }; |
378 | | |
379 | | template <> |
380 | | struct CallHelper<NonvirtualBooleanMethod> { |
381 | | static jboolean call_impl(JNIEnv* env, jobject obj, jclass clazz, jmethodID methodID, |
382 | 0 | const jvalue* args) { |
383 | 0 | return env->CallNonvirtualBooleanMethodA(obj, clazz, methodID, args); |
384 | 0 | } |
385 | | |
386 | | using BASE_TYPE = jobject; |
387 | | using RETURN_TYPE = jboolean; |
388 | | }; |
389 | | |
390 | | template <CallTag tag> |
391 | | class FunctionCall { |
392 | | public: |
393 | | FunctionCall(FunctionCall&& other) noexcept = default; |
394 | | |
395 | | static FunctionCall instance(JNIEnv* env, typename CallHelper<tag>::BASE_TYPE base, |
396 | 0 | jmethodID method_id) { |
397 | 0 | return FunctionCall(env, base, method_id); |
398 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EE8instanceEP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EE8instanceEP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE4EE8instanceEP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EE8instanceEP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EE8instanceEP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE2EE8instanceEP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE1EE8instanceEP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE8instanceEP7JNIEnv_P8_jobjectP10_jmethodID |
399 | | |
400 | | /// Pass a primitive arg (eg an integer). |
401 | | /// Multiple arguments may be passed by repeated calls. |
402 | | template <class T> |
403 | | requires std::disjunction_v<std::is_same<T, jboolean>, std::is_same<T, jbyte>, |
404 | | std::is_same<T, jchar>, std::is_same<T, jshort>, |
405 | | std::is_same<T, jint>, std::is_same<T, jlong>, |
406 | | std::is_same<T, jfloat>, std::is_same<T, jdouble>> |
407 | 0 | FunctionCall& with_arg(T arg) { |
408 | 0 | jvalue v; |
409 | 0 | std::memset(&v, 0, sizeof(v)); |
410 | 0 | if constexpr (std::is_same_v<T, jboolean>) { |
411 | 0 | v.z = arg; |
412 | | } else if constexpr (std::is_same_v<T, jbyte>) { |
413 | | v.b = arg; |
414 | | } else if constexpr (std::is_same_v<T, jchar>) { |
415 | | v.c = arg; |
416 | | } else if constexpr (std::is_same_v<T, jshort>) { |
417 | | v.s = arg; |
418 | 0 | } else if constexpr (std::is_same_v<T, jint>) { |
419 | 0 | v.i = arg; |
420 | 0 | } else if constexpr (std::is_same_v<T, jlong>) { |
421 | 0 | v.j = arg; |
422 | | } else if constexpr (std::is_same_v<T, jfloat>) { |
423 | | v.f = arg; |
424 | | } else if constexpr (std::is_same_v<T, jdouble>) { |
425 | | v.d = arg; |
426 | | } else { |
427 | | static_assert(false); |
428 | | } |
429 | 0 | _args.push_back(v); |
430 | 0 | return *this; |
431 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EE8with_argIiQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EE8with_argIiQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EE8with_argIiQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EE8with_argIiQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE8with_argIhQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE8with_argIiQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE2EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ |
432 | | |
433 | | template <RefType Ref> |
434 | | FunctionCall& with_arg(const Object<Ref>& obj) WARN_UNUSED_RESULT; |
435 | | |
436 | | template <typename ReturnType> |
437 | | requires(std::is_same_v<typename CallHelper<tag>::RETURN_TYPE, ReturnType>) |
438 | 0 | Status call(ReturnType* result) { |
439 | 0 | *result = CallHelper<tag>::call_impl(_env, _base, _method, _args.data()); |
440 | 0 | RETURN_ERROR_IF_EXC(_env); |
441 | 0 | return Status::OK(); |
442 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE4EE4callIhQsr3stdE9is_same_vINS0_10CallHelperIXT_EE11RETURN_TYPEETL0__EEENS_6StatusEPT_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE2EE4callIlQsr3stdE9is_same_vINS0_10CallHelperIXT_EE11RETURN_TYPEETL0__EEENS_6StatusEPT_ Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE1EE4callIiQsr3stdE9is_same_vINS0_10CallHelperIXT_EE11RETURN_TYPEETL0__EEENS_6StatusEPT_ |
443 | | |
444 | | Status call(Object<Local>* result); |
445 | | |
446 | | Status call(Object<Global>* result); |
447 | | |
448 | 0 | Status call() { |
449 | 0 | using return_type = typename CallHelper<tag>::RETURN_TYPE; |
450 | | if constexpr (std::disjunction_v< |
451 | | std::is_same<return_type, jboolean>, std::is_same<return_type, jbyte>, |
452 | | std::is_same<return_type, jchar>, std::is_same<return_type, jshort>, |
453 | | std::is_same<return_type, jint>, std::is_same<return_type, jlong>, |
454 | | std::is_same<return_type, jfloat>, std::is_same<return_type, jdouble>, |
455 | 0 | std::is_same<return_type, void>>) { |
456 | 0 | CallHelper<tag>::call_impl(_env, _base, _method, _args.data()); |
457 | 0 | RETURN_ERROR_IF_EXC(_env); |
458 | 0 | } else if constexpr (std::is_same_v<return_type, jobject>) { |
459 | 0 | jobject tmp = CallHelper<tag>::call_impl(_env, _base, _method, _args.data()); |
460 | 0 | _env->DeleteLocalRef(tmp); |
461 | 0 | RETURN_ERROR_IF_EXC(_env); |
462 | | } else { |
463 | | static_assert(false); |
464 | | } |
465 | 0 | return Status::OK(); |
466 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EE4callEv Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EE4callEv Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE1EE4callEv Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE4callEv |
467 | | |
468 | | protected: |
469 | | explicit FunctionCall(JNIEnv* env, typename CallHelper<tag>::BASE_TYPE base, |
470 | | jmethodID method_id) |
471 | 0 | : _env(env), _base(base), _method(method_id) {}Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EEC2EP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE4EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EEC2EP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EEC2EP7JNIEnv_P7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE2EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE1EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE10EEC2EP7JNIEnv_P8_jobjectP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE11EEC2EP7JNIEnv_P8_jobjectP10_jmethodID |
472 | | |
473 | | JNIEnv* _env = nullptr; |
474 | | CallHelper<tag>::BASE_TYPE _base; // is jobject/jclass not need new/delete local/global ref. |
475 | | const jmethodID _method = nullptr; |
476 | | std::vector<jvalue> _args; |
477 | | Status _st = Status::OK(); |
478 | | DISALLOW_COPY_AND_ASSIGN(FunctionCall); |
479 | | }; |
480 | | |
481 | | template <CallTag tag> |
482 | | class NonvirtualFunctionCall : public FunctionCall<tag> { |
483 | | public: |
484 | | NonvirtualFunctionCall(NonvirtualFunctionCall&& other) noexcept = default; |
485 | | |
486 | | static NonvirtualFunctionCall instance(JNIEnv* env, typename CallHelper<tag>::BASE_TYPE base, |
487 | 0 | jclass cls, jmethodID method_id) { |
488 | 0 | return NonvirtualFunctionCall(env, base, cls, method_id); |
489 | 0 | } Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE10EE8instanceEP7JNIEnv_P8_jobjectP7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE11EE8instanceEP7JNIEnv_P8_jobjectP7_jclassP10_jmethodID |
490 | | |
491 | | // no override |
492 | | template <class T> |
493 | | requires std::disjunction_v<std::is_same<T, jboolean>, std::is_same<T, jbyte>, |
494 | | std::is_same<T, jchar>, std::is_same<T, jshort>, |
495 | | std::is_same<T, jint>, std::is_same<T, jlong>, |
496 | | std::is_same<T, jfloat>, std::is_same<T, jdouble>> |
497 | 0 | NonvirtualFunctionCall& with_arg(T arg) { |
498 | 0 | jvalue v; |
499 | 0 | std::memset(&v, 0, sizeof(v)); |
500 | | if constexpr (std::is_same_v<T, jboolean>) { |
501 | | v.z = arg; |
502 | | } else if constexpr (std::is_same_v<T, jbyte>) { |
503 | | v.b = arg; |
504 | | } else if constexpr (std::is_same_v<T, jchar>) { |
505 | | v.c = arg; |
506 | | } else if constexpr (std::is_same_v<T, jshort>) { |
507 | | v.s = arg; |
508 | | } else if constexpr (std::is_same_v<T, jint>) { |
509 | | v.i = arg; |
510 | 0 | } else if constexpr (std::is_same_v<T, jlong>) { |
511 | 0 | v.j = arg; |
512 | | } else if constexpr (std::is_same_v<T, jfloat>) { |
513 | | v.f = arg; |
514 | | } else if constexpr (std::is_same_v<T, jdouble>) { |
515 | | v.d = arg; |
516 | | } else { |
517 | | static_assert(false); |
518 | | } |
519 | 0 | this->_args.push_back(v); |
520 | 0 | return *this; |
521 | 0 | } Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE10EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE11EE8with_argIlQsr3stdE13disjunction_vISt7is_sameITL0__hES5_IS6_aES5_IS6_tES5_IS6_sES5_IS6_iES5_IS6_lES5_IS6_fES5_IS6_dEEEERS3_T_ |
522 | | |
523 | | template <RefType Ref> |
524 | | NonvirtualFunctionCall& with_arg(const Object<Ref>& obj) WARN_UNUSED_RESULT; |
525 | | |
526 | | // no override |
527 | 0 | Status call() { |
528 | 0 | using return_type = typename CallHelper<tag>::RETURN_TYPE; |
529 | | if constexpr (std::disjunction_v< |
530 | | std::is_same<return_type, jboolean>, std::is_same<return_type, jbyte>, |
531 | | std::is_same<return_type, jchar>, std::is_same<return_type, jshort>, |
532 | | std::is_same<return_type, jint>, std::is_same<return_type, jlong>, |
533 | | std::is_same<return_type, jfloat>, std::is_same<return_type, jdouble>, |
534 | 0 | std::is_same<return_type, void>>) { |
535 | 0 | CallHelper<tag>::call_impl(this->_env, this->_base, _cls, this->_method, |
536 | 0 | this->_args.data()); |
537 | 0 | RETURN_ERROR_IF_EXC(this->_env); |
538 | | } else if constexpr (std::is_same_v<return_type, jobject>) { |
539 | | jobject tmp = CallHelper<tag>::call_impl(this->_env, this->_base, _cls, this->_method, |
540 | | this->_args.data()); |
541 | | RETURN_ERROR_IF_EXC(this->_env); |
542 | | this->_env->DeleteLocalRef(tmp); |
543 | | } else { |
544 | | static_assert(false); |
545 | | } |
546 | 0 | return Status::OK(); |
547 | 0 | } |
548 | | |
549 | | Status call(Object<Local>* result); |
550 | | |
551 | | template <typename ReturnType> |
552 | | requires(std::is_same_v<typename CallHelper<tag>::RETURN_TYPE, ReturnType>) |
553 | | Status call(ReturnType* result) { |
554 | | *result = CallHelper<tag>::call_impl(this->_env, this->_base, _cls, this->_method, |
555 | | this->_args.data()); |
556 | | RETURN_ERROR_IF_EXC(this->_env); |
557 | | return Status::OK(); |
558 | | } |
559 | | |
560 | | private: |
561 | | explicit NonvirtualFunctionCall(JNIEnv* env, typename CallHelper<tag>::BASE_TYPE base, |
562 | | jclass cls, jmethodID method_id) |
563 | 0 | : FunctionCall<tag>(env, base, method_id), _cls(cls) {}Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE10EEC2EP7JNIEnv_P8_jobjectP7_jclassP10_jmethodID Unexecuted instantiation: _ZN5doris3Jni22NonvirtualFunctionCallILNS0_7CallTagE11EEC2EP7JNIEnv_P8_jobjectP7_jclassP10_jmethodID |
564 | | jclass _cls; |
565 | | DISALLOW_COPY_AND_ASSIGN(NonvirtualFunctionCall); |
566 | | }; |
567 | | |
568 | | /** |
569 | | * When writing JNI code, developers usually need to pay extra attention to several error-prone aspects, including: |
570 | | * 1. The reference type of jobject (local vs. global) |
571 | | * 2. The lifetime and scope of JNI references |
572 | | * 3. Proper release of references after use |
573 | | * 4. Explicit exception checking after JNI calls |
574 | | * Because these concerns are verbose and easy to overlook, they often lead to bugs or inconsistent code. To simplify this, |
575 | | * we provide a wrapper framework around raw JNI APIs. The following describes how to use it (assuming the user already |
576 | | * understands the basic JNI programming model). |
577 | | * |
578 | | * 0. Get JNIEnv* env: `Status st = Jni::Env::Get(&env)` |
579 | | * 1. Choose the reference type |
580 | | * First, determine whether the JNI object should be a local or global reference. Based on this, create the corresponding C++ wrapper object: |
581 | | * LocalObject / GlobalObject. If the exact JNI type is known, use specialized wrappers such as <Local/Global><Array/String/Class>. |
582 | | * 2. Initialize the object |
583 | | * For `jclass`, typically use: `Status st = Jni::Util::find_class(xxx);` |
584 | | * For other object types, they are usually initialized via: `Status st = clazz.new_object(xxx).with_arg(xxx).call(&object) or by calling methods on existing objects. |
585 | | * 3. Call methods and retrieve results |
586 | | * To invoke a method and obtain a return value, use: `Status st = object.call_<return_type>_method(xxx).call(&result);` |
587 | | * |
588 | | * Notes |
589 | | * 1. All JNI references are automatically released in the wrapper’s destructor, ensuring safe and deterministic cleanup. |
590 | | * 2. All framework method invocations return a Status. |
591 | | * The actual JNI return value is written to the address passed to call(). |
592 | | * |
593 | | * Example: be/test/util/jni_util_test.cpp |
594 | | */ |
595 | | template <RefType Ref> |
596 | | class Object { |
597 | | // env->GetObjectRefType |
598 | | public: |
599 | 54 | Object() = default; _ZN5doris3Jni6ObjectILNS0_7RefTypeE0EEC2Ev Line | Count | Source | 599 | 6 | Object() = default; |
_ZN5doris3Jni6ObjectILNS0_7RefTypeE1EEC2Ev Line | Count | Source | 599 | 48 | Object() = default; |
|
600 | | |
601 | | template <RefType U> |
602 | | friend class Object; |
603 | | |
604 | | template <RefType U> |
605 | | friend class Class; |
606 | | |
607 | | template <RefType U> |
608 | | friend class String; |
609 | | |
610 | | template <RefType U> |
611 | | friend class Array; |
612 | | |
613 | | template <BufferType bufferfType, RefType U> |
614 | | friend class BufferGuard; |
615 | | |
616 | | template <CallTag tag> |
617 | | friend class FunctionCall; |
618 | | |
619 | | template <CallTag tag> |
620 | | friend class NonvirtualFunctionCall; |
621 | | |
622 | 54 | virtual ~Object() { |
623 | 54 | if (_obj != nullptr) [[likely]] { |
624 | 3 | JNIEnv* env = nullptr; |
625 | 3 | if (Status st = RefHelper<Ref>::get_env(&env); !st.ok()) [[unlikely]] { |
626 | 0 | LOG(WARNING) << "Can't destroy Jni Ref : " << st.msg(); |
627 | 0 | return; |
628 | 0 | } |
629 | 3 | RefHelper<Ref>::destroy(env, _obj); |
630 | 3 | } |
631 | 54 | } _ZN5doris3Jni6ObjectILNS0_7RefTypeE0EED2Ev Line | Count | Source | 622 | 6 | virtual ~Object() { | 623 | 6 | if (_obj != nullptr) [[likely]] { | 624 | 3 | JNIEnv* env = nullptr; | 625 | 3 | if (Status st = RefHelper<Ref>::get_env(&env); !st.ok()) [[unlikely]] { | 626 | 0 | LOG(WARNING) << "Can't destroy Jni Ref : " << st.msg(); | 627 | 0 | return; | 628 | 0 | } | 629 | 3 | RefHelper<Ref>::destroy(env, _obj); | 630 | 3 | } | 631 | 6 | } |
_ZN5doris3Jni6ObjectILNS0_7RefTypeE1EED2Ev Line | Count | Source | 622 | 48 | virtual ~Object() { | 623 | 48 | if (_obj != nullptr) [[likely]] { | 624 | 0 | JNIEnv* env = nullptr; | 625 | 0 | if (Status st = RefHelper<Ref>::get_env(&env); !st.ok()) [[unlikely]] { | 626 | 0 | LOG(WARNING) << "Can't destroy Jni Ref : " << st.msg(); | 627 | 0 | return; | 628 | 0 | } | 629 | 0 | RefHelper<Ref>::destroy(env, _obj); | 630 | 0 | } | 631 | 48 | } |
|
632 | | |
633 | | template <RefType R> |
634 | 2 | static Status create(JNIEnv* env, const Object<R>& other, Object<Ref>* result) { |
635 | 2 | DCHECK(!other.uninitialized()); |
636 | 2 | DCHECK(result->uninitialized()); |
637 | | |
638 | 2 | result->_obj = RefHelper<Ref>::create(env, other._obj); |
639 | 2 | RETURN_ERROR_IF_EXC(env); |
640 | 2 | return Status::OK(); |
641 | 2 | } _ZN5doris3Jni6ObjectILNS0_7RefTypeE1EE6createILS2_0EEENS_6StatusEP7JNIEnv_RKNS1_IXT_EEEPS3_ Line | Count | Source | 634 | 2 | static Status create(JNIEnv* env, const Object<R>& other, Object<Ref>* result) { | 635 | 2 | DCHECK(!other.uninitialized()); | 636 | 2 | DCHECK(result->uninitialized()); | 637 | | | 638 | 2 | result->_obj = RefHelper<Ref>::create(env, other._obj); | 639 | 2 | RETURN_ERROR_IF_EXC(env); | 640 | 2 | return Status::OK(); | 641 | 2 | } |
Unexecuted instantiation: _ZN5doris3Jni6ObjectILNS0_7RefTypeE0EE6createILS2_0EEENS_6StatusEP7JNIEnv_RKNS1_IXT_EEEPS3_ Unexecuted instantiation: _ZN5doris3Jni6ObjectILNS0_7RefTypeE1EE6createILS2_1EEENS_6StatusEP7JNIEnv_RKNS1_IXT_EEEPS3_ |
642 | | |
643 | 27 | bool uninitialized() const { return _obj == nullptr; }_ZNK5doris3Jni6ObjectILNS0_7RefTypeE0EE13uninitializedEv Line | Count | Source | 643 | 16 | bool uninitialized() const { return _obj == nullptr; } |
_ZNK5doris3Jni6ObjectILNS0_7RefTypeE1EE13uninitializedEv Line | Count | Source | 643 | 11 | bool uninitialized() const { return _obj == nullptr; } |
|
644 | | |
645 | | // Access the JNI handle without changing ownership. |
646 | 1 | jobject get() const { return _obj; }_ZNK5doris3Jni6ObjectILNS0_7RefTypeE0EE3getEv Line | Count | Source | 646 | 1 | jobject get() const { return _obj; } |
Unexecuted instantiation: _ZNK5doris3Jni6ObjectILNS0_7RefTypeE1EE3getEv |
647 | | |
648 | 0 | void reset(JNIEnv* env) { |
649 | 0 | if (_obj == nullptr) { |
650 | 0 | return; |
651 | 0 | } |
652 | 0 | RefHelper<Ref>::destroy(env, _obj); |
653 | 0 | _obj = nullptr; |
654 | 0 | } |
655 | | |
656 | | template <RefType T> |
657 | 0 | bool equal(JNIEnv* env, const Object<T>& other) { |
658 | 0 | DCHECK(!uninitialized()); |
659 | 0 | DCHECK(!other.uninitialized()); |
660 | 0 | return env->IsSameObject(this->_obj, other._obj); //assume not throw exception. |
661 | 0 | } |
662 | | |
663 | 0 | FunctionCall<ObjectMethod> call_object_method(JNIEnv* env, MethodId method_id) const { |
664 | 0 | DCHECK(!this->uninitialized()); |
665 | 0 | DCHECK(!method_id.uninitialized()); |
666 | 0 | return FunctionCall<ObjectMethod>::instance(env, _obj, method_id._id); |
667 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni6ObjectILNS0_7RefTypeE0EE18call_object_methodEP7JNIEnv_NS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni6ObjectILNS0_7RefTypeE1EE18call_object_methodEP7JNIEnv_NS0_8MethodIdE |
668 | | |
669 | 0 | FunctionCall<IntMethod> call_int_method(JNIEnv* env, MethodId method_id) const { |
670 | 0 | DCHECK(!this->uninitialized()); |
671 | 0 | DCHECK(!method_id.uninitialized()); |
672 | 0 | return FunctionCall<IntMethod>::instance(env, _obj, method_id._id); |
673 | 0 | } |
674 | | |
675 | 0 | FunctionCall<LongMethod> call_long_method(JNIEnv* env, MethodId method_id) const { |
676 | 0 | DCHECK(!this->uninitialized()); |
677 | 0 | DCHECK(!method_id.uninitialized()); |
678 | 0 | return FunctionCall<LongMethod>::instance(env, _obj, method_id._id); |
679 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni6ObjectILNS0_7RefTypeE0EE16call_long_methodEP7JNIEnv_NS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni6ObjectILNS0_7RefTypeE1EE16call_long_methodEP7JNIEnv_NS0_8MethodIdE |
680 | | |
681 | 0 | FunctionCall<VoidMethod> call_void_method(JNIEnv* env, MethodId method_id) const { |
682 | 0 | DCHECK(!this->uninitialized()); |
683 | 0 | DCHECK(!method_id.uninitialized()); |
684 | 0 | return FunctionCall<VoidMethod>::instance(env, _obj, method_id._id); |
685 | 0 | } |
686 | | |
687 | 0 | FunctionCall<BooleanMethod> call_boolean_method(JNIEnv* env, MethodId method_id) const { |
688 | 0 | DCHECK(!this->uninitialized()); |
689 | 0 | DCHECK(!method_id.uninitialized()); |
690 | 0 | return FunctionCall<BooleanMethod>::instance(env, _obj, method_id._id); |
691 | 0 | } |
692 | | |
693 | | template <RefType R> |
694 | | NonvirtualFunctionCall<NonvirtualVoidMethod> call_nonvirtual_void_method( |
695 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const; |
696 | | |
697 | | template <RefType R> |
698 | | NonvirtualFunctionCall<NonvirtualObjectMethod> call_nonvirtual_object_method( |
699 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const; |
700 | | |
701 | | template <RefType R> |
702 | | NonvirtualFunctionCall<NonvirtualIntMethod> call_nonvirtual_int_method( |
703 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const; |
704 | | |
705 | | template <RefType R> |
706 | | NonvirtualFunctionCall<NonvirtualBooleanMethod> call_nonvirtual_boolean_method( |
707 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const; |
708 | | |
709 | | protected: |
710 | | jobject _obj = nullptr; |
711 | | DISALLOW_COPY_AND_ASSIGN(Object); |
712 | | }; |
713 | | |
714 | | using LocalObject = Object<Local>; |
715 | | using GlobalObject = Object<Global>; |
716 | | |
717 | | static inline Status local_to_global_ref(JNIEnv* env, const LocalObject& local_ref, |
718 | 2 | GlobalObject* global_ref) { |
719 | 2 | return Object<Global>::create(env, local_ref, global_ref); |
720 | 2 | } Unexecuted instantiation: heartbeat_server_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: task_worker_pool_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: aggregate_function_ai_agg_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ai_adapter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ai_function_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ai_request_executor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: embed_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_cluster_info_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_committed_rs_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_cumulative_compaction_policy_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_empty_rowset_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_internal_service_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_meta_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_schema_change_job_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_snapshot_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_tablet_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_tablet_query_prefer_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_tablet_query_with_tolerance_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_tablet_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_warm_up_manager_filter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_warm_up_manager_peer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_warm_up_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delete_bitmap_file_reader_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_array_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_decimal_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_dictionary_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_ip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_vector_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_agg_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_array_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_bitmap_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_decimal_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_fixed_length_object_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_hll_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_insert_default_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_ip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_jsonb_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_map_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_number_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_quantile_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_struct_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_timestamptz_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_uuid_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_varbinary_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: datetime_round_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: from_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_from_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_jsonb_serde_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_agg_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_arrow_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_csv_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_map_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_mysql_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_struct_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_serde_text_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_to_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_type_variant_v2_serde_binary_roundtrip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: serialize_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_column_to_doris_column_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: merge_partitioner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: sort_merger_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_fn_evaluator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_type_convert_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_util_rowset_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_util_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: dictionary_get_nullable_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: dictionary_status_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: dictionary_version_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: exchange_sink_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: exchange_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hash_table_method_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_operator_group_by_limit_opt_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_shared_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: analytic_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: assert_nums_rows_operator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: broadcast_protobuf_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: datagen_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: distinct_streaming_aggregation_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: empty_set_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: exchange_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: exchange_source_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: file_scan_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hash_join_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hashjoin_build_sink_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hashjoin_probe_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_table_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: join_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: local_merge_sort_source_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: materialization_shared_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: nested_loop_join_build_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: olap_scan_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: operator_projection_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partition_sort_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_aggregation_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_aggregation_source_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_aggregation_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_hash_join_probe_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_hash_join_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_hash_join_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_cache_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: repeat_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: scan_normalize_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: set_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: sort_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_sort_sink_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_sort_source_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_sort_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spillable_operator_test_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: streaming_agg_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: table_function_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: union_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: external_partition_function_factory_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: external_table_sink_hash_partitioner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: bucketed_agg_shared_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_utils_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: distinct_agg_utils_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: set_utils_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: data_queue_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: local_exchanger_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: multi_cast_data_streamer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_agg_shared_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: pipeline_task_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: pipeline_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_cache_fragment_context_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vdata_stream_recvr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: rowid_fetcher_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_bucket_pruner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_consumer_helper_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_consumer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_expr_sampling_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_merger_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_partition_pruner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_producer_helper_cross_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_producer_helper_set_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_producer_helper_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_filter_producer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: sync_size_callback_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: utils_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: access_path_parser_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: file_scanner_v2_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: olap_scanner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: scan_operator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: scanner_context_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: scanner_late_arrival_rf_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vgeneric_iterators_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_extensions_scanner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_table_stream_consumption_scanner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_tso_status_scanner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_result_block_buffer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_jni_memory_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: result_block_buffer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_sink_hash_partitioner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: viceberg_merge_sink_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vrow_distribution_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vtablet_writer_v2_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: async_result_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: external_table_writer_partition_limit_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_partition_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_table_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partition_transformers_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: viceberg_table_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jni_paimon_utf8_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_write_backend_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vhive_partition_writer_report_lifecycle_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vjdbc_table_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: full_sort_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: heap_sorter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: merge_sorter_state.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partition_sorter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: sort_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: topn_sort_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_count_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_map_agg_v2_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_state_combine_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: agg_state_union_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: bloom_filter_func_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: expr_zonemap_filter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_jsonb_null_mask_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_timestamp_ns_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_array_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_boolean_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_date_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_datetime_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal128.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal128_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal256.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal256_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal32.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal32_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal64.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_decimal64_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_double.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_double_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_float.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_float_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_int.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_int_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_string.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_from_string_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal128_perf.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal128.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal128_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal256.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal256_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal32.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal32_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal64.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_decimal64_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_double.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_double_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_float.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_float_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_int.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_int_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_string.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal256_from_string_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal128.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal128_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal256.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal256_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal32.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal32_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal64.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_decimal64_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_double.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_double_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_float.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_float_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_int.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_int_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_string.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal32_from_string_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal128.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal128_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal256.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal256_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal32.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal32_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal64.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_decimal64_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_double.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_double_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_float.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_float_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_int.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_int_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_string.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_decimal64_from_string_overflow.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_float_double.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_integer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_ip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_map_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_string.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_struct_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_time_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_to_timestamptz_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_agg_state_finalize_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_arithmetic_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_aggregation_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_cosine_similarity_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_cross_product_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_cum_sum_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_element_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_except_all_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_flatten_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_range_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_remove_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_shuffle_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_size_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_split_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_trim_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_zip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_arrays_overlap_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_bitmap_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_character_encoding_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_comparison_evaluate_inverted_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_complex_hash_map_dict_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_constant_argument_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_datasketches_hll_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_dict_get_many_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_dict_get_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_eq_for_null_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_fmod_fast_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_format_round_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_geo_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_h3_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_hash_map_dict_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_hash_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_hll_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_if_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_ip_dict_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_ip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_is_null_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_jsonb_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_like_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_map_inner_product_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_map_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_match_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_math_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_money_format_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_multi_match_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_nullif_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_quantile_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_round_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_string_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_test_template.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_test_util.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_time_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_timestamp_ns_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_tokenize_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_url_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_uuid_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_varbinary_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_variant_parse_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_variant_type_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: functions_logical_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: functions_geo_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: like_gram_binding_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: like_gram_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_search_nested_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_search_null_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_search_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: simple_function_factory_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: table_function_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hybrid_set_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_exec_context_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: array_map_function_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: minmax_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: score_runtime_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: short_circuit_util_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: try_cast_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_v2_execution_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcase_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcolumn_ref_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcompound_pred_score_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcondition_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vexpr_evalute_inverted_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vexpr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vexpr_unaligned_int128_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: virtual_slot_ref_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vliteral_digest_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vmatch_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vsearch_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_block_convertor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_flight_variant_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_row_batch_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: file_meta_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_column_convert_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_statistics_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_schema_util_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_delete_file_reader_helper_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vorc_transformer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vparquet_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_mapper_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: csv_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hive_csv_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: text_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cast_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delete_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: equality_delete_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: evolution_cast_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fluss_jni_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jdbc_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jni_table_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_jni_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: json_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: orc_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: native_decoder_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_page_cache_range_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_reader_control_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_scan_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_schema_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: adbc_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: es_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fluss_hybrid_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fluss_union_lake_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hive_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hudi_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_position_delete_sys_table_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_rust_predicate_converter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_rust_table_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: paimon_variant_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: remote_doris_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: table_reader_request_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: table_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: async_cache_write_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_downloader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_probe_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_profile_reporter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_test_lru_dump.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_test_meta_store.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_file_cache_ttl_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cached_remote_file_reader_peer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cached_remote_file_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fs_file_cache_storage_leak_cleaner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partial_block_writeback_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: range_cache_writeback_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: stream_sink_file_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_channel_eos_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_channel_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_stream_stub_map_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delta_writer_cancel_integration_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delta_writer_cancel_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delta_writer_cluster_key_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delta_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delta_writer_v2_pool_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: memtable_flush_executor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: memtable_memory_limiter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: memtable_memory_tracking_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: memtable_sort_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_group_rowset_builder_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: group_rowset_builder_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: group_rowset_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: external_scan_context_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fragment_mgr_cross_cluster_cancel_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fragment_mgr_log_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_stream_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: memory_reclamation_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_plugin_downloader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_context_read_ahead_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_state_block_budget_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: runtime_state_local_state_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snapshot_loader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: stream_load_parquet_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: workload_group_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_task_controller_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: resource_context_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: workload_sched_policy_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: check_encryption_action_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_action_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: point_query_exector_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: active_tablet_stats_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_ivf_list_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: lru_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: page_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: changelog_ttl_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: changelog_vmerge_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_file_cache_write_index_only_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: base_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_index_change_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_index_change_task_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_delete_bitmap_calculator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_file_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_metrics_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_sample_info_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_score_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: compaction_task_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cumulative_compaction_changelog_policy_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cumulative_compaction_policy_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cumulative_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cumulative_compaction_time_series_policy_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ordered_data_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segcompaction_mow_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segcompaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: stale_at_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vertical_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: calc_delete_bitmap_executor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delete_bitmap_calculator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: delete_handler_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: engine_checksum_task_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: file_header_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: id_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: date_bloom_filter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_builder_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_compound_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage_aggregate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage_rowset_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_compaction_performance_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_gc_binlogs_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_profile_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: empty_index_file_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_reader_analysis_purpose_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: boolean_postings_bench_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: listed_terms_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: boolean_truth_contract_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: multi_segment_collector_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: prefix_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: regex_gram_recall_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: collection_statistics_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phrase_candidate_pushdown_bench_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: search_tree_bench_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_vs_v3_benchmark_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_compaction_eligibility_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_index_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_streamed_session_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: crc32c_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: gram_index_section_sizes_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: boolean_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: byte_skip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: chained_conjunction_io_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: count_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: gram_boolean_query_e2e_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: pattern_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phrase_candidate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phrase_prefix_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phrase_skip_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phrase_streaming_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: posting_grouping_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: query_term_resolution_batch_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_end_to_end_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_ann_container_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_b2_or_read_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_b2_t07_dict_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_b2_t08_wildcard_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_b2_t10_cover_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_bkd_adapter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_bkd_adapter_types_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_doris_adapter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_frq_prelude_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_golden_corpus_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_gram_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_index_reader_analyzed_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_index_reader_candidate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_index_reader_count_fallback_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_query_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_variant_routing_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: gram_density_calibration_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: phase_a_readback_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: posting_interleave_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_compound_writer_inherit_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_compound_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_gram_inherit_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_no_bigram_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_prx_tier_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snii_writer_golden_bytes_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spimi_spill_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: primary_key_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_lifecycle_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_schema_patch_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_reader_agg_flush_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_reader_batch_max_rows_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_reader_change_next_block_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_reader_changelog_vcollect_merge_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_reader_row_ttl_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcollect_iterator_collected_enough_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vertical_block_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vertical_merge_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: row_key_encoder_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: metadata_adder_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: historical_row_fetcher_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: key_probe_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: olap_type_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partial_update_info_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: path_gc_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: accept_null_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_column_predicate_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: predicate_creator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: read_schema_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: row_cursor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: row_ttl_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: rowid_conversion_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: beta_rowset_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: rowset_meta_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: rowset_meta_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_creator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_flusher_format_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: block_changer_string_length_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: engine_storage_migration_task_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: analyzer_key_matcher_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: binary_column_extract_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: binary_dict_page_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: binary_plain_page_v2_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: binary_plain_page_v3_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: binary_prefix_page_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: bitshuffle_page_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: bloom_filter_fpp_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: bloom_filter_index_reader_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_meta_accessor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_reader_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_writer_storage_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: constant_column_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: encoding_info_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: external_col_meta_util_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hierarchical_data_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: historical_row_retriever_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_reader_helper_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_array_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_file_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_file_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_searcher_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: inverted_index_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: nested_group_path_filter_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: nested_group_provider_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: page_builder_column_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: page_format_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: plain_page_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: rle_page_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: search_function_query_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_column_raw_data_bytes_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_corruption_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_footer_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_apply_index_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_candidate_pushdown_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_conjunct_short_circuit_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_count_emit_shortcut_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_expr_zonemap_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_lazy_pruned_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_limit_opt_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_no_need_read_data_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_read_ahead_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_runtime_common_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_score_common_expr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_iterator_virtual_column_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_primary_key_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_read_ahead_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_writer_mow_check_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segment_writer_write_paths_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: segments_key_bounds_truncation_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: zone_map_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: snapshot_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: storage_engine_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: storage_resource_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: storage_types_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_column_object_pool_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_cooldown_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_meta_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_meta_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_mgr_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_schema_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_schema_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_schema_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_schema_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: uuid_partial_update_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: timestamped_version_tracker_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: changelog_derive_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: fixed_partial_update_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: flexible_partial_update_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: validate_stage_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_rowstore_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: txn_manager_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_compaction_read_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_compaction_schema_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_debug_point_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_dynamic_path_pruning_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_expr_pushdown_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_field_pattern_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_io_context_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_path_index_lifecycle_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_schema_evolution_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_schema_patch_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_variant_sparse_stats_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_column_writer_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_compaction_paths_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_doc_mode_compaction_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: variant_stats_calculator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_utils.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_storage_test_util.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: mock_agg_fn_evaluator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: mock_fn_call.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: mock_in_expr.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: mock_literal_expr.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: mock_slot_ref.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: run_all_tests.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: python_udf_meta_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: doris_metrics_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jni_plugin_registry_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE jni_utf8_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Line | Count | Source | 718 | 1 | GlobalObject* global_ref) { | 719 | 1 | return Object<Global>::create(env, local_ref, global_ref); | 720 | 1 | } |
Unexecuted instantiation: jni_util_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: profile_spec_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_file_s3_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_file_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: spill_repartitioner_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_0_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: config.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: doris_metrics.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jvm_metrics.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_5_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_3_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_2_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_15_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_14_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_13_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_12_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_11_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_10_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_9_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_8_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_7_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_6_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_4_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE unity_1_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Line | Count | Source | 718 | 1 | GlobalObject* global_ref) { | 719 | 1 | return Object<Global>::create(env, local_ref, global_ref); | 720 | 1 | } |
Unexecuted instantiation: hashjoin_build_sink.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: join_build_sink_operator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: operator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: partitioned_aggregation_sink_operator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: scan_operator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vfile_result_writer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_32_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_31_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_30_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_29_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_28_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_27_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_26_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_25_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_24_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_22_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_21_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_20_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_19_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_18_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_17_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_16_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ai_functions.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_array_aggregation.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_date_or_datetime_computation.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: function_datetime_floor_ceil.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: in.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_row_batch.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: column_type_convert.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_column_convert.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: schema_desc.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_delete_file_reader_helper.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jdbc_jni_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: jni_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_metadata_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: parquet_utils.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: iceberg_partition_function.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: merge_partitioner.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcsv_transformer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vfile_format_transformer_factory.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: viceberg_parquet_writer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vjni_format_transformer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vorc_transformer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vparquet_writer.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: adbc_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: hdfs_file_system.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: unity_23_cxx.cxx:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_compound_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_disk_usage.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: index_fs_directory.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: zone_map_index.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vcollect_iterator.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: predicate_creator_comparison.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: predicate_creator_in_list_in.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: predicate_creator_in_list_not_in.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: tablet.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: engine_clone_task.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: http_service.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: internal_service.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: point_query_executor.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: be_server_starter_factory.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: arrow_flight_batch_reader.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: thrift_util.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: load_stream.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: routine_load_task_executor.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: backend_service.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: cloud_compaction_action.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: injection_point_action.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_edge_case_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_reader_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_result_cache_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_smoke_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_index_writer_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_range_search_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_topn_descriptor_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: ann_topn_runtime_negative_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: extract_query_vector_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: faiss_vector_index_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: vector_search_utils.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE Unexecuted instantiation: virtual_column_iterator_test.cpp:_ZN5doris3JniL19local_to_global_refEP7JNIEnv_RKNS0_6ObjectILNS0_7RefTypeE0EEEPNS3_ILS4_1EEE |
721 | | |
722 | | // auto ReleaseStringUTFChars ReleaseByteArrayElements ... |
723 | | template <BufferType bufferfType, RefType Ref> |
724 | | class BufferGuard { |
725 | | public: |
726 | 0 | BufferGuard() = default; Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE0EEC2Ev Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE1EEC2Ev |
727 | | |
728 | | template <RefType R> |
729 | | static Status create(JNIEnv* env, const Object<R>& object, |
730 | 0 | BufferGuard<bufferfType, Ref>* result, jboolean* isCopy) { |
731 | 0 | DCHECK(result->_buffer == nullptr && result->_object.uninitialized()); |
732 | |
|
733 | 0 | RETURN_IF_ERROR(Object<Ref>::create(env, object, &result->_object)); |
734 | | |
735 | 0 | if constexpr (bufferfType == BufferType::Chars) { |
736 | 0 | result->_buffer = env->GetStringUTFChars((jstring)result->_object._obj, isCopy); |
737 | | } else if constexpr (bufferfType == BufferType::ByteArray) { |
738 | | result->_buffer = |
739 | | (char*)env->GetByteArrayElements((jbyteArray)result->_object._obj, isCopy); |
740 | | } else { |
741 | | static_assert(false); |
742 | | } |
743 | |
|
744 | 0 | RETURN_ERROR_IF_EXC(env); |
745 | 0 | if (result->_buffer == nullptr) [[unlikely]] { |
746 | 0 | return Status::JniError("GetStringUTFChars/GetByteArrayElements fail."); |
747 | 0 | } |
748 | | |
749 | 0 | return Status::OK(); |
750 | 0 | } Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE0EE6createILS3_0EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPS4_Ph Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE1EE6createILS3_1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPS4_Ph |
751 | | |
752 | 0 | ~BufferGuard() { |
753 | 0 | if (_object.uninitialized() || _buffer == nullptr) [[unlikely]] { |
754 | 0 | return; |
755 | 0 | } |
756 | 0 | JNIEnv* env = nullptr; |
757 | |
|
758 | 0 | if (auto st = RefHelper<Ref>::get_env(&env); !st.ok()) [[unlikely]] { |
759 | 0 | LOG(WARNING) << "BufferGuard release fail: " << st; |
760 | 0 | return; |
761 | 0 | } |
762 | | |
763 | 0 | if constexpr (bufferfType == BufferType::Chars) { |
764 | 0 | env->ReleaseStringUTFChars((jstring)_object._obj, _buffer); |
765 | | } else if constexpr (bufferfType == BufferType::ByteArray) { |
766 | | env->ReleaseByteArrayElements((jbyteArray)_object._obj, (jbyte*)_buffer, JNI_ABORT); |
767 | | } |
768 | 0 | } Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE0EED2Ev Unexecuted instantiation: _ZN5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE1EED2Ev |
769 | | |
770 | 0 | const char* get() const { return _buffer; }Unexecuted instantiation: _ZNK5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE0EE3getEv Unexecuted instantiation: _ZNK5doris3Jni11BufferGuardILNS0_10BufferTypeE0ELNS0_7RefTypeE1EE3getEv |
771 | | |
772 | | private: |
773 | | Object<Ref> _object; |
774 | | const char* _buffer = nullptr; |
775 | | |
776 | | DISALLOW_COPY_AND_ASSIGN(BufferGuard); |
777 | | }; |
778 | | |
779 | | template <RefType Ref> |
780 | | using StringBufferGuard = BufferGuard<Chars, Ref>; |
781 | | using LocalStringBufferGuard = BufferGuard<Chars, Local>; |
782 | | using GlobalStringBufferGuard = BufferGuard<Chars, Global>; |
783 | | |
784 | | template <RefType Ref> |
785 | | using ByteArrayBufferGuard = BufferGuard<ByteArray, Ref>; |
786 | | using LocalByteArrayBufferGuard = BufferGuard<ByteArray, Local>; |
787 | | using GlobalByteArrayBufferGuard = BufferGuard<ByteArray, Global>; |
788 | | |
789 | | // Reads a borrowed Java String as standard UTF-8 without taking ownership of the reference. |
790 | | Status get_string_utf8(JNIEnv* env, jstring value, std::string* result); |
791 | | |
792 | | template <RefType Ref> |
793 | | class String : public Object<Ref> { |
794 | | public: |
795 | 6 | String() = default; _ZN5doris3Jni6StringILNS0_7RefTypeE0EEC2Ev Line | Count | Source | 795 | 4 | String() = default; |
_ZN5doris3Jni6StringILNS0_7RefTypeE1EEC2Ev Line | Count | Source | 795 | 2 | String() = default; |
|
796 | | |
797 | | // Accepts JNI modified UTF-8. Use new_string_utf8 for standard UTF-8, e.g. scanner SQL. |
798 | 3 | static Status new_string(JNIEnv* env, const char* utf_chars, String<Ref>* result) { |
799 | 3 | DCHECK(result->uninitialized()); |
800 | | |
801 | 3 | if constexpr (Ref == Local) { |
802 | 2 | result->_obj = env->NewStringUTF(utf_chars); |
803 | 2 | RETURN_ERROR_IF_EXC(env); |
804 | 2 | } else if constexpr (Ref == Global) { |
805 | 1 | String<Local> local_result; |
806 | 1 | RETURN_IF_ERROR(String<Local>::new_string(env, utf_chars, &local_result)); |
807 | 1 | RETURN_IF_ERROR(local_to_global_ref(env, local_result, result)); |
808 | | } else { |
809 | | static_assert(false); |
810 | | } |
811 | | // JNI allocation may return null without a pending exception. |
812 | 3 | if (result->uninitialized()) { |
813 | 2 | return Status::JniError("Failed to allocate modified UTF-8 Java string reference"); |
814 | 2 | } |
815 | 1 | return Status::OK(); |
816 | 3 | } _ZN5doris3Jni6StringILNS0_7RefTypeE0EE10new_stringEP7JNIEnv_PKcPS3_ Line | Count | Source | 798 | 2 | static Status new_string(JNIEnv* env, const char* utf_chars, String<Ref>* result) { | 799 | 2 | DCHECK(result->uninitialized()); | 800 | | | 801 | 2 | if constexpr (Ref == Local) { | 802 | 2 | result->_obj = env->NewStringUTF(utf_chars); | 803 | 2 | RETURN_ERROR_IF_EXC(env); | 804 | | } else if constexpr (Ref == Global) { | 805 | | String<Local> local_result; | 806 | | RETURN_IF_ERROR(String<Local>::new_string(env, utf_chars, &local_result)); | 807 | | RETURN_IF_ERROR(local_to_global_ref(env, local_result, result)); | 808 | | } else { | 809 | | static_assert(false); | 810 | | } | 811 | | // JNI allocation may return null without a pending exception. | 812 | 2 | if (result->uninitialized()) { | 813 | 1 | return Status::JniError("Failed to allocate modified UTF-8 Java string reference"); | 814 | 1 | } | 815 | 1 | return Status::OK(); | 816 | 2 | } |
_ZN5doris3Jni6StringILNS0_7RefTypeE1EE10new_stringEP7JNIEnv_PKcPS3_ Line | Count | Source | 798 | 1 | static Status new_string(JNIEnv* env, const char* utf_chars, String<Ref>* result) { | 799 | 1 | DCHECK(result->uninitialized()); | 800 | | | 801 | | if constexpr (Ref == Local) { | 802 | | result->_obj = env->NewStringUTF(utf_chars); | 803 | | RETURN_ERROR_IF_EXC(env); | 804 | 1 | } else if constexpr (Ref == Global) { | 805 | 1 | String<Local> local_result; | 806 | 1 | RETURN_IF_ERROR(String<Local>::new_string(env, utf_chars, &local_result)); | 807 | 1 | RETURN_IF_ERROR(local_to_global_ref(env, local_result, result)); | 808 | | } else { | 809 | | static_assert(false); | 810 | | } | 811 | | // JNI allocation may return null without a pending exception. | 812 | 1 | if (result->uninitialized()) { | 813 | 1 | return Status::JniError("Failed to allocate modified UTF-8 Java string reference"); | 814 | 1 | } | 815 | 0 | return Status::OK(); | 816 | 1 | } |
|
817 | | |
818 | | // Decodes standard UTF-8, including supplementary characters and embedded NULs. |
819 | | static Status new_string_utf8(JNIEnv* env, std::string_view utf_chars, String<Ref>* result); |
820 | | |
821 | 0 | Status get_string_chars(JNIEnv* env, StringBufferGuard<Ref>* jni_chars) const { |
822 | 0 | return StringBufferGuard<Ref>::create(env, *this, jni_chars, nullptr); |
823 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni6StringILNS0_7RefTypeE0EE16get_string_charsEP7JNIEnv_PNS0_11BufferGuardILNS0_10BufferTypeE0ELS2_0EEE Unexecuted instantiation: _ZNK5doris3Jni6StringILNS0_7RefTypeE1EE16get_string_charsEP7JNIEnv_PNS0_11BufferGuardILNS0_10BufferTypeE0ELS2_1EEE |
824 | | |
825 | | // Unlike get_string_chars (JNI modified UTF-8), preserves standard UTF-8 and embedded NULs. |
826 | | // Rejects unpaired UTF-16 surrogates instead of replacing them. |
827 | 0 | Status get_string_utf8(JNIEnv* env, std::string* result) const { |
828 | 0 | DCHECK(!this->uninitialized()); |
829 | 0 | return Jni::get_string_utf8(env, static_cast<jstring>(this->_obj), result); |
830 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni6StringILNS0_7RefTypeE0EE15get_string_utf8EP7JNIEnv_PNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE Unexecuted instantiation: _ZNK5doris3Jni6StringILNS0_7RefTypeE1EE15get_string_utf8EP7JNIEnv_PNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE |
831 | | |
832 | | private: |
833 | | DISALLOW_COPY_AND_ASSIGN(String); |
834 | | }; |
835 | | |
836 | | extern template Status String<Local>::new_string_utf8(JNIEnv*, std::string_view, String<Local>*); |
837 | | extern template Status String<Global>::new_string_utf8(JNIEnv*, std::string_view, String<Global>*); |
838 | | |
839 | | template <RefType Ref> |
840 | | class Array : public Object<Ref> { |
841 | | public: |
842 | 0 | Array() = default; |
843 | | |
844 | 0 | Status get_length(JNIEnv* env, jsize* result) const { |
845 | 0 | DCHECK(!this->uninitialized()); |
846 | |
|
847 | 0 | *result = env->GetArrayLength((jarray)this->_obj); |
848 | 0 | RETURN_ERROR_IF_EXC(env); |
849 | 0 | return Status::OK(); |
850 | 0 | } |
851 | | |
852 | 0 | Status get_object_array_element(JNIEnv* env, jsize index, Jni::LocalObject* result) { |
853 | 0 | DCHECK(!this->uninitialized()); |
854 | 0 | DCHECK(result->uninitialized()); |
855 | 0 | result->_obj = env->GetObjectArrayElement((jobjectArray)this->_obj, index); |
856 | 0 | RETURN_ERROR_IF_EXC(env); |
857 | 0 | return Status::OK(); |
858 | 0 | } |
859 | | |
860 | | Status get_byte_elements(JNIEnv* env, ByteArrayBufferGuard<Ref>* jni_bytes) const { |
861 | | DCHECK(!this->uninitialized()); |
862 | | return ByteArrayBufferGuard<Ref>::create(env, *this, jni_bytes, nullptr); |
863 | | } |
864 | | |
865 | 0 | Status get_byte_elements(JNIEnv* env, jsize start, jsize len, jbyte* buffer) { |
866 | 0 | DCHECK(!this->uninitialized()); |
867 | 0 | env->GetByteArrayRegion((jbyteArray)this->_obj, start, len, buffer); |
868 | 0 | RETURN_ERROR_IF_EXC(env); |
869 | 0 | return Status::OK(); |
870 | 0 | } |
871 | | |
872 | | static Status WriteBufferToByteArray(JNIEnv* env, const jbyte* buffer, jint size, |
873 | 0 | Array<Local>* serialized_msg) { |
874 | 0 | DCHECK(serialized_msg->uninitialized()); |
875 | | /// create jbyteArray given buffer |
876 | 0 | serialized_msg->_obj = env->NewByteArray(size); |
877 | 0 | RETURN_ERROR_IF_EXC(env); |
878 | 0 | if (serialized_msg->_obj == nullptr) [[unlikely]] { |
879 | 0 | return Status::JniError("couldn't construct jbyteArray"); |
880 | 0 | } |
881 | 0 | env->SetByteArrayRegion((jbyteArray)serialized_msg->_obj, 0, size, buffer); |
882 | 0 | RETURN_ERROR_IF_EXC(env); |
883 | 0 | return Status::OK(); |
884 | 0 | } |
885 | | |
886 | | template <class T> |
887 | 0 | static Status SerializeThriftMsg(JNIEnv* env, T* msg, Array<Local>* serialized_msg) { |
888 | 0 | int buffer_size = 100 * 1024; // start out with 100KB |
889 | 0 | ThriftSerializer serializer(false, buffer_size); |
890 | |
|
891 | 0 | uint8_t* buffer = nullptr; |
892 | 0 | uint32_t size = 0; |
893 | 0 | RETURN_IF_ERROR(serializer.serialize(msg, &size, &buffer)); |
894 | | |
895 | | // Make sure that 'size' is within the limit of INT_MAX as the use of |
896 | | // 'size' below takes int. |
897 | 0 | if (size > INT_MAX) [[unlikely]] { |
898 | 0 | return Status::JniError( |
899 | 0 | "The length of the serialization buffer ({} bytes) exceeds the limit of {} " |
900 | 0 | "bytes", |
901 | 0 | size, INT_MAX); |
902 | 0 | } |
903 | 0 | RETURN_IF_ERROR(WriteBufferToByteArray(env, (jbyte*)buffer, size, serialized_msg)); |
904 | 0 | return Status::OK(); |
905 | 0 | } |
906 | | |
907 | | private: |
908 | | DISALLOW_COPY_AND_ASSIGN(Array); |
909 | | }; |
910 | | |
911 | | template <RefType Ref> |
912 | | class Class : public Object<Ref> { |
913 | | public: |
914 | 12 | Class() = default; _ZN5doris3Jni5ClassILNS0_7RefTypeE0EEC2Ev Line | Count | Source | 914 | 2 | Class() = default; |
_ZN5doris3Jni5ClassILNS0_7RefTypeE1EEC2Ev Line | Count | Source | 914 | 10 | Class() = default; |
|
915 | | |
916 | 2 | static Status find_class(JNIEnv* env, const char* class_str, Class<Ref>* result) { |
917 | 2 | DCHECK(result->uninitialized()); |
918 | 2 | if constexpr (Ref == Local) { |
919 | 2 | result->_obj = env->FindClass(class_str); |
920 | 2 | RETURN_ERROR_IF_EXC(env); |
921 | 2 | return Status::OK(); |
922 | 2 | } else if constexpr (Ref == Global) { |
923 | 0 | Class<Local> local_class; |
924 | 0 | local_class._obj = env->FindClass(class_str); |
925 | 0 | RETURN_ERROR_IF_EXC(env); |
926 | 0 | return local_to_global_ref(env, local_class, result); |
927 | | } else { |
928 | | static_assert(false); |
929 | | } |
930 | 2 | } _ZN5doris3Jni5ClassILNS0_7RefTypeE0EE10find_classEP7JNIEnv_PKcPS3_ Line | Count | Source | 916 | 2 | static Status find_class(JNIEnv* env, const char* class_str, Class<Ref>* result) { | 917 | 2 | DCHECK(result->uninitialized()); | 918 | 2 | if constexpr (Ref == Local) { | 919 | 2 | result->_obj = env->FindClass(class_str); | 920 | 2 | RETURN_ERROR_IF_EXC(env); | 921 | 2 | return Status::OK(); | 922 | | } else if constexpr (Ref == Global) { | 923 | | Class<Local> local_class; | 924 | | local_class._obj = env->FindClass(class_str); | 925 | | RETURN_ERROR_IF_EXC(env); | 926 | | return local_to_global_ref(env, local_class, result); | 927 | | } else { | 928 | | static_assert(false); | 929 | | } | 930 | 2 | } |
Unexecuted instantiation: _ZN5doris3Jni5ClassILNS0_7RefTypeE1EE10find_classEP7JNIEnv_PKcPS3_ |
931 | | |
932 | | /** |
933 | | * The class of an object that is already in hand. |
934 | | * |
935 | | * Needed where a class cannot be named: an object produced by a plugin is an instance of a |
936 | | * class inside that plugin's classloader, which FindClass - searching BE's own loader - |
937 | | * cannot see. Asking the object is the only way to reach it. |
938 | | */ |
939 | | template <RefType R> |
940 | 0 | static Status get_object_class(JNIEnv* env, const Object<R>& object, Class<Ref>* result) { |
941 | 0 | DCHECK(!object.uninitialized()); |
942 | 0 | DCHECK(result->uninitialized()); |
943 | 0 | if constexpr (Ref == Local) { |
944 | 0 | result->_obj = env->GetObjectClass(object._obj); |
945 | 0 | RETURN_ERROR_IF_EXC(env); |
946 | 0 | return Status::OK(); |
947 | 0 | } else if constexpr (Ref == Global) { |
948 | 0 | Class<Local> local_class; |
949 | 0 | local_class._obj = env->GetObjectClass(object._obj); |
950 | 0 | RETURN_ERROR_IF_EXC(env); |
951 | 0 | return local_to_global_ref(env, local_class, result); |
952 | | } else { |
953 | | static_assert(false); |
954 | | } |
955 | 0 | } Unexecuted instantiation: _ZN5doris3Jni5ClassILNS0_7RefTypeE0EE16get_object_classILS2_1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPS3_ Unexecuted instantiation: _ZN5doris3Jni5ClassILNS0_7RefTypeE1EE16get_object_classILS2_1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPS3_ |
956 | | |
957 | | /** |
958 | | * Whether an object is an instance of this class. |
959 | | * |
960 | | * The one way to check the kind of something a plugin handed back: the object's own class is |
961 | | * private to the plugin's classloader, so the only comparable identity is a shared base class |
962 | | * BE resolved itself. IsInstanceOf raises no exception, hence the plain bool. |
963 | | */ |
964 | | template <RefType R> |
965 | 0 | bool is_instance(JNIEnv* env, const Object<R>& object) const { |
966 | 0 | DCHECK(!this->uninitialized()); |
967 | 0 | DCHECK(!object.uninitialized()); |
968 | 0 | return env->IsInstanceOf(object._obj, (jclass)this->_obj) == JNI_TRUE; |
969 | 0 | } |
970 | | |
971 | | Status get_static_method(JNIEnv* env, const char* method_str, const char* method_signature, |
972 | 0 | MethodId* method_id) const { |
973 | 0 | DCHECK(!this->uninitialized()); |
974 | 0 | DCHECK(method_id->uninitialized()); |
975 | 0 | method_id->_id = env->GetStaticMethodID((jclass)this->_obj, method_str, method_signature); |
976 | 0 | RETURN_ERROR_IF_EXC(env); |
977 | 0 | return Status::OK(); |
978 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE1EE17get_static_methodEP7JNIEnv_PKcS7_PNS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE0EE17get_static_methodEP7JNIEnv_PKcS7_PNS0_8MethodIdE |
979 | | |
980 | | Status get_method(JNIEnv* env, const char* method_str, const char* method_signature, |
981 | 0 | MethodId* method_id) const { |
982 | 0 | DCHECK(!this->uninitialized()); |
983 | 0 | DCHECK(method_id->uninitialized()); |
984 | 0 | method_id->_id = env->GetMethodID((jclass)this->_obj, method_str, method_signature); |
985 | 0 | RETURN_ERROR_IF_EXC(env); |
986 | 0 | return Status::OK(); |
987 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE0EE10get_methodEP7JNIEnv_PKcS7_PNS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE1EE10get_methodEP7JNIEnv_PKcS7_PNS0_8MethodIdE |
988 | | |
989 | | Status get_static_fieldId(JNIEnv* env, const char* name, const char* signature, |
990 | 0 | FieldId* field_id) const { |
991 | 0 | DCHECK(!this->uninitialized()); |
992 | 0 | DCHECK(field_id->uninitialized()); |
993 | 0 | field_id->_id = env->GetStaticFieldID((jclass)this->_obj, name, signature); |
994 | 0 | RETURN_ERROR_IF_EXC(env); |
995 | 0 | return Status::OK(); |
996 | 0 | } |
997 | | |
998 | | Status get_static_object_field(JNIEnv* env, const FieldId& field_id, |
999 | | Object<Local>* result) const { |
1000 | | DCHECK(!this->uninitialized()); |
1001 | | DCHECK(!field_id.uninitialized()); |
1002 | | result->_obj = env->GetStaticObjectField((jclass)this->_obj, field_id._id); |
1003 | | RETURN_ERROR_IF_EXC(env); |
1004 | | return Status::OK(); |
1005 | | } |
1006 | | |
1007 | | Status get_static_object_field(JNIEnv* env, const FieldId& field_id, |
1008 | 0 | Object<Global>* global_result) const { |
1009 | 0 | DCHECK(!this->uninitialized()); |
1010 | 0 | DCHECK(!field_id.uninitialized()); |
1011 | 0 | Object<Local> local_result; |
1012 | 0 | local_result._obj = env->GetStaticObjectField((jclass)this->_obj, field_id._id); |
1013 | 0 | RETURN_ERROR_IF_EXC(env); |
1014 | 0 | return local_to_global_ref(env, local_result, global_result); |
1015 | 0 | } |
1016 | | |
1017 | | Status get_static_object_field(JNIEnv* env, const char* name, const char* signature, |
1018 | 0 | Object<Global>* global_result) const { |
1019 | 0 | Jni::FieldId tmpFieldID; |
1020 | 0 | RETURN_IF_ERROR(get_static_fieldId(env, name, signature, &tmpFieldID)); |
1021 | 0 | RETURN_IF_ERROR(get_static_object_field(env, tmpFieldID, global_result)); |
1022 | 0 | return Status::OK(); |
1023 | 0 | } |
1024 | | |
1025 | 0 | FunctionCall<NewObject> new_object(JNIEnv* env, MethodId method_id) const { |
1026 | 0 | DCHECK(!this->uninitialized()); |
1027 | 0 | DCHECK(!method_id.uninitialized()); |
1028 | 0 | return FunctionCall<NewObject>::instance(env, (jclass)this->_obj, method_id._id); |
1029 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE1EE10new_objectEP7JNIEnv_NS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE0EE10new_objectEP7JNIEnv_NS0_8MethodIdE |
1030 | | |
1031 | | FunctionCall<StaticObjectMethod> call_static_object_method(JNIEnv* env, |
1032 | 0 | MethodId method_id) const { |
1033 | 0 | DCHECK(!this->uninitialized()); |
1034 | 0 | DCHECK(!method_id.uninitialized()); |
1035 | 0 | return FunctionCall<StaticObjectMethod>::instance(env, (jclass)this->_obj, method_id._id); |
1036 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE1EE25call_static_object_methodEP7JNIEnv_NS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE0EE25call_static_object_methodEP7JNIEnv_NS0_8MethodIdE |
1037 | | |
1038 | 0 | FunctionCall<StaticVoidMethod> call_static_void_method(JNIEnv* env, MethodId method_id) const { |
1039 | 0 | DCHECK(!this->uninitialized()); |
1040 | 0 | DCHECK(!method_id.uninitialized()); |
1041 | 0 | return FunctionCall<StaticVoidMethod>::instance(env, (jclass)this->_obj, method_id._id); |
1042 | 0 | } Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE1EE23call_static_void_methodEP7JNIEnv_NS0_8MethodIdE Unexecuted instantiation: _ZNK5doris3Jni5ClassILNS0_7RefTypeE0EE23call_static_void_methodEP7JNIEnv_NS0_8MethodIdE |
1043 | | |
1044 | | private: |
1045 | | DISALLOW_COPY_AND_ASSIGN(Class); |
1046 | | }; |
1047 | | |
1048 | | using LocalClass = Class<Local>; |
1049 | | using GlobalClass = Class<Global>; |
1050 | | |
1051 | | using LocalArray = Array<Local>; |
1052 | | using GlobalArray = Array<Global>; |
1053 | | |
1054 | | using LocalString = String<Local>; |
1055 | | using GlobalString = String<Global>; |
1056 | | |
1057 | | template <CallTag tag> |
1058 | | template <RefType Ref> |
1059 | 0 | FunctionCall<tag>& FunctionCall<tag>::with_arg(const Object<Ref>& obj) { |
1060 | 0 | jvalue v; |
1061 | 0 | std::memset(&v, 0, sizeof(v)); |
1062 | 0 | v.l = obj._obj; |
1063 | 0 | _args.push_back(v); |
1064 | 0 | return *this; |
1065 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE4EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE8EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE3EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE2EE8with_argILNS0_7RefTypeE0EEERS3_RKNS0_6ObjectIXT_EEE |
1066 | | |
1067 | | template <CallTag tag> |
1068 | | template <RefType Ref> |
1069 | 0 | NonvirtualFunctionCall<tag>& NonvirtualFunctionCall<tag>::with_arg(const Object<Ref>& obj) { |
1070 | 0 | jvalue v; |
1071 | 0 | std::memset(&v, 0, sizeof(v)); |
1072 | 0 | v.l = obj._obj; |
1073 | 0 | this->_args.push_back(v); |
1074 | 0 | return *this; |
1075 | 0 | } |
1076 | | |
1077 | | template <CallTag tag> |
1078 | 0 | Status FunctionCall<tag>::call(Object<Local>* result) { |
1079 | 0 | DCHECK(result->uninitialized()); |
1080 | 0 | result->_obj = CallHelper<tag>::call_impl(_env, _base, _method, _args.data()); |
1081 | 0 | RETURN_ERROR_IF_EXC(this->_env); |
1082 | 0 | return Status::OK(); |
1083 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EE4callEPNS0_6ObjectILNS0_7RefTypeE0EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE0EE4callEPNS0_6ObjectILNS0_7RefTypeE0EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EE4callEPNS0_6ObjectILNS0_7RefTypeE0EEE |
1084 | | |
1085 | | template <CallTag tag> |
1086 | 0 | Status FunctionCall<tag>::call(Object<Global>* result) { |
1087 | 0 | DCHECK(result->uninitialized()); |
1088 | 0 | Object<Local> local_result; |
1089 | 0 | local_result._obj = CallHelper<tag>::call_impl(_env, _base, _method, _args.data()); |
1090 | 0 | RETURN_ERROR_IF_EXC(this->_env); |
1091 | 0 | return local_to_global_ref(_env, local_result, result); |
1092 | 0 | } Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE9EE4callEPNS0_6ObjectILNS0_7RefTypeE1EEE Unexecuted instantiation: _ZN5doris3Jni12FunctionCallILNS0_7CallTagE5EE4callEPNS0_6ObjectILNS0_7RefTypeE1EEE |
1093 | | |
1094 | | template <CallTag tag> |
1095 | 0 | Status NonvirtualFunctionCall<tag>::call(Object<Local>* result) { |
1096 | 0 | DCHECK(result->uninitialized()); |
1097 | 0 | result->_obj = CallHelper<tag>::call_impl(this->_env, this->_base, _cls, this->_method, |
1098 | 0 | this->_args.data()); |
1099 | 0 | RETURN_ERROR_IF_EXC(this->_env); |
1100 | 0 | return Status::OK(); |
1101 | 0 | } |
1102 | | |
1103 | | template <RefType Ref> |
1104 | | template <RefType R> |
1105 | | NonvirtualFunctionCall<NonvirtualObjectMethod> Object<Ref>::call_nonvirtual_object_method( |
1106 | 0 | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const { |
1107 | 0 | DCHECK(!this->uninitialized()); |
1108 | 0 | DCHECK(!method_id.uninitialized()); |
1109 | |
|
1110 | 0 | return NonvirtualFunctionCall<NonvirtualObjectMethod>::instance(env, _obj, (jclass)clazz._obj, |
1111 | 0 | method_id._id); |
1112 | 0 | } |
1113 | | |
1114 | | template <RefType Ref> |
1115 | | template <RefType R> |
1116 | | NonvirtualFunctionCall<NonvirtualVoidMethod> Object<Ref>::call_nonvirtual_void_method( |
1117 | 0 | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const { |
1118 | 0 | DCHECK(!this->uninitialized()); |
1119 | 0 | DCHECK(!method_id.uninitialized()); |
1120 | 0 | return NonvirtualFunctionCall<NonvirtualVoidMethod>::instance(env, _obj, (jclass)clazz._obj, |
1121 | 0 | method_id._id); |
1122 | 0 | } |
1123 | | |
1124 | | template <RefType Ref> |
1125 | | template <RefType R> |
1126 | | NonvirtualFunctionCall<NonvirtualIntMethod> Object<Ref>::call_nonvirtual_int_method( |
1127 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const { |
1128 | | DCHECK(!this->uninitialized()); |
1129 | | DCHECK(!method_id.uninitialized()); |
1130 | | return NonvirtualFunctionCall<NonvirtualIntMethod>::instance(env, _obj, (jclass)clazz._obj, |
1131 | | method_id._id); |
1132 | | } |
1133 | | |
1134 | | template <RefType Ref> |
1135 | | template <RefType R> |
1136 | | NonvirtualFunctionCall<NonvirtualBooleanMethod> Object<Ref>::call_nonvirtual_boolean_method( |
1137 | | JNIEnv* env, const Class<R>& clazz, MethodId method_id) const { |
1138 | | DCHECK(!this->uninitialized()); |
1139 | | DCHECK(!method_id.uninitialized()); |
1140 | | return NonvirtualFunctionCall<NonvirtualBooleanMethod>::instance(env, _obj, (jclass)clazz._obj, |
1141 | | method_id._id); |
1142 | | } |
1143 | | |
1144 | | class Util { |
1145 | | public: |
1146 | | // Converts standard UTF-8 strings to a Java String[]. On success the caller owns the |
1147 | | // returned local reference; *result must be null on entry and is unchanged on failure. |
1148 | | static Status create_string_array_utf8(JNIEnv* env, const std::vector<std::string>& values, |
1149 | | jobjectArray* result); |
1150 | | |
1151 | | // Throws java.io.IOException with a standard UTF-8 message, using an ASCII fallback if |
1152 | | // message conversion fails. Exceptions from the IOException constructor are preserved. |
1153 | | static void throw_java_io_exception_utf8(JNIEnv* env, const std::string& message); |
1154 | | |
1155 | | static size_t get_max_jni_heap_memory_size(); |
1156 | | |
1157 | | template <RefType Ref> |
1158 | 2 | static Status find_class(JNIEnv* env, const char* class_str, Class<Ref>* result) { |
1159 | 2 | return Class<Ref>::find_class(env, class_str, result); |
1160 | 2 | } _ZN5doris3Jni4Util10find_classILNS0_7RefTypeE0EEENS_6StatusEP7JNIEnv_PKcPNS0_5ClassIXT_EEE Line | Count | Source | 1158 | 2 | static Status find_class(JNIEnv* env, const char* class_str, Class<Ref>* result) { | 1159 | 2 | return Class<Ref>::find_class(env, class_str, result); | 1160 | 2 | } |
Unexecuted instantiation: _ZN5doris3Jni4Util10find_classILNS0_7RefTypeE1EEENS_6StatusEP7JNIEnv_PKcPNS0_5ClassIXT_EEE |
1161 | | |
1162 | | template <RefType Ref, RefType R> |
1163 | 0 | static Status get_object_class(JNIEnv* env, const Object<R>& object, Class<Ref>* result) { |
1164 | 0 | return Class<Ref>::get_object_class(env, object, result); |
1165 | 0 | } Unexecuted instantiation: _ZN5doris3Jni4Util16get_object_classILNS0_7RefTypeE0ELS3_1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT0_EEEPNS0_5ClassIXT_EEE Unexecuted instantiation: _ZN5doris3Jni4Util16get_object_classILNS0_7RefTypeE1ELS3_1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT0_EEEPNS0_5ClassIXT_EEE |
1166 | | |
1167 | | template <RefType Ref> |
1168 | | static Status WriteBufferToByteArray(JNIEnv* env, const jbyte* buffer, jint size, |
1169 | 0 | Array<Ref>* serialized_msg) { |
1170 | 0 | if constexpr (Ref == Local) { |
1171 | 0 | return Array<Local>::WriteBufferToByteArray(env, buffer, size, serialized_msg); |
1172 | | } else if constexpr (Ref == Global) { |
1173 | | Array<Local> local_obj; |
1174 | | RETURN_IF_ERROR(Array<Local>::WriteBufferToByteArray(env, buffer, size, &local_obj)); |
1175 | | return local_to_global_ref(env, local_obj, serialized_msg); |
1176 | | } else { |
1177 | | static_assert(false); |
1178 | | } |
1179 | 0 | } |
1180 | | |
1181 | | template <class T, RefType Ref> |
1182 | 0 | static Status SerializeThriftMsg(JNIEnv* env, T* msg, Array<Ref>* serialized_msg) { |
1183 | 0 | if constexpr (Ref == Local) { |
1184 | 0 | return Array<Local>::SerializeThriftMsg(env, msg, serialized_msg); |
1185 | | } else if (Ref == Global) { |
1186 | | Array<Local> local_obj; |
1187 | | RETURN_IF_ERROR(Array<Local>::SerializeThriftMsg(env, msg, local_obj)); |
1188 | | return local_to_global_ref(env, local_obj, serialized_msg); |
1189 | | } else { |
1190 | | static_assert(false); |
1191 | | } |
1192 | 0 | } |
1193 | | |
1194 | | template <RefType Ref> |
1195 | | static Status convert_to_java_map(JNIEnv* env, const std::map<std::string, std::string>& map, |
1196 | 0 | Object<Ref>* hashmap_object) { |
1197 | 0 | RETURN_IF_ERROR(hashmap_class.new_object(env, hashmap_constructor) |
1198 | 0 | .with_arg((jint)map.size()) |
1199 | 0 | .call(hashmap_object)); |
1200 | | |
1201 | 0 | for (const auto& it : map) { |
1202 | 0 | LocalString key; |
1203 | 0 | RETURN_IF_ERROR(String<Local>::new_string_utf8(env, it.first, &key)); |
1204 | | |
1205 | 0 | LocalString value; |
1206 | 0 | RETURN_IF_ERROR(String<Local>::new_string_utf8(env, it.second, &value)); |
1207 | | |
1208 | 0 | LocalObject result; |
1209 | 0 | RETURN_IF_ERROR(hashmap_object->call_object_method(env, hashmap_put) |
1210 | 0 | .with_arg(key) |
1211 | 0 | .with_arg(value) |
1212 | 0 | .call()); |
1213 | 0 | } |
1214 | 0 | return Status::OK(); |
1215 | 0 | } Unexecuted instantiation: _ZN5doris3Jni4Util19convert_to_java_mapILNS0_7RefTypeE0EEENS_6StatusEP7JNIEnv_RKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEEPNS0_6ObjectIXT_EEE Unexecuted instantiation: _ZN5doris3Jni4Util19convert_to_java_mapILNS0_7RefTypeE1EEENS_6StatusEP7JNIEnv_RKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEEPNS0_6ObjectIXT_EEE |
1216 | | |
1217 | | template <RefType Ref> |
1218 | | static Status convert_to_cpp_map(JNIEnv* env, const Object<Ref>& map, |
1219 | 0 | std::map<std::string, std::string>* resultMap) { |
1220 | 0 | LocalObject entrySet; |
1221 | 0 | RETURN_IF_ERROR(map.call_object_method(env, mapEntrySetMethod).call(&entrySet)); |
1222 | | |
1223 | | // Call the iterator method on the set to iterate over the key-value pairs |
1224 | 0 | LocalObject iteratorSet; |
1225 | 0 | RETURN_IF_ERROR(entrySet.call_object_method(env, iteratorSetMethod).call(&iteratorSet)); |
1226 | | |
1227 | 0 | while (true) { |
1228 | 0 | jboolean hasNext = false; |
1229 | 0 | RETURN_IF_ERROR( |
1230 | 0 | iteratorSet.call_boolean_method(env, iteratorHasNextMethod).call(&hasNext)); |
1231 | 0 | if (!hasNext) { |
1232 | 0 | break; |
1233 | 0 | } |
1234 | | |
1235 | 0 | LocalObject entry; |
1236 | 0 | RETURN_IF_ERROR(iteratorSet.call_object_method(env, iteratorNextMethod).call(&entry)); |
1237 | | |
1238 | 0 | LocalString javaKey; |
1239 | 0 | RETURN_IF_ERROR(entry.call_object_method(env, getEntryKeyMethod).call(&javaKey)); |
1240 | | |
1241 | 0 | LocalString javaValue; |
1242 | 0 | RETURN_IF_ERROR(entry.call_object_method(env, getEntryValueMethod).call(&javaValue)); |
1243 | | |
1244 | 0 | std::string key; |
1245 | 0 | RETURN_IF_ERROR(javaKey.get_string_utf8(env, &key)); |
1246 | | |
1247 | 0 | std::string value; |
1248 | 0 | RETURN_IF_ERROR(javaValue.get_string_utf8(env, &value)); |
1249 | | |
1250 | | // Store the key-value pair in the map |
1251 | 0 | (*resultMap)[std::move(key)] = std::move(value); |
1252 | 0 | } |
1253 | 0 | return Status::OK(); |
1254 | 0 | } Unexecuted instantiation: _ZN5doris3Jni4Util18convert_to_cpp_mapILNS0_7RefTypeE0EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESH_St4lessISH_ESaISt4pairIKSH_SH_EEE Unexecuted instantiation: _ZN5doris3Jni4Util18convert_to_cpp_mapILNS0_7RefTypeE1EEENS_6StatusEP7JNIEnv_RKNS0_6ObjectIXT_EEEPSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESH_St4lessISH_ESaISt4pairIKSH_SH_EEE |
1255 | | |
1256 | | // The outcome of the one attempt to resolve the JNI base, or nullopt when nothing has |
1257 | | // attempted it yet. Public, unlike ensure_jni_base() below, precisely because it never |
1258 | | // triggers the attempt: this is what a reader that must not create a JVM asks - the |
1259 | | // /api/jni_plugin_status endpoint, which exists to answer "why is Java not working here" |
1260 | | // and would otherwise have to start a JVM to find out. |
1261 | | static std::optional<Status> jni_base_outcome(); |
1262 | | |
1263 | | private: |
1264 | | // Resolves everything the BE needs from the JVM before it can call any Java code: the |
1265 | | // exception helpers, the native methods the Java side links against, and the |
1266 | | // collection classes cached below. Runs once, right after the JVM appears; every |
1267 | | // caller that follows gets the outcome of that one attempt. |
1268 | | // |
1269 | | // Deliberately NOT part of "does this process have a JVM": all of it comes out of |
1270 | | // doris-jni-spi.jar, and a BE whose Java deployment is incomplete still serves HDFS through |
1271 | | // libhdfs. JvmLauncher runs it once at the end of its bootstrap and logs a failure; Env, the |
1272 | | // door every Java caller comes through, refuses to hand out a JNIEnv while it is failing. |
1273 | | // |
1274 | | // Only those two may call it. JvmLauncher calls it from inside its bootstrap, with the |
1275 | | // calling thread already attached and its env cached, because the resolution asks Env::Get() |
1276 | | // for a JNIEnv and an unattached thread there would go back through ensure_jvm() and deadlock |
1277 | | // on the once flag the bootstrap is already holding. |
1278 | | // |
1279 | | // Env::GetJNIEnvSlowPath() calls it from an unattached thread on purpose, and the invariant |
1280 | | // that makes THAT safe is a different one, worth stating because nothing enforces it: by the |
1281 | | // time the slow path gets here, ensure_jvm()'s call_once has already run to completion on |
1282 | | // some thread, so the resolution below is never the one that runs - it is always the cached |
1283 | | // answer of the attempt the bootstrap made. Every early exit of _bootstrap() leaves |
1284 | | // jvm_status non-OK, and the slow path returns on that before reaching this line. |
1285 | | // |
1286 | | // Making the base lazy (that is, resolving it here for real rather than reading a cached |
1287 | | // answer) would put the deadlock straight back, so GetJNIEnvSlowPath() holds it down with a |
1288 | | // DCHECK: on that path an outcome must already exist before this is called. |
1289 | | static Status ensure_jni_base(); |
1290 | | friend class JvmLauncher; |
1291 | | friend class Env; |
1292 | | |
1293 | | static void _parse_max_heap_memory_size_from_jvm(); |
1294 | | |
1295 | | // Bytes named by the last -Xmx in `options`, or 0 when none of them says. Split out from the |
1296 | | // above so that the parsing can be tested without a JVM; see jni_util_test.cpp. |
1297 | | static jlong _parse_xmx(const std::string& options); |
1298 | | |
1299 | | static Status _init_jni_base() WARN_UNUSED_RESULT; |
1300 | | static Status _init_collect_class() WARN_UNUSED_RESULT; |
1301 | | static Status _init_register_natives() WARN_UNUSED_RESULT; |
1302 | | |
1303 | | // for jvm heap |
1304 | | static jlong max_jvm_heap_memory_size_; |
1305 | | |
1306 | | //for hashmap |
1307 | | static GlobalClass hashmap_class; |
1308 | | static MethodId hashmap_constructor; |
1309 | | static MethodId hashmap_put; |
1310 | | |
1311 | | //for map |
1312 | | static GlobalClass mapClass; |
1313 | | static MethodId mapEntrySetMethod; |
1314 | | |
1315 | | // for map entry |
1316 | | static GlobalClass mapEntryClass; |
1317 | | static MethodId getEntryKeyMethod; |
1318 | | static MethodId getEntryValueMethod; |
1319 | | |
1320 | | //for set |
1321 | | static GlobalClass setClass; |
1322 | | static MethodId iteratorSetMethod; |
1323 | | |
1324 | | // for iterator |
1325 | | static GlobalClass iteratorClass; |
1326 | | static MethodId iteratorHasNextMethod; |
1327 | | static MethodId iteratorNextMethod; |
1328 | | }; |
1329 | | }; // namespace Jni |
1330 | | |
1331 | | } // namespace doris |