[Groonga-commit] groonga/groonga at 6b25f0e [master] schema: support array table

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Oct 19 15:54:42 JST 2015


Kouhei Sutou	2015-10-19 15:54:42 +0900 (Mon, 19 Oct 2015)

  New Revision: 6b25f0ed2e7b9a9706e806ebd899189cb26799e8
  https://github.com/groonga/groonga/commit/6b25f0ed2e7b9a9706e806ebd899189cb26799e8

  Message:
    schema: support array table

  Added files:
    test/command/suite/schema/array.expected
    test/command/suite/schema/array.test
  Modified files:
    lib/proc.c

  Modified: lib/proc.c (+38 -1)
===================================================================
--- lib/proc.c    2015-10-19 15:41:27 +0900 (a5cd89a)
+++ lib/proc.c    2015-10-19 15:54:42 +0900 (bc9d43a)
@@ -7431,15 +7431,52 @@ proc_schema_normalizers(grn_ctx *ctx)
   GRN_OBJ_FIN(ctx, &normalizers);
 }
 
+static void
+proc_schema_tables(grn_ctx *ctx)
+{
+  grn_obj tables;
+  unsigned int i, n;
+
+  GRN_PTR_INIT(&tables, GRN_OBJ_VECTOR, GRN_DB_OBJECT);
+
+  grn_ctx_get_all_tables(ctx, &tables);
+
+  GRN_OUTPUT_CSTR("tables");
+
+  n = GRN_BULK_VSIZE(&tables) / sizeof(grn_obj *);
+  GRN_OUTPUT_MAP_OPEN("tables", n);
+  for (i = 0; i < n; i++) {
+    grn_obj *table;
+    char name[GRN_TABLE_MAX_KEY_SIZE];
+    unsigned int name_size;
+
+    table = GRN_PTR_VALUE_AT(&tables, i);
+
+    name_size = grn_obj_name(ctx, table, name, GRN_TABLE_MAX_KEY_SIZE);
+    GRN_OUTPUT_STR(name, name_size);
+
+    GRN_OUTPUT_MAP_OPEN("table", 1);
+    {
+      GRN_OUTPUT_CSTR("name");
+      GRN_OUTPUT_STR(name, name_size);
+    }
+    GRN_OUTPUT_MAP_CLOSE();
+  }
+  GRN_OUTPUT_MAP_CLOSE();
+
+  GRN_OBJ_FIN(ctx, &tables);
+}
+
 static grn_obj *
 proc_schema(grn_ctx *ctx, int nargs, grn_obj **args,
             grn_user_data *user_data)
 {
-  GRN_OUTPUT_MAP_OPEN("schema", 3);
+  GRN_OUTPUT_MAP_OPEN("schema", 5);
   proc_schema_plugins(ctx);
   proc_schema_types(ctx);
   proc_schema_tokenizers(ctx);
   proc_schema_normalizers(ctx);
+  proc_schema_tables(ctx);
   GRN_OUTPUT_MAP_CLOSE();
 
   return NULL;

  Added: test/command/suite/schema/array.expected (+159 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/schema/array.expected    2015-10-19 15:54:42 +0900 (0570e07)
@@ -0,0 +1,159 @@
+table_create Logs TABLE_NO_KEY
+[[0,0.0,0.0],true]
+schema
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  {
+    "plugins": [
+
+    ],
+    "types": [
+      {
+        "name": "Bool",
+        "size": 1,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Float",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Int16",
+        "size": 2,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Int32",
+        "size": 4,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Int64",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Int8",
+        "size": 1,
+        "can_be_key_type": true
+      },
+      {
+        "name": "LongText",
+        "size": 2147483648,
+        "can_be_key_type": false
+      },
+      {
+        "name": "Object",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "ShortText",
+        "size": 4096,
+        "can_be_key_type": true
+      },
+      {
+        "name": "Text",
+        "size": 65536,
+        "can_be_key_type": false
+      },
+      {
+        "name": "Time",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "TokyoGeoPoint",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "UInt16",
+        "size": 2,
+        "can_be_key_type": true
+      },
+      {
+        "name": "UInt32",
+        "size": 4,
+        "can_be_key_type": true
+      },
+      {
+        "name": "UInt64",
+        "size": 8,
+        "can_be_key_type": true
+      },
+      {
+        "name": "UInt8",
+        "size": 1,
+        "can_be_key_type": true
+      },
+      {
+        "name": "WGS84GeoPoint",
+        "size": 8,
+        "can_be_key_type": true
+      }
+    ],
+    "tokenizers": [
+      {
+        "name": "TokenBigram"
+      },
+      {
+        "name": "TokenBigramIgnoreBlank"
+      },
+      {
+        "name": "TokenBigramIgnoreBlankSplitSymbol"
+      },
+      {
+        "name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
+      },
+      {
+        "name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
+      },
+      {
+        "name": "TokenBigramSplitSymbol"
+      },
+      {
+        "name": "TokenBigramSplitSymbolAlpha"
+      },
+      {
+        "name": "TokenBigramSplitSymbolAlphaDigit"
+      },
+      {
+        "name": "TokenDelimit"
+      },
+      {
+        "name": "TokenDelimitNull"
+      },
+      {
+        "name": "TokenMecab"
+      },
+      {
+        "name": "TokenRegexp"
+      },
+      {
+        "name": "TokenTrigram"
+      },
+      {
+        "name": "TokenUnigram"
+      }
+    ],
+    "normalizers": [
+      {
+        "name": "NormalizerAuto"
+      },
+      {
+        "name": "NormalizerNFKC51"
+      }
+    ],
+    "tables": {
+      "Logs": {
+        "name": "Logs"
+      }
+    }
+  }
+]

  Added: test/command/suite/schema/array.test (+3 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/schema/array.test    2015-10-19 15:54:42 +0900 (c936fb8)
@@ -0,0 +1,3 @@
+table_create Logs TABLE_NO_KEY
+
+schema
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index