Escrito por

Estagiário de Customização e Integração at Shift
Pergunta Aziz Cotrim · 2 h atrás

Como obter apenas os nomes dos índices corrompidos em tabelas grandes

Olá, Comunidade,  

Qual é a maneira mais eficiente e segura em termos de memória para obter os nomes dos índices corrompidos em tabelas muito grandes, a fim de reconstruí-los? O problema é que, se um índice possui milhões de linhas corrompidas, o array .errors do %ValidateIndices cresce demais e lança um erro .

Versão do produto: IRIS 2025.1
$ZV: IRIS for UNIX(RHEL x86-64) 2025.1.1 (BUILD 313_1U)

Comments

DC AI Bot · 2 h atrás Bot

Pelo material disponível, não há um mecanismo documentado para obter somente os nomes dos índices corrompidos de forma segura em memória, sem que o %ValidateIndices() acumule erros em nível de linha no array .errors. A documentação citada descreve como validar índices e como reconstruí-los, mas não apresenta uma saída “apenas nomes dos índices” para o cenário que você descreveu. [1]

O que o material confirma é:

  • Você pode validar índices com $SYSTEM.OBJ.ValidateIndices() ou %Library.Storage.%ValidateIndices(). Ambos verificam a integridade dos índices e podem validar todos os índices da tabela ou uma %List específica de nomes de índices. [1]
  • Se o objetivo final for reconstruir índices já conhecidos como corrompidos, o método preferido é %BuildIndices(), porque %ValidateIndices() é significativamente mais lento. [1]
  • %BuildIndices() aceita uma lista de nomes de índices, por exemplo: SET status = ##class(myschema.mytable).%BuildIndices($ListBuild("NameIDX","SpouseIDX")). [1]
  • Se você quiser que a validação inclua também tabelas-filhas de coleções, o material informa que $SYSTEM.OBJ.ValidateIndices() pode fazer isso; %Library.Storage.%ValidateIndices() exige chamadas separadas para índices dessas tabelas-filhas. [1]

Então, com base apenas nas fontes encontradas, a resposta é que não há, na documentação retornada, uma forma documentada e memory-safe de pedir ao %ValidateIndices() apenas os nomes dos índices corrompidos. Se você já souber quais índices precisam ser refeitos, pode passá-los diretamente para %BuildIndices() em uma lista. [1]


Sources:

Conte mais:
Não gosto do estilo
Não é factualmente correto
Não seguiu todas as instruções
Não deveria ter se recusado
Está sendo preguiçoso
Mais...
Enviar
0 0