}
}
AbstractRelationalDbAction relationalDbAction = (AbstractRelationalDbAction) getActionDefinition();
IPentahoResultSet resultSet = null;
boolean isForwardOnly = relationalDbAction.getUseForwardOnlyResultSet().getBooleanValue( false );
resultSet = doQuery( sqlConnection, query, isForwardOnly );
if ( sqlConnection.isForcedForwardOnly() ) {
isForwardOnly = true;
live = false;
warn( Messages.getInstance().getString( "SQLBaseComponent.WARN_FALL_BACK_TO_NONSCROLLABLE" ) ); //$NON-NLS-1$
}
if ( live ) {
// set the result set as the output
rSet = resultSet;
// After preparation and execution, we need to clear out the
// prepared parameters.
preparedParameters.clear();
if ( resultSet != null ) {
getMetadata( resultSet, true );
IActionOutput actionOutput = relationalDbAction.getOutputResultSet();
if ( actionOutput != null ) {
actionOutput.setValue( resultSet );
}
return true;
} else {
// close the connection if owner
error( Messages.getInstance().getErrorString( "SQLBaseComponent.ERROR_0006_EXECUTE_FAILED",
getActionName() ) ); //$NON-NLS-1$
if ( connectionOwner ) {
connection.close();
}
return false;
}
} else {
// execute the query, read the results and cache them
try {
// After preparation and execution, we need to clear out the
// prepared parameters.
preparedParameters.clear();
IPentahoResultSet cachedResultSet = resultSet.memoryCopy();
rSet = cachedResultSet;
IActionOutput actionOutput = relationalDbAction.getOutputResultSet();
if ( actionOutput != null ) {
actionOutput.setValue( cachedResultSet );