Kouhei Sutou
null+****@clear*****
Fri Aug 24 18:11:51 JST 2012
Kouhei Sutou 2012-08-24 18:11:51 +0900 (Fri, 24 Aug 2012) New Revision: b0a2c79785234065a784bf7723cfe20f859d28eb https://github.com/groonga/groonga/commit/b0a2c79785234065a784bf7723cfe20f859d28eb Log: Pass table to selector Modified files: lib/db.h lib/expr.c lib/geo.c lib/geo.h Modified: lib/db.h (+1 -1) =================================================================== --- lib/db.h 2012-08-24 15:00:47 +0900 (9c20d32) +++ lib/db.h 2012-08-24 18:11:51 +0900 (3bb8fa0) @@ -153,7 +153,7 @@ typedef struct { (GRN_TABLE_HASH_KEY <= ((grn_db_obj *)obj)->header.type) &&\ (((grn_db_obj *)obj)->header.type <= GRN_DB)) -typedef grn_rc grn_selector_func(grn_ctx *ctx, grn_obj *index, +typedef grn_rc grn_selector_func(grn_ctx *ctx, grn_obj *table, grn_obj *index, int nargs, grn_obj **args, grn_obj *res, grn_operator op); Modified: lib/expr.c (+1 -1) =================================================================== --- lib/expr.c 2012-08-24 15:00:47 +0900 (d434191) +++ lib/expr.c 2012-08-24 18:11:51 +0900 (fcf4ce7) @@ -4267,7 +4267,7 @@ grn_table_select(grn_ctx *ctx, grn_obj *table, grn_obj *expr, } else if (selector_proc_p(si->args[0])) { grn_rc rc; grn_proc *proc = (grn_obj *)(si->args[0]); - rc = proc->selector(ctx, index, si->nargs, si->args, + rc = proc->selector(ctx, table, index, si->nargs, si->args, res, si->logical_op); if (rc) { /* TODO: report error */ Modified: lib/geo.c (+4 -4) =================================================================== --- lib/geo.c 2012-08-24 15:00:47 +0900 (4cd8258) +++ lib/geo.c 2012-08-24 18:11:51 +0900 (814f460) @@ -673,7 +673,7 @@ typedef double (*grn_geo_distance_raw_func)(grn_ctx *ctx, grn_geo_point *point2); grn_rc -grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *obj, +grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *table, grn_obj *index, int nargs, grn_obj **args, grn_obj *res, grn_operator op) { @@ -690,7 +690,7 @@ grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *obj, grn_obj *center_point, *distance; center_point = args[2]; distance = args[3]; - grn_geo_select_in_circle(ctx, obj, center_point, distance, type, res, op); + grn_geo_select_in_circle(ctx, index, center_point, distance, type, res, op); } break; default : @@ -884,7 +884,7 @@ exit : } grn_rc -grn_selector_geo_in_rectangle(grn_ctx *ctx, grn_obj *obj, +grn_selector_geo_in_rectangle(grn_ctx *ctx, grn_obj *table, grn_obj *index, int nargs, grn_obj **args, grn_obj *res, grn_operator op) { @@ -892,7 +892,7 @@ grn_selector_geo_in_rectangle(grn_ctx *ctx, grn_obj *obj, grn_obj *top_left_point, *bottom_right_point; top_left_point = args[2]; bottom_right_point = args[3]; - grn_geo_select_in_rectangle(ctx, obj, + grn_geo_select_in_rectangle(ctx, index, top_left_point, bottom_right_point, res, op); } else { Modified: lib/geo.h (+3 -2) =================================================================== --- lib/geo.h 2012-08-24 15:00:47 +0900 (8fd2e7d) +++ lib/geo.h 2012-08-24 18:11:51 +0900 (1b76284) @@ -133,10 +133,11 @@ grn_rc grn_geo_select_in_circle(grn_ctx *ctx, grn_obj *res, grn_operator op); -grn_rc grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *obj, +grn_rc grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *table, grn_obj *index, int nargs, grn_obj **args, grn_obj *res, grn_operator op); -grn_rc grn_selector_geo_in_rectangle(grn_ctx *ctx, grn_obj *obj, +grn_rc grn_selector_geo_in_rectangle(grn_ctx *ctx, + grn_obj *table, grn_obj *index, int nargs, grn_obj **args, grn_obj *res, grn_operator op); -------------- next part -------------- HTML����������������������������...Download