java.sql.ResultSet#getBigDecimal ( )源码实例Demo

下面列出了java.sql.ResultSet#getBigDecimal ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: phoenix   文件: PercentileIT.java
@Test
public void testPercentRankDesc() throws Exception {
    long ts = nextTimestamp();
    String tenantId = getOrganizationId();
    initATableValues(tenantId, null, getDefaultSplits(tenantId), null, ts);

    String query = "SELECT PERCENT_RANK(8.9) WITHIN GROUP (ORDER BY A_INTEGER DESC) FROM aTable";

    Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
    props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at
                                                                                 // timestamp 2
    Connection conn = DriverManager.getConnection(getUrl(), props);
    try {
        PreparedStatement statement = conn.prepareStatement(query);
        ResultSet rs = statement.executeQuery();
        assertTrue(rs.next());
        BigDecimal rank = rs.getBigDecimal(1);
        rank = rank.setScale(2, RoundingMode.HALF_UP);
        assertEquals(0.11, rank.doubleValue(), 0.0);
        assertFalse(rs.next());
    } finally {
        conn.close();
    }
}
 
源代码2 项目: phoenix   文件: PercentileIT.java
@Test
public void testPercentRankWithNegativeNumeric() throws Exception {
    long ts = nextTimestamp();
    String tenantId = getOrganizationId();
    initATableValues(tenantId, null, getDefaultSplits(tenantId), null, ts);

    String query = "SELECT PERCENT_RANK(-2) WITHIN GROUP (ORDER BY A_INTEGER ASC) FROM aTable";

    Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
    props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at
                                                                                 // timestamp 2
    Connection conn = DriverManager.getConnection(getUrl(), props);
    try {
        PreparedStatement statement = conn.prepareStatement(query);
        ResultSet rs = statement.executeQuery();
        assertTrue(rs.next());
        BigDecimal rank = rs.getBigDecimal(1);
        rank = rank.setScale(2, RoundingMode.HALF_UP);
        assertEquals(0.0, rank.doubleValue(), 0.0);
        assertFalse(rs.next());
    } finally {
        conn.close();
    }
}
 
源代码3 项目: gemfirexd-oss   文件: BigDecimalHandler.java
/** This method is a wrapper for the ResultSet method getBigDecimal(int columnIndex).
 * 
 * @param rs ResultSet 
 * @param columnIndex Column Index 
 * @return String value of getXXX(columnIndex)method on the ResultSet
 * @throws SQLException
 */
public static String getBigDecimalString(ResultSet rs, int columnIndex) throws SQLException{
	String bigDecimalString=null;
	
	switch(representation){
		case BIGDECIMAL_REPRESENTATION:
			//Call toString() only for non-null values, else return null
			if(rs.getBigDecimal(columnIndex) != null)
				bigDecimalString = rs.getBigDecimal(columnIndex).toString();
			break;
		case STRING_REPRESENTATION:
			bigDecimalString = rs.getString(columnIndex);
			int columnType= rs.getMetaData().getColumnType(columnIndex);
			if((bigDecimalString != null) && !canConvertToDecimal(columnType))
				throw new SQLException("Invalid data conversion. Method not called.");
			break;
		default:	
			new Exception("Failed: Invalid Big Decimal representation").printStackTrace();
	}
	return bigDecimalString;
}
 
源代码4 项目: datacollector   文件: LogMinerSession.java
/**
 * Returns the list of redo logs that covers a given range of changes in database. The range is defined as the
 * interval [start, end) and the list will contain any redo log with some SCN in that range; i.e. it is not necessary
 * that all the redo log SCNs are in range [start, end).
 *
 * @param start Start SCN (inclusive limit).
 * @param end End SCN (exclusive limit).
 * @return List of all the redo logs having some SCN in range [start, end).
 * @throws StageException Database error.
 */
private List<RedoLog> findLogs(BigDecimal start, BigDecimal end) {
  List<RedoLog> result = new ArrayList<>();
  String query = SELECT_REDO_LOGS_QUERY
      .replace(SELECT_REDO_LOGS_ARG_FIRST, start.toPlainString())
      .replace(SELECT_REDO_LOGS_ARG_NEXT, end.toPlainString());

  try (PreparedStatement statement = connection.prepareCall(query)) {
    ResultSet rs = statement.executeQuery();
    while (rs.next()) {
      RedoLog log = new RedoLog(
          rs.getString(1),
          rs.getBigDecimal(2),
          rs.getBigDecimal(3),
          rs.getTimestamp(4),
          rs.getTimestamp(5),
          rs.getBigDecimal(6),
          rs.getBigDecimal(7),
          rs.getBoolean(8),
          rs.getBoolean(9)
      );
      result.add(log);
    }
  }
  catch (SQLException e) {
    throw new StageException(JdbcErrors.JDBC_603, e);
  }

  return result;
}
 
源代码5 项目: spliceengine   文件: NonUniqueIndexIT.java
/**
 * Tests that adding an index to an existing data set will
 * result in a correct and consistent index
 *
 * Basically, add some data to the table, then create the index,
 * then perform a lookup on that same data via the index to ensure
 * that the index will find those values.
 */
@Test(timeout=15000)
public void testCanCreateIndexFromExistingDataWithDecimalType() throws Exception{
    BigDecimal oid = BigDecimal.valueOf(2);
    String name = "sfines";
    PreparedStatement preparedStatement = methodWatcher.prepareStatement("insert into " + spliceTableWatcher8 + " values (?,?)");
    preparedStatement.setBigDecimal(1,oid);
    preparedStatement.setString(2,name);
    preparedStatement.execute();
    new SpliceIndexWatcher(TABLE_NAME_8,spliceSchemaWatcher.schemaName,INDEX_81,spliceSchemaWatcher.schemaName,"(name)").starting(null);
    //now check that we can get data out for the proper key
    preparedStatement = methodWatcher.prepareStatement("select * from "+ spliceTableWatcher8+" where oid = ?");
    preparedStatement.setBigDecimal(1,oid);

    ResultSet resultSet = preparedStatement.executeQuery();
    try{
        List<String> results = Lists.newArrayListWithExpectedSize(1);
        while(resultSet.next()){
            BigDecimal retOid = resultSet.getBigDecimal(1);
            String retName = resultSet.getString(2);
            Assert.assertEquals("Incorrect name returned!",name,retName);
            Assert.assertEquals("Incorrect oid returned!",oid,retOid);
            results.add(String.format("name:%s,value:%s",retName,retOid));
        }
        Assert.assertEquals("Incorrect number of rows returned!",1,results.size());
    }finally{
        resultSet.close();
    }
}
 
源代码6 项目: jboss-daytrader   文件: TradeJDBCDirect.java
private QuoteDataBean getQuoteDataFromResultSet(ResultSet rs) throws Exception {
    QuoteDataBean quoteData = null;

    quoteData =
        new QuoteDataBean(rs.getString("symbol"), rs.getString("companyName"), rs.getDouble("volume"), rs
            .getBigDecimal("price"), rs.getBigDecimal("open1"), rs.getBigDecimal("low"), rs.getBigDecimal("high"),
            rs.getDouble("change1"));
    return quoteData;
}
 
源代码7 项目: sample.daytrader7   文件: TradeDirect.java
private HoldingDataBean getHoldingDataFromResultSet(ResultSet rs) throws Exception {
    HoldingDataBean holdingData = null;

    holdingData = new HoldingDataBean(new Integer(rs.getInt("holdingID")), rs.getDouble("quantity"), rs.getBigDecimal("purchasePrice"),
            rs.getTimestamp("purchaseDate"), rs.getString("quote_symbol"));
    return holdingData;
}
 
源代码8 项目: sinavi-jfw   文件: BigIntegerTypeHandler.java
/**
 * {@inheritDoc}
 */
@Override
public BigInteger getNullableResult(ResultSet rs, int columnIndex)
        throws SQLException {
    BigDecimal b = rs.getBigDecimal(columnIndex);
    return b != null ? TypeConverters.convert(b, BigInteger.class) : null;
}
 
