private void orderStatus()

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


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

    long warehouseId = Long.reverse(random.nextInt(tpccConfiguration.getWarehouses()));
    long districtId = Long.reverse(random.nextInt(tpccConfiguration.getDistrictsPerWarehouse()));
    long customerId = Long.reverse(random.nextInt(tpccConfiguration.getCustomersPerDistrict()));

    String lastName = LastNameGenerator.generateLastName(this.random, Long.MAX_VALUE);
    boolean byName;
    Object[] row;
    if (random.nextInt(100) < 60) {
      byName = true;
    } else {
      byName = false;
    }

    BigDecimal balance;
    String first, middle, last;

    executeStatement("begin transaction");
    if (tpccConfiguration.isUseReadOnlyTransactions()) {
      executeStatement("set transaction read only");
    }
    if (byName) {
      row =
          paramQueryRow(
              "SELECT count(c_id) namecnt "
                  + "FROM customer "
                  + "WHERE w_id = ? AND d_id= ? AND c_last=?",
              new Object[] {warehouseId, districtId, lastName});
      int nameCount = (int) (long) row[0];
      if (nameCount % 2 == 0) {
        nameCount++;
      }
      List<Object[]> resultSet =
          executeParamQuery(
              "SELECT c_balance, c_first, c_middle, c_id "
                  + "FROM customer WHERE w_id = ? AND d_id= ? AND c_last=? "
                  + "ORDER BY c_first",
              new Object[] {warehouseId, districtId, lastName});
      for (int counter = 0; counter < Math.min(nameCount, resultSet.size()); counter++) {
        balance = (BigDecimal) resultSet.get(counter)[0];
        first = (String) resultSet.get(counter)[1];
        middle = (String) resultSet.get(counter)[2];
        customerId = (long) resultSet.get(counter)[3];
      }
    } else {
      row =
          paramQueryRow(
              "SELECT c_balance, c_first, c_middle, c_last "
                  + "FROM customer "
                  + "WHERE w_id = ? AND d_id=? AND c_id=?",
              new Object[] {warehouseId, districtId, customerId});
      balance = (BigDecimal) row[0];
      first = (String) row[1];
      middle = (String) row[2];
      last = (String) row[3];
    }

    row =
        paramQueryRow(
            "SELECT o_id, o_carrier_id, o_entry_d "
                + "FROM orders "
                + "WHERE w_id = ? AND d_id = ? AND c_id = ? "
                + "ORDER BY o_id DESC",
            new Object[] {warehouseId, districtId, customerId});
    long orderId = (long) row[0];

    long item_id, supply_warehouse_id, quantity;
    BigDecimal amount;
    Timestamp delivery_date;
    List<Object[]> resultSet =
        executeParamQuery(
            "SELECT ol_i_id, ol_supply_w_id, ol_quantity, ol_amount, ol_delivery_d "
                + "FROM order_line "
                + "WHERE w_id = ? AND d_id = ?  AND o_id = ?",
            new Object[] {warehouseId, districtId, orderId});
    for (int counter = 0; counter < resultSet.size(); counter++) {
      item_id = (long) resultSet.get(counter)[0]; // item_id
      supply_warehouse_id = (long) resultSet.get(counter)[1]; // supply_warehouse_id
      quantity = (long) resultSet.get(counter)[2]; // quantity
      amount = (BigDecimal) resultSet.get(counter)[3]; // amount
      delivery_date = (Timestamp) resultSet.get(counter)[4]; // delivery_date
    }

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