Outra maneira que não requer uma função personalizada é usar o
loread(lo_open(...))
combinação, como:UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
Há um problema com este código, o
loread
A função requer como segundo parâmetro o número máximo de bytes a serem lidos (o 1000000
parâmetro que usei acima), então você deve usar um número muito grande aqui se seus dados forem grandes. Caso contrário, o conteúdo será cortado após esse número de bytes e você não receberá todos os dados de volta no bytea
campo. Se você deseja converter de OID para um campo de texto, também deve usar uma função de conversão, como em:
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(
262144
é um sinalizador para o modo aberto, 40000
em hexa, que significa "abrir somente leitura")