Package org.h2.tools
Class MultiDimension
java.lang.Object
org.h2.tools.MultiDimension
- All Implemented Interfaces:
Comparator<long[]>
A tool to help an application execute multi-dimensional range queries.
The algorithm used is database independent, the only requirement
is that the engine supports a range index (for example b-tree).
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
compare
(long[] a, long[] b) int
deinterleave
(int dimensions, long scalar, int dim) Gets one of the original multi-dimensional values from a scalar value.generatePreparedQuery
(String table, String scalarColumn, String[] columns) Generates an optimized multi-dimensional range query.static MultiDimension
Get the singleton.int
getMaxValue
(int dimensions) Get the maximum value for the given dimension count.getResult
(PreparedStatement prep, int[] min, int[] max) Executes a prepared query that was generated using generatePreparedQuery.long
interleave
(int... values) Convert the multi-dimensional value into a one-dimensional (scalar) value.long
interleave
(int x, int y) Convert the two-dimensional value into a one-dimensional (scalar) value.int
normalize
(int dimensions, double value, double min, double max) Normalize a value so that it is between the minimum and maximum for the given number of dimensions.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Constructor Details
-
MultiDimension
protected MultiDimension()Protected constructor
-
-
Method Details
-
getInstance
Get the singleton.- Returns:
- the singleton
-
normalize
public int normalize(int dimensions, double value, double min, double max) Normalize a value so that it is between the minimum and maximum for the given number of dimensions.- Parameters:
dimensions
- the number of dimensionsvalue
- the value (must be in the range min..max)min
- the minimum valuemax
- the maximum value (must be larger than min)- Returns:
- the normalized value in the range 0..getMaxValue(dimensions)
-
getMaxValue
public int getMaxValue(int dimensions) Get the maximum value for the given dimension count. For two dimensions, each value must contain at most 32 bit, for 3: 21 bit, 4: 16 bit, 5: 12 bit, 6: 10 bit, 7: 9 bit, 8: 8 bit.- Parameters:
dimensions
- the number of dimensions- Returns:
- the maximum value
-
interleave
public long interleave(int... values) Convert the multi-dimensional value into a one-dimensional (scalar) value. This is done by interleaving the bits of the values. Each values must be between 0 (including) and the maximum value for the given number of dimensions (getMaxValue, excluding). To normalize values to this range, use the normalize function.- Parameters:
values
- the multi-dimensional value- Returns:
- the scalar value
-
interleave
public long interleave(int x, int y) Convert the two-dimensional value into a one-dimensional (scalar) value. This is done by interleaving the bits of the values. Each values must be between 0 (including) and the maximum value for the given number of dimensions (getMaxValue, excluding). To normalize values to this range, use the normalize function.- Parameters:
x
- the value of the first dimension, normalizedy
- the value of the second dimension, normalized- Returns:
- the scalar value
-
deinterleave
public int deinterleave(int dimensions, long scalar, int dim) Gets one of the original multi-dimensional values from a scalar value.- Parameters:
dimensions
- the number of dimensionsscalar
- the scalar valuedim
- the dimension of the returned value (starting from 0)- Returns:
- the value
-
generatePreparedQuery
Generates an optimized multi-dimensional range query. The query contains parameters. It can only be used with the H2 database.- Parameters:
table
- the table namecolumns
- the list of columnsscalarColumn
- the column name of the computed scalar column- Returns:
- the query
-
getResult
Executes a prepared query that was generated using generatePreparedQuery.- Parameters:
prep
- the prepared statementmin
- the lower valuesmax
- the upper values- Returns:
- the result set
- Throws:
SQLException
- on failure
-
compare
public int compare(long[] a, long[] b) - Specified by:
compare
in interfaceComparator<long[]>
-