⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tscli.c

📁 Mysql for Windows最新源码
💻 C
📖 第 1 页 / 共 4 页
字号:
/************************************************************************Test for the client(c) 1996-1997 Innobase OyCreated 2/16/1996 Heikki Tuuri*************************************************************************/#include "ib_odbc.h"/*********************************************************************Test for TPC-C. */ulinttest_c(/*===*/	void*	arg){	HSTMT*		query;	HSTMT*		commit_query;	HSTMT*		new_order_query;	HSTMT*		payment_query;	HSTMT*		order_status_query;	HSTMT*		delivery_query;	HSTMT*		stock_level_query;	HSTMT*		print_query;	ulint		tm, oldtm;	char*		str;	char*		str1;	char*		str2;	char*		str3;	char*		str4;	char*		str5;	char*		str6;	ulint		i;	UT_NOT_USED(arg);	printf("-------------------------------------------------\n");	printf("TEST. CREATE TABLES FOR TPC-C\n");	/*------------------------------------------------------*/	str1 =	"	PROCEDURE CREATE_TABLES () IS""	BEGIN""	CREATE TABLE WAREHOUSE (W_ID CHAR, W_NAME CHAR,""				W_STREET_1 CHAR, W_STREET_2 CHAR,""				W_CITY CHAR,""				W_STATE CHAR, W_ZIP CHAR,""				W_TAX INT,""				W_YTD_HIGH INT,""				W_YTD INT);"""	"	CREATE UNIQUE CLUSTERED INDEX W_IND ON WAREHOUSE (W_ID);"""	"	CREATE TABLE DISTRICT (D_ID CHAR, D_W_ID CHAR,""				D_NAME CHAR,""				D_STREET_1 CHAR, D_STREET_2 CHAR,""				D_CITY CHAR,""				D_STATE CHAR, D_ZIP CHAR,""				D_TAX INT,""				D_YTD_HIGH INT,""				D_YTD INT,""				D_NEXT_O_ID INT);"""	"	CREATE UNIQUE CLUSTERED INDEX D_IND ON DISTRICT (D_W_ID, D_ID);"""	"	CREATE TABLE CUSTOMER (C_ID CHAR, C_D_ID CHAR, C_W_ID CHAR,""				C_FIRST CHAR, C_MIDDLE CHAR,""				C_LAST CHAR,""				C_STREET_1 CHAR, C_STREET_2 CHAR,""				C_CITY CHAR,""				C_STATE CHAR, C_ZIP CHAR,""				C_PHONE CHAR,""				C_SINCE_TIME INT,""				C_SINCE INT,""				C_CREDIT CHAR,""				C_CREDIT_LIM_HIGH INT,""				C_CREDIT_LIM INT,""				C_DISCOUNT INT,""				C_BALANCE_HIGH INT,""				C_BALANCE INT,""				C_YTD_PAYMENT_HIGH INT,""				C_YTD_PAYMENT INT,""				C_PAYMENT_CNT INT,""				C_DELIVERY_CNT INT,""				C_DATA CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX C_IND ON CUSTOMER (C_W_ID, C_D_ID,""								C_ID);"""	"	CREATE INDEX C_LAST_IND ON CUSTOMER (C_W_ID, C_D_ID, C_LAST,""							C_FIRST);"""	"	CREATE TABLE HISTORY (H_C_ID CHAR, H_C_D_ID CHAR, H_C_W_ID CHAR,""				H_D_ID CHAR, H_W_ID CHAR,""				H_DATE INT,""				H_AMOUNT INT,""				H_DATA CHAR);"""	"	CREATE CLUSTERED INDEX H_IND ON HISTORY (H_W_ID);"""	"	CREATE TABLE NEW_ORDER (NO_O_ID INT,""				NO_D_ID CHAR,""				NO_W_ID CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX NO_IND ON NEW_ORDER (NO_W_ID, NO_D_ID,""								NO_O_ID);"	;	str2 =	  							"	CREATE TABLE ORDERS (O_ID INT, O_D_ID CHAR, O_W_ID CHAR,""	 			O_C_ID CHAR,""				O_ENTRY_D INT,""				O_CARRIER_ID INT,""				O_OL_CNT INT,""				O_ALL_LOCAL CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX O_IND ON ORDERS (O_W_ID, O_D_ID,""								O_ID);""	CREATE INDEX O_C_IND ON ORDERS (O_W_ID, O_D_ID, O_C_ID);"""	"	CREATE TABLE ORDER_LINE (OL_O_ID INT, OL_D_ID CHAR, OL_W_ID CHAR,""				OL_NUMBER CHAR,""				OL_I_ID CHAR,""				OL_SUPPLY_W_ID CHAR,""				OL_DELIVERY_D INT,""				OL_QUANTITY INT,""				OL_AMOUNT INT,""				OL_DIST_INFO CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX OL_IND ON ORDER_LINE""				(OL_W_ID, OL_D_ID, OL_O_ID, OL_NUMBER);"""	"	CREATE TABLE ITEM (I_ID CHAR, I_IM_ID CHAR, I_NAME CHAR,""				I_PRICE INT,""				I_DATA CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX I_IND ON ITEM (I_ID);"""	"	CREATE TABLE STOCK (S_I_ID CHAR,""				S_W_ID CHAR,""				S_QUANTITY INT,""				S_DIST_01 CHAR,""				S_DIST_02 CHAR,""				S_DIST_03 CHAR,""				S_DIST_04 CHAR,""				S_DIST_05 CHAR,""				S_DIST_06 CHAR,""				S_DIST_07 CHAR,""				S_DIST_08 CHAR,""				S_DIST_09 CHAR,""				S_DIST_10 CHAR,""				S_YTD INT,""				S_ORDER_CNT INT,""				S_REMOTE_CNT INT,""				S_DATA CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX S_IND ON STOCK (S_W_ID, S_I_ID);""	END;"	;	str = ut_str_catenate(str1, str2);	query = pars_sql(str);	mem_free(str);	tm = ut_clock();	printf("Wall time for test %lu milliseconds\n", tm - oldtm);	/*-----------------------------------------------------------*/	printf("\n\nPopulate TPC-C tables\n\n");	str1 = "	PROCEDURE POPULATE_TABLES () IS""""	i INT;""	j INT;""	k INT;""	t INT;""	string CHAR;""	rnd1 INT;""	rnd2 INT;""	n_items INT;""	n_warehouses INT;""	n_districts INT;""	n_customers INT;""""	BEGIN""""	n_items := 200;""	n_warehouses := 1;""	n_districts := 10;""	n_customers := 200;""""	PRINTF('Starting to populate ITEMs');""""	FOR i IN 1 .. n_items LOOP""		rnd1 := RND(26, 50);""		string := RND_STR(rnd1);""""		IF (RND(0, 9) = 0) THEN""			rnd2 := RND(0, rnd1 - 8);""			REPLSTR(string, 'ORIGINAL', rnd2, 8);""			COMMIT WORK;""		END IF;""""		INSERT INTO ITEM VALUES (TO_BINARY(i, 3),""					TO_BINARY(RND(1, 10000), 3),""					RND_STR(RND(14, 24)),""					RND(100, 10000),""					string);""	END LOOP;""""	FOR i IN 1 .. n_warehouses LOOP""		PRINTF('Starting to populate warehouse number ', i);""		INSERT INTO WAREHOUSE VALUES (TO_BINARY(i, 2),""					RND_STR(RND(6, 10)),""					RND_STR(RND(10, 20)),""					RND_STR(RND(10, 20)),""					RND_STR(RND(10, 20)),""					RND_STR(2),""					CONCAT(SUBSTR(TO_CHAR(RND(0, 9999)),""							6, 4),""						'11111'),""					RND(0, 2000),""					0,""					0);""		FOR j IN 1 .. n_items LOOP""""			rnd1 := RND(26, 50);""			string := RND_STR(rnd1);""""			IF (RND(0, 9) = 0) THEN""				rnd2 := RND(0, rnd1 - 8);""				REPLSTR(string, 'ORIGINAL', rnd2, 8);""				COMMIT WORK;""			END IF; """"			INSERT INTO STOCK VALUES (TO_BINARY(j, 3),""						TO_BINARY(i, 2),""						RND(10, 100),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						RND_STR(24),""						0, 0, 0,""						string);""		END LOOP;"	;	str2 ="		FOR j IN 1 .. n_districts LOOP""""			COMMIT WORK;""			PRINTF('Starting to populate district number ', j);""			INSERT INTO DISTRICT VALUES (TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						RND_STR(RND(6, 10)),""						RND_STR(RND(10, 20)),""						RND_STR(RND(10, 20)),""						RND_STR(RND(10, 20)),""						RND_STR(2),""						CONCAT(SUBSTR(""							TO_CHAR(RND(0, 9999)),""							6, 4),""						'11111'),""						RND(0, 2000),""						0,""						0,""						3001);""""			FOR k IN 1 .. n_customers LOOP""""				string := 'GC';""""				IF (RND(0, 9) = 7) THEN""					COMMIT WORK;""					string := 'BC';""				END IF;""				""				INSERT INTO CUSTOMER VALUES (""						TO_BINARY(k, 3),""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						RND_STR(RND(8, 16)),""						'OE',""						CONCAT('NAME',""							TO_CHAR(k / 3)),""						RND_STR(RND(10, 20)),""						RND_STR(RND(10, 20)),""						RND_STR(RND(10, 20)),""						RND_STR(2),""						CONCAT(SUBSTR(""							TO_CHAR(RND(0, 9999)),""							6, 4),""						'11111'),""						RND_STR(16),""						SYSDATE(), 0,""						string,""						0, 5000000,""						RND(0, 5000),""						0, 0, 0, 0, 0, 0,""						RND_STR(RND(300, 500)));"	;	str3 ="				INSERT INTO HISTORY VALUES (""						TO_BINARY(k, 3),""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						SYSDATE(),""						1000,""						RND_STR(RND(12, 24)));""""				rnd1 := RND(5, 15);""""				INSERT INTO ORDERS VALUES (""						k,""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						TO_BINARY(k, 3),""						SYSDATE(),""						RND(1, 10),""						rnd1,""						'1');""""				FOR t IN 1 .. rnd1 LOOP""					INSERT INTO ORDER_LINE VALUES (""						k,""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2),""						TO_BINARY(t, 1),""						TO_BINARY(""							RND(0, n_items - 1),""							3),""						TO_BINARY(i, 2),""						SYSDATE(),""						RND(0, 99),""						RND(0, 9999),""						RND_STR(24));""				END LOOP;""			END LOOP;""			""			FOR k IN (2 * n_customers) / 3 .. n_customers LOOP""				""				INSERT INTO NEW_ORDER VALUES (""						k,""						TO_BINARY(j + 47, 1),""						TO_BINARY(i, 2));""			END LOOP;""		END LOOP;""	END LOOP;	""	""	COMMIT WORK;""	END;"	;	str4 = ut_str_catenate(str1, str2);	str = ut_str_catenate(str4, str3);		query = pars_sql(str);	mem_free(str);	mem_free(str4);		tm = ut_clock();	printf("Wall time for test %lu milliseconds\n", tm - oldtm);	/*-----------------------------------------------------------*/	str = "	PROCEDURE PRINT_TABLES () IS""	BEGIN""""	/* PRINTF('Printing ITEM table:');""""	ROW_PRINTF""		SELECT *""		FROM ITEM;""""	PRINTF('Printing WAREHOUSE table:');""""	ROW_PRINTF""		SELECT *""		FROM WAREHOUSE;""""	PRINTF('Printing STOCK table:');""""	ROW_PRINTF""		SELECT *""		FROM STOCK;""""	PRINTF('Printing DISTRICT table:');""""	ROW_PRINTF""		SELECT *""		FROM DISTRICT;""""	PRINTF('Printing CUSTOMER table:');""""	ROW_PRINTF""		SELECT *""		FROM CUSTOMER;""""	PRINTF('Printing HISTORY table:');""""	ROW_PRINTF""		SELECT *""		FROM HISTORY;""""	PRINTF('Printing ORDERS table:');""""	ROW_PRINTF""		SELECT *""		FROM ORDERS;""""	PRINTF('Printing ORDER_LINE table:');""""	ROW_PRINTF""		SELECT *""		FROM ORDER_LINE""			WHERE OL_O_ID >= 3000; */""""	PRINTF('Printing NEW_ORDER table:');""""	ROW_PRINTF""		SELECT *""		FROM NEW_ORDER;""""	COMMIT WORK;""	END;"	;	print_query = pars_sql(str);	/*-----------------------------------------------------------*/	commit_query = pars_sql("	PROCEDURE COMMIT_TEST () IS""	""	BEGIN""	COMMIT WORK;""	END;"	);		/*-----------------------------------------------------------*/	str1 =	"	PROCEDURE NEW_ORDER () IS"""" 	i INT;"" 	n_items INT;"" 	n_warehouses INT;"" 	n_districts INT;"" 	n_customers INT;""	w_tax INT;"" 	c_w_id CHAR;"" 	c_d_id CHAR;"" 	c_id CHAR;"" 	c_discount INT;"" 	c_last CHAR;"" 	c_credit CHAR;"" 	d_tax INT;"" 	o_id INT;"" 	o_ol_cnt INT;"" 	ol_i_id CHAR;"" 	o_entry_d INT;"" 	o_all_local CHAR;"" 	i_price INT;"" 	i_name CHAR;"" 	i_data CHAR;"" 	s_quantity INT;"" 	s_data CHAR;"" 	s_dist_01 CHAR;"" 	s_dist_02 CHAR;"" 	s_dist_03 CHAR;"" 	s_dist_04 CHAR;"" 	s_dist_05 CHAR;"" 	s_dist_06 CHAR;"" 	s_dist_07 CHAR;"" 	s_dist_08 CHAR;"" 	s_dist_09 CHAR;"" 	s_dist_10 CHAR;"" 	bg CHAR;"" 	ol_quantity INT;"" 	ol_amount INT;"" 	ol_supply_w_id CHAR;"" 	ol_dist_info CHAR;"" 	total INT;"""" 	DECLARE CURSOR district_cursor IS"" 		SELECT D_NEXT_O_ID, D_TAX"" 		FROM DISTRICT"" 			WHERE D_ID = c_d_id AND D_W_ID = c_w_id"" 			FOR UPDATE;"""" 	DECLARE CURSOR stock_cursor IS"" 		SELECT S_QUANTITY, S_DATA,""				S_DIST_01, S_DIST_02, S_DIST_03, S_DIST_04,""				S_DIST_05, S_DIST_06, S_DIST_07, S_DIST_08,""				S_DIST_09, S_DIST_10"" 		FROM STOCK"" 			WHERE S_W_ID = ol_supply_w_id AND S_I_ID = ol_i_id"" 			FOR UPDATE;"	;	str2 =	" 	BEGIN"" 	"" 	n_items := 200;"" 	n_warehouses := 1;"" 	n_districts := 10;"" 	n_customers := 200;"" 	"" 	c_w_id := TO_BINARY(RND(1, n_warehouses), 2);"" 	c_d_id := TO_BINARY(RND(1, n_districts) + 47, 1);"" 	c_id := TO_BINARY(RND(1, n_customers), 3);"""" 	o_ol_cnt := RND(5, 15);"" 	o_all_local := '1';"" 	bg := 'GGGGGGGGGGGGGGG';""	total := 0;""	""	SELECT W_TAX INTO w_tax""	FROM WAREHOUSE""		WHERE W_ID = c_w_id;""""	OPEN district_cursor;""""	FETCH district_cursor INTO o_id, d_tax;""""	/* PRINTF('C-warehouse id ', BINARY_TO_NUMBER(c_w_id),""		' C-district id ', c_d_id,""		' order id ', o_id, ' linecount ', o_ol_cnt); */""""	UPDATE DISTRICT SET D_NEXT_O_ID = o_id + 1""		WHERE CURRENT OF district_cursor;""""	CLOSE district_cursor;""""	SELECT C_DISCOUNT, C_LAST, C_CREDIT INTO c_discount, c_last, c_credit""	FROM CUSTOMER""		WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id AND C_ID = c_id;"""	;	str3 =" 	FOR i IN 1 .. o_ol_cnt LOOP"""

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -