NetBase SQL Shadowing Handbook

NetBase SQL User Exits
____________________________________________________________
ver A0195 QUEST Software, Inc. 3-15
}
/* DISABLE SHADOWING FOR THE TABLE "LOCAL_TABLE" */
if (header->record_type != 15 && /* not BEGIN */
header->record_type != 1 && /* not COMMIT */
strncmp (header->table_name, "LOCAL_TABLE ", 12) == 0)
comarea->action = 4; /* disable table */
/* TABLE "GLOBAL_TABLE" IS SHADOWED BOTH WAYS AND IS PARTITIONED */
/* VERTICALLY. ANY UPDATES TO THIS TABLE REQUIRE THAT THE */
/* KEY_COL_SEARCH_OK FLAG BE SET ON THE APPLY */
if (header->record_type != 15 && /* not BEGIN */
header->record_type != 1 && /* not COMMIT */
strncmp (header->table_name, "GLOBAL_TABLE ", 13) == 0)
comarea->flags.id.key_col_search = 1; /* set KEY_COL_SEARCH_OK */
} /* end export_sql_exit */
void post_sql_exit_before (sqlca_type sqlca, comarea_rec *comarea,
header_rec *header, char *data, char *upd_data)
{
char *loc_code;
char msg[130];
comarea->action = 0; /* default to no action */
/* TABLE "CUSTOMERS" IS SHADOWED BOTH WAYS AND IS PARTITIONED */
/* HORIZONTALLY. RECORDS WITH A LOCATION-CODE OF "NW" MAY ONLY BE */
/* UPDATED HERE. IF ANY OF THESE RECORDS COME IN FROM ANOTHER */
/* NODE, PRINT A MESSAGE TO THE CONSOLE AND THROW AWAY THE RECORD. */
/* LOCATION_CODE IS THE SECOND COLUMN IN CUSTOMERS. */
if (header->record_type != 15 && /* not BEGIN */
header->record_type != 1 && /* not COMMIT */
strncmp (header->table_name, "CUSTOMERS ", 10) == 0) {
if (header->column_array[1].column_type == 1 && /* char data */
header->column_array[1].column_length == 2) { /* length is 2 */
loc_code = data + header->column_array[0].column_length;
if (strncmp (loc_code, "NW", 2) == 0) {
sprintf (msg, "%s %d",
"USEREXIT CUSTDBE : LOCAL CUSTOMER MODIFIED BY NODE",
comarea->orignode);
PRINTOP (msg, -strlen(msg), 0);
comarea->action = 1; /* Throw away this record */
}
}
}
} /* end post_sql_exit_before */
void post_sql_exit_after (sqlca_type sqlca, comarea_rec *comarea,
header_rec *header, char *data, char *upd_data)
{