Bug 176114 row._rownum implementation issues
This Bugzilla seeks to clarify the usage of the "row.__rownum" binding, and to track its correct implementation in BIRT Data engine. We shall define the "__rownum" binding to mean: the 0-based index of the current data row in the final result set available to a listing report item. "Final" result set means the result set after all applicable filter and sort conditions are applied. This definition implies: (1) "row.__rownum" is not available to expressions used to define a filter or sort condition. Since filtering and sorting affects the row indexes, they cannot make forward reference to the final row index. This restriction applies to all filters and sorts, including those defined on groups. (2) Group key expression can use "row.__rownum", since grouping does not change the row ordering or ID. In fact one of the common usage of the row.__rownum binding is to create row number based interval grouping (e.g., put every 20 rows in a group). BIRT should report a sensible error message if row.__rownum is found to be used in sorting or filtering. Where a row number based sort/filter is desired, the report designer is encouraged to use the Total.runningCount aggregation.
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/i18n/ResourceConstants.java
public final static String CANNOT_DETERMINE_SUPPORT_FOR_MULTIPLE_RESULT_SETS = "odaconsumer.CannotDetermineSupportForMultipleResultSets";
	public final static String CANNOT_DETERMINE_SUPPORT_FOR_NAMED_RESULT_SETS = "odaconsumer.CannotDetermineSupportForNamedResultSets";
	public final static String CANNOT_DETERMINE_SUPPORT_FOR_NAMED_PARAMETERS = "odaconsumer.CannotDetermineSupportForNamedParameters";
	public final static String CANNOT_DETERMINE_SUPPORT_FOR_IN_PARAMETERS = "odaconsumer.CannotDetermineSupportForInParameters";
	public final static String CANNOT_DETERMINE_SUPPORT_FOR_OUT_PARAMETERS = "odaconsumer.CannotDetermineSupportForOutParameters";
	public final static String CANNOT_SET_STATEMENT_PROPERTY = "odaconsumer.CannotSetStatementProperty";
	public final static String CANNOT_SET_SORT_SPEC = "odaconsumer.CannotSetSortSpec";
	public final static String CANNOT_SET_MAX_ROWS = "odaconsumer.CannotSetMaxRows";
	public final static String CANNOT_GET_RESULTSET_METADATA = "odaconsumer.CannotGetResultSetMetaData";
	public final static String CANNOT_GET_METADATA_FOR_NAMED_RESULTSET = "odaconsumer.CannotGetMetaDataForNamedResultSet";
	public final static String CANNOT_EXECUTE_STATEMENT = "odaconsumer.CannotExecuteStatement";
	public final static String CANNOT_GET_RESULTSET = "odaconsumer.CannotGetResultSet";
	public final static String CANNOT_GET_NAMED_RESULTSET = "odaconsumer.CannotGetNamedResultSet";
	public final static String CANNOT_FIND_OUT_PARAMETER = "odaconsumer.CannotFindOutParameter";
	public final static String CANNOT_GET_PARAMETER_TYPE = "odaconsumer.CannotGetParameterType";
	public final static String CANNOT_CLOSE_STATEMENT = "odaconsumer.CannotCloseStatement";
	public final static String CANNOT_GET_COLUMN_COUNT = "odaconsumer.CannotGetColumnCount";
	public final static String CANNOT_GET_COLUMN_NAME = "odaconsumer.CannotGetColumnName";
	public final static String CANNOT_GET_COLUMN_LABEL = "odaconsumer.CannotGetColumnLabel";
	public final static String CANNOT_GET_COLUMN_TYPE = "odaconsumer.CannotGetColumnType";
	public final static String CANNOT_FETCH_NEXT_ROW = "odaconsumer.CannotFetchNextRow";
	public final static String CANNOT_DETERMINE_WAS_NULL = "odaconsumer.CannotDetermineWasNull";
	public final static String CANNOT_GET_INT_FROM_COLUMN = "odaconsumer.CannotGetIntFromColumn";
	public final static String CANNOT_GET_DOUBLE_FROM_COLUMN = "odaconsumer.CannotGetDoubleFromColumn";
	public final static String CANNOT_GET_STRING_FROM_COLUMN = "odaconsumer.CannotGetStringFromColumn";
	public final static String CANNOT_GET_BIGDECIMAL_FROM_COLUMN = "odaconsumer.CannotGetBigDecimalFromColumn";
	public final static String CANNOT_GET_DATE_FROM_COLUMN = "odaconsumer.CannotGetDateFromColumn";
	public final static String CANNOT_GET_TIME_FROM_COLUMN = "odaconsumer.CannotGetTimeFromColumn";
	public final static String CANNOT_GET_TIMESTAMP_FROM_COLUMN = "odaconsumer.CannotGetTimestampFromColumn";
	public final static String CANNOT_GET_CLOB_FROM_COLUMN = "odaconsumer.CannotGetClobFromColumn";