private void delivery()

in benchmarks/tpcc/src/main/java/com/google/cloud/pgadapter/tpcc/AbstractBenchmarkRunner.java [541:598]


  private void delivery() throws SQLException {
    LOG.debug("Executing delivery");

    long warehouseId = Long.reverse(random.nextInt(tpccConfiguration.getWarehouses()));
    long carrierId = Long.reverse(random.nextInt(10));
    Object[] row;

    executeStatement("begin transaction");
    for (long district = 0L; district < tpccConfiguration.getDistrictsPerWarehouse(); district++) {
      long districtId = Long.reverse(district);
      row =
          paramQueryRow(
              "SELECT o_id, c_id "
                  + "FROM new_orders "
                  + "WHERE d_id = ? AND w_id = ? "
                  + "ORDER BY o_id ASC "
                  + "LIMIT 1 FOR UPDATE",
              new Object[] {districtId, warehouseId});
      if (row != null) {
        long newOrderId = (long) row[0];
        long customerId = (long) row[1];
        executeParamStatement(
            "DELETE "
                + "FROM new_orders "
                + "WHERE o_id = ? AND c_id = ? AND d_id = ? AND w_id = ?",
            new Object[] {newOrderId, customerId, districtId, warehouseId});
        row =
            paramQueryRow(
                "SELECT c_id FROM orders WHERE o_id = ? AND d_id = ? AND w_id = ?",
                new Object[] {newOrderId, districtId, warehouseId});
        executeParamStatement(
            "UPDATE orders "
                + "SET o_carrier_id = ? "
                + "WHERE o_id = ? AND c_id = ? AND d_id = ? AND w_id = ?",
            new Object[] {carrierId, newOrderId, customerId, districtId, warehouseId});
        executeParamStatement(
            "UPDATE order_line "
                + "SET ol_delivery_d = CURRENT_TIMESTAMP "
                + "WHERE o_id = ? AND c_id = ? AND d_id = ? AND w_id = ?",
            new Object[] {newOrderId, customerId, districtId, warehouseId});
        row =
            paramQueryRow(
                "SELECT SUM(ol_amount) sm "
                    + "FROM order_line "
                    + "WHERE o_id = ? AND c_id = ? AND d_id = ? AND w_id = ?",
                new Object[] {newOrderId, customerId, districtId, warehouseId});
        BigDecimal sumOrderLineAmount = (BigDecimal) row[0];
        executeParamStatement(
            "UPDATE customer "
                + "SET c_balance = c_balance + ?, c_delivery_cnt = c_delivery_cnt + 1 "
                + "WHERE c_id = ? AND d_id = ? AND w_id = ?",
            new Object[] {sumOrderLineAmount, customerId, districtId, warehouseId});
      }
    }

    LOG.debug("Committing delivery");
    executeStatement("commit");
  }