Package org.h2.result
Class SortOrder
- java.lang.Object
-
- org.h2.result.SortOrder
-
-
Field Summary
Fields Modifier and Type Field Description static int
ASCENDING
This bit mask means the values should be sorted in ascending order.static int
DESCENDING
This bit mask means the values should be sorted in descending order.static int
NULLS_FIRST
This bit mask means NULLs should be sorted before other data, no matter if ascending or descending order is used.static int
NULLS_LAST
This bit mask means NULLs should be sorted after other data, no matter if ascending or descending order is used.private java.util.ArrayList<QueryOrderBy>
orderList
The order list.private int[]
queryColumnIndexes
The column indexes of the order by expressions within the query.private SessionLocal
session
private int[]
sortTypes
The sort type bit mask (DESCENDING, NULLS_FIRST, NULLS_LAST).
-
Constructor Summary
Constructors Constructor Description SortOrder(SessionLocal session, int[] queryColumnIndexes)
Construct a new sort order object with default sort directions.SortOrder(SessionLocal session, int[] queryColumnIndexes, int[] sortType, java.util.ArrayList<QueryOrderBy> orderList)
Construct a new sort order object.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static int[]
addNullOrdering(Database database, int[] sortTypes)
Add explicitNULLS_FIRST
orNULLS_LAST
where they aren't already specified.int
compare(Value[] a, Value[] b)
Compare two expression lists.Column
getColumn(int index, TableFilter filter)
Get the column for the given table filter, if the sort column is for this filter.java.util.ArrayList<QueryOrderBy>
getOrderList()
Returns the original query order list.int[]
getQueryColumnIndexes()
Get the column index list.java.util.Comparator<Value>
getRowValueComparator()
Returns comparator for row values.int[]
getSortTypes()
Get the sort order bit masks.int[]
getSortTypesWithNullOrdering()
Returns sort order bit masks withNULLS_FIRST
orNULLS_LAST
explicitly set.java.lang.StringBuilder
getSQL(java.lang.StringBuilder builder, Expression[] list, int visible, int sqlFlags)
Create the SQL snippet that describes this sort order.void
sort(java.util.ArrayList<Value[]> rows)
Sort a list of rows.void
sort(java.util.ArrayList<Value[]> rows, int fromInclusive, int toExclusive)
Sort a list of rows using offset and limit.static void
typeToString(java.lang.StringBuilder builder, int type)
Appends type information (DESC, NULLS FIRST, NULLS LAST) to the specified statement builder.
-
-
-
Field Detail
-
ASCENDING
public static final int ASCENDING
This bit mask means the values should be sorted in ascending order.- See Also:
- Constant Field Values
-
DESCENDING
public static final int DESCENDING
This bit mask means the values should be sorted in descending order.- See Also:
- Constant Field Values
-
NULLS_FIRST
public static final int NULLS_FIRST
This bit mask means NULLs should be sorted before other data, no matter if ascending or descending order is used.- See Also:
- Constant Field Values
-
NULLS_LAST
public static final int NULLS_LAST
This bit mask means NULLs should be sorted after other data, no matter if ascending or descending order is used.- See Also:
- Constant Field Values
-
session
private final SessionLocal session
-
queryColumnIndexes
private final int[] queryColumnIndexes
The column indexes of the order by expressions within the query.
-
sortTypes
private final int[] sortTypes
The sort type bit mask (DESCENDING, NULLS_FIRST, NULLS_LAST).
-
orderList
private final java.util.ArrayList<QueryOrderBy> orderList
The order list.
-
-
Constructor Detail
-
SortOrder
public SortOrder(SessionLocal session, int[] queryColumnIndexes)
Construct a new sort order object with default sort directions.- Parameters:
session
- the sessionqueryColumnIndexes
- the column index list
-
SortOrder
public SortOrder(SessionLocal session, int[] queryColumnIndexes, int[] sortType, java.util.ArrayList<QueryOrderBy> orderList)
Construct a new sort order object.- Parameters:
session
- the sessionqueryColumnIndexes
- the column index listsortType
- the sort order bit masksorderList
- the original query order list (if this is a query)
-
-
Method Detail
-
getSQL
public java.lang.StringBuilder getSQL(java.lang.StringBuilder builder, Expression[] list, int visible, int sqlFlags)
Create the SQL snippet that describes this sort order. This is the SQL snippet that usually appears after the ORDER BY clause.- Parameters:
builder
- string builder to append tolist
- the expression listvisible
- the number of columns in the select listsqlFlags
- formatting flags- Returns:
- the specified string builder
-
typeToString
public static void typeToString(java.lang.StringBuilder builder, int type)
Appends type information (DESC, NULLS FIRST, NULLS LAST) to the specified statement builder.- Parameters:
builder
- string buildertype
- sort type
-
compare
public int compare(Value[] a, Value[] b)
Compare two expression lists.- Specified by:
compare
in interfacejava.util.Comparator<Value[]>
- Parameters:
a
- the first expression listb
- the second expression list- Returns:
- the result of the comparison
-
sort
public void sort(java.util.ArrayList<Value[]> rows)
Sort a list of rows.- Parameters:
rows
- the list of rows
-
sort
public void sort(java.util.ArrayList<Value[]> rows, int fromInclusive, int toExclusive)
Sort a list of rows using offset and limit.- Parameters:
rows
- the list of rowsfromInclusive
- the start index, inclusivetoExclusive
- the end index, exclusive
-
getQueryColumnIndexes
public int[] getQueryColumnIndexes()
Get the column index list. This is the column indexes of the order by expressions within the query.For the query "select name, id from test order by id, name" this is {1, 0} as the first order by expression (the column "id") is the second column of the query, and the second order by expression ("name") is the first column of the query.
- Returns:
- the list
-
getColumn
public Column getColumn(int index, TableFilter filter)
Get the column for the given table filter, if the sort column is for this filter.- Parameters:
index
- the column index (0, 1,..)filter
- the table filter- Returns:
- the column, or null
-
getSortTypes
public int[] getSortTypes()
Get the sort order bit masks.- Returns:
- the list
-
getOrderList
public java.util.ArrayList<QueryOrderBy> getOrderList()
Returns the original query order list.- Returns:
- the original query order list
-
getSortTypesWithNullOrdering
public int[] getSortTypesWithNullOrdering()
Returns sort order bit masks withNULLS_FIRST
orNULLS_LAST
explicitly set.- Returns:
- bit masks with either
NULLS_FIRST
orNULLS_LAST
explicitly set.
-
addNullOrdering
public static int[] addNullOrdering(Database database, int[] sortTypes)
Add explicitNULLS_FIRST
orNULLS_LAST
where they aren't already specified.- Parameters:
database
- the databasesortTypes
- bit masks- Returns:
- the specified array with possibly modified bit masks
-
getRowValueComparator
public java.util.Comparator<Value> getRowValueComparator()
Returns comparator for row values.- Returns:
- comparator for row values.
-
-