PostgreSQL 9.5에서 C 함수에서 작성한 ARR_ELEMTYPE(PG_GETARG_ARRAYTYPE_P(0))
입니다. 여기서 (0)은 28642010이 반환 한 복합 유형 (즉, CREATE TYPE
으로 정의 됨)의 배열입니다.이 숫자는 소스 코드에 나타나지 않으며 문서화되어 있지 않습니다.PostgreSQL에서 복합 유형의 배열에 대한 올바른 OID는 무엇입니까?
오늘 PG 9.6으로 업그레이드하고 C 함수가 오류를 던졌습니다. elemtype은 이제 16396으로보고됩니다. 이것은 소스 코드에도 나타나지 않습니다.
위키와 소스 모두에서 10 진수와 16 진수를 모두 검색했습니다.
a) 소스 코드에 OID가 정의되어 있지 않고 b) PG가 변경되면서 번호가 변경되는 것을 볼 수 없습니다.
여기에 뭔가가 있습니까?
'어디 typname = 'pg_type에서 OID 선택 .. . "? –
그래, 16396이라는 새로운 번호를 알려준다. – IamIC
나는 그것을 이해했다고 생각한다. DB가 9.6의 변경으로 인해 다시 만들어 져야하기 때문에 OID가 다릅니다. 그것은 C에서 일관성을 유지하는 것이 매우 흥미로울 것입니다. – IamIC