summaryrefslogtreecommitdiff
path: root/storage/mroonga/udf
diff options
context:
space:
mode:
authorKentoku SHIBA <kentokushiba@gmail.com>2014-10-21 04:51:38 +0900
committerKentoku SHIBA <kentokushiba@gmail.com>2014-10-21 04:51:38 +0900
commit7f3d55508790c928fc57b6a6ada79c8202598a58 (patch)
tree7c48447bf47bff96844c5f2557ac9e185c6b9a92 /storage/mroonga/udf
parent1cdd679ce574208fd52e08bb0e4429a55fea8fd2 (diff)
downloadmariadb-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.cpp28
-rw-r--r--storage/mroonga/udf/mrn_udf_snippet.cpp2
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;