DECOMPRESS_RECORD

Durée de validité

Extraction et réplication

Description

Utilisez la fonction DECOMPRESS_RECORD lorsque vous souhaitez extraire ou manipuler l'intégralité d'un enregistrement de mise à jour avec la fonction GET_RECORD_BUFFER (voir "GET_RECORD_BUFFER") ou la fonction SET_RECORD_BUFFER (voir) et que l'enregistrement est compressé. DECOMPRESS_RECORD facilite le traitement et la mise en correspondance des enregistrements compressés en les plaçant dans leur présentation de colonne logique. Les colonnes qui sont présentes seront dans les positions attendues sans les indicateurs d'index et de longueur (voir "Format d'enregistrement compressé"). Les colonnes manquantes seront représentées par des zéros. Lorsqu'elle est utilisée, DECOMPRESS_RECORD doit être appelé avant toute manipulation. Une fois le traitement de l'exit utilisateur terminé, utilisez la fonction COMPRESS_RECORD (voir) pour compresser à nouveau l'enregistrement avant de le renvoyer au processus Oracle GoldenGate.

Cette fonction est valide pour le traitement des opérations UPDATE uniquement. Les suppressions, insertions et mises à jour apparaissent dans le tampon sous forme d'images d'enregistrement complet.

Le contenu du tampon d'enregistrement n'est pas converti dans ou depuis le jeu de caractères de l'exit utilisateur. Il est transmis tel quel.

Format d'enregistrement compressé

Les mises à jour SQL compressées ont le format suivant :

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

où :

Syntaxe

#include "usrdecs.h"
short result_code;
compressed_rec_def compressed_rec;
ERCALLBACK (DECOMPRESS_RECORD, &compressed_rec, &result_code);

Tampon

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;

Entrée

<compressed_rec>

Pointeur vers l'enregistrement au format compressé. Utilisez la fonction GET_RECORD_BUFFER pour obtenir cette valeur (reportez-vous à "GET_RECORD_BUFFER").

<compressed_len>

Longueur de l'enregistrement compressé. Utilisez la fonction GET_RECORD_BUFFER (voir "GET_RECORD_BUFFER") ou GET_RECORD_LENGTH (voir) pour obtenir cette valeur.

<source_or_target>

L'une des options suivantes indique si l'enregistrement source ou cible est en cours de décompression.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Utilisé comme entrée interne. Il n'est pas nécessaire de définir. Si elle est définie, elle sera ignorée.

Sortie

<decompressed_rec>

Pointeur vers l'enregistrement renvoyé au format décompressé. L'enregistrement est supposé être au format canonique interne d'Oracle GoldenGate. L'appelant doit s'assurer que la quantité de mémoire appropriée est allouée à decompressed_rec.

<decompressed_len>

Longueur renvoyée de l'enregistrement décompressé.

<columns_present>

Tableau de valeurs indiquant les colonnes présentes dans l'enregistrement compressé. Par exemple, si la première, la troisième et la sixième colonnes existent dans l'enregistrement compressé et que le nombre total de colonnes dans la table est de sept, le tableau doit contenir les éléments suivants :

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

Ce tableau aide les fonctions de mise en correspondance à déterminer quand et si une colonne compressée doit être mise en correspondance.

Valeurs retournées

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM