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 definen un orden total. Comparan primero el SRID de los cuadros espaciotemporales, luego las dimensiones que tienen los cuadros, si los cuadros espaciotemporales son geodésicos y el tipo de valor de los cuadros temporales. Los cuadros que coinciden en todo esto se comparan en su dimensión temporal y, si son iguales, en su dimensión de valor o espacial.
Comparaciones tradicionales
box {=, <>, <, >, <=, >=} box → boolean
cmp(box,box) → integer
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) → integer 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