private List<String> performUpdateRelational( QName ftName, List<ParsedPropertyReplacement> replacementProps, IdFilter filter ) throws FeatureStoreException, FilterEvaluationException { FeatureTypeMapping ftMapping = schema.getFtMapping( ftName ); FIDMapping fidMapping = ftMapping.getFidMapping(); int updated = 0; PreparedStatement stmt = null; try { String sql = createRelationalUpdateStatement( ftMapping, fidMapping, replacementProps, filter.getSelectedIds() ); if ( sql != null ) { LOG.debug( "Update: " + sql ); stmt = conn.prepareStatement( sql.toString() ); setRelationalUpdateValues( replacementProps, ftMapping, stmt, filter, fidMapping ); int[] updates = stmt.executeBatch(); for ( int noUpdated : updates ) { updated += noUpdated; } } } catch ( SQLException e ) { JDBCUtils.log( e, LOG ); throw new FeatureStoreException( JDBCUtils.getMessage( e ), e ); } finally { JDBCUtils.close( stmt ); } LOG.debug( "Updated {} features.", updated ); return new ArrayList<String>( filter.getMatchingIds() ); }