7.3.53. schema

7.3.53.1. Summary

New in version 5.0.9.

schema command returns schema in the database.

This command is useful when you want to inspect the database. For example, visualizing the database, creating GUI for the database and so on.

7.3.53.2. Syntax

This command takes no parameters:

schema

7.3.53.3. Usage

Here is an example schema to show example output:

Execution example:

table_create Memos TABLE_HASH_KEY ShortText
# [[0, 1337566253.89858, 0.000355720520019531], true]
column_create Memos content COLUMN_SCALAR Text
# [[0, 1337566253.89858, 0.000355720520019531], true]
table_create Terms TABLE_PAT_KEY ShortText \
  --default_tokenizer TokenBigram \
  --normalizer NormalizerAuto
# [[0, 1337566253.89858, 0.000355720520019531], true]
column_create Terms memos_content_index \
  COLUMN_INDEX|WITH_POSITION \
  Memos content
# [[0, 1337566253.89858, 0.000355720520019531], true]

Here is an output of schema command against this example schema:

Execution example:

schema
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   {
#     "tables": {
#       "Terms": {
#         "normalizer": {
#           "id": 78,
#           "name": "NormalizerAuto"
#         },
#         "name": "Terms",
#         "tokenizer": {
#           "id": 67,
#           "name": "TokenBigram"
#         },
#         "command": {
#           "command_line": "table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto",
#           "name": "table_create",
#           "arguments": {
#             "key_type": "ShortText",
#             "default_tokenizer": "TokenBigram",
#             "normalizer": "NormalizerAuto",
#             "flags": "TABLE_PAT_KEY",
#             "name": "Terms"
#           }
#         },
#         "indexes": [],
#         "key_type": {
#           "type": "type",
#           "id": 14,
#           "name": "ShortText"
#         },
#         "value_type": null,
#         "token_filters": [],
#         "type": "patricia trie",
#         "id": 258,
#         "columns": {
#           "memos_content_index": {
#             "name": "memos_content_index",
#             "weight": false,
#             "section": false,
#             "compress": null,
#             "command": {
#               "command_line": "column_create --table Terms --name memos_content_index --flags COLUMN_INDEX|WITH_POSITION --type Memos --source content",
#               "name": "column_create",
#               "arguments": {
#                 "source": "content",
#                 "table": "Terms",
#                 "flags": "COLUMN_INDEX|WITH_POSITION",
#                 "name": "memos_content_index",
#                 "type": "Memos"
#               }
#             },
#             "indexes": [],
#             "sources": [
#               {
#                 "table": "Memos",
#                 "id": 257,
#                 "full_name": "Memos.content",
#                 "name": "content"
#               }
#             ],
#             "value_type": {
#               "type": "reference",
#               "id": 256,
#               "name": "Memos"
#             },
#             "full_name": "Terms.memos_content_index",
#             "position": true,
#             "table": "Terms",
#             "type": "index",
#             "id": 259
#           }
#         }
#       },
#       "Memos": {
#         "normalizer": null,
#         "name": "Memos",
#         "tokenizer": null,
#         "command": {
#           "command_line": "table_create --name Memos --flags TABLE_HASH_KEY --key_type ShortText",
#           "name": "table_create",
#           "arguments": {
#             "key_type": "ShortText",
#             "flags": "TABLE_HASH_KEY",
#             "name": "Memos"
#           }
#         },
#         "indexes": [],
#         "key_type": {
#           "type": "type",
#           "id": 14,
#           "name": "ShortText"
#         },
#         "value_type": null,
#         "token_filters": [],
#         "type": "hash table",
#         "id": 256,
#         "columns": {
#           "content": {
#             "name": "content",
#             "weight": false,
#             "section": false,
#             "compress": null,
#             "command": {
#               "command_line": "column_create --table Memos --name content --flags COLUMN_SCALAR --type Text",
#               "name": "column_create",
#               "arguments": {
#                 "table": "Memos",
#                 "flags": "COLUMN_SCALAR",
#                 "name": "content",
#                 "type": "Text"
#               }
#             },
#             "indexes": [
#               {
#                 "table": "Terms",
#                 "section": 0,
#                 "id": 259,
#                 "full_name": "Terms.memos_content_index",
#                 "name": "memos_content_index"
#               }
#             ],
#             "sources": [],
#             "value_type": {
#               "type": "type",
#               "id": 15,
#               "name": "Text"
#             },
#             "full_name": "Memos.content",
#             "position": false,
#             "table": "Memos",
#             "type": "scalar",
#             "id": 257
#           }
#         }
#       }
#     },
#     "normalizers": {
#       "NormalizerNFKC51": {
#         "id": 79,
#         "name": "NormalizerNFKC51"
#       },
#       "NormalizerAuto": {
#         "id": 78,
#         "name": "NormalizerAuto"
#       }
#     },
#     "token_filters": {},
#     "tokenizers": {
#       "TokenBigramSplitSymbolAlphaDigit": {
#         "id": 71,
#         "name": "TokenBigramSplitSymbolAlphaDigit"
#       },
#       "TokenRegexp": {
#         "id": 77,
#         "name": "TokenRegexp"
#       },
#       "TokenBigramIgnoreBlankSplitSymbolAlphaDigit": {
#         "id": 75,
#         "name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
#       },
#       "TokenBigram": {
#         "id": 67,
#         "name": "TokenBigram"
#       },
#       "TokenDelimit": {
#         "id": 65,
#         "name": "TokenDelimit"
#       },
#       "TokenUnigram": {
#         "id": 66,
#         "name": "TokenUnigram"
#       },
#       "TokenBigramSplitSymbol": {
#         "id": 69,
#         "name": "TokenBigramSplitSymbol"
#       },
#       "TokenDelimitNull": {
#         "id": 76,
#         "name": "TokenDelimitNull"
#       },
#       "TokenBigramIgnoreBlankSplitSymbolAlpha": {
#         "id": 74,
#         "name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
#       },
#       "TokenBigramSplitSymbolAlpha": {
#         "id": 70,
#         "name": "TokenBigramSplitSymbolAlpha"
#       },
#       "TokenTrigram": {
#         "id": 68,
#         "name": "TokenTrigram"
#       },
#       "TokenBigramIgnoreBlankSplitSymbol": {
#         "id": 73,
#         "name": "TokenBigramIgnoreBlankSplitSymbol"
#       },
#       "TokenBigramIgnoreBlank": {
#         "id": 72,
#         "name": "TokenBigramIgnoreBlank"
#       }
#     },
#     "plugins": {},
#     "types": {
#       "UInt64": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 11,
#         "can_be_value_type": true,
#         "name": "UInt64"
#       },
#       "Int32": {
#         "can_be_key_type": true,
#         "size": 4,
#         "id": 8,
#         "can_be_value_type": true,
#         "name": "Int32"
#       },
#       "Int16": {
#         "can_be_key_type": true,
#         "size": 2,
#         "id": 6,
#         "can_be_value_type": true,
#         "name": "Int16"
#       },
#       "LongText": {
#         "can_be_key_type": false,
#         "size": 2147483648,
#         "id": 16,
#         "can_be_value_type": false,
#         "name": "LongText"
#       },
#       "TokyoGeoPoint": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 17,
#         "can_be_value_type": true,
#         "name": "TokyoGeoPoint"
#       },
#       "Text": {
#         "can_be_key_type": false,
#         "size": 65536,
#         "id": 15,
#         "can_be_value_type": false,
#         "name": "Text"
#       },
#       "ShortText": {
#         "can_be_key_type": true,
#         "size": 4096,
#         "id": 14,
#         "can_be_value_type": false,
#         "name": "ShortText"
#       },
#       "Float": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 12,
#         "can_be_value_type": true,
#         "name": "Float"
#       },
#       "UInt8": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 5,
#         "can_be_value_type": true,
#         "name": "UInt8"
#       },
#       "UInt32": {
#         "can_be_key_type": true,
#         "size": 4,
#         "id": 9,
#         "can_be_value_type": true,
#         "name": "UInt32"
#       },
#       "Object": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 2,
#         "can_be_value_type": true,
#         "name": "Object"
#       },
#       "UInt16": {
#         "can_be_key_type": true,
#         "size": 2,
#         "id": 7,
#         "can_be_value_type": true,
#         "name": "UInt16"
#       },
#       "Int64": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 10,
#         "can_be_value_type": true,
#         "name": "Int64"
#       },
#       "Time": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 13,
#         "can_be_value_type": true,
#         "name": "Time"
#       },
#       "Bool": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 3,
#         "can_be_value_type": true,
#         "name": "Bool"
#       },
#       "WGS84GeoPoint": {
#         "can_be_key_type": true,
#         "size": 8,
#         "id": 18,
#         "can_be_value_type": true,
#         "name": "WGS84GeoPoint"
#       },
#       "Int8": {
#         "can_be_key_type": true,
#         "size": 1,
#         "id": 4,
#         "can_be_value_type": true,
#         "name": "Int8"
#       }
#     }
#   }
# ]

7.3.53.4. Parameters

This section describes all parameters.

7.3.53.4.1. Required parameters

There is no required parameter.

7.3.53.4.2. Optional parameters

There is no optional parameter.

7.3.53.5. Return value

schema command returns schema in the database:

[HEADER, SCHEMA]

7.3.53.5.2. SCHEMA

SCHEMA is an object that consists of the following information:

{
  "plugins":       PLUGINS,
  "types":         TYPES,
  "tokenizers":    TOKENIZERS,
  "normalizers":   NORMALIZERS,
  "token_filters": TOKEN_FITLERS,
  "tables":        TABLES
}

7.3.53.5.3. PLUGINS

PLUGINS is an object. Its key is plugin name and its value is plugin detail:

{
  "PLUGIN_NAME_1": PLUGIN_1,
  "PLUGIN_NAME_2": PLUGIN_2,
  ...
  "PLUGIN_NAME_n": PLUGIN_n
}

7.3.53.5.4. PLUGIN

PLUGIN is an object that describes plugin detail:

{
  "name": PLUGIN_NAME
}

Here are properties of PLUGIN:

Name Description
name The plugin name. It’s used in plugin_register.

7.3.53.5.5. TYPES

TYPES is an object. Its key is type name and its value is type detail:

{
  "TYPE_NAME_1": TYPE_1,
  "TYPE_NAME_2": TYPE_2,
  ...
  "TYPE_NAME_n": TYPE_n
}

7.3.53.5.6. TYPE

TYPE is an object that describes type detail:

{
  "name": TYPE_NAME,
  "size": SIZE_OF_ONE_VALUE_IN_BYTE,
  "can_be_key_type": BOOLEAN,
  "can_be_value_type": BOOLEAN
}

Here are properties of TYPE:

Name Description
name The type name.
size The number of bytes of one value.
can_be_key_type true when the type can be used for table key, false otherwise.
can_be_value_type true when the type can be used for table value, false otherwise.

7.3.53.5.7. TOKENIZERS

TOKENIZERS is an object. Its key is tokenizer name and its value is tokenizer detail:

{
  "TOKENIZER_NAME_1": TOKENIZER_1,
  "TOKENIZER_NAME_2": TOKENIZER_2,
  ...
  "TOKENIZER_NAME_n": TOKENIZER_n
}

7.3.53.5.8. TOKENIZER

TOKENIZER is an object that describes tokenizer detail:

{
  "name": TOKENIZER_NAME
}

Here are properties of TOKENIZER:

Name Description
name The tokenizer name. It’s used for default_tokenizer.

7.3.53.5.9. NORMALIZERS

NORMALIZERS is an object. Its key is normalizer name and its value is normalizer detail:

{
  "NORMALIZER_NAME_1": NORMALIZER_1,
  "NORMALIZER_NAME_2": NORMALIZER_2,
  ...
  "NORMALIZER_NAME_n": NORMALIZER_n
}

7.3.53.5.10. NORMALIZER

NORMALIZER is an object that describes normalizer detail:

{
  "name": NORMALIZER_NAME
}

Here are properties of NORMALIZER:

Name Description
name The normalizer name. It’s used for normalizer.

7.3.53.5.11. TOKEN_FILTERS

TOKEN_FILTERS is an object. Its key is token filter name and its value is token filter detail:

{
  "TOKEN_FILTER_NAME_1": TOKEN_FILTER_1,
  "TOKEN_FILTER_NAME_2": TOKEN_FILTER_2,
  ...
  "TOKEN_FILTER_NAME_n": TOKEN_FILTER_n
}

7.3.53.5.12. TOKEN_FILTER

TOKEN_FILTER is an object that describes token filter detail:

{
  "name": TOKEN_FILTER_NAME
}

Here are properties of TOKEN_FILTER:

Name Description
name The token filter name. It’s used for token_filters.

7.3.53.5.13. TABLES

TABLES is an object. Its key is table name and its value is table detail:

{
  "TABLE_NAME_1": TABLE_1,
  "TABLE_NAME_2": TABLE_2,
  ...
  "TABLE_NAME_n": TABLE_n
}

7.3.53.5.14. TABLE

TABLE is an object that describes table detail:

{
  "name": TABLE_NAME
  "type": TYPE,
  "key_type": KEY_TYPE,
  "value_type": VALUE_TYPE,
  "tokenizer": TOKENIZER,
  "normalizer": NORMALIZER,
  "token_filters": [
    TOKEN_FILTER_1,
    TOKEN_FILTER_2,
    ...,
    TOKEN_FILTER_n,
  ],
  "indexes": [
    INDEX_1,
    INDEX_2,
    ...,
    INDEX_n
  ],
  "command": COMMAND,
  "columns": {
    "COLUMN_NAME_1": COLUMN_1,
    "COLUMN_NAME_2": COLUMN_2,
    ...,
    "COLUMN_NAME_3": COLUMN_3,
  }
}

Here are properties of TABLE:

Name Description
name The table name.
type

The table type.

This is one of the followings:

key_type

The type of the table’s key.

If the table type is array, this is null.

If the table type isn’t array, this is an object that has the following properties:

  • name: The type name.
  • type: reference if the type is an table, type otherwise.
value_type

The type of the table’s value.

If the table doesn’t use value, this is null.

If the table uses value, this is an object that has the following properties:

  • name: The type name.
  • type: reference if the type is an table, type otherwise.
tokenizer

The tokenizer of the table. It’s specified by default_tokenizer.

If the table doesn’t use tokenizer, this is null.

If the table uses tokenizer, this is an object that has the following properties:

  • name: The tokenizer name.
normalizer

The normalizer of the table. It’s specified by normalizer.

If the table doesn’t use normalizer, this is null.

If the table uses normalizer, this is an object that has the following properties:

  • name: The normalizer name.
token_filters

The token filters of the table. It’s specified by token_filters.

This is an array of an object. The object has the following properties:

  • name: The token filter name.
indexes

The indexes of the table’s key.

This is an array of INDEX.

command

The Groonga command information to create the table.

This is COMMAND.

columns

The columns of the table.

This is an object that its key is a column name and its value is COLUMN.

7.3.53.5.15. INDEX

INDEX is an object that describes index detail:

{
  "full_name": INDEX_COLUMN_NAME_WITH_TABLE_NAME,
  "table":     TABLE_NAME,
  "name":      INDEX_COLUMN_NAME,
  "section":   SECTION
}

Here are properties of INDEX:

Name Description
full_name

The index column name with table name.

For example, Terms.index.

table

The table name of the index column.

For example, Terms.

name

The index column name.

For example, index.

section

The section number in the index column for the table’s key.

If the index column isn’t multiple column index, this is 0.

7.3.53.5.16. COMMAND

COMMAND is an object that describes how to create the table or column:

{
  "name": COMMAND_NAME,
  "arguments": {
    "KEY_1": "VALUE_1",
    "KEY_2": "VALUE_2",
    ...,
    "KEY_n": "VALUE_n"
  },
  "command_line": COMMAND_LINE
}

Here are properties of COMMAND:

Name Description
name The Groonga command name to create the table or column.
arguments

The arguments of the Groonga command to create the table or column.

This is an object that its key is argument name and its value is argument value.

command_line

The Groonga command line to create the table or column.

This is a string that can be evaluated by Groonga.

7.3.53.5.17. COLUMN

COLUMN is an object that describes column detail:

{
  "name": COLUMN_NAME,
  "table": TABLE_NAME,
  "full_name": COLUMN_NAME_WITH_TABLE,
  "type": TYPE,
  "value_type": VALUE_TYPE,
  "compress": COMPRESS,
  "section": SECTION,
  "weight": WEIGHT,
  "compress": COMPRESS,
  "section": BOOLEAN,
  "weight": BOOLEAN,
  "position": BOOLEAN,
  "sources": [
    SOURCE_1,
    SOURCE_2,
    ...,
    SOURCE_n
  ],
  "indexes": [
    INDEX_1,
    INDEX_2,
    ...,
    INDEX_n
  ],
  "command": COMMAND
}

Here are properties of COLUMN:

Name Description
name

The column name.

For example, age.

table

The table name of the column.

For example, Users.

full_name

The column name with table name.

For example, Users.age.

type

The column type.

This is one of the followings:

value_type

The type of the column’s value.

This is an object that has the following properties:

  • name: The type name.
  • type: reference if the type is an table, type otherwise.
compress

The compression method of the column.

If the column doesn’t use any compression methods, this is null.

If the column uses a compression method, this is one of the followings:

  • zlib: The column uses zlib to compress column value.
  • lz4: The column uses LZ4 to compress column value.
section

Whether the column can store section information or not.

true if the column is created with WITH_SECTION flag, false otherwise.

Normally, if the column isn’t an index column, this is false.

weight

Whether the column can store weight information or not.

true if the column is created with WITH_WEIGHT flag, false otherwise.

position

Whether the column can store position information or not.

true if the column is created with WITH_POSITION flag, false otherwise.

Normally, if the column isn’t an index column, this is false.

sources

The source columns of the index column.

This is an array of SOURCE.

Normally, if the column isn’t an index column, this is an empty array.

indexes

The indexes of the column.

This is an array of INDEX.

command

The Groonga command information to create the column.

This is COMMAND.

7.3.53.5.18. SOURCE

SOURCE is an object that describes source detail:

{
  "name":      COLUMN_NAME,
  "table":     TABLE_NAME,
  "full_name": COLUMN_NAME_WITH_TABLE_NAME
}

Here are properties of SOURCE:

Name Description
name

The source column name.

For example, content.

This may be a _key pseudo column.

table

The table name of the source column.

For example, Memos.

full_name

The source column name with table name.

For example, Memos.content.

7.3.53.6. See also