@Override public SQLAction batchAction(BatchQuery query) { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && dataNode.getAdapter().supportsBatchUpdates(); return new PostgresBatchAction(query, dataNode, runningAsBatch); }
public SQLAction batchAction(BatchQuery query) { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && adapter.supportsBatchUpdates(); BatchAction action = new BatchAction(query, adapter, entityResolver); action.setBatch(runningAsBatch); return action; }
public SQLAction batchAction(BatchQuery query) { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && adapter.supportsBatchUpdates(); BatchAction action = new SQLServerBatchAction(query, adapter, entityResolver); action.setBatch(runningAsBatch); return action; }
@Override public SQLAction batchAction(BatchQuery query) { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && dataNode.getAdapter().supportsBatchUpdates(); return new BatchAction(query, dataNode, runningAsBatch); }
@Override public SQLAction batchAction(BatchQuery query) { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver // limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && dataNode.getAdapter().supportsBatchUpdates(); return new SQLServerBatchAction(query, dataNode, runningAsBatch); }
@Override public SQLAction batchAction(BatchQuery query) { // optimistic locking is not supported in batches due to JDBC driver // limitations // TODO: is this still true with ojdbc6.jar? boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && dataNode.getAdapter().supportsBatchUpdates(); return new OracleBatchAction(query, dataNode, runningAsBatch); }
/** * Executes a batch updating query. * * @deprecated since 1.2 */ protected void runBatchUpdate( Connection connection, BatchQuery query, OperationObserver observer) throws SQLException, Exception { // check run strategy... // optimistic locking is not supported in batches due to JDBC driver limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && adapter.supportsBatchUpdates(); BatchAction action = new BatchAction(query, getAdapter(), getEntityResolver()); action.setBatch(runningAsBatch); action.performAction(connection, observer); }
@Override public SQLAction batchAction(BatchQuery query) { // special handling for LOB updates if (OracleAdapter.isSupportsOracleLOB() && OracleAdapter.updatesLOBColumns(query)) { // Special action for Oracle8. See CAY-1307. return new Oracle8LOBBatchAction(query, dataNode.getAdapter(), dataNode.getJdbcEventLogger()); } else { // optimistic locking is not supported in batches due to JDBC driver // limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && dataNode.getAdapter().supportsBatchUpdates(); return new OracleBatchAction(query, dataNode, runningAsBatch); } } }
boolean useOptimisticLock = query.isUsingOptimisticLocking();
public SQLAction batchAction(BatchQuery query) { // special handling for LOB updates if (OracleAdapter.isSupportsOracleLOB() && OracleAdapter.updatesLOBColumns(query)) { return new OracleLOBBatchAction(query, getAdapter()); } else { // optimistic locking is not supported in batches due to JDBC driver // limitations boolean useOptimisticLock = query.isUsingOptimisticLocking(); boolean runningAsBatch = !useOptimisticLock && adapter.supportsBatchUpdates(); OracleBatchAction action = new OracleBatchAction( query, getAdapter(), getEntityResolver()); action.setBatch(runningAsBatch); return action; } }
/** * Executes batch as individual queries over the same prepared statement. */ protected void runAsIndividualQueries(Connection connection, BatchTranslator translator, OperationObserver delegate, boolean generatesKeys) throws SQLException, Exception { JdbcEventLogger logger = dataNode.getJdbcEventLogger(); boolean useOptimisticLock = query.isUsingOptimisticLocking(); String queryStr = translator.getSql(); // log batch SQL execution logger.log(queryStr); // run batch queries one by one DbAdapter adapter = dataNode.getAdapter(); try (PreparedStatement statement = prepareStatement(connection, queryStr, adapter, generatesKeys)) { for (BatchQueryRow row : query.getRows()) { DbAttributeBinding[] bindings = translator.updateBindings(row); logger.logQueryParameters("bind", bindings); bind(adapter, statement, bindings); int updated = statement.executeUpdate(); if (useOptimisticLock && updated != 1) { throw new OptimisticLockException(row.getObjectId(), query.getDbEntity(), queryStr, row.getQualifier()); } delegate.nextCount(query, updated); if (generatesKeys) { processGeneratedKeys(statement, delegate, row); } logger.logUpdateCount(updated); } } }