源代码9 项目: sample.daytrader7   文件: TradeDirect.java
private AccountDataBean getAccountDataFromResultSet(ResultSet rs) throws Exception {
    AccountDataBean accountData = null;

    if (!rs.next()) {
        Log.error("TradeDirect:getAccountDataFromResultSet -- cannot find account data");
    } else {
        accountData = new AccountDataBean(new Integer(rs.getInt("accountID")), rs.getInt("loginCount"), rs.getInt("logoutCount"),
                rs.getTimestamp("lastLogin"), rs.getTimestamp("creationDate"), rs.getBigDecimal("balance"), rs.getBigDecimal("openBalance"),
                rs.getString("profile_userID"));
    }
    return accountData;
}
 
源代码10 项目: spliceengine   文件: ProjectRestrictOperationIT.java
@Test
    public void testArithmeticOperators() throws Exception{
        ResultSet rs=methodWatcher.executeQuery("select sc,sd,se, sd-sc,sd+sc,sd*sc,se/sd from "+spliceTableWatcher2+" where true");
        List<String> results=Lists.newArrayList();
        while(rs.next()){
            int sc=rs.getInt(1);
            int sd=rs.getInt(2);
            BigDecimal se=rs.getBigDecimal(3);
            int diff=rs.getInt(4);
            int sum=rs.getInt(5);
            int mult=rs.getInt(6);
            BigDecimal div=rs.getBigDecimal(7);

            int correctDiff=sd-sc;
            int correctSum=sd+sc;
            int correctMult=sd*sc;

            BigDecimal correctDiv=se.divide(new BigDecimal(sd),MIN_DECIMAL_DIVIDE_SCALE,BigDecimal.ROUND_DOWN);

            Assert.assertEquals("Incorrect diff!",correctDiff,diff);
            Assert.assertEquals("Incorrect sum!",correctSum,sum);
            Assert.assertEquals("Incorrect mult!",correctMult,mult);
//  SPLICE-898           Assert.assertEquals("Incorrect Div!",correctDiv.compareTo(div),0);


            results.add(String.format("sc=%d,sd=%d,se=%f,diff=%d,sum=%d,mult=%d,div=%f%n",sc,sd,se,diff,sum,mult,div));
        }

        for(String result : results){
            LOG.info(result);
        }
        Assert.assertEquals("incorrect rows returned",10,results.size());
    }
 
源代码11 项目: phoenix   文件: PercentileIT.java
@Test
public void testPercentileWithGroupbyAndOrderBy() throws Exception {
    String tenantId = getOrganizationId();
    String tableName = initATableValues(tenantId, null, getDefaultSplits(tenantId), null);

    String query = "SELECT A_STRING, PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY A_INTEGER ASC) AS PC FROM " + tableName + " GROUP BY A_STRING ORDER BY PC";

    Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
    Connection conn = DriverManager.getConnection(getUrl(), props);
    try {
        PreparedStatement statement = conn.prepareStatement(query);
        ResultSet rs = statement.executeQuery();
        assertTrue(rs.next());
        assertEquals("a",rs.getString(1));
        BigDecimal percentile = rs.getBigDecimal(2);
        percentile = percentile.setScale(1, RoundingMode.HALF_UP);
        assertEquals(7.0, percentile.doubleValue(),0.0);
        assertTrue(rs.next());
        assertEquals("c",rs.getString(1));
        percentile = rs.getBigDecimal(2);
        percentile = percentile.setScale(1, RoundingMode.HALF_UP);
        assertEquals(8.0, percentile.doubleValue(),0.0);
        assertTrue(rs.next());
        assertEquals("b",rs.getString(1));
        percentile = rs.getBigDecimal(2);
        percentile = percentile.setScale(1, RoundingMode.HALF_UP);
        assertEquals(9.0, percentile.doubleValue(),0.0);
        assertFalse(rs.next());
    } finally {
        conn.close();
    }
}
 
