DECOMPRESS_RECORD
Válido Para
Extract e Replicat
Descrição
Use a função DECOMPRESS_RECORD quando quiser recuperar ou manipular um registro de atualização inteiro com a função GET_RECORD_BUFFER (consulte "GET_RECORD_BUFFER") ou SET_RECORD_BUFFER (consulte) e o registro seja compactado. DECOMPRESS_RECORD torna os registros compactados mais fáceis de processar e mapear, colocando o registro em seu layout de coluna lógica. As colunas que estão presentes estarão nas posições esperadas sem os indicadores de índice e comprimento (consulte "Formato de Registro Compactado"). As colunas ausentes serão representadas como zeros. Quando usado, DECOMPRESS_RECORD deve ser chamado antes de qualquer manipulação ocorrer. Depois que o processamento da saída do usuário for concluído, use a função COMPRESS_RECORD (consulte) para recomprimir o registro antes de retorná-lo ao processo do Oracle GoldenGate.
Esta função é válida somente para operações de processamento UPDATE. As exclusões, inserções e atualizações aparecem no buffer como imagens de registro completo.
O conteúdo do buffer de registro não é convertido para ou a partir do conjunto de caracteres da saída do usuário. Foi informado como está.
Formato de registro compactado
As atualizações SQL compactadas têm o seguinte formato:
<index> <length> <value> [<index> <length> <value> ][...]
onde:
-
<index>é um índice de dois bytes na lista de colunas da tabela (a primeira coluna é zero). -
<length>é o comprimento de dois bytes da tabela. -
<value>é o valor da coluna real, incluindo um dos indicadores nulos de dois bytes a seguir quando aplicável.0não é nulo.-1é nulo.
Sintaxe
#include "usrdecs.h"
short result_code;
compressed_rec_def compressed_rec;
ERCALLBACK (DECOMPRESS_RECORD, &compressed_rec, &result_code);
Buffer
typedef struct
{
char *compressed_rec;
long compressed_len;
char *decompressed_rec;
long decompressed_len;
short *columns_present;
short source_or_target;
char requesting_before_after_ind;
} compressed_rec_def;
Entrada
<compressed_rec>
Um ponteiro para o registro em formato compactado. Use a função GET_RECORD_BUFFER para obter esse valor (consulte "GET_RECORD_BUFFER").
<compressed_len>
O comprimento do registro compactado. Use a função GET_RECORD_BUFFER (consulte "GET_RECORD_BUFFER") ou GET_RECORD_LENGTH (consulte) para obter esse valor.
<source_or_target>
Uma das opções a seguir indica se o registro de origem ou de destino está sendo descompactado.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
Usado como entrada interna. Não é necessário definir. Se definido, será ignorado.
Saída
<decompressed_rec>
Um ponteiro para o registro retornado em formato descompactado. O registro é considerado no formato canônico interno do Oracle GoldenGate. O chamador deve garantir que a quantidade apropriada de memória seja alocada para decompressed_rec.
<decompressed_len>
O comprimento retornado do registro descompactado.
<columns_present>
Uma matriz de valores que indica as colunas presentes no registro compactado. Por exemplo, se a primeira, terceira e sexta colunas existirem no registro compactado e o número total de colunas na tabela for sete, a matriz deverá conter:
1, 0, 1, 0, 0, 1, 0
Esse array ajuda as funções de mapeamento a determinar quando e se uma coluna compactada deve ser mapeada.
Valores de Retorno
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM