COMPRESS_RECORD

有效对象

提取和复制

说明

使用 COMPRESS_RECORD 函数可重新压缩已使用 DECOMPRESS_RECORD 函数解压缩的记录。仅在使用 DECOMPRESS_RECORD 之后才调用 COMPRESS_RECORD。

记录缓冲区的内容不会转换为用户出口的字符集或从该字符集中转换为该内容。它按原样进行传递。

语法

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

缓冲区

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;

输入

<decompressed_rec>

指向缓冲区的指针,该缓冲区包含压缩前的记录。假定记录采用默认的 Oracle GoldenGate 规范格式。

<decompressed_len>

解压缩记录的长度。

<source_or_target>

以下项之一,用于指示正在压缩源记录还是目标记录。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

用作内部输入。此版本无需设置。如果设置,则会将其忽略。

<columns_present>

指示压缩记录中存在的列的值数组。例如,如果压缩记录中存在第一列、第三列和第六列,且表中的列总数为七列,则数组应包含:

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

使用 GET_TABLE_COLUMN_COUNT 函数可获取表中的列数(请参见“GET_TABLE_COLUMN_COUNT ”)。

输出

<compressed_rec>

以压缩格式返回的记录指针。通常,compressed_rec 是指向 exit_rec_buf_def 类型的缓冲区的指针。exit_rec_buf_def 缓冲区包含提取或复制将要处理的实际记录。调用类型为 EXIT_CALL_DISCARD_RECORD 时会提供缓冲区。退出例程可能会更改此缓冲区的内容,例如,执行定制映射函数。调用方必须确保将适当的内存量分配给 compressed_rec。

<compressed_len>

压缩记录的返回长度。

返回值

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM