diff --git a/config/memsql_tpcc_config.xml b/config/memsql_tpcc_config.xml new file mode 100644 index 000000000..15b9c1e33 --- /dev/null +++ b/config/memsql_tpcc_config.xml @@ -0,0 +1,43 @@ + + + + + memsql + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1:3306/tpcc + root + + TRANSACTION_READ_COMMITTED + + + 16 + + + 64 + + + + unlimited + 45,43,4,4,4 + + + + + + + NewOrder + + + Payment + + + OrderStatus + + + Delivery + + + StockLevel + + + diff --git a/config/memsql_tpch_config.xml b/config/memsql_tpch_config.xml new file mode 100644 index 000000000..91ab40ea4 --- /dev/null +++ b/config/memsql_tpch_config.xml @@ -0,0 +1,142 @@ + + + + + memsql + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1:3306/tpch + root + + TRANSACTION_READ_COMMITTED + + + data/tpch1 + + + + tbl + + + 20 + + + 1 + + + true + unlimited + all + + + true + unlimited + even + + + true + unlimited + odd + + + + + + + odd + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 + + + even + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 + + + + Q1 + 1 + + + Q2 + 2 + + + Q3 + 3 + + + Q4 + 4 + + + Q5 + 5 + + + Q6 + 6 + + + Q7 + 7 + + + Q8 + 8 + + + Q9 + 9 + + + Q10 + 10 + + + Q11 + 11 + + + Q12 + 12 + + + Q13 + 13 + + + Q14 + 14 + + + Q15 + 15 + + + Q16 + 16 + + + Q17 + 17 + + + Q18 + 18 + + + Q19 + 19 + + + Q20 + 20 + + + Q21 + 21 + + + Q22 + 22 + + + diff --git a/config/memsql_wikipedia_config.xml b/config/memsql_wikipedia_config.xml new file mode 100644 index 000000000..d0b6f7d3e --- /dev/null +++ b/config/memsql_wikipedia_config.xml @@ -0,0 +1,45 @@ + + + + + memsql + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1:3306/wikipedia + root + + TRANSACTION_READ_COMMITTED + + + 1 + + + config/traces/wikipedia-100k.trace + 10 + 10.1. + + + 100 + + + + 1000 + 0.07,0.07,91.2656,0.9219 + + + + + + + AddWatchList + + + RemoveWatchList + + + GetPageAnonymous + + + GetPageAuthenticated + + + diff --git a/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-memsql-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-memsql-ddl.sql new file mode 100644 index 000000000..073045d53 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-memsql-ddl.sql @@ -0,0 +1,183 @@ +-- TODO: C_SINCE ON UPDATE CURRENT_TIMESTAMP, + +-- woonhak, turn off foreign key check, reference tpcc-mysql and tpcc specification +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; + +DROP TABLE IF EXISTS CUSTOMER; +DROP TABLE IF EXISTS DISTRICT; +DROP TABLE IF EXISTS HISTORY; +DROP TABLE IF EXISTS ITEM; +DROP TABLE IF EXISTS NEW_ORDER; +DROP TABLE IF EXISTS OORDER; +DROP TABLE IF EXISTS ORDER_LINE; +DROP TABLE IF EXISTS STOCK; +DROP TABLE IF EXISTS WAREHOUSE; + +CREATE TABLE CUSTOMER ( + C_W_ID INT NOT NULL, + C_D_ID INT NOT NULL, + C_ID INT NOT NULL, + C_DISCOUNT DECIMAL(4,4) NOT NULL, + C_CREDIT CHAR(2) NOT NULL, + C_LAST VARCHAR(16) NOT NULL, + C_FIRST VARCHAR(16) NOT NULL, + C_CREDIT_LIM DECIMAL(12,2) NOT NULL, + C_BALANCE DECIMAL(12,2) NOT NULL, + C_YTD_PAYMENT FLOAT NOT NULL, + C_PAYMENT_CNT INT NOT NULL, + C_DELIVERY_CNT INT NOT NULL, + C_STREET_1 VARCHAR(20) NOT NULL, + C_STREET_2 VARCHAR(20) NOT NULL, + C_CITY VARCHAR(20) NOT NULL, + C_STATE CHAR(2) NOT NULL, + C_ZIP CHAR(9) NOT NULL, + C_PHONE CHAR(16) NOT NULL, + C_SINCE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + C_MIDDLE CHAR(2) NOT NULL, + C_DATA VARCHAR(500) NOT NULL, + PRIMARY KEY (C_W_ID,C_D_ID,C_ID) +); + + +CREATE TABLE DISTRICT ( + D_W_ID INT NOT NULL, + D_ID INT NOT NULL, + D_YTD DECIMAL(12,2) NOT NULL, + D_TAX DECIMAL(4,4) NOT NULL, + D_NEXT_O_ID INT NOT NULL, + D_NAME VARCHAR(10) NOT NULL, + D_STREET_1 VARCHAR(20) NOT NULL, + D_STREET_2 VARCHAR(20) NOT NULL, + D_CITY VARCHAR(20) NOT NULL, + D_STATE CHAR(2) NOT NULL, + D_ZIP CHAR(9) NOT NULL, + PRIMARY KEY (D_W_ID,D_ID) +); + +-- TODO: H_DATE ON UPDATE CURRENT_TIMESTAMP + +CREATE TABLE HISTORY ( + H_C_ID INT NOT NULL, + H_C_D_ID INT NOT NULL, + H_C_W_ID INT NOT NULL, + H_D_ID INT NOT NULL, + H_W_ID INT NOT NULL, + H_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + H_AMOUNT DECIMAL(6,2) NOT NULL, + H_DATA VARCHAR(24) NOT NULL +); + + +CREATE TABLE ITEM ( + I_ID INT NOT NULL, + I_NAME VARCHAR(24) NOT NULL, + I_PRICE DECIMAL(5,2) NOT NULL, + I_DATA VARCHAR(50) NOT NULL, + I_IM_ID INT NOT NULL, + PRIMARY KEY (I_ID) +); + + +CREATE TABLE NEW_ORDER ( + NO_W_ID INT NOT NULL, + NO_D_ID INT NOT NULL, + NO_O_ID INT NOT NULL, + PRIMARY KEY (NO_W_ID,NO_D_ID,NO_O_ID) +); + +-- TODO: O_ENTRY_D ON UPDATE CURRENT_TIMESTAMP + +CREATE TABLE OORDER ( + O_W_ID INT NOT NULL, + O_D_ID INT NOT NULL, + O_ID INT NOT NULL, + O_C_ID INT NOT NULL, + O_CARRIER_ID INT DEFAULT NULL, + O_OL_CNT DECIMAL(2,0) NOT NULL, + O_ALL_LOCAL DECIMAL(1,0) NOT NULL, + O_ENTRY_D TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (O_W_ID,O_D_ID,O_ID), + UNIQUE (O_W_ID,O_D_ID,O_C_ID,O_ID) +); + + +CREATE TABLE ORDER_LINE ( + OL_W_ID INT NOT NULL, + OL_D_ID INT NOT NULL, + OL_O_ID INT NOT NULL, + OL_NUMBER INT NOT NULL, + OL_I_ID INT NOT NULL, + OL_DELIVERY_D TIMESTAMP NULL DEFAULT NULL, + OL_AMOUNT DECIMAL(6,2) NOT NULL, + OL_SUPPLY_W_ID INT NOT NULL, + OL_QUANTITY DECIMAL(2,0) NOT NULL, + OL_DIST_INFO CHAR(24) NOT NULL, + PRIMARY KEY (OL_W_ID,OL_D_ID,OL_O_ID,OL_NUMBER) +); + +CREATE TABLE STOCK ( + S_W_ID INT NOT NULL, + S_I_ID INT NOT NULL, + S_QUANTITY DECIMAL(4,0) NOT NULL, + S_YTD DECIMAL(8,2) NOT NULL, + S_ORDER_CNT INT NOT NULL, + S_REMOTE_CNT INT NOT NULL, + S_DATA VARCHAR(50) NOT NULL, + S_DIST_01 CHAR(24) NOT NULL, + S_DIST_02 CHAR(24) NOT NULL, + S_DIST_03 CHAR(24) NOT NULL, + S_DIST_04 CHAR(24) NOT NULL, + S_DIST_05 CHAR(24) NOT NULL, + S_DIST_06 CHAR(24) NOT NULL, + S_DIST_07 CHAR(24) NOT NULL, + S_DIST_08 CHAR(24) NOT NULL, + S_DIST_09 CHAR(24) NOT NULL, + S_DIST_10 CHAR(24) NOT NULL, + PRIMARY KEY (S_W_ID,S_I_ID) +); + +CREATE TABLE WAREHOUSE ( + W_ID INT NOT NULL, + W_YTD DECIMAL(12,2) NOT NULL, + W_TAX DECIMAL(4,4) NOT NULL, + W_NAME VARCHAR(10) NOT NULL, + W_STREET_1 VARCHAR(20) NOT NULL, + W_STREET_2 VARCHAR(20) NOT NULL, + W_CITY VARCHAR(20) NOT NULL, + W_STATE CHAR(2) NOT NULL, + W_ZIP CHAR(9) NOT NULL, + PRIMARY KEY (W_ID) +); + +-- INDEXES +CREATE INDEX IDX_CUSTOMER_NAME ON CUSTOMER (C_W_ID,C_D_ID,C_LAST,C_FIRST); + +-- woohak, add constraints. MySQL/InnoDB storage engine is kind of IoT. +-- and add constraints and make indexes later aretoo slow when running a single thread. +-- so I just add create index and foreign key constraints before loading data. + +-- already created +-- CREATE INDEX IDX_CUSTOMER ON CUSTOMER (C_W_ID,C_D_ID,C_LAST,C_FIRST); +CREATE INDEX IDX_ORDER ON OORDER (O_W_ID,O_D_ID,O_C_ID,O_ID); +-- tpcc-mysql create two indexes for the foreign key constraints, Is it really necessary? +-- CREATE INDEX FKEY_STOCK_2 ON STOCK (S_I_ID); +-- CREATE INDEX FKEY_ORDER_LINE_2 ON ORDER_LINE (OL_SUPPLY_W_ID,OL_I_ID); + +-- add 'ON DELETE CASCADE' to clear table work correctly + +-- ALTER TABLE DISTRICT ADD CONSTRAINT FKEY_DISTRICT_1 FOREIGN KEY(D_W_ID) REFERENCES WAREHOUSE(W_ID) ON DELETE CASCADE; +-- ALTER TABLE CUSTOMER ADD CONSTRAINT FKEY_CUSTOMER_1 FOREIGN KEY(C_W_ID,C_D_ID) REFERENCES DISTRICT(D_W_ID,D_ID) ON DELETE CASCADE ; +-- ALTER TABLE HISTORY ADD CONSTRAINT FKEY_HISTORY_1 FOREIGN KEY(H_C_W_ID,H_C_D_ID,H_C_ID) REFERENCES CUSTOMER(C_W_ID,C_D_ID,C_ID) ON DELETE CASCADE; +-- ALTER TABLE HISTORY ADD CONSTRAINT FKEY_HISTORY_2 FOREIGN KEY(H_W_ID,H_D_ID) REFERENCES DISTRICT(D_W_ID,D_ID) ON DELETE CASCADE; +-- ALTER TABLE NEW_ORDER ADD CONSTRAINT FKEY_NEW_ORDER_1 FOREIGN KEY(NO_W_ID,NO_D_ID,NO_O_ID) REFERENCES OORDER(O_W_ID,O_D_ID,O_ID) ON DELETE CASCADE; +-- ALTER TABLE OORDER ADD CONSTRAINT FKEY_ORDER_1 FOREIGN KEY(O_W_ID,O_D_ID,O_C_ID) REFERENCES CUSTOMER(C_W_ID,C_D_ID,C_ID) ON DELETE CASCADE; +-- ALTER TABLE ORDER_LINE ADD CONSTRAINT FKEY_ORDER_LINE_1 FOREIGN KEY(OL_W_ID,OL_D_ID,OL_O_ID) REFERENCES OORDER(O_W_ID,O_D_ID,O_ID) ON DELETE CASCADE; +-- ALTER TABLE ORDER_LINE ADD CONSTRAINT FKEY_ORDER_LINE_2 FOREIGN KEY(OL_SUPPLY_W_ID,OL_I_ID) REFERENCES STOCK(S_W_ID,S_I_ID) ON DELETE CASCADE; +-- ALTER TABLE STOCK ADD CONSTRAINT FKEY_STOCK_1 FOREIGN KEY(S_W_ID) REFERENCES WAREHOUSE(W_ID) ON DELETE CASCADE; +-- ALTER TABLE STOCK ADD CONSTRAINT FKEY_STOCK_2 FOREIGN KEY(S_I_ID) REFERENCES ITEM(I_ID) ON DELETE CASCADE; + + +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; + diff --git a/src/com/oltpbenchmark/benchmarks/tpcc/dialects/memsql-dialects.xml b/src/com/oltpbenchmark/benchmarks/tpcc/dialects/memsql-dialects.xml new file mode 100644 index 000000000..58d807084 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpcc/dialects/memsql-dialects.xml @@ -0,0 +1,18 @@ + + + + + + SELECT D_NEXT_O_ID,D_TAX + FROM DISTRICT + WHERE D_W_ID = ? AND D_ID = ? + + + 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_I_ID = ? AND S_W_ID = ? + + + + diff --git a/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-memsql-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-memsql-ddl.sql new file mode 100644 index 000000000..c5073a532 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-memsql-ddl.sql @@ -0,0 +1,88 @@ +use tpch; +DROP TABLE IF EXISTS nation; +DROP TABLE IF EXISTS region; +DROP TABLE IF EXISTS part; +DROP TABLE IF EXISTS supplier; +DROP TABLE IF EXISTS partsupp; +DROP TABLE IF EXISTS orders; +DROP TABLE IF EXISTS customer; +DROP TABLE IF EXISTS lineitem; + +-- Sccsid: @(#)dss.ddl 2.1.8.1 +CREATE TABLE nation ( n_nationkey INTEGER NOT NULL, + n_name CHAR(25) NOT NULL, + n_regionkey INTEGER NOT NULL, + n_comment VARCHAR(152), + KEY(n_nationkey) using clustered columnstore); + +CREATE TABLE region ( r_regionkey INTEGER NOT NULL, + r_name CHAR(25) NOT NULL, + r_comment VARCHAR(152), + KEY(r_regionkey) using clustered columnstore); + +CREATE TABLE part ( p_partkey INTEGER NOT NULL, + p_name VARCHAR(55) NOT NULL, + p_mfgr CHAR(25) NOT NULL, + p_brand CHAR(10) NOT NULL, + p_type VARCHAR(25) NOT NULL, + p_size INTEGER NOT NULL, + p_container CHAR(10) NOT NULL, + p_retailprice DECIMAL(15,2) NOT NULL, + p_comment VARCHAR(23) NOT NULL, + KEY(p_partkey) using clustered columnstore); + +CREATE TABLE supplier ( s_suppkey INTEGER NOT NULL, + s_name CHAR(25) NOT NULL, + s_address VARCHAR(40) NOT NULL, + s_nationkey INTEGER NOT NULL, + s_phone CHAR(15) NOT NULL, + s_acctbal DECIMAL(15,2) NOT NULL, + s_comment VARCHAR(101) NOT NULL, + KEY(s_suppkey) using clustered columnstore); + +CREATE TABLE partsupp ( ps_partkey INTEGER NOT NULL, + ps_suppkey INTEGER NOT NULL, + ps_availqty INTEGER NOT NULL, + ps_supplycost DECIMAL(15,2) NOT NULL, + ps_comment VARCHAR(199) NOT NULL , + KEY(ps_partkey) using clustered columnstore); + +CREATE TABLE customer ( c_custkey INTEGER NOT NULL, + c_name VARCHAR(25) NOT NULL, + c_address VARCHAR(40) NOT NULL, + c_nationkey INTEGER NOT NULL, + c_phone CHAR(15) NOT NULL, + c_acctbal DECIMAL(15,2) NOT NULL, + c_mktsegment CHAR(10) NOT NULL, + c_comment VARCHAR(117) NOT NULL, + KEY(c_custkey) using clustered columnstore); + +CREATE TABLE orders ( o_orderkey INTEGER NOT NULL, + o_custkey INTEGER NOT NULL, + o_orderstatus CHAR(1) NOT NULL, + o_totalprice DECIMAL(15,2) NOT NULL, + o_orderdate DATE NOT NULL, + o_orderpriority CHAR(15) NOT NULL, + o_clerk CHAR(15) NOT NULL, + o_shippriority INTEGER NOT NULL, + o_comment VARCHAR(79) NOT NULL, + KEY(o_orderkey) using clustered columnstore); + +CREATE TABLE lineitem ( l_orderkey INTEGER NOT NULL, + l_partkey INTEGER NOT NULL, + l_suppkey INTEGER NOT NULL, + l_linenumber INTEGER NOT NULL, + l_quantity DECIMAL(15,2) NOT NULL, + l_extendedprice DECIMAL(15,2) NOT NULL, + l_discount DECIMAL(15,2) NOT NULL, + l_tax DECIMAL(15,2) NOT NULL, + l_returnflag CHAR(1) NOT NULL, + l_linestatus CHAR(1) NOT NULL, + l_shipdate DATE NOT NULL, + l_commitdate DATE NOT NULL, + l_receiptdate DATE NOT NULL, + l_shipinstruct CHAR(25) NOT NULL, + l_shipmode CHAR(10) NOT NULL, + l_comment VARCHAR(44) NOT NULL, + KEY(l_orderkey) using clustered columnstore); + diff --git a/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-memsql-ddl.sql b/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-memsql-ddl.sql new file mode 100644 index 000000000..5dc29dea9 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-memsql-ddl.sql @@ -0,0 +1,232 @@ +DROP TABLE IF EXISTS ipblocks; +CREATE TABLE ipblocks ( + ipb_id int NOT NULL, + ipb_address varbinary(1024) NOT NULL, + ipb_user int NOT NULL, + ipb_by int NOT NULL, + ipb_by_text varbinary(255) NOT NULL, + ipb_reason varbinary(1024) NOT NULL, + ipb_timestamp binary(14) NOT NULL, + ipb_auto tinyint NOT NULL, + ipb_anon_only tinyint NOT NULL, + ipb_create_account tinyint NOT NULL , + ipb_enable_autoblock tinyint NOT NULL , + ipb_expiry varbinary(14) NOT NULL, + ipb_range_start varbinary(1024) NOT NULL, + ipb_range_end varbinary(1024) NOT NULL, + ipb_deleted tinyint NOT NULL , + ipb_block_email tinyint NOT NULL , + ipb_allow_usertalk tinyint NOT NULL , + PRIMARY KEY (ipb_id), + UNIQUE KEY (ipb_id, ipb_address,ipb_user,ipb_auto,ipb_anon_only) +); +#UNIQUE (ipb_address(255),ipd_id, ipb_user,ipb_auto,ipb_anon_only) + +CREATE INDEX IDX_IPB_USER ON ipblocks (ipb_user); +CREATE INDEX IDX_IPB_RANGE ON ipblocks (ipb_range_start,ipb_range_end); +CREATE INDEX IDX_IPB_TIMESTAMP ON ipblocks (ipb_timestamp); +CREATE INDEX IDX_IPB_EXPIRY ON ipblocks (ipb_expiry); + +-- TOOD: user_id auto_increment +DROP TABLE IF EXISTS useracct; +CREATE TABLE useracct ( + user_id int unsigned NOT NULL auto_increment, + user_name varchar(255) NOT NULL, + user_real_name varchar(255) NOT NULL, + user_password varchar(1024) NOT NULL, + user_newpassword varchar(1024) NOT NULL, + user_newpass_time varchar(14) DEFAULT NULL, + user_email varchar(1024) NOT NULL, + user_options varchar(1024) NOT NULL, + user_touched varchar(14) NOT NULL, + user_token char(32) NOT NULL, + user_email_authenticated char(14) DEFAULT NULL, + user_email_token char(32) DEFAULT NULL, + user_email_token_expires char(14) DEFAULT NULL, + user_registration varchar(14) DEFAULT NULL, + user_editcount int DEFAULT NULL, + PRIMARY KEY (user_id), + UNIQUE (user_id, user_name) +); +--UNIQUE (user_name) +CREATE INDEX IDX_USER_EMAIL_TOKEN ON useracct (user_email_token); + +-- TODO: log_id auto_increment +DROP TABLE IF EXISTS logging; +CREATE TABLE logging ( + log_id int unsigned NOT NULL auto_increment, + log_type varbinary(32) NOT NULL, + log_action varbinary(32) NOT NULL, + log_timestamp binary(14) NOT NULL, + log_user int NOT NULL, + log_namespace int NOT NULL, + log_title varbinary(255) NOT NULL, + log_comment varbinary(255) NOT NULL, + log_params varbinary(1024) NOT NULL, + log_deleted tinyint NOT NULL DEFAULT 0, + log_user_text varbinary(255) NOT NULL, + log_page int DEFAULT NULL, + PRIMARY KEY (log_id, log_type) +); +CREATE INDEX IDX_LOG_TYPE_TIME ON logging (log_type,log_timestamp); +CREATE INDEX IDX_LOG_USER_TIME ON logging (log_user,log_timestamp); +CREATE INDEX IDX_LOG_PAGE_TIME ON logging (log_namespace,log_title,log_timestamp); +CREATE INDEX IDX_LOG_TIMES ON logging (log_timestamp); +CREATE INDEX IDX_LOG_USER_TYPE_TIME ON logging (log_user,log_type,log_timestamp); +CREATE INDEX IDX_LOG_PAGE_ID_TIME ON logging (log_page,log_timestamp); + +-- TODO: page_id auto_increment +DROP TABLE IF EXISTS page; +CREATE TABLE page ( + page_id int unsigned NOT NULL auto_increment, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(1024) NOT NULL, + page_counter bigint NOT NULL, + page_is_redirect tinyint NOT NULL, + page_is_new tinyint NOT NULL, + page_random double NOT NULL, + page_touched binary(14) NOT NULL, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id), + UNIQUE (page_id, page_namespace,page_title) +); +--UNIQUE (page_namespace,page_title) +CREATE INDEX IDX_PAGE_RANDOM ON page (page_random); +CREATE INDEX IDX_PAGE_LEN ON page (page_len); + +-- TODO: page_id auto_increment +DROP TABLE IF EXISTS page_backup; +CREATE TABLE page_backup ( + page_id int unsigned NOT NULL auto_increment, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(1024) NOT NULL, + page_counter bigint NOT NULL, + page_is_redirect tinyint NOT NULL, + page_is_new tinyint NOT NULL, + page_random double NOT NULL, + page_touched binary(14) NOT NULL, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id), + UNIQUE (page_id, page_namespace,page_title) +); +--UNIQUE (page_namespace,page_title) +CREATE INDEX IDX_PAGE_BACKUP_RANDOM ON page_backup (page_random); +CREATE INDEX IDX_PAGE_BACKUP_LEN ON page_backup (page_len); + +DROP TABLE IF EXISTS page_restrictions; +CREATE TABLE page_restrictions ( + pr_page int NOT NULL, + pr_type varbinary(60) NOT NULL, + pr_level varbinary(60) NOT NULL, + pr_cascade tinyint NOT NULL, + pr_user int DEFAULT NULL, + pr_expiry varbinary(14) DEFAULT NULL, + pr_id int NOT NULL, + PRIMARY KEY (pr_id), + UNIQUE(pr_id, pr_page, pr_type) +); +--UNIQUE (pr_page,pr_type) +CREATE INDEX IDX_PR_TYPELEVEL ON page_restrictions (pr_type,pr_level); +CREATE INDEX IDX_PR_LEVEL ON page_restrictions (pr_level); +CREATE INDEX IDX_PR_CASCADE ON page_restrictions (pr_cascade); + +-- TOOD: rc_id auto_increment +DROP TABLE IF EXISTS recentchanges; +CREATE TABLE recentchanges ( + rc_id int unsigned NOT NULL auto_increment, + rc_timestamp varbinary(14) NOT NULL, + rc_cur_time varbinary(14) NOT NULL, + rc_user int NOT NULL, + rc_user_text varbinary(255) NOT NULL, + rc_namespace int NOT NULL, + rc_title varbinary(255) NOT NULL, + rc_comment varbinary(255) NOT NULL, + rc_minor tinyint NOT NULL, + rc_bot tinyint NOT NULL, + rc_new tinyint NOT NULL DEFAULT 0, + rc_cur_id int NOT NULL, + rc_this_oldid int NOT NULL, + rc_last_oldid int NOT NULL, + rc_type tinyint NOT NULL, + rc_moved_to_ns tinyint NOT NULL, + rc_moved_to_title varbinary(255) NOT NULL, + rc_patrolled tinyint NOT NULL DEFAULT 0, + rc_ip varbinary(40) NOT NULL, + rc_old_len int DEFAULT NULL, + rc_new_len int DEFAULT NULL, + rc_deleted tinyint NOT NULL DEFAULT 0, + rc_logid int NOT NULL DEFAULT 0, + rc_log_type varbinary(255) DEFAULT NULL, + rc_log_action varbinary(255) DEFAULT NULL, + rc_params varbinary(1024), + PRIMARY KEY (rc_id), + UNIQUE(rc_id, rc_timestamp) +); +CREATE INDEX IDX_RC_TIMESTAMP ON recentchanges (rc_timestamp); +CREATE INDEX IDX_RC_NAMESPACE_TITLE ON recentchanges (rc_namespace,rc_title); +CREATE INDEX IDX_RC_CUR_ID ON recentchanges (rc_cur_id); +CREATE INDEX IDX_NEW_NAME_TIMESTAMP ON recentchanges (rc_new,rc_namespace,rc_timestamp); +CREATE INDEX IDX_RC_IP ON recentchanges (rc_ip); +CREATE INDEX IDX_RC_NS_USERTEXT ON recentchanges (rc_namespace,rc_user_text); +CREATE INDEX IDX_RC_USER_TEXT ON recentchanges (rc_user_text,rc_timestamp); + +-- TODO: rev_id auto_increment +DROP TABLE IF EXISTS revision; +CREATE TABLE revision ( + rev_id int unsigned NOT NULL auto_increment, + rev_page int NOT NULL, + rev_text_id int NOT NULL, + rev_comment varchar(1024) NOT NULL, + rev_user int NOT NULL, + rev_user_text varchar(255) NOT NULL, + rev_timestamp binary(14) NOT NULL, + rev_minor_edit tinyint NOT NULL, + rev_deleted tinyint NOT NULL, + rev_len int DEFAULT NULL, + rev_parent_id int DEFAULT NULL, + PRIMARY KEY (rev_id, rev_page, rev_parent_id), + UNIQUE (rev_id,rev_page, rev_parent_id) +); +--UNIQUE (rev_page,rev_id) +CREATE INDEX IDX_REV_TIMESTAMP ON revision (rev_timestamp); +CREATE INDEX IDX_PAGE_TIMESTAMP ON revision (rev_page,rev_timestamp); +CREATE INDEX IDX_USER_TIMESTAMP ON revision (rev_user,rev_timestamp); +CREATE INDEX IDX_USERTEXT_TIMESTAMP ON revision (rev_user_text,rev_timestamp); + +-- TODO old_id auto_increment +DROP TABLE IF EXISTS text; +CREATE TABLE text ( + old_id int unsigned NOT NULL auto_increment, + old_text mediumblob NOT NULL, + old_flags tinyblob NOT NULL, + old_page int DEFAULT NULL, + PRIMARY KEY (old_id, old_text) +); + +DROP TABLE IF EXISTS user_groups; +CREATE TABLE user_groups ( + ug_user int NOT NULL, + ug_group varbinary(16) NOT NULL +); +--UNIQUE (ug_user,ug_group) +CREATE INDEX IDX_UG_GROUP ON user_groups (ug_group); + +DROP TABLE IF EXISTS value_backup; +CREATE TABLE value_backup ( + table_name varchar(255) DEFAULT NULL, + maxid int DEFAULT NULL +); + +DROP TABLE IF EXISTS watchlist; +CREATE TABLE watchlist ( + wl_user int NOT NULL, + wl_namespace int NOT NULL, + wl_title varchar(255) NOT NULL, + wl_notificationtimestamp varchar(14) DEFAULT NULL +); +--UNIQUE (wl_user,wl_namespace,wl_title) +CREATE INDEX IDX_WL_NAMESPACE_TITLE ON watchlist (wl_namespace, wl_title); diff --git a/src/com/oltpbenchmark/types/DatabaseType.java b/src/com/oltpbenchmark/types/DatabaseType.java index c1395b48c..5bbd9e254 100644 --- a/src/com/oltpbenchmark/types/DatabaseType.java +++ b/src/com/oltpbenchmark/types/DatabaseType.java @@ -48,7 +48,8 @@ public enum DatabaseType { MONETDB("nl.cwi.monetdb.jdbc.MonetDriver", false, false), NUODB("com.nuodb.jdbc.Driver", true, false), TIMESTEN("com.timesten.jdbc.TimesTenDriver", true, false), - PELOTON("org.postgresql.Driver", false, false) + PELOTON("org.postgresql.Driver", false, false), + MEMSQL("com.mysql.jdbc.Driver",true,false) ; private DatabaseType(String driver, boolean escapeNames, boolean includeColNames) {