ON CLUSTER permite modificar perfiles de ajuste en un clúster; véase DDL distribuido.
Reemplazar o modificar ajustes
ALTER SETTINGS PROFILE admite dos formas distintas de cambiar los ajustes y los perfiles padre (heredados) de un perfil. Su comportamiento es muy diferente, por lo que es importante elegir la correcta.
Forma de reemplazo: SETTINGS / INHERIT sin modificadores
SETTINGS sin modificadores (sin ADD, MODIFY ni DROP) reemplaza por completo la lista de ajustes y todos los perfiles padre del perfil por exactamente lo que enumeres. Todo lo que estuviera presente antes pero no figure en la lista se elimina silenciosamente; no hay ninguna advertencia.
SETTINGS en CREATE SETTINGS PROFILE: la cláusula define la lista completa de configuraciones.
Forma incremental: ADD / MODIFY / DROP
ADD, MODIFY y DROP cambian entradas individuales y dejan intacto todo lo demás del perfil:
ADD SETTINGS variable = value [constraints]— añade un ajuste que todavía no está presente.MODIFY SETTINGS variable = value [constraints]— reemplaza la entrada de un solo ajuste. Se sobrescribe la entrada completa (valor y restricciones), así que vuelve a especificarMIN/MAX/READONLY/etc. si quieres conservarlos.DROP SETTINGS variable [,...]— elimina los ajustes indicados.ADD PROFILES 'profile_name' [,...]/DROP PROFILES 'profile_name' [,...]— añade o elimina perfiles padre (heredados).DROP ALL SETTINGS/DROP ALL PROFILES— elimina todos los ajustes o todos los perfiles padre.
DROP SETTINGS a ADD SETTINGS b = 1.
SET variable = value es un alias de MODIFY SETTINGS variable = value. Se ofrece porque SET resulta natural y porque escribir la cláusula SETTINGS de reemplazo cuando se pretendía hacer un cambio incremental es un error común.
Ejemplos
SHOW CREATE SETTINGS PROFILE:
Incremental vs reemplazo completo
ADD SETTINGS o MODIFY SETTINGS (consulta los ejemplos a continuación).
ADD vs MODIFY
ADD SETTINGS como MODIFY SETTINGS conservan los demás ajustes del perfil, pero tratan de forma distinta una entrada existente para el mismo ajuste:
ADD SETTINGS variable = value ...primero elimina cualquier entrada existente paravariabley luego inserta la nueva. Por lo tanto, reemplaza el valor junto con todas las restricciones de ese ajuste. CualquierMIN,MAXo permiso de escritura (READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY) definido previamente paravariableque no se repita se descarta.MODIFY SETTINGS variable = value ...fusiona campo por campo: sobrescribe solo los campos que realmente se especifican (el valor,MIN,MAXo el permiso de escritura) y mantiene los demás campos de ese ajuste tal como estaban.
Ejemplos
MODIFY SETTINGS
MODIFY combina los campos uno por uno, cambiar solo el valor de una configuración conserva sus restricciones existentes:
ADD SETTINGS
MODIFY, si se vuelve a ejecutar ADD solo con un valor, se eliminan las restricciones definidas previamente para ese parámetro: