Skip to main content
`Ctrl`+`K`

# 7.3.14. `column_list`

## 7.3.14.1. Summary

`column_list` command lists columns in a table.

## 7.3.14.2. Syntax

This command takes only one required parameter:

    column_list table

## 7.3.14.3. Usage

Here is a simple example of `column_list` command.

Execution example:

    table_create Users TABLE_PAT_KEY ShortText
    # [[0,1337566253.89858,0.000355720520019531],true]
    column_create Users age COLUMN_SCALAR UInt8
    # [[0,1337566253.89858,0.000355720520019531],true]
    column_create Users tags COLUMN_VECTOR ShortText
    # [[0,1337566253.89858,0.000355720520019531],true]
    column_list Users
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         "id",
    #         "UInt32"
    #       ],
    #       [
    #         "name",
    #         "ShortText"
    #       ],
    #       [
    #         "path",
    #         "ShortText"
    #       ],
    #       [
    #         "type",
    #         "ShortText"
    #       ],
    #       [
    #         "flags",
    #         "ShortText"
    #       ],
    #       [
    #         "domain",
    #         "ShortText"
    #       ],
    #       [
    #         "range",
    #         "ShortText"
    #       ],
    #       [
    #         "source",
    #         "ShortText"
    #       ],
    #       [
    #         "generator",
    #         "ShortText"
    #       ]
    #     ],
    #     [
    #       256,
    #       "_key",
    #       "",
    #       "",
    #       "COLUMN_SCALAR",
    #       "Users",
    #       "ShortText",
    #       [
    #
    #       ],
    #       ""
    #     ],
    #     [
    #       257,
    #       "age",
    #       "${DB_PATH}.0000101",
    #       "fix",
    #       "COLUMN_SCALAR|PERSISTENT",
    #       "Users",
    #       "UInt8",
    #       [
    #
    #       ],
    #       ""
    #     ],
    #     [
    #       258,
    #       "tags",
    #       "${DB_PATH}.0000102",
    #       "var",
    #       "COLUMN_VECTOR|PERSISTENT",
    #       "Users",
    #       "ShortText",
    #       [
    #
    #       ],
    #       ""
    #     ]
    #   ]
    # ]

## 7.3.14.4. Parameters

This section describes parameters of `column_list`.

### 7.3.14.4.1. Required parameters

All parameters are required.

#### 7.3.14.4.1.1. `table`

Specifies the name of table to be listed columns.

## 7.3.14.5. Return value

`column_list` returns the list of column information in the table:

    [
      HEADER,
      [
        COLUMN_LIST_HEADER,
        COLUMN_INFORMATION1,
        COLUMN_INFORMATION2,
        ...
      ]
    ]

### 7.3.14.5.1. `HEADER`

See Output format about `HEADER`.

### 7.3.14.5.2. `COLUMN_LIST_HEADER`

`COLUMN_LIST_HEADER` describes about content of each COLUMN_INFORMATION.

`COLUMN_LIST_HEADER` uses the following format:

    [
      ["id",     "UInt32"],
      ["name",   "ShortText"],
      ["path",   "ShortText"],
      ["type",   "ShortText"],
      ["flags",  "ShortText"],
      ["domain", "ShortText"],
      ["range",  "ShortText"],
      ["source", "ShortText"]
      ["generator", "ShortText"]
    ]

It means the following:

- The first content in COLUMN_INFORMATION is `id` value and the value type is `UInt32`.

- The second content in COLUMN_INFORMATION is `name` value and the value type is `ShortText`.

- The third content COLUMN_INFORMATION is ….

This field provides meta-data of column information. So this field will be useful for programs rather than humans.

### 7.3.14.5.3. `COLUMN_INFORMATION`

Each `COLUMN_INFORMATION` uses the following format:

    [
      ID,
      NAME,
      PATH,
      TYPE,
      FLAGS,
      DOMAIN,
      RANGE,
      SOURCES,
      GENERATOR
    ]

#### 7.3.14.5.3.1. `ID`

The column ID in the Groonga database. Normally, you don’t care about it.

#### 7.3.14.5.3.2. `NAME`

The column name.

#### 7.3.14.5.3.3. `PATH`

The path for storing column data.

#### 7.3.14.5.3.4. `TYPE`

The type of the column. It is one of the followings:

Value | Description
--- | ---
`fix` | The column is a fixed size column. Scalar column that its type is fixed size type is fixed size column.
`var` | The column is a variable size column. Vector column or scalar column that its type is variable size type are variable size column.
`index` | The column is an index column.

#### 7.3.14.5.3.5. `FLAGS`

The flags of the column. Each flag is separated by `|` like `COLUMN_VECTOR|WITH_WEIGHT`. `FLAGS` must include one of `COLUMN_SCALAR`, `COLUMN_VECTOR` or `COLUMN_INDEX`. Other flags are optional.

Here is the available flags:

Flag | Description
--- | ---
`COLUMN_SCALAR` | The column is a scalar column.
`COLUMN_VECTOR` | The column is a vector column.
`COLUMN_INDEX` | The column is an index column.
`WITH_WEIGHT` | The column can have weight. `COLUMN_VECTOR` and `COLUMN_INDEX` may have it. `COLUMN_SCALAR` doesn’t have it.
`WITH_SECTION` | The column can have section information. `COLUMN_INDEX` may have it. `COLUMN_SCALAR` and `COLUMN_VECTOR` don’t have it. Multiple column index has it.
`WITH_POSITION` | The column can have position information. `COLUMN_INDEX` may have it. `COLUMN_SCALAR` and `COLUMN_VECTOR` don’t have it. Full text search index must has it.
`PERSISTENT` | The column is a persistent column. It means that the column isn’t a Pseudo column.

#### 7.3.14.5.3.6. `DOMAIN`

The name of table that has the column.

#### 7.3.14.5.3.7. `RANGE`

The value type name of the column. It is a type name or a table name.

#### 7.3.14.5.3.8. `SOURCES`

An array of the source column names of the index column or the generated column.

If the index column is a multiple column index, the array has two or more source column names.

#### 7.3.14.5.3.9. `GENERATOR`

Added in version 14.1.0.

The generator expression in Script syntax.

This is not an empty string only when the column is a Generated column. This is an empty string otherwise.

## 7.3.14.6. See also

- column_create

- Column