Skip to content

Instantly share code, notes, and snippets.

@avantgardnerio
Created December 20, 2022 22:45
Show Gist options
  • Save avantgardnerio/5bdf77297956add71cbf664d3366224b to your computer and use it in GitHub Desktop.
Save avantgardnerio/5bdf77297956add71cbf664d3366224b to your computer and use it in GitHub Desktop.
public TpccStatements(Connection conn, int fetchSize) throws Exception {
this.conn = conn;
// NewOrder statements.
pStmts[0] = prepareStatement("SELECT c.c_discount, c.c_last, c.c_credit, w.w_tax FROM customer AS c JOIN warehouse AS w ON c.c_w_id = w_id AND w.w_id = $1 AND c.c_w_id = $2 AND c.c_d_id = $3 AND c.c_id = $4");
pStmts[1] = prepareStatement("SELECT d_next_o_id, d_tax FROM district WHERE d_id = $1 AND d_w_id = $2 FOR UPDATE");
pStmts[2] = prepareStatement("UPDATE district SET d_next_o_id = $1 + 1 WHERE d_id = $2 AND d_w_id = $3");
pStmts[3] = prepareStatement("INSERT INTO orders (o_id, o_d_id, o_w_id, o_c_id, o_entry_d, o_ol_cnt, o_all_local) VALUES($1, $2, $3, $4, $5, $6, $7)");
pStmts[4] = prepareStatement("INSERT INTO new_orders (no_o_id, no_d_id, no_w_id) VALUES ($1,$2,$3)");
pStmts[5] = prepareStatement("SELECT i_price, i_name, i_data FROM item WHERE i_id = $1");
pStmts[6] = prepareStatement("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 = $1 AND s_w_id = $2 FOR UPDATE");
pStmts[7] = prepareStatement("UPDATE stock SET s_quantity = $1 WHERE s_i_id = $2 AND s_w_id = $3");
pStmts[8] = prepareStatement("INSERT INTO order_line (ol_o_id, ol_d_id, ol_w_id, ol_number, ol_i_id, ol_supply_w_id, ol_quantity, ol_amount, ol_dist_info) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)");
// Payment statements.
pStmts[9] = prepareStatement("UPDATE warehouse SET w_ytd = w_ytd + $1 WHERE w_id = $2");
pStmts[10] = prepareStatement("SELECT w_street_1, w_street_2, w_city, w_state, w_zip, w_name FROM warehouse WHERE w_id = $1");
pStmts[11] = prepareStatement("UPDATE district SET d_ytd = d_ytd + $1 WHERE d_w_id = $2 AND d_id = $3");
pStmts[12] = prepareStatement("SELECT d_street_1, d_street_2, d_city, d_state, d_zip, d_name FROM district WHERE d_w_id = $1 AND d_id = $2");
pStmts[13] = prepareStatement("SELECT count(c_id) FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_last = $3");
pStmts[14] = prepareStatement("SELECT c_id FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_last = $3 ORDER BY c_first");
pStmts[15] = prepareStatement("SELECT c_first, c_middle, c_last, c_street_1, c_street_2, c_city, c_state, c_zip, c_phone, c_credit, c_credit_lim, c_discount, c_balance, c_since FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_id = $3 FOR UPDATE");
pStmts[16] = prepareStatement("SELECT c_data FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_id = $3");
pStmts[17] = prepareStatement("UPDATE customer SET c_balance = $1, c_data = $2 WHERE c_w_id = $3 AND c_d_id = $4 AND c_id = $5");
pStmts[18] = prepareStatement("UPDATE customer SET c_balance = $1 WHERE c_w_id = $2 AND c_d_id = $3 AND c_id = $4");
pStmts[19] = prepareStatement("INSERT INTO history(h_c_d_id, h_c_w_id, h_c_id, h_d_id, h_w_id, h_date, h_amount, h_data) VALUES($1, $2, $3, $4, $5, $6, $7, $8)");
// OrderStat statements.
pStmts[20] = prepareStatement("SELECT count(c_id) FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_last = $3");
pStmts[21] = prepareStatement("SELECT c_balance, c_first, c_middle, c_last FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_last = $3 ORDER BY c_first");
pStmts[22] = prepareStatement("SELECT c_balance, c_first, c_middle, c_last FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_id = $3");
pStmts[23] = prepareStatement("SELECT o_id, o_entry_d, COALESCE(o_carrier_id,0) FROM orders WHERE o_w_id = $1 AND o_d_id = $2 AND o_c_id = $3 AND o_id = (SELECT MAX(o_id) FROM orders WHERE o_w_id = $4 AND o_d_id = $5 AND o_c_id = $6)");
pStmts[24] = prepareStatement("SELECT ol_i_id, ol_supply_w_id, ol_quantity, ol_amount, ol_delivery_d FROM order_line WHERE ol_w_id = $1 AND ol_d_id = $2 AND ol_o_id = $3");
// Delivery statements.
pStmts[25] = prepareStatement("SELECT COALESCE(MIN(no_o_id),0) FROM new_orders WHERE no_d_id = $1 AND no_w_id = $2");
pStmts[26] = prepareStatement("DELETE FROM new_orders WHERE no_o_id = $1 AND no_d_id = $2 AND no_w_id = $3");
pStmts[27] = prepareStatement("SELECT o_c_id FROM orders WHERE o_id = $1 AND o_d_id = $2 AND o_w_id = $3");
pStmts[28] = prepareStatement("UPDATE orders SET o_carrier_id = $1 WHERE o_id = $2 AND o_d_id = $3 AND o_w_id = $4");
pStmts[29] = prepareStatement("UPDATE order_line SET ol_delivery_d = $1 WHERE ol_o_id = $2 AND ol_d_id = $3 AND ol_w_id = $4");
pStmts[30] = prepareStatement("SELECT SUM(ol_amount) FROM order_line WHERE ol_o_id = $1 AND ol_d_id = $2 AND ol_w_id = $3");
pStmts[31] = prepareStatement("UPDATE customer SET c_balance = c_balance + $1 , c_delivery_cnt = c_delivery_cnt + 1 WHERE c_id = $2 AND c_d_id = $3 AND c_w_id = $4");
// Slev statements.
pStmts[32] = prepareStatement("SELECT d_next_o_id FROM district WHERE d_id = $1 AND d_w_id = $2");
pStmts[33] = prepareStatement("SELECT DISTINCT ol_i_id FROM order_line WHERE ol_w_id = $1 AND ol_d_id = $2 AND ol_o_id < $3 AND ol_o_id >= ($4 - 20)");
pStmts[34] = prepareStatement("SELECT count(*) FROM stock WHERE s_w_id = $1 AND s_i_id = $2 AND s_quantity < $3");
// These are used in place of pStmts[0] in order to avoid joins
pStmts[35] = prepareStatement("SELECT c_discount, c_last, c_credit FROM customer WHERE c_w_id = $1 AND c_d_id = $2 AND c_id = $3");
pStmts[36] = prepareStatement("SELECT w_tax FROM warehouse WHERE w_id = $1");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment