[Groonga-commit] groonga/groonga [master] removed grn_ql_def_db_funcs()

Back to archive index

null+****@clear***** null+****@clear*****
2011年 11月 14日 (月) 16:27:41 JST


Daijiro MORI	2011-11-14 07:27:41 +0000 (Mon, 14 Nov 2011)

  New Revision: 299eadef584c852acd3316381d0d7345262ea727

  Log:
    removed grn_ql_def_db_funcs()

  Modified files:
    lib/ctx.c
    lib/ql.c

  Modified: lib/ctx.c (+0 -1)
===================================================================
--- lib/ctx.c    2011-11-13 12:06:48 +0000 (70d012a)
+++ lib/ctx.c    2011-11-14 07:27:41 +0000 (1bf9db2)
@@ -1920,7 +1920,6 @@ grn_ctx_use(grn_ctx *ctx, grn_obj *db)
       ctx->impl->db = db;
       if (db) {
         grn_obj buf;
-        if (ctx->impl->symbols) { grn_ql_def_db_funcs(ctx); }
         GRN_TEXT_INIT(&buf, 0);
         grn_obj_get_info(ctx, db, GRN_INFO_ENCODING, &buf);
         ctx->encoding = *(grn_encoding *)GRN_BULK_HEAD(&buf);

  Modified: lib/ql.c (+0 -521)
===================================================================
--- lib/ql.c    2011-11-13 12:06:48 +0000 (1e38a27)
+++ lib/ql.c    2011-11-14 07:27:41 +0000 (cf0327c)
@@ -1920,63 +1920,6 @@ uvector2str(grn_ctx *ctx, grn_obj *obj, grn_obj *buf)
 }
 
 static grn_cell *
-nf_tostring(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  grn_cell *o = F, *car;
-  POP(car, args);
-  switch (car->header.type) {
-  case GRN_UVECTOR :
-    {
-      grn_obj buf;
-      uint32_t size;
-      void *value = NULL;
-      GRN_TEXT_INIT(&buf, 0);
-      uvector2str(ctx, car->u.p.value, &buf);
-      if ((o = grn_cell_new(ctx))) {
-        if ((size = GRN_BULK_VSIZE(&buf))) {
-          if (!(value = GRN_MALLOC(size))) { return F; }
-          o->header.impl_flags |= GRN_OBJ_ALLOCATED;
-          memcpy(value, GRN_BULK_HEAD(&buf), size);
-        }
-        SETBULK(o, value, size);
-      }
-      grn_obj_close(ctx, &buf);
-    }
-    break;
-  }
-  return o;
-}
-
-static grn_cell *
-nf_toquery(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  grn_cell *o = F, *s;
-  POP(s, args);
-  if (BULKP(s)) {
-    /* TODO: operator, exprs, encoding */
-    if (!(o = grn_obj_query(ctx, s->u.b.value, s->u.b.size, GRN_OP_AND, 32, ctx->encoding))) {
-      QLERR("query_obj_new failed");
-    }
-  }
-  return o;
-}
-
-static grn_cell *
-nf_tosections(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  grn_cell *o = F, *s;
-  POP(s, args);
-  if (PAIRP(s)) {
-    grn_obj sections;
-    GRN_OBJ_INIT(&sections, GRN_VECTOR, 0, GRN_DB_TEXT);
-    list2vector(ctx, s, &sections);
-    GRN_CELL_NEW(ctx, o);
-    obj2cell(ctx, &sections, o);
-  }
-  return o;
-}
-
-static grn_cell *
 ha_column(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
 {
   char msg[STRBUF_SIZE];
@@ -2122,271 +2065,6 @@ grn_ql_obj_bind(grn_obj *obj, grn_cell *symbol)
   }
 }
 
-static grn_cell *
-nf_db(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  grn_obj *table;
-  char msg[STRBUF_SIZE];
-  uint16_t msg_size;
-  grn_cell *car, *res = ctx->impl->code;
-  POP(car, args);
-  if (obj2str(car, msg, &msg_size)) { QLERR("invalid argument"); }
-  if (*msg == ':') {
-    switch (msg[1]) {
-    case 'c' : /* :clearlock */
-    case 'C' :
-      {
-        grn_obj *obj;
-        void *key, *value;
-        uint32_t key_size;
-        grn_pat *keys = (grn_pat *)grn_db_keys(ctx->impl->db);
-        GRN_PAT_EACH(ctx, keys, id, &key, &key_size, &value, {
-          obj = grn_ctx_at(ctx, id);
-          grn_obj_clear_lock(ctx, obj);
-        });
-        res = grn_obj_clear_lock(ctx, ctx->impl->db) ? F : T;
-      }
-      break;
-    case 'd' : /* :drop */
-    case 'D' :
-      POP(car, args);
-      if (obj2str(car, msg, &msg_size)) { QLERR("invalid argument"); }
-      if (!(table = grn_ctx_get(ctx, msg, msg_size))) { QLERR("Invalid table"); }
-      grn_obj_remove(ctx, table);
-      grn_hash_delete(ctx, ctx->impl->symbols, msg, msg_size, NULL);
-      break;
-    case 'p' : /* :prefix-search */
-    case 'P' :
-      {
-        grn_hash *r;
-        grn_pat *keys = (grn_pat *)grn_db_keys(ctx->impl->db);
-        POP(car, args);
-        if (obj2str(car, msg, &msg_size)) { QLERR("invalid argument"); }
-        if ((res = rec_obj_new(ctx, ctx->impl->db, NULL)) == F) {
-          QLERR("rec_obj_new failed.");
-        }
-        r = (grn_hash *)grn_ctx_at(ctx, res->u.o.id);
-        grn_pat_prefix_search(ctx, keys, msg, msg_size, r);
-        {
-          grn_id *rid;
-          GRN_HASH_EACH(ctx, r, id, &rid, NULL, NULL, {
-            uint32_t key_size;
-            const char *key = _grn_pat_key(ctx, keys, *rid, &key_size);
-            while (key_size--) {
-              if (*key++ == '.') {
-                grn_hash_delete(ctx, r, rid, sizeof(grn_id), NULL);
-              }
-            }
-          });
-        }
-      }
-      break;
-    case 't' : /* :typedef */
-    case 'T' :
-      {
-        uint32_t size;
-        grn_obj *type;
-        grn_cell *flag;
-        grn_obj_flags flags = 0;
-        POP(car, args);
-        POP(flag, args);
-        if (obj2str(flag, msg, &msg_size)) { QLERR("invalid argument"); }
-        flags = (*msg == 'v' || *msg == 'V') ? GRN_OBJ_KEY_VAR_SIZE : 0;
-        if (obj2str(car, msg, &msg_size)) { QLERR("invalid argument"); }
-        POP(car, args);
-        size = (uint32_t) IVALUE(car);
-        type = grn_type_create(ctx, msg, msg_size, flags, size);
-        if (!type) { QLERR("type_create failed"); }
-        if ((res = INTERN2(msg, msg_size)) != F) {
-          grn_ql_obj_bind(type, res);
-        }
-      }
-      break;
-    case '+' : /* :+ (iterator next) */
-      {
-        grn_pat *keys = (grn_pat *)grn_db_keys(ctx->impl->db);
-        POP(res, args);
-        if (res->header.type == GRN_TYPE ||
-            res->header.type == GRN_TABLE_PAT_KEY ||
-            res->header.type == GRN_COLUMN_FIX_SIZE ||
-            res->header.type == GRN_COLUMN_VAR_SIZE ||
-            res->header.type == GRN_COLUMN_INDEX ||
-            res->header.type == GRN_CELL_PSEUDO_COLUMN) {
-          grn_id id = res->u.o.id;
-          while ((id = grn_pat_next(ctx, keys, id))) {
-            if ((msg_size = grn_pat_get_key(ctx, keys, id, msg, STRBUF_SIZE))) { break; }
-          }
-          if (id == GRN_ID_NIL) {
-            res = F;
-          } else {
-            res = INTERN2(msg, msg_size);
-          }
-        } else {
-          res = F;
-        }
-      }
-      break;
-    case '\0' : /* : (iterator begin) */
-      {
-        grn_id id = GRN_ID_NIL;
-        grn_pat *keys = (grn_pat *)grn_db_keys(ctx->impl->db);
-        while ((id = grn_pat_next(ctx, keys, id))) {
-          if ((msg_size = grn_pat_get_key(ctx, keys, id, msg, STRBUF_SIZE))) { break; }
-        }
-        if (id == GRN_ID_NIL) {
-          res = F;
-        } else {
-          res = INTERN2(msg, msg_size);
-        }
-      }
-      break;
-    }
-  }
-  return res;
-}
-
-static grn_cell *
-nf_table_(grn_ctx *ctx, grn_cell *args, const char *name, uint16_t name_size)
-{
-  grn_obj_flags flags = (name && name_size) ? GRN_OBJ_PERSISTENT : GRN_OBJ_TEMPORARY;
-  grn_encoding encoding = GRN_ENC_DEFAULT;
-  grn_obj *domain = grn_ctx_at(ctx, GRN_DB_SHORT_TEXT);
-  grn_cell *car;
-  grn_id tokenizer = GRN_DB_DELIMIT;
-  char msg[STRBUF_SIZE];
-  uint16_t msg_size;
-  while (PAIRP(args)) {
-    POP(car, args);
-    switch (car->header.type) {
-    case GRN_TABLE_HASH_KEY :
-    case GRN_TABLE_PAT_KEY :
-    case GRN_TABLE_NO_KEY :
-    case GRN_TYPE :
-      domain = grn_ctx_at(ctx, car->u.o.id);
-      break;
-    default :
-      if (obj2str(car, msg, &msg_size)) { QLERR("invalid argument"); }
-      switch (*msg) {
-      case 'd' :
-      case 'D' :
-        switch (msg[2]) {
-        case 'l' :  /* delimited */
-        case 'L' :
-          /* tokenizer = GRN_DB_DELIMITED; */
-          break;
-        case 'f' :  /* default */
-        case 'F' :
-          encoding = GRN_ENC_DEFAULT;
-          break;
-        }
-        break;
-      case 'e' : /* euc-jp */
-      case 'E' :
-        encoding = GRN_ENC_EUC_JP;
-        break;
-      case 'k' : /* koi8r */
-      case 'K' :
-        encoding = GRN_ENC_KOI8R;
-        break;
-      case 'l' : /* latin1 */
-      case 'L' :
-        encoding = GRN_ENC_LATIN1;
-        break;
-      case 'm' : /* mecab */
-      case 'M' :
-        tokenizer = GRN_DB_MECAB;
-        break;
-      case 'n' :
-      case 'N' :
-        switch (msg[1]) {
-        case 'g' : /* ngram */
-        case 'G' :
-          tokenizer = GRN_DB_BIGRAM;
-          break;
-        case 'o' : /* normalize */
-        case 'O' :
-          flags |= GRN_OBJ_KEY_NORMALIZE;
-          break;
-        default :
-          QLERR("ambiguous option %s", msg);
-        }
-        break;
-      case 'p' :
-      case 'P' :
-        switch (msg[1]) {
-        case 'a' :
-        case 'A' :
-          flags |= GRN_OBJ_TABLE_PAT_KEY;
-          break;
-        case 'e' :
-        case 'E' :
-          flags |= GRN_OBJ_PERSISTENT;
-          break;
-        default :
-          QLERR("ambiguous option %s", msg);
-        }
-        break;
-      case 's' :
-      case 'S' :
-        switch (msg[1]) {
-        case 'j' : /* shift-jis */
-        case 'J' :
-          encoding = GRN_ENC_SJIS;
-          break;
-        case 'i' : /* with-sis */
-        case 'I' :
-          flags |= GRN_OBJ_KEY_WITH_SIS;
-          break;
-        case 'u' : /* surrogate-key */
-        case 'U' :
-          flags |= GRN_OBJ_TABLE_NO_KEY;
-          break;
-        default :
-          QLERR("ambiguous option %s", msg);
-        }
-        break;
-      case 'u' : /* utf8 */
-      case 'U' :
-        encoding = GRN_ENC_UTF8;
-        break;
-      case 'v' : /* view */
-      case 'V' :
-        /* todo */
-        break;
-      default :
-        QLERR("illegal option");
-        break;
-      }
-    }
-  }
-  {
-    grn_cell *r;
-    grn_encoding enc_ = GRN_CTX_GET_ENCODING(ctx);
-    if (encoding != GRN_ENC_DEFAULT) { GRN_CTX_SET_ENCODING(ctx, encoding); }
-    r = table_create(ctx, name, name_size, flags, domain, NULL, tokenizer);
-    GRN_CTX_SET_ENCODING(ctx, enc_);
-    return r;
-  }
-}
-
-static grn_cell *
-nf_ptable(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  char name[STRBUF_SIZE];
-  uint16_t name_size;
-  grn_cell *car;
-  POP(car, args);
-  if (obj2str(car, name, &name_size)) { QLERR("invalid argument"); }
-  if (grn_ctx_get(ctx, name, name_size)) { return T; }
-  return nf_table_(ctx, args, name, name_size);
-}
-
-static grn_cell *
-nf_table(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  return nf_table_(ctx, args, NULL, 0);
-}
-
 #define PVALUE(obj,type) ((type *)((obj)->u.p.value))
 
 inline static void
@@ -2415,135 +2093,6 @@ grn_obj_patsnip_spec_close(grn_ctx *ctx, patsnip_spec *spec)
 }
 
 static grn_cell *
-nf_snippet(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  /* args: (cond width @ int max_results @ int opentag1 @ bulk closetag1 @ bulk..)
-     cond: (keyword @ bulk..) or cond @ query or cond @ table */
-
-  grn_cell *res, *cur, *cond;
-  grn_snip *s;
-  unsigned int width = 100, max_results = 3;
-  if (!PAIRP(args)) { QLERR("cond expected"); }
-  POP(cond, args);
-  if (PAIRP(args)) {
-    POP(cur, args);
-    if (grn_obj2int(ctx, cur)) { QLERR("snippet failed (width expected)"); }
-    width = IVALUE(cur);
-  }
-  if (PAIRP(args)) {
-    POP(cur, args);
-    if (grn_obj2int(ctx, cur)) { QLERR("snipped failed (max_result expected)"); }
-    max_results = IVALUE(cur);
-  }
-  switch (cond->header.type) {
-  case GRN_CELL_LIST :
-    {
-      grn_cell *tags = args;
-      /* FIXME: mapping */
-      if (!(s = grn_snip_open(ctx, GRN_SNIP_NORMALIZE, width, max_results,
-                              NULL, 0, NULL, 0, (grn_snip_mapping *)-1))) {
-        QLERR("grn_snip_open failed");
-      }
-      GRN_CELL_NEW(ctx, res);
-      snip_obj_bind(res, s);
-      s->flags |= GRN_SNIP_COPY_TAG;
-      while (PAIRP(cond)) {
-        char *ot = NULL, *ct = NULL;
-        uint32_t ot_l = 0, ct_l = 0;
-        grn_cell *kw;
-        POP(kw, cond);
-        if (!BULKP(kw)) { QLERR("snippet failed (invalid kw)"); }
-        if (!PAIRP(args)) { args = tags; }
-        POP(cur, args);
-        if (BULKP(cur)) {
-          ot = STRVALUE(cur);
-          ot_l = STRSIZE(cur);
-        }
-        POP(cur, args);
-        if (BULKP(cur)) {
-          ct = STRVALUE(cur);
-          ct_l = STRSIZE(cur);
-        }
-        if ((grn_snip_add_cond(ctx, s, kw->u.b.value, kw->u.b.size, ot, ot_l, ct, ct_l))) {
-          QLERR("grn_snip_add_cond failed");
-        }
-      }
-    }
-    break;
-  case GRN_QUERY :
-    {
-      grn_cell *x;
-      grn_query *q;
-      unsigned int n_tags = 0;
-      const char **opentags, **closetags;
-      unsigned int *opentag_lens, *closetag_lens;
-      q = (grn_query *)cond->u.p.value;
-      for (x = args; PAIRP(x); x = CDR(x)) { n_tags++; }
-      if (!n_tags) { n_tags++; }
-      if (!(opentags = GRN_MALLOC((sizeof(char *) + sizeof(unsigned int)) * 2 * n_tags))) {
-        QLERR("malloc failed");
-      }
-      closetags = &opentags[n_tags];
-      opentag_lens = (unsigned int *)&closetags[n_tags];
-      closetag_lens = &opentag_lens[n_tags];
-      n_tags = 0;
-      for (x = args; PAIRP(x); x = CDR(x)) {
-        if (BULKP(CAR(x))) {
-          opentags[n_tags] = STRVALUE(CAR(x));
-          opentag_lens[n_tags] = STRSIZE(CAR(x));
-          if (PAIRP(CDR(x))) {
-            x = CDR(x);
-            if (BULKP(CAR(x))) {
-              closetags[n_tags] = STRVALUE(CAR(x));
-              closetag_lens[n_tags] = STRSIZE(CAR(x));
-              n_tags++;
-            }
-          }
-        }
-      }
-      if (!n_tags) {
-        n_tags++;
-        opentags[0] = NULL;
-        closetags[0] = NULL;
-        opentag_lens[0] = 0;
-        closetag_lens[0] = 0;
-      }
-      s = grn_query_snip(ctx, q, GRN_SNIP_NORMALIZE|GRN_SNIP_COPY_TAG, width, max_results, n_tags,
-                         opentags, opentag_lens, closetags, closetag_lens,
-                         (grn_snip_mapping *)-1);
-      GRN_FREE(opentags);
-      if (!s) { QLERR("grn_query_snip failed"); }
-      GRN_CELL_NEW(ctx, res);
-      snip_obj_bind(res, s);
-    }
-    break;
-  case GRN_TABLE_PAT_KEY :
-    {
-      patsnip_spec *spec;
-      grn_obj *table = grn_ctx_at(ctx, cond->u.o.id);
-      if (!table) { QLERR("table get failed."); }
-      GRN_CELL_NEW(ctx, res);
-      if (!(spec = GRN_MALLOC(sizeof(patsnip_spec)))) {
-        QLERR("patsnip_spec malloc failed");
-      }
-      res->header.type = GRN_PATSNIP;
-      res->header.impl_flags = GRN_CELL_NATIVE|GRN_OBJ_ALLOCATED;
-      res->u.p.value = (grn_obj *)spec;
-      res->u.p.func = ha_snip;
-      spec->table = table;
-      spec->width = width;
-      spec->max_results = max_results;
-      spec->ce = column_exp_open(ctx, table, args, NIL);
-    }
-    break;
-  default :
-    QLERR("snippet failed. cond or query expected");
-    break;
-  }
-  return res;
-}
-
-static grn_cell *
 ha_snip(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
 {
   /* args: (str @ bulk) */
@@ -3070,45 +2619,6 @@ disp_t(grn_ctx *ctx, grn_cell *obj, grn_obj *buf, int *f)
   }
 }
 
-static grn_cell *
-nf_disp(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  char str[STRBUF_SIZE];
-  uint16_t str_size;
-  int f = 0;
-  grn_cell *val, *fmt;
-  POP(val, args);
-  POP(fmt, args);
-  if (!obj2str(fmt, str, &str_size)) {
-    switch (str[0]) {
-    case 'j' : /* json */
-    case 'J' :
-      disp_j(ctx, val, ctx->impl->outbuf);
-      f = 1;
-      if (ERRP(ctx, GRN_WARN)) { return F; }
-      break;
-    case 's' : /* sexp */
-    case 'S' :
-      break;
-    case 't' : /* tsv */
-    case 'T' :
-      disp_t(ctx, val, ctx->impl->outbuf, &f);
-      if (ERRP(ctx, GRN_WARN)) { return F; }
-      break;
-    case 'x' : /* xml */
-    case 'X' :
-      break;
-    }
-  } else {
-    QLERR("Few arguments");
-  }
-  if (f) {
-    ctx->impl->output(ctx, GRN_CTX_MORE, ctx->impl->data.ptr);
-    if (ERRP(ctx, GRN_WARN)) { return F; }
-  }
-  return T;
-}
-
 inline static grn_cell *
 mk_atom(grn_ctx *ctx, char *str, unsigned int len)
 {
@@ -3251,34 +2761,3 @@ json_read(grn_ctx *ctx, jctx *jc, int keyp)
     }
   }
 }
-
-static grn_cell *
-nf_json_read(grn_ctx *ctx, grn_cell *args, grn_ql_co *co)
-{
-  grn_cell *car;
-  POP(car, args); // todo : delete when called with (())
-  if (BULKP(car)) {
-    grn_cell *r;
-    jctx jc;
-    jc.encoding = ctx->encoding;
-    jc.cur = car->u.b.value;
-    jc.str_end = car->u.b.value + car->u.b.size;
-    if ((r = json_read(ctx, &jc, 0))) { return r; }
-  }
-  return F;
-}
-
-grn_rc
-grn_ql_def_db_funcs(grn_ctx *ctx)
-{
-  grn_ql_def_native_func(ctx, "<db>", nf_db);
-  grn_ql_def_native_func(ctx, "table", nf_table);
-  grn_ql_def_native_func(ctx, "ptable", nf_ptable);
-  grn_ql_def_native_func(ctx, "snippet", nf_snippet);
-  grn_ql_def_native_func(ctx, "disp", nf_disp);
-  grn_ql_def_native_func(ctx, "json-read", nf_json_read);
-  grn_ql_def_native_func(ctx, "x->query", nf_toquery);
-  grn_ql_def_native_func(ctx, "x->sections", nf_tosections);
-  grn_ql_def_native_func(ctx, "x->string", nf_tostring);
-  return GRN_SUCCESS;
-}




Groonga-commit メーリングリストの案内
Back to archive index