7.3.51. reference_release#

7.3.51.1. Summary#

Added in version 10.0.4.

reference_release releases a reference of target objects acquired by reference_acquire.

This command is meaningless unless you use the reference count mode. You can enable the reference count mode by the GRN_ENABLE_REFERENCE_COUNT=yes environment variable.

You must call a corresponding reference_release for a reference_acquire call. If you forget to call reference_release, target objects by reference_acquire are never closed automatically.

7.3.51.2. Syntax#

This command takes two parameters.

All parameters are optional:

reference_release [target_name=null]
                  [recursive=yes]

7.3.51.3. Usage#

Here is a schema definition to show usage:

Execution example:

table_create Users TABLE_HASH_KEY ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Users age COLUMN_SCALAR UInt8
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Users introduction COLUMN_SCALAR ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Ages TABLE_PAT_KEY UInt8
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Ages user_age COLUMN_INDEX Users age
# [[0,1337566253.89858,0.000355720520019531],true]

You must call reference_release with the same arguments as corresponding reference_acquire.

If you call reference_acquire with --target_name Users --recursive dependent, you must call reference_release with --target_name Users --recursive dependent:

Execution example:

reference_release --target_name Users --recursive dependent
# [[0,1337566253.89858,0.000355720520019531],true]
# select Users ...
# load --table Users ...
reference_release --target_name Users --recursive dependent
# [[0,1337566253.89858,0.000355720520019531],true]

7.3.51.4. Parameters#

This section describes all parameters.

7.3.51.4.1. Required parameters#

There is no required parameter.

7.3.51.4.2. Optional parameters#

There are optional parameters.

7.3.51.4.2.1. target_name#

Specifies a target object name. Target object is one of database, table or column.

If you omit this parameter, database is the target object:

Execution example:

reference_release
# [[0,1337566253.89858,0.000355720520019531],true]

If you specify a table name, the table is the target object:

Execution example:

reference_release --target_name Users
# [[0,1337566253.89858,0.000355720520019531],true]

If you specify a column name, the column is the target object:

Execution example:

reference_release --target_name Users.age
# [[0,1337566253.89858,0.000355720520019531],true]

7.3.51.4.2.2. recursive#

Specifies whether child objects of the target object are also target objects.

See recursive for details.

7.3.51.5. Return value#

The command returns true as body on success such as:

[HEADER, true]

If the command fails, error details are in HEADER.

See Output format for HEADER.