DECOMPRESS_RECORD

Valido per

Estrai e Replicat

Descrizione

Utilizzare la funzione DECOMPRESS_RECORD quando si desidera recuperare o manipolare un intero record di aggiornamento con la funzione GET_RECORD_BUFFER (vedere "GET_RECORD_BUFFER") o la funzione SET_RECORD_BUFFER (vedere) e il record viene compresso. DECOMPRESS_RECORD semplifica l'elaborazione e la mappatura dei record compressi inserendo il record nel layout di colonna logico. Le colonne presenti si troveranno nelle posizioni previste senza gli indicatori di indice e lunghezza (vedere "Formato record compresso"). Le colonne mancanti verranno rappresentate come zeri. Se utilizzato, è necessario richiamare DECOMPRESS_RECORD prima di eseguire qualsiasi manipolazione. Al termine dell'elaborazione dell'uscita utente, utilizzare la funzione COMPRESS_RECORD (vedere) per comprimere di nuovo il record prima di restituirlo al processo Oracle GoldenGate.

Questa funzione è valida solo per l'elaborazione delle operazioni UPDATE. Le eliminazioni, gli inserimenti e gli aggiornamenti vengono visualizzati nel buffer come immagini di record complete.

Il contenuto del buffer di record non viene convertito nel o dal set di caratteri dell'uscita utente. È passato così com'è.

Formato record compresso

Gli aggiornamenti SQL compressi hanno il seguente formato:

<index> <length> <value> [<index> <length> <value> ][...]

dove:

Sintassi

#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;

Input

<compressed_rec>

Puntatore al record in formato compresso. Utilizzare la funzione GET_RECORD_BUFFER per ottenere questo valore (vedere "GET_RECORD_BUFFER").

<compressed_len>

Lunghezza del record compresso. Per ottenere questo valore, utilizzare la funzione GET_RECORD_BUFFER (vedere "GET_RECORD_BUFFER") o GET_RECORD_LENGTH (vedere).

<source_or_target>

Una delle seguenti opzioni indica se il record di origine o di destinazione viene decompresso.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Utilizzato come input interno. Non è necessario impostarlo. Se impostato, verrà ignorato.

Output

<decompressed_rec>

Puntatore al record restituito in formato decompresso. Si presuppone che il record sia nel formato canonico interno di Oracle GoldenGate. Il chiamante deve assicurarsi che la quantità di memoria appropriata sia allocata a decompressed_rec.

<decompressed_len>

La lunghezza restituita del record decompresso.

<columns_present>

Array di valori che indicano le colonne presenti nel record compresso. Ad esempio, se nel record compresso sono presenti la prima, la terza e la sesta colonna e il numero totale di colonne nella tabella è sette, l'array deve contenere:

1, 0, 1, 0, 0, 1, 0

Questo array consente alle funzioni di mapping di determinare quando e se deve essere mappata una colonna compressa.

Valori restituiti

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM