null+****@clear*****
null+****@clear*****
2012年 6月 13日 (水) 12:24:25 JST
Daijiro MORI 2012-06-13 12:24:25 +0900 (Wed, 13 Jun 2012)
New Revision: 884f51badd74a6d86c350e0478465a7d2bf24954
Log:
table: move add command and set command from proc.c to table.c.
Modified files:
lib/proc.c
plugins/table/table.c
Modified: lib/proc.c (+0 -49)
===================================================================
--- lib/proc.c 2012-06-14 18:09:38 +0900 (9bf816d)
+++ lib/proc.c 2012-06-13 12:24:25 +0900 (3b92991)
@@ -1554,46 +1554,6 @@ proc_log_reopen(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
return NULL;
}
-static grn_obj *
-proc_add(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
-{
- /* TODO: implement */
- ERR(GRN_FUNCTION_NOT_IMPLEMENTED, "proc_add is not implemented.");
- return NULL;
-}
-
-static grn_obj *
-proc_set(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
-{
- /* TODO: implement */
- grn_obj *table = grn_ctx_get(ctx, GRN_TEXT_VALUE(VAR(0)), GRN_TEXT_LEN(VAR(0)));
- if (table) {
- grn_id id;
- if (GRN_TEXT_LEN(VAR(1))) {
- if ((id = grn_table_get(ctx, table, GRN_TEXT_VALUE(VAR(1)), GRN_TEXT_LEN(VAR(1))))) {
- grn_obj obj;
- grn_obj_format format;
- GRN_RECORD_INIT(&obj, 0, ((grn_db_obj *)table)->id);
- GRN_OBJ_FORMAT_INIT(&format, 1, 0, 1, 0);
- GRN_RECORD_SET(ctx, &obj, id);
- grn_obj_columns(ctx, table,
- GRN_TEXT_VALUE(VAR(4)),
- GRN_TEXT_LEN(VAR(4)), &format.columns);
- format.flags = 0 /* GRN_OBJ_FORMAT_WITH_COLUMN_NAMES */;
- GRN_OUTPUT_OBJ(&obj, &format);
- GRN_OBJ_FORMAT_FIN(ctx, &format);
- } else {
- /* todo : error handling */
- }
- } else {
- /* todo : get_by_id */
- }
- } else {
- /* todo : error handling */
- }
- return NULL;
-}
-
static grn_rc
proc_get_resolve_parameters(grn_ctx *ctx, grn_user_data *user_data, grn_obj **table, grn_id *id)
{
@@ -2920,15 +2880,6 @@ grn_db_init_builtin_query(grn_ctx *ctx)
DEF_VAR(vars[0], "table");
DEF_VAR(vars[1], "key");
- DEF_VAR(vars[2], "columns");
- DEF_VAR(vars[3], "values");
- DEF_VAR(vars[4], "output_columns");
- DEF_VAR(vars[5], "id");
- DEF_COMMAND("add", proc_add, 5, vars);
- DEF_COMMAND("set", proc_set, 6, vars);
-
- DEF_VAR(vars[0], "table");
- DEF_VAR(vars[1], "key");
DEF_VAR(vars[2], "output_columns");
DEF_VAR(vars[3], "id");
DEF_COMMAND("get", proc_get, 4, vars);
Modified: plugins/table/table.c (+47 -0)
===================================================================
--- plugins/table/table.c 2012-06-14 18:09:38 +0900 (02666e4)
+++ plugins/table/table.c 2012-06-13 12:24:25 +0900 (112e727)
@@ -270,6 +270,44 @@ command_unlink(grn_ctx *ctx, int nargs, grn_obj **args,
return NULL;
}
+static grn_obj *
+command_add(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
+{
+ return NULL;
+}
+
+static grn_obj *
+command_set(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
+{
+ /* TODO: implement */
+ grn_obj *table = grn_ctx_get(ctx, GRN_TEXT_VALUE(VAR(0)), GRN_TEXT_LEN(VAR(0)));
+ if (table) {
+ grn_id id;
+ if (GRN_TEXT_LEN(VAR(1))) {
+ if ((id = grn_table_get(ctx, table, GRN_TEXT_VALUE(VAR(1)), GRN_TEXT_LEN(VAR(1))))) {
+ grn_obj obj;
+ grn_obj_format format;
+ GRN_RECORD_INIT(&obj, 0, ((grn_db_obj *)table)->id);
+ GRN_OBJ_FORMAT_INIT(&format, 1, 0, 1, 0);
+ GRN_RECORD_SET(ctx, &obj, id);
+ grn_obj_columns(ctx, table,
+ GRN_TEXT_VALUE(VAR(4)),
+ GRN_TEXT_LEN(VAR(4)), &format.columns);
+ format.flags = 0 /* GRN_OBJ_FORMAT_WITH_COLUMN_NAMES */;
+ GRN_OUTPUT_OBJ(&obj, &format);
+ GRN_OBJ_FORMAT_FIN(ctx, &format);
+ } else {
+ /* todo : error handling */
+ }
+ } else {
+ /* todo : get_by_id */
+ }
+ } else {
+ /* todo : error handling */
+ }
+ return NULL;
+}
+
grn_rc
GRN_PLUGIN_INIT(grn_ctx *ctx)
{
@@ -323,6 +361,15 @@ GRN_PLUGIN_REGISTER(grn_ctx *ctx)
DEF_VAR(vars[0], "table");
DEF_COMMAND("unlink", command_unlink, 1, vars);
+ DEF_VAR(vars[0], "table");
+ DEF_VAR(vars[1], "key");
+ DEF_VAR(vars[2], "columns");
+ DEF_VAR(vars[3], "values");
+ DEF_VAR(vars[4], "output_columns");
+ DEF_VAR(vars[5], "id");
+ DEF_COMMAND("add", command_add, 5, vars);
+ DEF_COMMAND("set", command_set, 6, vars);
+
return ctx->rc;
}