+ query_exec->interrupters = g_ptr_array_new_with_free_func(
+ (GDestroyNotify) bt_object_put_ref_no_null_check);
+ if (!query_exec->interrupters) {
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GPtrArray.");
+ BT_OBJECT_PUT_REF_AND_RESET(query_exec);
+ goto end;
+ }
+
+ query_exec->default_interrupter = bt_interrupter_create();
+ if (!query_exec->default_interrupter) {
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to create one interrupter object.");
+ BT_OBJECT_PUT_REF_AND_RESET(query_exec);
+ goto end;
+ }
+
+ query_exec->object = g_string_new(object);
+ if (!query_exec->object) {
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GString.");
+ BT_OBJECT_PUT_REF_AND_RESET(query_exec);
+ goto end;
+ }
+
+ query_exec->comp_cls = comp_cls;
+ bt_object_get_ref_no_null_check(query_exec->comp_cls);
+
+ if (!params) {
+ query_exec->params = bt_value_null;
+ } else {
+ query_exec->params = params;
+ }
+
+ bt_object_get_ref_no_null_check(query_exec->params);
+ query_exec->method_data = method_data;
+ query_exec->log_level = BT_LOGGING_LEVEL_NONE;
+ bt_query_executor_add_interrupter(query_exec,
+ query_exec->default_interrupter);