PostgreSQL 9.5のC関数で書いたARR_ELEMTYPE(PG_GETARG_ARRAYTYPE_P(0))
ここで(0)は複合型の配列(つまりCREATE TYPE
で定義されています)が返され、28642010が返されます。この番号はソースコードには記載されておらず、文書化されていません。PostgreSQLの複合型の配列の正しいOIDは何ですか?
今日、私はPG 9.6にアップグレードし、私のC関数はエラーを投げました。 elemtypeは16396として報告されるようになりました。これはソースコードには表示されません。
私は、wikiとソースの両方で10進数と16進数の両方の数字を検索しました。
a)ソースコードにOIDが定義されておらず、b)PGが変更されて番号が変更されていることがわかりません。
ここに何か不足していますか?
'typname =」pg_typeシステムカタログからOIDを選択し... 「? –
うん、それは新しい番号、16396を与える。 – IamIC
私はそれを考え出したと思う。そのOIDは、9.6の変更のためにDBを再作成する必要があったために異なります。これは、Cで一貫性を持たせることを非常に面白くするでしょう。 – IamIC