В PostgreSQL 9.5 в C-функции я написал: ARR_ELEMTYPE(PG_GETARG_ARRAYTYPE_P(0))
где (0) - это массив составного типа (т. Е. Определенный CREATE TYPE
), возвращенный 28642010. Это число не отображается в исходном коде и недокументировано.Каков правильный OID для массива композитного типа в PostgreSQL?
Сегодня я обновился до PG 9.6, а функция C сменила ошибку. Элемент теперь объявлен как 16396. Это также не отображается в исходном коде.
Я искал оба числа в десятичной и шестнадцатеричной форме как в вики, так и в источнике.
Я не вижу, как a) OID не определен в исходном коде и b) число изменяется с изменением PG.
Я что-то упустил?
'выберите подъязычная из pg_type где typname =» .. .''? –
Yup, что дает новый номер, 16396. – IamIC
Думаю, я понял. Это OID меняется, потому что БД пришлось воссоздать из-за изменений в 9.6. Это сделало бы очень интересным сделать это последовательным в C. – IamIC