DECOMPRESS_RECORD
유효 기간
추출 및 복제
설명
GET_RECORD_BUFFER("GET_RECORD_BUFFER" 참조) 또는 SET_RECORD_BUFFER 함수(참조)를 사용하여 전체 업데이트 레코드를 검색하거나 조작하려는 경우 DECOMPRESS_RECORD 함수를 사용하고 레코드가 압축됩니다. DECOMPRESS_RECORD를 사용하면 레코드를 논리적 열 레이아웃에 배치하여 압축된 레코드를 보다 쉽게 처리하고 매핑할 수 있습니다. 존재하는 열은 인덱스 및 길이 표시기가 없는 예상 위치에 있습니다("압축 레코드 형식 참조). 누락된 열은 0으로 표시됩니다. 사용할 경우 조작이 발생하기 전에 DECOMPRESS_RECORD를 호출해야 합니다. User Exit 처리가 완료되면 COMPRESS_RECORD 함수(참조)를 사용하여 레코드를 Oracle GoldenGate 프로세스로 반환하기 전에 레코드를 다시 압축합니다.
이 함수는 UPDATE 작업 처리에만 적합합니다. 삭제, 삽입 및 갱신은 버퍼에 전체 레코드 이미지로 나타납니다.
레코드 버퍼의 내용은 User Exit의 문자 집합으로 변환되거나 User Exit의 문자 집합에서 변환되지 않습니다. 현재 상태로 전달됩니다.
압축된 레코드 형식
압축된 SQL 업데이트의 형식은 다음과 같습니다.
<index> <length> <value> [<index> <length> <value> ][...]
설명:
-
<index>는 테이블의 열 목록에 있는 2바이트 인덱스입니다(첫번째 열은 0임). -
<length>는 테이블의 2바이트 길이입니다. -
<value>은 해당하는 경우 다음 2바이트 널 표시기 중 하나를 포함하는 실제 열 값입니다.0은 널이 아닙니다.-1는 널입니다.
구문
#include "usrdecs.h"
short result_code;
compressed_rec_def compressed_rec;
ERCALLBACK (DECOMPRESS_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;
입력
<compressed_rec>
압축된 형식의 레코드에 대한 포인터입니다. 이 값을 가져오려면 GET_RECORD_BUFFER 함수를 사용합니다("GET_RECORD_BUFFER" 참조).
<compressed_len>
압축 레코드의 길이입니다. 이 값을 가져오려면 GET_RECORD_BUFFER("GET_RECORD_BUFFER" 참조) 또는 GET_RECORD_LENGTH(참조) 함수를 사용합니다.
<source_or_target>
소스 또는 대상 레코드의 압축을 해제 중인지 여부를 나타내는 다음 중 하나입니다.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
내부 입력으로 사용됩니다. 설정할 필요가 없습니다. 설정된 경우 무시됩니다.
출력
<decompressed_rec>
압축이 풀린 형식으로 반환된 레코드에 대한 포인터입니다. 레코드는 Oracle GoldenGate 내부 표준 형식으로 간주됩니다. 호출자는 적절한 양의 메모리가 decompressed_rec에 할당되었는지 확인해야 합니다.
<decompressed_len>
압축 해제된 레코드의 반환된 길이입니다.
<columns_present>
압축된 레코드에 있는 열을 나타내는 값 배열입니다. 예를 들어, 압축된 레코드에 첫번째, 세번째 및 여섯번째 열이 있고 테이블의 총 열 수가 7이면 배열은 다음을 포함해야 합니다.
1, 0, 1, 0, 0, 1, 0
이 배열은 매핑 함수가 압축된 열의 매핑 시기와 여부를 결정하는 데 유용합니다.
반환 값
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM