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) {