Uref

Тип данных uref используется в расширении Qbim как ссылочный тип на различные экземпляры объектов.

В текущей реализации Qbim тип uref используется в поле r_object таблицы action, но также может использоваться в ссылочных полях объектов.


Структура типа uref

Тип данных uref состоит из двух частей:

  • идентификатора, представленного типом bigint (в расширении Qbim — идентификатор объекта, obj.id);
  • идентификатора экземпляра (в расширении Qbim — идентификатор экземпляра объекта, представленного типом bigint или uuid, «локальным» или «глобальным» соответственно).

Методы для работы с типом uref

Для работы с типом данных uref используется отдельное семейство функций.

uref_local ( bigint, bigint ) → uref
uref ( bigint, bigint ) → uref

Конструктор с локальным идентификатором экземпляра.

uref_local(1,34) → 1:34
uref(1,34) → 1:34

uref_global ( bigint, uuid ) → uref
uref ( bigint, uuid ) → uref

Конструктор с глобальным идентификатором экземпляра.

uref_global(1,'463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uuid) → 1:463404eb-ee5d-4597-b9a9-e3b69e29d18a
uref(1,'463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uuid) → 1:463404eb-ee5d-4597-b9a9-e3b69e29d18a

uref_is_id_local ( uref ) → boolean

Проверка, что идентификатор локальный.

uref_is_id_local('1:34'::uref) → true
uref_is_id_local('1:463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uref) → false

uref_is_id_global ( uref ) → boolean

Проверка, что идентификатор глобальный.

uref_is_id_global('1:34'::uref) → false
uref_is_id_global('1:463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uref) → true

uref_obj ( uref ) → bigint

Получение идентификатора объекта.

uref_obj('1:34'::uref) → 1
uref_obj('1:463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uref) → 1

uref_id_local ( uref ) → bigint
uref_id_global ( uref ) → uuid

Получение идентификатора экземпляра объекта.

uref_id_local('1:34'::uref) → 34
uref_id_global('1:463404eb-ee5d-4597-b9a9-e3b69e29d18a'::uref) → 463404eb-ee5d-4597-b9a9-e3b69e29d18a

Индексирование полей типа uref

Поля типа uref могут использоваться в индексах btree. Для этого созданы необходимые операторы и классы операторов.