diff options
author | Kentoku SHIBA <kentokushiba@gmail.com> | 2014-10-21 04:51:38 +0900 |
---|---|---|
committer | Kentoku SHIBA <kentokushiba@gmail.com> | 2014-10-21 04:51:38 +0900 |
commit | 7f3d55508790c928fc57b6a6ada79c8202598a58 (patch) | |
tree | 7c48447bf47bff96844c5f2557ac9e185c6b9a92 /storage/mroonga/udf | |
parent | 1cdd679ce574208fd52e08bb0e4429a55fea8fd2 (diff) | |
download | mariadb-git-7f3d55508790c928fc57b6a6ada79c8202598a58.tar.gz |
Update Mroonga to the latest version on 2014-10-21T04:51:38+0900
Diffstat (limited to 'storage/mroonga/udf')
-rw-r--r-- | storage/mroonga/udf/mrn_udf_command.cpp | 28 | ||||
-rw-r--r-- | storage/mroonga/udf/mrn_udf_snippet.cpp | 2 |
2 files changed, 18 insertions, 12 deletions
diff --git a/storage/mroonga/udf/mrn_udf_command.cpp b/storage/mroonga/udf/mrn_udf_command.cpp index 67dbf8bcd1d..ba92e8daa26 100644 --- a/storage/mroonga/udf/mrn_udf_command.cpp +++ b/storage/mroonga/udf/mrn_udf_command.cpp @@ -24,12 +24,17 @@ #include <mrn_path_mapper.hpp> #include <mrn_windows.hpp> #include <mrn_macro.hpp> +#include <mrn_database_manager.hpp> + +extern mrn::DatabaseManager *mrn_db_manager; MRN_BEGIN_DECLS struct CommandInfo { grn_ctx ctx; + grn_obj *db; + bool use_shared_db; String result; }; @@ -66,13 +71,17 @@ MRN_API my_bool mroonga_command_init(UDF_INIT *initid, UDF_ARGS *args, const char *action; if (current_db_path) { action = "open database"; - mrn::PathMapper mapper(current_db_path); - grn_db_open(&(info->ctx), mapper.db_path()); + int error = mrn_db_manager->open(current_db_path, &(info->db)); + if (error == 0) { + grn_ctx_use(&(info->ctx), info->db); + info->use_shared_db = true; + } } else { action = "create anonymous database"; - grn_db_create(&(info->ctx), NULL, NULL); + info->db = grn_db_create(&(info->ctx), NULL, NULL); + info->use_shared_db = false; } - if (info->ctx.rc != GRN_SUCCESS) { + if (!info->db) { sprintf(message, "mroonga_command(): failed to %s: %s", action, @@ -87,10 +96,8 @@ MRN_API my_bool mroonga_command_init(UDF_INIT *initid, UDF_ARGS *args, error: if (info) { - grn_obj *db; - db = grn_ctx_db(&(info->ctx)); - if (db) { - grn_obj_close(&(info->ctx), db); + if (!info->use_shared_db) { + grn_obj_close(&(info->ctx), info->db); } grn_ctx_fin(&(info->ctx)); my_free(info, MYF(0)); @@ -152,9 +159,8 @@ MRN_API void mroonga_command_deinit(UDF_INIT *initid) { CommandInfo *info = (CommandInfo *)initid->ptr; if (info) { - grn_obj *db = grn_ctx_db(&(info->ctx)); - if (db) { - grn_obj_close(&(info->ctx), db); + if (!info->use_shared_db) { + grn_obj_close(&(info->ctx), info->db); } grn_ctx_fin(&(info->ctx)); info->result.free(); diff --git a/storage/mroonga/udf/mrn_udf_snippet.cpp b/storage/mroonga/udf/mrn_udf_snippet.cpp index a959377d9ce..84166a36f16 100644 --- a/storage/mroonga/udf/mrn_udf_snippet.cpp +++ b/storage/mroonga/udf/mrn_udf_snippet.cpp @@ -69,7 +69,7 @@ static my_bool mrn_snippet_prepare(st_mrn_snip_info *snip_info, UDF_ARGS *args, goto error; } } - if (!mrn::encoding::set(ctx, cs)) { + if (!mrn::encoding::set_raw(ctx, cs)) { snprintf(message, MYSQL_ERRMSG_SIZE, "Unsupported charset: <%s>", cs->name); goto error; |