tpcc_current (Дополнительные методические материалы), страница 25

PDF-файл tpcc_current (Дополнительные методические материалы), страница 25 Структурное проектирование автоматизированных систем обработки информации и управления (14077): Другое - 10 семестр (2 семестр магистратуры)tpcc_current (Дополнительные методические материалы) - PDF, страница 25 (14077) - СтудИзба2017-12-22СтудИзба

Описание файла

Файл "tpcc_current" внутри архива находится в следующих папках: Дополнительные методические материалы, TPC-C. PDF-файл из архива "Дополнительные методические материалы", который расположен в категории "". Всё это находится в предмете "структурное проектирование автоматизированных систем обработки информации и управления" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "структурное проектирование автоматизированных систем обработки информации и управления" в общих файлах.

Просмотр PDF-файла онлайн

Текст 25 страницы из PDF

Only thebasic fu nctionality of the TPC-C transactions is su p p lied . All term inal I/ O Oop erations, and m iscellaneou s fu nctionshave been left ou t of these exam p les. The cod e p resented here is for d em onstration p u rp oses only, and is n ot m eantto be an op tim al im p lem entation.N ote: The exam p les in this ap p end ix, in som e areas, m ay not follow all the requ irem ents of the benchm ark. In case ofd iscrep ancy betw een the sp ecifications and the p rogram m ing exam p les, the sp ecifications p revail.A.1The N ew -Order Transactionint new ord (){EXEC SQL WH EN EVER NOT FOUN D GOTO sqlerr;EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;gettim estam p (d atetim e);EXEC SQL SELECT c_d iscount, c_last, c_cred it, w _taxIN TO :c_d iscount, :c_last, :c_credit, :w _taxFROM custom er, w arehouseWH ERE w _id = :w _id AN D c_w _id = w _id AN Dc_d_id = :d _id AN D c_id = :c_id ;EXEC SQL SELECT d _next_o_id , d _tax IN TO :d _next_o_id , :d_taxFROM d istrictWH ERE d _id = :d_id AN D d _w _id = :w _id ;EXEC SQL UPDATE d istrict SET d _next_o_id = :d _next_o_id + 1WH ERE d _id = :d_id AN D d _w _id = :w _id ;o_id =d _next_o_id ;EXEC SQL IN SERT IN TO ORDERS (o_id , o_d _id , o_w _id , o_c_id ,o_entry_d , o_ol_cnt, o_all_local)VALUES (:o_id , :d _id , :w _id , :c_id ,:d atetim e, :o_ol_cnt, :o_all_local);EXEC SQL IN SERT IN TO N EW_ORDER (no_o_id , no_d_id , no_w _id )VALUES (:o_id , :d _id , :w _id );for (ol_num ber=1; ol_num ber<=o_ol_cnt; ol_num ber++){ol_supply_w _id =atol(supw are[ol_num ber -1]);if (ol_supply_w _id != w _id) o_all_local=0;ol_i_id =atol(item id [ol_num ber-1]);ol_qu antity=atol(qty[ol_num ber-1]);EXEC SQL WH EN EVER N OT FOUN D GOTO invalid item ;EXEC SQL SELECT i_price, i_nam e , i_dataIN TO :i_price, :i_nam e, :i_dataFROM itemTPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 108 of 130WH ERE i_id = :ol_i_id ;price[ol_num ber-1] = i_price;strncpy(inam e[ol_num ber-1],i_nam e,24);EXEC SQL WH EN EVER N OT FOUN D GOTO sqlerr;EXEC SQL SELECT s_quantity, s_d ata,s_d ist_01, s_dist_02, s_d ist_03, s_d ist_04, s_d ist_05s_d ist_06, s_dist_07, s_d ist_08, s_d ist_09, s_d ist_10IN TO :s_quantity, :s_d ata,:s_d ist_01, :s_d ist_02, :s_dist_03, :s_d ist_04, :s_d ist_05:s_d ist_06, :s_d ist_07, :s_dist_08, :s_d ist_09, :s_d ist_10FROM stockWH ERE s_i_id = :ol_i_id AN D s_w _id = :ol_supply_w _id ;pick_d ist_info(ol_d ist_info, ol_w _id ); / / pick correct s_dist_xxstock[ol_num ber-1] = s_quantity;if ( (strstr(i_data,"original") != N ULL) &&(strstr(s_d ata,"original") != N ULL) )bg[ol_num ber-1] = 'B';elsebg[ol_num ber-1] = 'G';if (s_quantity > ol_quantity)s_quantity = s_quantity - ol_quantity;elses_quantity = s_quantity - ol_quantity + 91;EXEC SQL UPDATE stock SET s_quantity = :s_quantityWH ERE s_i_id = :ol_i_idAN D s_w _id = :ol_supply_w _id ;ol_am ount = ol_quantity * i_price * (1+w _tax+d_tax) * (1-c_d iscount);am t[ol_num ber-1]=ol_am ount;total += ol_am ount;EXEC SQL IN SERTIN TO ord er_line (ol_o_id , ol_d_id , ol_w _id , ol_num ber,ol_i_id , ol_supply_w _id ,ol_quantity, ol_am ount, ol_dist_info)VALUES (:o_id , :d_id , :w _id , :ol_num ber,:ol_i_id , :ol_supply_w _id ,:ol_quantity, :ol_am ount, :ol_d ist_info);} / *End Ord er Lines*/EXEC SQL COMMIT WORK;return(0);invalid item :EXEC SQL ROLLBACK WORK;printf("Item num ber is not valid ");return(0);sqlerr:error();}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 109 of 130A.2The Payment Transactionint paym ent(){EXEC SQL WH EN EVER NOT FOUN D GOTO sqlerr;EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;gettim estam p (d atetim e);EXEC SQL UPDATE w arehouse SET w _ytd = w _ytd + :h_am ountWH ERE w _id =:w _id ;EXEC SQL SELECT w _street_1, w _street_2, w _city, w _state, w _zip, w _nam eIN TO :w _street_1, :w _street_2, :w _city, :w _state, :w _zip, :w _nam eFROM w arehouseWH ERE w _id =:w _id ;EXEC SQL UPDATE d istrict SET d _ytd = d_ytd + :h_am ountWH ERE d _w _id =:w _id AN D d _id =:d _id ;EXEC SQL SELECT d _street_1, d _street_2, d_city, d_state, d _zip, d _nam eIN TO :d _street_1, :d _street_2, :d _city, :d _state, :d _zip , :d _nam eFROM d istrictWH ERE d _w _id =:w _id AN D d _id =:d _id ;if (bynam e){EXEC SQL SELECT count(c_id ) IN TO :nam ecntFROM custom erWH ERE c_last=:c_last AN D c_d _id =:c_d _id AN D c_w _id =:c_w _id ;EXEC SQL DECLARE c_bynam e CURSOR FORSELECT c_first, c_m idd le, c_id,c_street_1, c_street_2, c_city, c_state, c_zip,c_phone, c_cred it, c_cred it_lim ,c_d iscount, c_balance, c_sinceFROM custom erWH ERE c_w _id =:c_w _id AN D c_d _id =:c_d _id AN D c_last=:c_lastORDER BY c_first;EXEC SQL OPEN c_byname;if (nam ecnt%2) nam ecnt++; / / Locate m id point custom er;for (n=0; n<nam ecnt/ 2; n++){EXEC SQL FETCH c_bynam eIN TO :c_first, :c_m id dle, :c_id,:c_street_1, :c_street_2, :c_city, :c_state, :c_zip,:c_phone, :c_cred it, :c_cred it_lim ,:c_discount, :c_balance, :c_since;}EXEC SQL CLOSE c_bynam e;}else{EXEC SQL SELECT c_first, c_m id d le, c_last,TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 110 of 130c_street_1, c_street_2, c_city, c_state, c_zip,c_phone, c_cred it, c_cred it_lim ,c_d iscount, c_balance, c_sinceIN TO :c_first, :c_m id dle, :c_last,:c_street_1, :c_street_2, :c_city, :c_state, :c_zip,:c_phone, :c_cred it, :c_cred it_lim ,:c_discount, :c_balance, :c_sinceFROM custom erWH ERE c_w _id =:c_w _id AN D c_d _id =:c_d _id AN D c_id =:c_id ;}c_balance += h_am ount;c_credit[2]='\ 0';if (strstr(c_cred it, "BC") ){EXEC SQL SELECT c_data IN TO :c_d ataFROM custom erWH ERE c_w _id =:c_w _id AN D c_d _id =:c_d _id AN D c_id =:c_id ;sprintf(c_new _d ata,"| %4d %2d %4d %2d %4d $%7.2f %12c %24c",c_id ,c_d_id ,c_w _id ,d_id ,w _id ,h_am ounth_date, h_d ata);strncat(c_new _data,c_data,500-strlen(c_new _d ata));EXEC SQL UPDATE custom erSET c_balance = :c_balance, c_d ata = :c_new _dataWH ERE c_w _id = :c_w _id AN D c_d _id = :c_d _id AN Dc_id = :c_id;}else{EXEC SQL UPDATE custom er SET c_balance = :c_balanceWH ERE c_w _id = :c_w _id AN D c_d _id = :c_d _id AN Dc_id = :c_id;}strncpy(h_data,w _nam e,10);h_d ata[10]='\ 0';strncat(h_data,d _nam e,10);h_d ata[20]=' ';h_d ata[21]=' ';h_d ata[22]=' ';h_d ata[23]=' ';EXEC SQL IN SERT IN TO history (h_c_d _id , h_c_w _id, h_c_id , h_d _id ,h_w _id , h_d ate, h_am ount, h_d ata)VALUES (:c_d _id, :c_w _id, :c_id , :d_id ,:w _id , :d atetim e, :h_am ount, :h_data);EXEC SQL COMMIT WORK;return(0);sqlerr:error();}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 111 of 130A.3The Order-Status Transactionint ostat(){EXEC SQL WH EN EVER NOT FOUN D GOTO sqlerr;EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;if (bynam e){EXEC SQL SELECT count(c_id ) IN TO :nam ecntFROM custom erWH ERE c_last=:c_last AN D c_d _id =:d _id AN D c_w _id =:w _id;EXEC SQL DECLARE c_nam e CURSOR FORSELECT c_balance, c_first, c_m id d le, c_idFROM custom erWH ERE c_last=:c_last AN D c_d _id =:d _id AN D c_w _id =:w _idORDER BY c_first;EXEC SQL OPEN c_nam e;if (nam ecnt%2) nam ecnt++; / / Locate m id point custom erfor (n=0; n<nam ecnt/ 2; n++){EXEC SQL FETCH c_nameIN TO :c_balance, :c_first, :c_m id dle, :c_id ;}EXEC SQL CLOSE c_nam e;}else {EXEC SQL SELECT c_balance, c_first, c_m id d le, c_lastIN TO :c_balance, :c_first, :c_m id dle, :c_lastFROM custom erWH ERE c_id =:c_id AN D c_d _id =:d _id AN D c_w _id =:w _id;}EXEC SQL SELECT o_id, o_carrier_id, o_entry_dIN TO :o_id , :o_carrier_id , :entdateFROM ord ersORDER BY o_id DESC;EXEC SQL DECLARE c_line CURSOR FORSELECT ol_i_id , ol_supply_w _id , ol_quantity,ol_am ount, ol_d elivery_dFROM ord er_lineWH ERE ol_o_id =:o_id AN D ol_d _id =:d _id AN D ol_w _id =:w _id ;EXEC SQL OPEN c_line;EXEC SQL WH EN EVER NOT FOUN D CON TIN UE;i=0;w hile (sql_notfound (FALSE)){i++;EXEC SQL FETCH c_lineIN TO :ol_i_id [i], :ol_supply_w _id [i], :ol_quantity[i],:ol_am ount[i], :ol_d elivery_d [i];}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 112 of 130EXEC SQL CLOSE c_line;EXEC SQL COMMIT WORK;return(0);sqlerr:error();}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 113 of 130A.4The D elivery Transactionint d elivery(){EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;gettim estam p (d atetim e);/ * For each district in w arehouse */printf("W: %d \ n", w _id );for (d _id =1; d_id <=DIST_PER_WARE; d _id ++){EXEC SQL WH EN EVER N OT FOUN D GOTO sqlerr;EXEC SQL DECLARE c_no CURSOR FORSELECT no_o_idFROM new _ord erWH ERE no_d_id = :d _id AN D no_w _id = :w _idORDER BY no_o_id ASC;EXEC SQL OPEN c_no;EXEC SQL WH EN EVER N OT FOUN D continue;EXEC SQL FETCH c_no IN TO :no_o_id ;EXEC SQL DELETE FROM new _ord er WH ERE CURREN T OF c_no;EXEC SQL CLOSE c_no;EXEC SQL SELECT o_c_id IN TO :c_id FROM ord ersWH ERE o_id = :no_o_id AN D o_d_id = :d _id AN Do_w _id = :w _id ;EXEC SQL UPDATE ord ers SET o_carrier_id = :o_carrier_idWH ERE o_id = :no_o_id AN D o_d_id = :d _id AN Do_w _id = :w _id ;EXEC SQL UPDATE ord er_line SET ol_d elivery_d = :datetim eWH ERE ol_o_id = :no_o_id AN D ol_d_id = :d _id AN Dol_w _id = :w _id;EXEC SQL SELECT SUM(ol_am ount) IN TO :ol_totalFROM ord er_lineWH ERE ol_o_id = :no_o_id AN D ol_d_id = :d _idAN D ol_w _id = :w _id;EXEC SQL UPDATE custom er SET c_balance = c_balance + :ol_totalWH ERE c_id = :c_id AN D c_d _id = :d_id AN Dc_w _id = :w _id ;EXEC SQL COMMIT WORK;printf("D: %d , O: %d , tim e: %d \ n", d_id , o_id , tad );}EXEC SQL COMMIT WORK;return(0);sqlerr:TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 114 of 130error();}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 115 of 130A.5The Stock-Level Transactionint slev(){EXEC SQL WH EN EVER NOT FOUN D GOTO sqlerr;EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;EXEC SQL SELECT d _next_o_id IN TO :o_idFROM d istrictWH ERE d _w _id =:w _id AN D d _id =:d _id ;EXEC SQL SELECT COUNT(DISTIN CT (s_i_id )) IN TO :stock_countFROM ord er_line, stockWH ERE ol_w _id =:w _id AN Dol_d _id =:d _id AN D ol_o_id <:o_id AN Dol_o_id >=:o_id -20 AN D s_w _id =:w _id AN Ds_i_id =ol_i_id AND s_quantity < :threshold;EXEC SQL COMMIT WORK;return(0);sqlerr:error();}TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 116 of 130A.6Sample Load Program/ *==================================================================+| Load TPCC tables+==================================================================*/#d efine MAXITEMS 100000#d efine CUST_PER_DIST 3000#d efine DIST_PER_WARE 10#d efine ORD_PER_DIST 3000extern long count_w are;/ * Functions */longvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidN URand ();Load Item s();Load Ware();Load Cust();Load Ord ();Load N ew Ord ();Stock();District();Custom er();Ord ers();N ew _Ord ers();MakeAd d ress();Error();Lastnam e();/ * Global SQL Variables */EXEC SQL BEGIN DECLARE SECTION ;chartim estam p [20];longcount_w are;EXEC SQL EN D DECLARE SECTION ;/ * Global Variables */inti;intoption_d ebug = 0;/ * 1 if generating debug output*// *================================================= =================+|main()| ARGUMEN TS|Warehouses n [Debug] [H elp]+==================================================================*/void m ain( argc, argv )intargc;char *argv[];{chararg[2];EXEC SQL WH EN EVER SQLERROR GOTO Error_SqlCall;count_w are=0;for (i=1; i<argc; i++){TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 117 of 130strncpy(arg,argv[i],2);arg[0] = toupper(arg[0]);sw itch (arg[0]) {case 'W': / * Warehouses */if (count_w are){printf("Error - Warehouses specified m ore than once.\ n");exit(-1);}if (argc-1>i){i++;count_w are=atoi(argv[i]);if (count_w are<=0){printf("Invalid Warehouse Count.\ n");exit(-1);}}else{printf("Error - Warehouse count m ust follow Warehouse keyw ord \ n");exit(-1);}break;/ ******* Generic Args *********************/case 'D': / * Debug Option */if (option_d ebug){printf("Error - Debug option specified m ore than once\ n");exit(-1);}option_d ebug=1;break;case 'H ': / * List Args */printf("Usage - Warehouses n [Debug] [H elp]\ n");exit(0);break;d efault : printf("Error - Unknow n Argum ent (%s)\ n",arg);printf("Usage - Warehouses n [Debug] [H elp]\ n");exit(-1);}}if (!(count_w are)) {printf("N ot enough argum ents.\ n");printf("Usage - Warehouses n ");printf(" [Debug] [H elp]\ n");exit(-1);}SetSeed ( tim e( 0 ) );/ * Initialize tim estam p (for d ate colum ns) */gettim estam p (tim estam p);printf( "TPCC Data Load Started ...\ n" );TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 118 of 130Load Item s();Load Ware();Load Cust();Load Ord ();EXEC SQL COMMIT WORK RELEASE;printf( "\ n...DATA LOADIN G COMPLETED SUCCESSFULLY.\ n" );exit( 0 );Error_SqlCall:Error();}/ *==================================================================+| ROUTIN E N AME|Load Item s| DESCRIPTION|Load s the Item table| ARGUMEN TS|none+==================================================================*/void Load Item s(){EXEC SQL BEGIN DECLARE SECTION ;long i_id ;char i_nam e[24];float i_price;char i_d ata[50];EXEC SQL EN D DECLARE SECTION ;int idatasiz;int orig[MAXITEMS];long pos;int i;EXEC SQL WH EN EVER SQLERROR GOTO sqlerr;printf("Load ing Item \ n");for (i=0; i<MAXITEMS/ 10; i++) orig[i]=0;for (i=0; i<MAXITEMS/ 10; i++){do{pos = Rand om N um ber(0L,MAXITEMS);} w hile (orig[pos]);orig[pos] = 1;}for (i_id =1; i_id <=MAXITEMS; i_id ++) {/ * Generate Item Data */MakeAlphaString( 14, 24, i_nam e);i_price=((float) Rand om N um ber(100L,10000L))/ 100.0;id atasiz=MakeAlphaString(26,50,i_data);if (orig[i_id ]){pos = Rand om N um ber(0L,id atasiz-8);i_d ata[pos]='o';i_d ata[pos+1]='r';i_d ata[pos+2]='i';i_d ata[pos+3]='g';i_d ata[pos+4]='i';i_d ata[pos+5]='n';i_d ata[pos+6]='a';i_d ata[pos+7]='l';TPC Benchm ark™C - Stand ard Sp ecification, Revision 5.11 - Page 119 of 130}if ( option_d ebug )printf( "IID = %ld , N am e= %16s, Price = %5.2f\ n",i_id , i_nam e, i_price );EXEC SQL IN SERT IN TOitem (i_id , i_nam e, i_price, i_data)values (:i_id , :i_nam e, :i_price, :i_d ata);if ( !(i_id % 100) ) {printf(".");EXEC SQL COMMIT WORK;if ( !(i_id % 5000) ) printf(" %ld \ n",i_id );}}EXEC SQL COMMIT WORK;printf("Item Done.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5301
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее