ON CLUSTER permet de modifier les profils de paramètres d’un cluster, voir DDL distribué.
Remplacer ou modifier des paramètres
ALTER SETTINGS PROFILE prend en charge deux manières distinctes de modifier les paramètres et les profils parents (hérités) d’un profil. Leur comportement diffère fortement, il est donc important de choisir la bonne.
Forme de remplacement : SETTINGS / INHERIT seuls
SETTINGS seule (sans ADD, MODIFY ni DROP) remplace l’intégralité de la liste des paramètres ainsi que tous les profils parents du profil par exactement les éléments que vous indiquez. Tout ce qui était présent auparavant mais ne figure pas dans la liste est supprimé sans avertissement.
SETTINGS dans CREATE SETTINGS PROFILE : la clause définit la liste complète des paramètres.
Forme incrémentale : ADD / MODIFY / DROP
ADD, MODIFY et DROP modifient des entrées individuelles tout en laissant le reste du profil intact :
ADD SETTINGS variable = value [constraints]— ajoute un paramètre qui n’est pas encore présent.MODIFY SETTINGS variable = value [constraints]— remplace l’entrée d’un seul paramètre. L’entrée entière (valeur et contraintes) est remplacée ; indiquez donc à nouveauMIN/MAX/READONLY/etc. si vous souhaitez les conserver.DROP SETTINGS variable [,...]— supprime les paramètres indiqués.ADD PROFILES 'profile_name' [,...]/DROP PROFILES 'profile_name' [,...]— ajoute ou supprime des profils parents (hérités).DROP ALL SETTINGS/DROP ALL PROFILES— supprime tous les paramètres ou tous les profils parents.
DROP SETTINGS a ADD SETTINGS b = 1.
SET variable = value est un alias de MODIFY SETTINGS variable = value. Il est proposé parce que SET est naturel et que saisir la clause SETTINGS de remplacement alors qu’une modification incrémentale était prévue est une erreur courante.
Exemples
SHOW CREATE SETTINGS PROFILE :
Incrémental vs remplacement complet
ADD SETTINGS ou MODIFY SETTINGS (voir les exemples ci-dessous).
ADD vs MODIFY
ADD SETTINGS et MODIFY SETTINGS conservent tous deux les autres paramètres du profil, mais ils traitent différemment une entrée existante pour le même paramètre :
ADD SETTINGS variable = value ...supprime d’abord toute entrée existante pourvariable, puis insère la nouvelle. Il remplace donc la valeur ainsi que toutes les contraintes de ce paramètre. ToutMIN,MAXou attribut de modification (READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY) précédemment défini pourvariableet que vous ne répétez pas est supprimé.MODIFY SETTINGS variable = value ...fusionne champ par champ : il remplace uniquement les champs que vous spécifiez effectivement (la valeur, ouMIN, ouMAX, ou l’attribut de modification) et conserve les autres champs de ce paramètre en l’état.
Exemples
MODIFY SETTINGS
MODIFY fusionne les champs un par un, le fait de ne modifier que la valeur d’un paramètre conserve les contraintes existantes :
ADD SETTINGS
MODIFY, le fait de réexécuter ADD en ne fournissant qu’une valeur supprime les contraintes précédemment définies pour ce paramètre :