diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..824a8f280 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 18b43b946..5f8fb7ddb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ bin/ /build/ +out/ output.raw output.res .classpath @@ -19,4 +20,18 @@ results *~ # maven output -target \ No newline at end of file +target +results + +# intellij files +*.idea +*.iml + +# Traces +*.trace + +# DBGEN +tpch/dbgen/ + +# nohup +nohup.out diff --git a/config/tpcc_config_comdb2.xml b/config/tpcc_config_comdb2.xml new file mode 100644 index 000000000..563756880 --- /dev/null +++ b/config/tpcc_config_comdb2.xml @@ -0,0 +1,43 @@ + + + + + comdb2 + com.bloomberg.comdb2.jdbc.Driver + + + + TRANSACTION_READ_COMMITTED + + + 16 + + + 16 + + + + unlimited + 45,43,4,4,4 + + + + + + + NewOrder + + + Payment + + + OrderStatus + + + Delivery + + + StockLevel + + + diff --git a/config/tpch_config_comdb2.xml b/config/tpch_config_comdb2.xml new file mode 100644 index 000000000..767aff16d --- /dev/null +++ b/config/tpch_config_comdb2.xml @@ -0,0 +1,140 @@ + + + + + comdb2 + com.bloomberg.comdb2.jdbc.Driver + jdbc:comdb2://localhost/tpch?statement_query_effects=1 + TRANSACTION_READ_COMMITTED + + + tpch/dbgen + + + + tbl + + + 1 + + + 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/wikipedia_config_comdb2.xml b/config/wikipedia_config_comdb2.xml new file mode 100644 index 000000000..f1f441e83 --- /dev/null +++ b/config/wikipedia_config_comdb2.xml @@ -0,0 +1,48 @@ + + + + + comdb2 + com.bloomberg.comdb2.jdbc.Driver + + + + TRANSACTION_READ_COMMITTED + + + 100 + + + config/traces/wikipedia-100k.trace + 10 + 10.1. + + + 15 + + + + unlimited + 1.9882,1.9882,0.0,93.1837,2.8399 + + + + + + + AddWatchList + + + RemoveWatchList + + + UpdatePage + + + GetPageAnonymous + + + GetPageAuthenticated + + + diff --git a/lib/cdb2jdbc-2.0.0-shaded.jar b/lib/cdb2jdbc-2.0.0-shaded.jar new file mode 100644 index 000000000..ee3bd24bf Binary files /dev/null and b/lib/cdb2jdbc-2.0.0-shaded.jar differ diff --git a/log4j.properties b/log4j.properties index 88932326c..246c7a514 100644 --- a/log4j.properties +++ b/log4j.properties @@ -12,6 +12,7 @@ log4j.logger.com.oltpbenchmark=INFO log4j.logger.com.oltpbenchmark.api=INFO # Benchmarks +log4j.logger.com.oltpbenchmark.benchmarks.tpcc=INFO log4j.logger.com.oltpbenchmark.benchmarks.tatp=INFO log4j.logger.com.oltpbenchmark.benchmarks.twitter=INFO log4j.logger.com.oltpbenchmark.benchmarks.wikipedia=INFO diff --git a/run/runTPCC.sh b/run/runTPCC.sh index e441a5b45..0ec596370 100755 --- a/run/runTPCC.sh +++ b/run/runTPCC.sh @@ -1,2 +1,2 @@ -java -Xmx1024m -cp `run/classpath.sh` com.oltpbenchmark.DBWorkload -b tpcc -c config/sample_tpcc_config.xml --execute true +java -Xmx1024m -cp `run/classpath.sh` com.oltpbenchmark.DBWorkload -b tpcc -c config/tpcc_config_db2.xml --execute true diff --git a/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-comdb2-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-comdb2-ddl.sql new file mode 100644 index 000000000..cb46b17a9 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-comdb2-ddl.sql @@ -0,0 +1,162 @@ +-- TODO: c_since ON UPDATE CURRENT_TIMESTAMP, + +DROP TABLE IF EXISTS order_line; +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 datetime NULL DEFAULT NULL, + ol_amount double NOT NULL, + ol_supply_w_id int NOT NULL, + ol_quantity double NOT NULL, + ol_dist_info char(24) NOT NULL, + PRIMARY KEY (ol_w_id,ol_d_id,ol_o_id,ol_number) +); + +DROP TABLE IF EXISTS new_order; +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) +); + +DROP TABLE IF EXISTS stock; +CREATE TABLE stock ( + s_w_id int NOT NULL, + s_i_id int NOT NULL, + s_quantity double NOT NULL, + s_ytd double 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) +); + +-- TODO: o_entry_d ON UPDATE CURRENT_TIMESTAMP +DROP TABLE IF EXISTS oorder; +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, + o_ol_cnt double NOT NULL, + o_all_local double NOT NULL, + o_entry_d datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (o_w_id,o_d_id,o_id) +); + +-- TODO: h_date ON UPDATE CURRENT_TIMESTAMP +DROP TABLE IF EXISTS history; +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 datetime DEFAULT CURRENT_TIMESTAMP, + h_amount double NOT NULL, + h_data varchar(24) NOT NULL +); + +DROP TABLE IF EXISTS customer; +CREATE TABLE customer ( + c_w_id int NOT NULL, + c_d_id int NOT NULL, + c_id int NOT NULL, + c_discount double NOT NULL, + c_credit char(3) NOT NULL, + c_last varchar(16) NOT NULL, + c_first varchar(16) NOT NULL, + c_credit_lim double NOT NULL, + c_balance double 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(3) NOT NULL, + c_zip char(10) NOT NULL, + c_phone char(17) NOT NULL, + c_since datetime DEFAULT CURRENT_TIMESTAMP, + c_middle char(3) NOT NULL, + c_data varchar(500) NOT NULL, + PRIMARY KEY (c_w_id,c_d_id,c_id) +); + +DROP TABLE IF EXISTS district; +CREATE TABLE district ( + d_w_id int NOT NULL, + d_id int NOT NULL, + d_ytd double NOT NULL, + d_tax double 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(3) NOT NULL, + d_zip char(10) NOT NULL, + PRIMARY KEY (d_w_id,d_id) +); + + +DROP TABLE IF EXISTS item; +CREATE TABLE item ( + i_id int NOT NULL, + i_name varchar(24) NOT NULL, + i_price double NOT NULL, + i_data varchar(50) NOT NULL, + i_im_id int NOT NULL, + PRIMARY KEY (i_id) +); + +DROP TABLE IF EXISTS warehouse; +CREATE TABLE warehouse ( + w_id int NOT NULL, + w_ytd double NOT NULL, + w_tax double 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(3) NOT NULL, + w_zip char(10) NOT NULL, + PRIMARY KEY (w_id) +); + + +--add constraints and indexes +CREATE INDEX idx_customer_name 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; + diff --git a/src/com/oltpbenchmark/benchmarks/tpcc/dialects/comdb2-dialects.xml b/src/com/oltpbenchmark/benchmarks/tpcc/dialects/comdb2-dialects.xml new file mode 100644 index 000000000..254ba6428 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpcc/dialects/comdb2-dialects.xml @@ -0,0 +1,19 @@ + + + + + + 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-comdb2-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-comdb2-ddl.sql new file mode 100644 index 000000000..4f9cabee5 --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-comdb2-ddl.sql @@ -0,0 +1,79 @@ +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(26) NOT NULL, + n_regionkey INTEGER NOT NULL, + n_comment VARCHAR(152)); + +CREATE TABLE region ( r_regionkey INTEGER NOT NULL, + r_name CHAR(26) NOT NULL, + r_comment VARCHAR(152)); + +CREATE TABLE part ( p_partkey INTEGER NOT NULL, + p_name VARCHAR(55) NOT NULL, + p_mfgr CHAR(26) NOT NULL, + p_brand CHAR(11) NOT NULL, + p_type VARCHAR(25) NOT NULL, + p_size INTEGER NOT NULL, + p_container CHAR(11) NOT NULL, + p_retailprice double NOT NULL, + p_comment VARCHAR(23) NOT NULL ); + +CREATE TABLE supplier ( s_suppkey INTEGER NOT NULL, + s_name CHAR(26) NOT NULL, + s_address VARCHAR(40) NOT NULL, + s_nationkey INTEGER NOT NULL, + s_phone CHAR(16) NOT NULL, + s_acctbal double NOT NULL, + s_comment VARCHAR(101) NOT NULL); + +CREATE TABLE partsupp ( ps_partkey INTEGER NOT NULL, + ps_suppkey INTEGER NOT NULL, + ps_availqty INTEGER NOT NULL, + ps_supplycost double NOT NULL, + ps_comment VARCHAR(199) NOT NULL ); + +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(16) NOT NULL, + c_acctbal double NOT NULL, + c_mktsegment CHAR(11) NOT NULL, + c_comment VARCHAR(117) NOT NULL); + +CREATE TABLE orders ( o_orderkey INTEGER NOT NULL, + o_custkey INTEGER NOT NULL, + o_orderstatus CHAR(3) NOT NULL, + o_totalprice double NOT NULL, + o_orderdate datetime DEFAULT CURRENT_TIMESTAMP, + o_orderpriority CHAR(16) NOT NULL, + o_clerk CHAR(16) NOT NULL, + o_shippriority INTEGER NOT NULL, + o_comment VARCHAR(79) NOT NULL); + +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 double NOT NULL, + l_extendedprice double NOT NULL, + l_discount double NOT NULL, + l_tax double NOT NULL, + l_returnflag CHAR(3) NOT NULL, + l_linestatus CHAR(3) NOT NULL, + l_shipdate datetime DEFAULT CURRENT_TIMESTAMP, + l_commitdate datetime DEFAULT CURRENT_TIMESTAMP, + l_receiptdate datetime DEFAULT CURRENT_TIMESTAMP, + l_shipinstruct CHAR(26) NOT NULL, + l_shipmode CHAR(11) NOT NULL, + l_comment VARCHAR(44) NOT NULL); + diff --git a/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-comdb2-ddl.sql b/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-comdb2-ddl.sql new file mode 100644 index 000000000..785d793ba --- /dev/null +++ b/src/com/oltpbenchmark/benchmarks/wikipedia/ddls/wikipedia-comdb2-ddl.sql @@ -0,0 +1,217 @@ +DROP TABLE IF EXISTS ipblocks; +CREATE TABLE ipblocks ( + ipb_id int NOT NULL, + ipb_address varchar(15) NOT NULL, + ipb_user int NOT NULL, + ipb_by int NOT NULL, + ipb_by_text varchar(255) NOT NULL, + ipb_reason varchar(255) NOT NULL, + ipb_timestamp varchar(14) NOT NULL, + ipb_auto smallint NOT NULL, + ipb_anon_only smallint NOT NULL, + ipb_create_account smallint NOT NULL, + ipb_enable_autoblock smallint NOT NULL, + ipb_expiry varchar(14) NOT NULL, + ipb_range_start varchar(14) NOT NULL, + ipb_range_end varchar(14) NOT NULL, + ipb_deleted smallint NOT NULL, + ipb_block_email smallint NOT NULL, + ipb_allow_usertalk smallint NOT NULL, + PRIMARY KEY (ipb_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_IPB ON ipblocks (ipb_address, 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); + +DROP TABLE IF EXISTS useracct; +CREATE TABLE useracct ( + user_id int NOT NULL, + user_name varchar(255) NOT NULL, + user_real_name varchar(255) NOT NULL, + user_password varchar(511) NOT NULL, + user_newpassword varchar(511) NOT NULL, + user_newpass_time varchar(14) DEFAULT NULL, + user_email varchar(255) NOT NULL, + user_options varchar(255) NOT NULL, + user_touched varchar(14) NOT NULL DEFAULT "" WITH dbpad=0, + user_token varchar(32) NOT NULL DEFAULT "" WITH dbpad=0, + user_email_authenticated varchar(14) DEFAULT NULL, + user_email_token varchar(32) DEFAULT NULL, + user_email_token_expires varchar(14) DEFAULT NULL, + user_registration varchar(14) DEFAULT NULL, + user_editcount int DEFAULT '0', + PRIMARY KEY (user_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_USER ON useracct (user_name); +CREATE INDEX IDX_USER_EMAIL_TOKEN ON useracct (user_email_token); + +DROP TABLE IF EXISTS logging; +CREATE TABLE logging ( + log_id int NOT NULL, + log_type varchar(32) NOT NULL, + log_action varchar(32) NOT NULL, + log_timestamp varchar(14) NOT NULL, + log_user int NOT NULL, + log_namespace int NOT NULL, + log_title varchar(255) NOT NULL, + log_comment varchar(255) NOT NULL, + log_params varchar(255) NOT NULL, + log_deleted smallint NOT NULL, + log_user_text varchar(255) NOT NULL, + log_page int DEFAULT '0', + PRIMARY KEY (log_id) +); +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); + +DROP TABLE IF EXISTS page; +CREATE TABLE page ( + page_id int NOT NULL, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(255) NOT NULL, + page_counter bigint NOT NULL DEFAULT '0', + page_is_redirect smallint NOT NULL DEFAULT '0', + page_is_new smallint NOT NULL DEFAULT '0', + page_random double NOT NULL, + page_touched varchar(14) NOT NULL DEFAULT "" WITH dbpad=0, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_PAGE ON page (page_namespace, page_title); +CREATE INDEX IDX_PAGE_RANDOM ON page (page_random); +CREATE INDEX IDX_PAGE_LEN ON page (page_len); + +DROP TABLE IF EXISTS page_backup; +CREATE TABLE page_backup ( + page_id int NOT NULL, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(255) NOT NULL, + page_counter bigint NOT NULL, + page_is_redirect smallint NOT NULL, + page_is_new smallint NOT NULL, + page_random double NOT NULL, + page_touched varchar(14) NOT NULL, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_PB ON page_backup (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 varchar(60) NOT NULL, + pr_level varchar(60) NOT NULL, + pr_cascade smallint NOT NULL, + pr_user int DEFAULT '0', + pr_expiry varchar(14) DEFAULT NULL, + pr_id int NOT NULL, + PRIMARY KEY (pr_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_PR ON page_restrictions (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); + +DROP TABLE IF EXISTS recentchanges; +CREATE TABLE recentchanges ( + rc_id int NOT NULL, + rc_timestamp varchar(14) NOT NULL, + rc_cur_time varchar(14) NOT NULL, + rc_user int NOT NULL, + rc_user_text varchar(255) NOT NULL, + rc_namespace int NOT NULL, + rc_title varchar(255) NOT NULL, + rc_comment varchar(255) NOT NULL, + rc_minor smallint NOT NULL, + rc_bot smallint NOT NULL, + rc_new smallint NOT NULL, + rc_cur_id int NOT NULL, + rc_this_oldid int NOT NULL, + rc_last_oldid int NOT NULL, + rc_type smallint NOT NULL, + rc_moved_to_ns smallint NOT NULL, + rc_moved_to_title varchar(255) NOT NULL, + rc_patrolled smallint NOT NULL, + rc_ip varchar(40) NOT NULL, + rc_old_len int DEFAULT '0', + rc_new_len int DEFAULT '0', + rc_deleted smallint NOT NULL, + rc_logid int NOT NULL, + rc_log_type varchar(255) DEFAULT NULL, + rc_log_action varchar(255) DEFAULT NULL, + rc_params varchar(255), + PRIMARY KEY (rc_id) +); +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); + +DROP TABLE IF EXISTS revision; +CREATE TABLE revision ( + rev_id int NOT NULL, + rev_page int NOT NULL, + rev_text_id int NOT NULL, + rev_comment text NOT NULL, + rev_user int NOT NULL, + rev_user_text varchar(255) NOT NULL, + rev_timestamp varchar(14) NOT NULL, + rev_minor_edit smallint NOT NULL, + rev_deleted smallint NOT NULL, + rev_len int DEFAULT '0', + rev_parent_id int DEFAULT '0', + PRIMARY KEY (rev_id) +); +CREATE UNIQUE INDEX UNIQUE_IDX_REV ON revision (rev_id, rev_page); +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); + +DROP TABLE IF EXISTS text; +CREATE TABLE text ( + old_id int NOT NULL, + old_text text NOT NULL, + old_flags varchar(255) NOT NULL, + old_page int DEFAULT '0', + PRIMARY KEY (old_id) +); + + +DROP TABLE IF EXISTS user_groups; +CREATE TABLE user_groups ( + ug_user int NOT NULL, + ug_group varchar(16) NOT NULL +); +CREATE UNIQUE INDEX UNIQUE_IDX_UG ON user_groups (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 '0' +); + +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 +); +CREATE INDEX IDX_WL_NAMESPACE_TITLE ON watchlist (wl_namespace, wl_title); \ No newline at end of file diff --git a/src/com/oltpbenchmark/types/DatabaseType.java b/src/com/oltpbenchmark/types/DatabaseType.java index c1395b48c..01c19ed29 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), + COMDB2("com.bloomberg.comdb2.jdbc.Driver", true, false) ; private DatabaseType(String driver, boolean escapeNames, boolean includeColNames) {