Pular para o conteúdo principal
Use o vsql_cube quando várias colunas numéricas pertencem ao mesmo conjunto e você quer consultá-las como um único valor. Uma cadeia de condições AND pode testar se uma linha cai dentro de um intervalo, mas não pode ordenar linhas por distância. O tipo cube faz as duas coisas. Ele é um port da extensão cube do PostgreSQL. A maioria dos nomes de função do PostgreSQL é mantida; os construtores cube(), os operadores e as suas funções de apoio (cube_contained, cube_overlap, distance_taxicab, distance_chebyshev) se tornam as funções nomeadas abaixo.

Instalar

O vsql_cube.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

O tipo cube

Declare a coluna como `cube`(N), onde N é o maior número de dimensões que um valor pode ter, de 1 a 100. cube é uma palavra reservada do MySQL, então precisa de crases, e a contagem de dimensões é obrigatória.
Escreva os valores como uma string de coordenadas. A coluna a interpreta:

Funções

Exemplo

Encontre os dois sensores mais próximos de uma leitura alvo e, depois, os sensores dentro de uma região:
Um argumento cube obtém a sua contagem de dimensões de uma coluna, então uma chamada funciona quando um dos seus argumentos cube é um valor de coluna ou o resultado de uma função que preserva a contagem de dimensões de uma coluna, como cube_union ou cube_enlarge. Uma chamada sem nenhum argumento desse tipo, como em cube_dim(cube_point_nd(1, 2)), falha com ERROR 3219 (HY000): Cannot initialize function 'cube_dim': cannot determine type parameters for vsql_cube.cube in argument 1. Pelo mesmo motivo, insira uma string de coordenadas simples em vez de envolvê-la em cube_point_nd().Cada argumento de coordenada de cube_point_nd, cube_box_nd, cube_subset e cube_add_dim também pode ser uma string separada por vírgulas, e as listas são unidas de ponta a ponta. Assim, cube_point_nd('1,2,3') e cube_point_nd(1, 2, 3) constroem o mesmo ponto. Passe uma string quando as coordenadas estão em uma coluna, que é o único caso que argumentos separados não conseguem expressar.

Veja também