PostgreSQL: tipos geométricos - path fechado
Gabarito: letra D. O PostgreSQL armazena um closed path (caminho fechado) no formato ((x1,y1), ...) (parênteses duplos) e aloca 16 + 16n bytes, onde n é o número de pontos. Cada ponto ocupa 16 bytes (dois valores double precision de 8 bytes cada) e há um overhead de 16 bytes para a estrutura do path. Essa é a representação padrão do tipo path quando fechado, conforme a documentação oficial do PostgreSQL.
Característica | Closed path (PostgreSQL) |
|---|
Representação | ((x1,y1), ...) (parênteses duplos)
|
Overhead fixo | 16 bytes |
Cada ponto | 16 bytes (2× double de 8 bytes) |
Tamanho total | 16 + 16n bytes |
Alternativa A — ❌ Incorreta
A representação (x,y) corresponde ao tipo point, e não a um closed path. Além disso, o tamanho de armazenamento de um point é 16 bytes, não 8 bytes. 8 bytes seria o tamanho de um único double, não de um ponto completo.
Alternativa B — ❌ Incorreta
O formato {ABC} não corresponde a nenhum tipo geométrico nativo do PostgreSQL. Os tipos geométricos usam parênteses ou colchetes, não chaves. O tamanho de 16 bytes também não se aplica a closed path.
Alternativa C — ❌ Incorreta
A representação ((x1,y1),(x2,y2)) é a de um closed path com exatamente dois pontos, mas o tamanho alocado seria 16 + 16*2 = 48 bytes, não 32 bytes. O valor 32 bytes seria equivalente a 2 pontos sem overhead, o que não é correto.
Alternativa D — ✅ Correta ⟵ GABARITO
Correta em ambos os aspectos: a representação com parênteses duplos ((x1,y1),...) é a padrão para closed path, e o tamanho de armazenamento é 16 + 16n bytes, sendo 16 bytes fixos (overhead) mais 16 bytes por ponto. Essa fórmula é confirmada pela documentação oficial do PostgreSQL para o tipo path.
Alternativa E — ❌ Incorreta
A representação com parênteses duplos está correta, mas o tamanho de 32 + 32n bytes está errado. Ele superestima o espaço ocupado: cada ponto consome 16 bytes, e não 32. O overhead também é 16, e não 32. O valor correto é 16 + 16n.