Los operadores de comparación tradicionales (=, <, etc.) se pueden aplicar a tipos de cuadro delimitador. Exceptuando la igualdad y la no igualdad, los otros operadores de comparación no son útiles en el mundo real pero permiten construir índices de árbol B en tipos de cuadro delimitador. Estos operadores comparan primero los valores de tiempo y, si son iguales, comparan los valores.
Comparaciones tradicionales
box {=, <>, <, >, <=, >=} box → boolean
cmp(box,box) → int
La función cmp devuelve -1, 0 o 1 según que el primer argumento sea, respectivamente, menor que, igual a o mayor que el segundo.
SELECT tbox 'TBOXINT XT([1,1],[2001-01-01,2001-01-04])' = tbox 'TBOXINT XT([2,2], [2001-01-03,2001-01-05])'; -- false SELECT tbox 'TBOXFLOAT XT([1,1],[2001-01-01,2001-01-04])' <> tbox 'TBOXFLOAT XT([2,2],[2001-01-03,2001-01-05])'; -- true SELECT tbox 'TBOXINT XT([1,1],[2001-01-01,2001-01-04])' < tbox 'TBOXINT XT([1,2],[2001-01-03,2001-01-05])'; -- true SELECT tbox 'TBOXFLOAT XT([1,1],[2001-01-03,2001-01-04])' > tbox 'TBOXFLOAT XT((1,2),[2001-01-01,2001-01-05])'; -- true SELECT tbox 'TBOXINT XT([1,1],[2001-01-01,2001-01-04])' <= tbox 'TBOXINT XT([2,2], [2001-01-03,2001-01-05])'; -- true SELECT tbox 'TBOXFLOAT XT([1,1],[2001-01-01,2001-01-04])' >= tbox 'TBOXFLOAT XT([2,2], [2001-01-03,2001-01-05])'; -- false SELECT cmp(tbox 'TBOXFLOAT XT([1,1],[2001-01-01,2001-01-04])', tbox 'TBOXFLOAT XT([2,2],[2001-01-03,2001-01-05])'); -- -1
Valores hash
hash(box) → int hashExtended(box,seed bigint) → bigint
La función hash devuelve un valor hash de 32 bits y la función hashExtended un valor hash de 64 bits calculado con la semilla dada. Los valores iguales tienen valores hash iguales, que es en lo que se basan los índices hash, las uniones hash y la agregación hash.
SELECT hash(tbox 'TBOXINT XT([1,1],[2001-01-01,2001-01-04])') = hash(tbox 'TBOXINT XT([1,2),[2001-01-01,2001-01-04])'); -- true SELECT hashExtended(stbox 'STBOX X((1,1),(2,2))', 0) <> hashExtended(stbox 'STBOX X((1,1),(2,2))', 1); -- true