源代码12 项目: attic-apex-malhar   文件: JdbcPOJOInputOperator.java
@SuppressWarnings("unchecked")
@Override
public Object getTuple(ResultSet result)
{
  Object obj;
  try {
    obj = pojoClass.newInstance();
  } catch (InstantiationException | IllegalAccessException ex) {
    store.disconnect();
    throw new RuntimeException(ex);
  }

  try {
    for (int i = 0; i < fieldInfos.size(); i++) {
      int type = columnDataTypes.get(i);
      ActiveFieldInfo afi = columnFieldSetters.get(i);

      switch (type) {
        case Types.CHAR:
        case Types.VARCHAR:
          String strVal = result.getString(i + 1);
          ((PojoUtils.Setter<Object, String>)afi.setterOrGetter).set(obj, strVal);
          break;

        case Types.BOOLEAN:
          boolean boolVal = result.getBoolean(i + 1);
          ((PojoUtils.SetterBoolean<Object>)afi.setterOrGetter).set(obj, boolVal);
          break;

        case Types.TINYINT:
          byte byteVal = result.getByte(i + 1);
          ((PojoUtils.SetterByte<Object>)afi.setterOrGetter).set(obj, byteVal);
          break;

        case Types.SMALLINT:
          short shortVal = result.getShort(i + 1);
          ((PojoUtils.SetterShort<Object>)afi.setterOrGetter).set(obj, shortVal);
          break;

        case Types.INTEGER:
          int intVal = result.getInt(i + 1);
          ((PojoUtils.SetterInt<Object>)afi.setterOrGetter).set(obj, intVal);
          break;

        case Types.BIGINT:
          long longVal = result.getLong(i + 1);
          ((PojoUtils.SetterLong<Object>)afi.setterOrGetter).set(obj, longVal);
          break;

        case Types.FLOAT:
          float floatVal = result.getFloat(i + 1);
          ((PojoUtils.SetterFloat<Object>)afi.setterOrGetter).set(obj, floatVal);
          break;

        case Types.DOUBLE:
          double doubleVal = result.getDouble(i + 1);
          ((PojoUtils.SetterDouble<Object>)afi.setterOrGetter).set(obj, doubleVal);
          break;

        case Types.DECIMAL:
          BigDecimal bdVal = result.getBigDecimal(i + 1);
          ((PojoUtils.Setter<Object, BigDecimal>)afi.setterOrGetter).set(obj, bdVal);
          break;

        case Types.TIMESTAMP:
          Timestamp tsVal = result.getTimestamp(i + 1);
          ((PojoUtils.Setter<Object, Timestamp>)afi.setterOrGetter).set(obj, tsVal);
          break;

        case Types.TIME:
          Time timeVal = result.getTime(i + 1);
          ((PojoUtils.Setter<Object, Time>)afi.setterOrGetter).set(obj, timeVal);
          break;

        case Types.DATE:
          Date dateVal = result.getDate(i + 1);
          ((PojoUtils.Setter<Object, Date>)afi.setterOrGetter).set(obj, dateVal);
          break;

        default:
          handleUnknownDataType(type, obj, afi);
          break;
      }
    }
    return obj;
  } catch (SQLException e) {
    store.disconnect();
    throw new RuntimeException("fetching metadata", e);
  }
}
 
源代码13 项目: database   文件: RowsAdaptor.java
private BigDecimal toBigDecimal(ResultSet rs, String col) throws SQLException {
  BigDecimal val = rs.getBigDecimal(col);
  return val == null ? null : fixBigDecimal(val);
}
 
/**
 * getOHLCDataByTimeRange - OHLC values between two time
 * @param instrumentToken
 * @param prevTime
 * @param currTime
 * @return OHLC quote
 */
