### Struct

# GLib Relation

deprecated: 2.26 since: 2.0

#### Description

    struct GRelation {
      /* No available fields */
    }

A `GRelation` is a table of data which can be indexed on any number of fields, rather like simple database tables. A `GRelation` contains a number of records, called tuples. Each record contains a number of fields. Records are not ordered, so it is not possible to find the record at a particular index.

Note that `GRelation` tables are currently limited to 2 fields.

To create a `GRelation`, use `g_relation_new()`.

To specify which fields should be indexed, use `g_relation_index()`. Note that this must be called before any tuples are added to the `GRelation`.

To add records to a `GRelation` use `g_relation_insert()`.

To determine if a given record appears in a `GRelation`, use `g_relation_exists()`. Note that fields are compared directly, so pointers must point to the exact same position (i.e. different copies of the same string will not match.)

To count the number of records which have a particular value in a given field, use `g_relation_count()`.

To get all the records which have a particular value in a given field, use `g_relation_select()`. To access fields of the resulting records, use `g_tuples_index()`. To free the resulting records use `g_tuples_destroy()`.

To delete all records which have a particular value in a given field, use `g_relation_delete()`.

To destroy the `GRelation`, use `g_relation_destroy()`.

To help debug `GRelation` objects, use `g_relation_print()`.

`GRelation` has been marked as deprecated, since this API has never been fully implemented, is not very actively maintained and rarely used.

Available since: 2.0

Deprecated since: 2.26

Rarely used API.

#### Functions

###### g_relation_new

Creates a new `GRelation` with the given number of fields. Note that currently the number of fields must be 2.

deprecated: 2.26 since: 2.0

#### Instance methods

###### g_relation_count

Returns the number of tuples in a `GRelation` that have the given value in the given field.

deprecated: 2.26 since: 2.0

###### g_relation_delete

Deletes any records from a `GRelation` that have the given key value in the given field.

deprecated: 2.26 since: 2.0

###### g_relation_destroy

Destroys the `GRelation`, freeing all memory allocated. However, it does not free memory allocated for the tuple data, so you should free that first if appropriate.

deprecated: 2.26 since: 2.0

###### g_relation_exists

Returns `TRUE` if a record with the given values exists in a `GRelation`. Note that the values are compared directly, so that, for example, two copies of the same string will not match.

deprecated: 2.26 since: 2.0

###### g_relation_index

Creates an index on the given field. Note that this must be called before any records are added to the `GRelation`.

deprecated: 2.26 since: 2.0

###### g_relation_insert

Inserts a record into a `GRelation`.

deprecated: 2.26 since: 2.0

###### g_relation_print

Outputs information about all records in a `GRelation`, as well as the indexes. It is for debugging.

deprecated: 2.26 since: 2.0

###### g_relation_select

Returns all of the tuples which have the given key in the given field. Use `g_tuples_index()` to access the returned records. The returned records should be freed with g_tuples_destroy().

deprecated: 2.26 since: 2.0