/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: None */ int mk_s_manager(void *pDest, ds_key_t kIndex) { static int bInit = 0; struct S_MANAGER_TBL *r; char *szFirst = NULL, *szLast = NULL; if (pDest == NULL) r = &g_s_manager; else r = pDest; if (!bInit) { memset(&g_s_manager, 0, sizeof(struct S_MANAGER_TBL)); bInit = 1; } r->id = kIndex; pick_distribution(&szFirst, "first_names", 1, 3, S_MANAGER_NAME); pick_distribution(&szLast, "last_names", 1, 1, S_MANAGER_NAME); sprintf(r->name, "%s %s", szFirst, szLast); row_stop(S_MANAGER); return(0); }
/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: None */ int mk_s_promotion (void* row, ds_key_t index) { static int bInit = 0; static int *pPermutation; ds_key_t kIndex; if (!bInit) { pPermutation = makePermutation(NULL, (int)getIDCount(PROMOTION), S_PROMOTION_ID); bInit = 1; } kIndex = getPermutationEntry(pPermutation, (int)index); mk_w_promotion(NULL, kIndex); row_stop(PROMOTION); return(0); }
/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: None */ int mk_s_item (void* row, ds_key_t index) { static int bInit = 0; static int *pPermutation; ds_key_t kIndex; if (!bInit) { pPermutation = makePermutation(NULL, (int)getIDCount(ITEM), S_ITEM_PERMUTE); bInit = 1; } kIndex = getPermutationEntry(pPermutation, (int)index); mk_w_item(NULL, getSKFromID(kIndex, S_ITEM_ID)); row_stop(ITEM); return(0); }
/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: None */ int mk_s_reason(void *pDest, ds_key_t kIndex) { static int bInit = 0; struct S_REASON_TBL *r; if (pDest == NULL) r = &g_s_reason; else r = pDest; if (!bInit) { memset(&g_s_reason, 0, sizeof(struct S_REASON_TBL)); bInit = 1; } r->kID = kIndex; gen_text(r->szDesc, 1, RS_S_REASON_DESC, S_REASON_DESC); row_stop(S_REASON); return(0); }
int vld_s_promotion(int nTable, ds_key_t kRow, int *Permutation) { static int bInit = 0; static int *pPermutation; ds_key_t kIndex; table_func_t *pTF = getTdefFunctionsByNumber(PROMOTION); if (!bInit) { pPermutation = makePermutation(NULL, (int)getIDCount(PROMOTION), S_PROMOTION_ID); bInit = 1; } kIndex = getPermutationEntry(pPermutation, (int)kRow); row_skip(PROMOTION, kRow - 1); pTF->builder(NULL, kIndex); row_stop(PROMOTION); return(0); }
/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: * 20031022 jms RNGUsage for descrition is an estimate */ int mk_s_class(void *pDest, ds_key_t kIndex) { struct S_CLASS_TBL *r; static int bInit = 0; if (pDest == NULL) r = &g_s_class; else r = pDest; if (!bInit) { memset(&g_s_class, 0, sizeof(struct S_CLASS_TBL)); bInit = 1; } r->id = kIndex; r->subcat_id = mk_join(S_CLASS_SUBCAT_ID, S_SUBCATEGORY, 1); gen_text(r->desc, S_CLASS_DESC_MIN, RS_CLASS_DESC, S_CLASS_DESC); row_stop(S_CLASS); return(0); }
/* * Routine: * Purpose: * Algorithm: * Data Structures: * * Params: * Returns: * Called By: * Calls: * Assumptions: * Side Effects: * TODO: None */ int mk_s_division(void *pDest, ds_key_t kIndex) { static int bInit = 0; struct S_DIVISION_TBL *r; if (pDest == NULL) r = &g_s_division; else r = pDest; if (!bInit) { memset(&g_s_division, 0, sizeof(struct S_DIVISION_TBL)); bInit = 1; } r->id = kIndex; r->company = (kIndex % DIVISIONS_PER_COMPANY) + 1; mk_word(r->name, "syllables", kIndex, RS_DIVISION_NAME, S_DIVISION_NAME); row_stop(S_DIVISION); return(0); }
/* * generate a particular table */ void gen_tbl (int tnum, long start, long count, long upd_num) { static order_t o; supplier_t supp; customer_t cust; part_t part; #ifdef SSBM date_t dt; #else code_t code; #endif static int completed = 0; static int init = 0; long i; int rows_per_segment=0; int rows_this_segment=-1; int residual_rows=0; if (insert_segments) { rows_per_segment = count / insert_segments; residual_rows = count - (rows_per_segment * insert_segments); } if (init == 0) { INIT_HUGE(o.okey); for (i=0; i < O_LCNT_MAX; i++) #ifdef SSBM INIT_HUGE(o.lineorders[i].okey); #else INIT_HUGE(o.l[i].okey); #endif init = 1; } for (i = start; count; count--, i++) { LIFENOISE (1000, i); row_start(tnum); switch (tnum) { case LINE: #ifdef SSBM #else case ORDER: case ORDER_LINE: #endif mk_order (i, &o, upd_num % 10000); if (insert_segments && (upd_num > 0)) if((upd_num / 10000) < residual_rows) { if((++rows_this_segment) > rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } else { if((++rows_this_segment) >= rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } if (set_seeds == 0) if (validate) tdefs[tnum].verify(&o, 0); else tdefs[tnum].loader[direct] (&o, upd_num); break; case SUPP: mk_supp (i, &supp); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&supp, 0); else tdefs[tnum].loader[direct] (&supp, upd_num); break; case CUST: mk_cust (i, &cust); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&cust, 0); else tdefs[tnum].loader[direct] (&cust, upd_num); break; #ifdef SSBM case PART: #else case PSUPP: case PART: case PART_PSUPP: #endif mk_part (i, &part); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&part, 0); else tdefs[tnum].loader[direct] (&part, upd_num); break; #ifdef SSBM case DATE: mk_date (i, &dt); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&dt, 0); else tdefs[tnum].loader[direct] (&dt, 0); break; #else case NATION: mk_nation (i, &code); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&code, 0); else tdefs[tnum].loader[direct] (&code, 0); break; case REGION: mk_region (i, &code); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&code, 0); else tdefs[tnum].loader[direct] (&code, 0); break; #endif } row_stop(tnum); if (set_seeds && (i % tdefs[tnum].base) < 2) { printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i); dump_seeds(tnum); } } completed |= 1 << tnum; }
/* * generate a particular table */ void gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num) { static order_t o; supplier_t supp; customer_t cust; part_t part; code_t code; static int completed = 0; DSS_HUGE i; DSS_HUGE rows_per_segment=0; DSS_HUGE rows_this_segment=-1; DSS_HUGE residual_rows=0; if (insert_segments) { rows_per_segment = count / insert_segments; residual_rows = count - (rows_per_segment * insert_segments); } for (i = start; count; count--, i++) { LIFENOISE (1000, i); row_start(tnum); switch (tnum) { case LINE: case ORDER: case ORDER_LINE: mk_order (i, &o, upd_num % 10000); if (insert_segments && (upd_num > 0)) if((upd_num / 10000) < residual_rows) { if((++rows_this_segment) > rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } else { if((++rows_this_segment) >= rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } if (set_seeds == 0) tdefs[tnum].loader(&o, upd_num); break; case SUPP: mk_supp (i, &supp); if (set_seeds == 0) tdefs[tnum].loader(&supp, upd_num); break; case CUST: mk_cust (i, &cust); if (set_seeds == 0) tdefs[tnum].loader(&cust, upd_num); break; case PSUPP: case PART: case PART_PSUPP: mk_part (i, &part); if (set_seeds == 0) tdefs[tnum].loader(&part, upd_num); break; case NATION: mk_nation (i, &code); if (set_seeds == 0) tdefs[tnum].loader(&code, 0); break; case REGION: mk_region (i, &code); if (set_seeds == 0) tdefs[tnum].loader(&code, 0); break; } row_stop(tnum); if (set_seeds && (i % tdefs[tnum].base) < 2) { printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i); dump_seeds(tnum); } } completed |= 1 << tnum; }