@Override
public OHLCquote getOHLCDataByTimeRange(String instrumentToken, String prevTime, String currTime){
	OHLCquote ohlcMap = null;
	
	if (conn != null) {
		try {
			Statement stmt = conn.createStatement();
			
			//SQL query OPEN
			String openSql = "SELECT LastTradedPrice FROM " + quoteTable + 
					" WHERE Time >= '" + prevTime +
					"' AND Time <= '" + currTime + 
					"' AND InstrumentToken = '" + instrumentToken + 
					"' ORDER BY Time ASC LIMIT 1";
			ResultSet openRs = stmt.executeQuery(openSql);
			openRs.next();
			BigDecimal openQuote = openRs.getBigDecimal("LastTradedPrice");
			//System.out.println("OPEN: " + openQuote);
			
			//SQL query HIGH
			String highSql = "SELECT MAX(LastTradedPrice) FROM " + quoteTable + 
					" WHERE Time >= '" + prevTime +
					"' AND Time <= '" + currTime + 
					"' AND InstrumentToken = '" + instrumentToken + "'";
			ResultSet highRs = stmt.executeQuery(highSql);
			highRs.next();
			BigDecimal highQuote = highRs.getBigDecimal(1);
			//System.out.println("HIGH: " + highQuote);
			
			//SQL query LOW
			String lowSql = "SELECT MIN(LastTradedPrice) FROM " + quoteTable + 
					" WHERE Time >= '" + prevTime +
					"' AND Time <= '" + currTime + 
					"' AND InstrumentToken = '" + instrumentToken + "'";
			ResultSet lowRs = stmt.executeQuery(lowSql);
			lowRs.next();
			BigDecimal lowQuote = lowRs.getBigDecimal(1);
			//System.out.println("LOW: " + lowQuote);
			
			//SQL query CLOSE
			String closeSql = "SELECT LastTradedPrice FROM " + quoteTable + 
					" WHERE Time >= '" + prevTime +
					"' AND Time <= '" + currTime + 
					"' AND InstrumentToken = '" + instrumentToken + 
					"' ORDER BY Time DESC LIMIT 1";
			ResultSet closeRs = stmt.executeQuery(closeSql);
			closeRs.next();
			BigDecimal closeQuote = closeRs.getBigDecimal("LastTradedPrice");
			//System.out.println("CLOSE: " + closeQuote);
			
			//SQL query VOL
			String volSql = "SELECT Volume FROM " + quoteTable + 
					" WHERE Time >= '" + prevTime +
					"' AND Time <= '" + currTime + 
					"' AND InstrumentToken = '" + instrumentToken + 
					"' ORDER BY Time DESC LIMIT 1";
			ResultSet volRs = stmt.executeQuery(volSql);
			volRs.next();
			Long volQuote = volRs.getLong(1);
			//System.out.println("VOL: " + volQuote);
			
			ohlcMap = new OHLCquote(openQuote, highQuote, lowQuote, closeQuote, volQuote);
			
			stmt.close();
		} catch (SQLException e) {
			ohlcMap = null;
			System.out.println("StreamingQuoteDAOModeFull.getOHLCDataByTimeRange(): ERROR: SQLException on fetching data from Table, cause: " + e.getMessage());
			// e.printStackTrace();
		}
	} else{
		ohlcMap = null;
		System.out.println("StreamingQuoteDAOModeFull.getOHLCDataByTimeRange(): ERROR: DB conn is null !!!");
	}
	
	return ohlcMap;
}
 
@SuppressWarnings("unchecked")
@Override
public Object getTuple(ResultSet result)
{
  Object obj;
  try {
    obj = pojoClass.newInstance();
  } catch (InstantiationException | IllegalAccessException ex) {
    store.disconnect();
    throw new RuntimeException(ex);
  }

  try {
    for (int i = 0; i < columnDataTypes.size(); i++) {
      int type = columnDataTypes.get(i);
      ActiveFieldInfo afi = columnFieldSetters.get(i);
      switch (type) {
        case Types.CHAR:
        case Types.VARCHAR:
          String strVal = result.getString(i + 1);
          ((PojoUtils.Setter<Object, String>)afi.setterOrGetter).set(obj, strVal);
          break;

        case Types.BOOLEAN:
          boolean boolVal = result.getBoolean(i + 1);
          ((PojoUtils.SetterBoolean<Object>)afi.setterOrGetter).set(obj, boolVal);
          break;

        case Types.TINYINT:
          byte byteVal = result.getByte(i + 1);
          ((PojoUtils.SetterByte<Object>)afi.setterOrGetter).set(obj, byteVal);
          break;

        case Types.SMALLINT:
          short shortVal = result.getShort(i + 1);
          ((PojoUtils.SetterShort<Object>)afi.setterOrGetter).set(obj, shortVal);
          break;

        case Types.INTEGER:
          int intVal = result.getInt(i + 1);
          ((PojoUtils.SetterInt<Object>)afi.setterOrGetter).set(obj, intVal);
          break;

        case Types.BIGINT:
          long longVal = result.getLong(i + 1);
          ((PojoUtils.SetterLong<Object>)afi.setterOrGetter).set(obj, longVal);
          break;

        case Types.FLOAT:
          float floatVal = result.getFloat(i + 1);
          ((PojoUtils.SetterFloat<Object>)afi.setterOrGetter).set(obj, floatVal);
          break;

        case Types.DOUBLE:
          double doubleVal = result.getDouble(i + 1);
          ((PojoUtils.SetterDouble<Object>)afi.setterOrGetter).set(obj, doubleVal);
          break;

        case Types.DECIMAL:
          BigDecimal bdVal = result.getBigDecimal(i + 1);
          ((PojoUtils.Setter<Object, BigDecimal>)afi.setterOrGetter).set(obj, bdVal);
          break;

        case Types.TIMESTAMP:
          Timestamp tsVal = result.getTimestamp(i + 1);
          ((PojoUtils.Setter<Object, Timestamp>)afi.setterOrGetter).set(obj, tsVal);
          break;

        case Types.TIME:
          Time timeVal = result.getTime(i + 1);
          ((PojoUtils.Setter<Object, Time>)afi.setterOrGetter).set(obj, timeVal);
          break;

        case Types.DATE:
          Date dateVal = result.getDate(i + 1);
          ((PojoUtils.Setter<Object, Date>)afi.setterOrGetter).set(obj, dateVal);
          break;

        default:
          throw new RuntimeException("unsupported data type " + type);
      }
    }
    return obj;
  } catch (SQLException e) {
    store.disconnect();
    throw new RuntimeException("fetching metadata", e);
  }
}
 
