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

📄 tscli.c

📁 Mysql for Windows最新源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/************************************************************************Tests for the client, TPC-C, and TPC-D Query 5(c) 1996-1998 Innobase OyCreated 2/16/1996 Heikki Tuuri*************************************************************************/#include "univ.i"#include "ib_odbc.h"#include "mem0mem.h"#include "sync0sync.h"#include "os0thread.h"#include "os0proc.h"#include "os0sync.h"#include "srv0srv.h"ulint	n_exited	= 0;/* Disk wait simulation array */typedef struct srv_sim_disk_struct	srv_sim_disk_t;struct srv_sim_disk_struct{	os_event_t	event;	/* OS event to wait */	bool		event_set;/* TRUE if the event is in the set state */	bool		empty;	/* TRUE if this cell not reserved */};#define SRV_N_SIM_DISK_ARRAY	150srv_sim_disk_t	srv_sim_disk[SRV_N_SIM_DISK_ARRAY];/* Random counter used in disk wait simulation */ulint	srv_disk_rnd	= 982364761;ulint	srv_disk_n_active_threads	= 0;char	cli_srv_endpoint_name[100];char	cli_user_name[100];ulint	n_warehouses	= ULINT_MAX;ulint	n_customers_d	= ULINT_MAX;bool	is_tpc_d	= FALSE;ulint	n_rounds	= ULINT_MAX;ulint	n_users		= ULINT_MAX;ulint	startdate	= 0;ulint	enddate		= 0;bool	own_warehouse	= FALSE;ulint	mem_pool_size	= ULINT_MAX;/*********************************************************************Test for TPC-C. */ulinttest_init(/*======*/	void*	arg){	HENV	env;	HDBC	conn;	RETCODE	ret;	HSTMT	stat;	HSTMT	create_query;	HSTMT	populate_query;	char*	str;	char*	str1;	char*	str2;	char*	str3;	char*	str4;	char*	str5;	char*	str6;	char*	create_str;	char*	populate_str;	char*	commit_str;	char*	new_order_str;	char*	payment_str;	char*	order_status_str;	char*	delivery_str;	char*	stock_level_str;	char*	consistency_str;	char*	query_5_str;	char*	print_str;	char*	lock_wait_str;	char*	join_test_str;	char*	test_errors_str;	char*	test_group_commit_str;	char*	test_single_row_select_str;	char*	rollback_str;	char*	ibuf_test_str;	SDWORD	n_warehouses_buf;	SDWORD	n_warehouses_len;	SDWORD	n_customers_d_buf;	SDWORD	n_customers_d_len;		UT_NOT_USED(arg);		/*------------------------------------------------------*/	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) /*DOES_NOT_FIT_IN_MEMORY*/;"""	"	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) /*DOES_NOT_FIT_IN_MEMORY*/;"""	"	CREATE UNIQUE CLUSTERED INDEX S_IND ON STOCK (S_W_ID, S_I_ID);""""""	CREATE TABLE REGION (R_REGIONKEY INT, R_NAME CHAR, R_COMMENT CHAR);""""	CREATE UNIQUE CLUSTERED INDEX R_IND ON REGION (R_REGIONKEY);""""	CREATE TABLE NATION (N_NATIONKEY INT, N_NAME CHAR, N_REGIONKEY INT,""							N_COMMENT CHAR);""	CREATE UNIQUE CLUSTERED INDEX N_IND ON NATION (N_NATIONKEY);""""	CREATE TABLE NATION_2 (N2_NATIONKEY INT, N2_NAME CHAR,""					N2_REGIONKEY INT, N2_COMMENT CHAR);""	CREATE UNIQUE CLUSTERED INDEX N2_IND ON NATION_2 (N2_NAME);""""	CREATE TABLE SUPPLIER (S_SUPPKEY INT, S_NAME CHAR, S_ADDRESS CHAR,""					S_NATIONKEY INT, S_PHONE CHAR,""					S_ACCTBAL INT, S_COMMENT CHAR);""	CREATE UNIQUE CLUSTERED INDEX SU_IND ON SUPPLIER (S_SUPPKEY);""""	CREATE TABLE CUSTOMER_D (C_CUSTKEY INT, C_NAME CHAR, C_ADDRESS CHAR,""					C_NATIONKEY INT, C_PHONE CHAR,""					C_ACCTBAL INT, C_MKTSEGMENT CHAR,""					C_COMMENT CHAR);""	CREATE UNIQUE CLUSTERED INDEX CU_IND ON CUSTOMER_D (C_CUSTKEY);""""	CREATE TABLE ORDERS_D (O_ORDERKEY INT, O_CUSTKEY INT,""					O_ORDERSTATUS CHAR, O_TOTALPRICE INT,""					O_ORDERDATE INT,""					O_ORDERPRIORITY CHAR,""					O_CLERK CHAR, O_SHIPPRIORITY INT,""					O_COMMENT CHAR);""""	CREATE UNIQUE CLUSTERED INDEX OR_IND ON ORDERS_D (O_ORDERKEY);""""	CREATE INDEX OR_D_IND ON ORDERS_D (O_ORDERDATE, O_ORDERKEY,""								O_CUSTKEY);""""	CREATE TABLE LINEITEM (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT,""					L_LINENUMBER INT, L_QUANTITY INT,""					L_EXTENDEDPRICE INT,""					L_DISCOUNT INT, L_TAX INT,""					L_RETURNFLAG CHAR,""					L_LINESTATUS CHAR,""					L_SHIPDATE INT, L_COMMITDATE INT,""					L_RECEIPTDATE INT,""					L_SHIPINSTRUCT CHAR,""					L_SHIPMODE CHAR, L_COMMENT CHAR);"""	"	CREATE UNIQUE CLUSTERED INDEX L_IND ON LINEITEM (L_ORDERKEY,""							L_LINENUMBER);""""	CREATE TABLE ACCOUNTA (A_NUM INT, A_BAL INT);"""	"	CREATE UNIQUE CLUSTERED INDEX ACCOUNTA_IND ON ACCOUNTA (A_NUM);""""	CREATE TABLE TELLERA (T_NUM INT, T_BAL INT);"""	"	CREATE UNIQUE CLUSTERED INDEX TELLERA_IND ON TELLERA (T_NUM);""""	CREATE TABLE BRANCHA (B_NUM INT, B_BAL INT);"""	"	CREATE UNIQUE CLUSTERED INDEX BRANCHA_IND ON BRANCHA (B_NUM);""""	CREATE TABLE HISTORYA (H_NUM INT, H_TEXT CHAR);"""	"	CREATE CLUSTERED INDEX HISTORYA_IND ON HISTORYA (H_NUM);""""	CREATE TABLE JTEST1 (JT1_A INT, JT1_B INT);"""	"	CREATE UNIQUE CLUSTERED INDEX JT_IND1 ON JTEST1 (JT1_A);""""	CREATE TABLE JTEST2 (JT2_A INT, JT2_B INT);"""	"	CREATE UNIQUE CLUSTERED INDEX JT_IND2 ON JTEST2 (JT2_A);""""	CREATE TABLE IBUF_TEST (IB_A INT, IB_B CHAR) DOES_NOT_FIT_IN_MEMORY;"""	"	CREATE UNIQUE CLUSTERED INDEX IBUF_IND ON IBUF_TEST (IB_A);""	END;"	;	create_str = ut_str_catenate(str1, str2);	/*-----------------------------------------------------------*/	str1 = "	PROCEDURE POPULATE_TABLES (n_warehouses IN INT, n_customers_d""								IN INT) IS""""	i INT;""	j INT;""	k INT;""	t INT;""	string CHAR;""	rnd1 INT;""	rnd2 INT;""	rnd INT;""	n_items INT;""	n_districts INT;""	n_customers INT;""""	BEGIN""""/**********************************************************/""	PRINTF('Starting Mikko-test');""""	FOR i IN 1 .. 5 LOOP""		INSERT INTO IBUF_TEST VALUES (i, 'Mikko');""	END LOOP;""""	/* PRINTF('Printing rows from Mikko-test:');""""	ROW_PRINTF SELECT * FROM IBUF_TEST; */""""	SELECT SUM(IB_A) INTO t FROM IBUF_TEST;""""	PRINTF('Sum of 1 to ', i, ' is ', t);""	ASSERT(t = (i * (i + 1)) / 2);""""	ROLLBACK WORK;""""	PRINTF('Printing rows from Mikko-test after rollback:');""""	ROW_PRINTF SELECT * FROM IBUF_TEST;""""/**********************************************************/""	FOR i IN 0 .. 100 LOOP""		INSERT INTO ACCOUNTA VALUES (i, i);""		INSERT INTO TELLERA VALUES (i, i);""		INSERT INTO BRANCHA VALUES (i, i);""		INSERT INTO HISTORYA VALUES (i, '12345678901234567890');""	END LOOP;""""	COMMIT WORK;""/**********************************************************/""/*	PRINTF('Populating ibuf test tables');""	FOR i IN 1 .. 1000 LOOP""		INSERT INTO IBUF_TEST VALUES (i, RND_STR(RND(1, 2000)));""	END LOOP;""	PRINTF('Ibuf test tables populated');""	COMMIT WORK; */""""	n_items := 200;""	n_districts := 10;""	n_customers := 20;""""	PRINTF('Starting to populate ITEMs');""""	FOR i IN 1 .. n_items LOOP""		rnd1 := RND(26, 50);""		string := RND_STR(rnd1);""""		IF (RND(0, 99) < 10) THEN""			rnd2 := RND(0, rnd1 - 8);""			REPLSTR(string, 'ORIGINAL', rnd2, 8);""		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;""	COMMIT WORK;""""	FOR i IN 1 .. n_warehouses LOOP""		COMMIT WORK;""		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, 99) < 10) THEN""				rnd2 := RND(0, rnd1 - 8);""				REPLSTR(string, 'ORIGINAL', rnd2, 8);""			END IF; """"			INSERT INTO STOCK VALUES (TO_BINARY(j, 3),""						TO_BINARY(i, 2),""						91,""						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""""		/* 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, 99) < 10) THEN""					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(1, n_items),""							3),""						TO_BINARY(i, 2),""						NULL,""						91,""						RND(0, 9999),""						RND_STR(24));""				END LOOP;""			END LOOP;""			""			FOR k IN 1   /* + (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;""""	PRINTF('Populating TPC-D tables');""""	FOR i IN 0 .. 4 LOOP""		/* We set the last columns to a long character string, to""		reduce latch contention on region and nation database pages.""		A similar effect could be achieved by setting the page""		fillfactor in these tables low. */""""		INSERT INTO REGION VALUES (i, CONCAT('Region', TO_CHAR(i),""							'               '),""						RND_STR(1500 + RND(1, 152)));""		FOR j IN i * 5 .. i * 5 + 4 LOOP""			INSERT INTO NATION VALUES (j,""					CONCAT('Nation', TO_CHAR(j),""							'               '),""					i, RND_STR(1500 + RND(1, 152)));""			INSERT INTO NATION_2 VALUES (j,""					CONCAT('Nation', TO_CHAR(j),""							'               '),""					i, RND_STR(1500 + RND(1, 152)));""		END LOOP;""	END LOOP;""""	COMMIT WORK;"""

⌨️ 快捷键说明

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