源代码16 项目: cacheonix-core   文件: BigDecimalType.java
public Object get(ResultSet rs, String name)
throws HibernateException, SQLException {
	return rs.getBigDecimal(name);
}
 
源代码17 项目: gemfirexd-oss   文件: TPCEMarketFeed.java
protected void processSelectTrForUpdate(int i,
    PreparedStatement updateTradePs, PreparedStatement selectTrPs,
    Timestamp now_dts, PreparedStatement deleteTradeRequestPs, 
    PreparedStatement insertTradeHistoryPs, ArrayList<TradeInfo> tradeRequest)
throws SQLException {
  BigDecimal req_price_quote;
  long req_trade_id;
  int req_trade_qty;
  String req_trade_type;

  // declare request_list cursor for
  // select
  // TR_T_ID,
  // TR_BID_PRICE,
  // TR_TT_ID,
  // TR_QTY
  // from
  // TRADE_REQUEST -- GEMFIREXD-PROPERTIES index=i_tr_s_symb \n
  // where
  // TR_S_SYMB = symbol[i] and (
  // (TR_TT_ID = type_stop_loss and
  // TR_BID_PRICE >= price_quote[i]) or
  // (TR_TT_ID = type_limit_sell and
  // TR_BID_PRICE <= price_quote[i]) or
  // (TR_TT_ID = type_limit_buy and
  // TR_BID_PRICE >= price_quote[i])
  // )
  try {
    selectTrPs.setString(1, symbol[i]);
    selectTrPs.setString(2, type_stop_loss);
    selectTrPs.setBigDecimal(3, price_quote[i]);
    selectTrPs.setString(4, type_limit_sell);
    selectTrPs.setBigDecimal(5, price_quote[i]);
    selectTrPs.setString(6, type_limit_buy);
    selectTrPs.setBigDecimal(7, price_quote[i]);

    ResultSet rs = selectTrPs.executeQuery();

    while (rs.next()) {
      req_trade_id = rs.getLong("TR_T_ID");
      req_price_quote = rs.getBigDecimal("TR_BID_PRICE");
      req_trade_type = rs.getString("TR_TT_ID");
      req_trade_qty = rs.getInt("TR_QTY");
    
      //update trade with date and status
      updateTradeTxn(updateTradePs, now_dts, req_trade_id);
      
      //delete current row in trade_request
      deleteTradeRequestTxn(deleteTradeRequestPs, req_trade_id);
      
      //insert into trade history with new status
      insertTradeHistoryTxn(insertTradeHistoryPs, req_trade_id, now_dts);
      
      /* TradeRequestBuffer[rows_sent].symbol = symbol[i]
       * TradeRequestBuffer[rows_sent].trade_id = req_trade_id
       * TradeRequestBuffer[rows_sent].price_quote = req_price_quote
       * TradeRequestBuffer[rows_sent].trade_qty = req_trade_qty
       * TradeRequestBuffer[rows_sent].trade_type = req_trade_type rows_sent =
       * rows_sent + 1 fetch from request_list into req_trade_id, req_price_quote,
       * req_trade_type, req_trade_qty } /* end of cursor fetch loop
       */
      TradeInfo tr = new TradeInfo();
      tr.setPriceQuotes(req_price_quote);
      tr.setSymbol(symbol[i]);
      tr.setTradeId(req_trade_id);
      tr.setTradeQty(req_trade_qty);
      tr.setTradeType(req_trade_type);
      tradeRequest.add(tr);
    }

  } catch (SQLException se) {
    if (se.getSQLState().equals("X0Z02") &&
        (!TPCETest.isClient || (TPCETest.isClient && TPCETest.useSyncCommit))) {

      throw new TestException(
          "Does not expect conflict exception here, as the"
              + " the txn already hold the lock for the symbol updated in last_trade table,"
              + " there should be no other txn could modify the same row for symbol "
              + symbol[i] + " in trade request table "
              + " the stack trace for the conflict exception is: "
              + TestHelper.getStackTrace(se));
    // other dml op on trade_request is insert in trade order txns, and should
    // not cause conflicts here
    // for thin client case, (see #48712) there is small window the committed row (insert from tradeorder) does not fully release the lock
    // TODO may need to use sync-commit connection to see which one has better 
    // perf result; use retry for now.
    // Actually the issue is most likely caused by batching ops in txn 
    // The last_trade is REPLICATE table, so the update only hold the lock 
    // on that particular node, further operations may cause conflict
    // so may need to add disable batching on servers to work around this (too many conflicts and retries) for thin client
   

    } else
      throw se;
  }
  
}
 
源代码18 项目: database   文件: RowsAdaptor.java
private BigDecimal toBigDecimal(ResultSet rs, int col) throws SQLException {
  BigDecimal val = rs.getBigDecimal(col);
  return val == null ? null : fixBigDecimal(val);
}
 
源代码19 项目: gemfirexd-oss   文件: TPCETradeResult.java
protected void invokeFrame3() throws SQLException {
  BigDecimal tax_rates;
  PreparedStatement ps= conn.prepareStatement(selectTaxRate);
  ps.setLong(1, cust_id);     
  ResultSet rs = ps.executeQuery();
 
  if (rs.next()) {
    tax_rates = rs.getBigDecimal(1);
    if (logDML) Log.getLogWriter().info("tax rate is " + tax_rates);
    if (rs.next()) {
      throw new TestException ( selectTaxRate + " has more than 1 row " +
          "in result set for cx_c_id = " + cust_id);
    }
  } else {
    throw new TestException ( selectTaxRate + " does not get single row " +
        "in result set for cx_c_id = " + cust_id);
  }     
  rs.close();
  
  tax_amount = tax_rates.multiply(sell_value.subtract(buy_value));
  
  //update
  //TRADE
  //set
  //T_TAX = tax_amount
  //where
  //T_ID = trade_id
  ps = conn.prepareStatement(updateTaxAmount);
  ps.setBigDecimal(1, tax_amount);
  ps.setLong(2, trade_id);
  
  int count = ps.executeUpdate();
  
  if (logDML) {
    Log.getLogWriter().info(updateTaxAmount + " updates T_TAX = " + tax_amount + 
        " for T_ID = " + trade_id);
  }  
  if (count != 1) {
    throw new TestException(updateTaxAmount + " should updates only 1 row " +
       "but updated " + count + " row(s)");
  }  

}
 
源代码20 项目: PgBulkInsert   文件: Issue32NumericTest.java
private ArrayList<BigDecimal> getBigDecimals() throws SQLException {

        ResultSet rs = getAll();

        ArrayList<BigDecimal> results = new ArrayList<>();

        while (rs.next()) {
            BigDecimal z = rs.getBigDecimal("bigDecimal");

            results.add(z);
        }

        return results;
    }