* Jorge Cardona <[EMAIL PROTECTED]> [2007-01-29 23:48:52 -0500]:

> Hi.
> I got a question about this parameter, the spamassassin documentation
> tells this:
> 
> 1) Current default query:
>    SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_
> OR username = '@GLOBAL' ORDER BY username ASC
> 
> 2) Use global and then domain level defaults:
>    SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_
> OR username = '@GLOBAL' OR username = '@~'||_DOMAIN_ ORDER BY username
> ASC
> 
> 3) Maybe global prefs should override user prefs:
>    SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_
> OR username = '@GLOBAL' ORDER BY username DESC
> 
> In 1) and 3) is possible that the query return a table with 2 users
> ,@GLOBAL, and the user that call spamassassin, what i understand it's
> that SA only use the preferences for the first user , thats why in 3)
> the global overrride the user prefs ("ORDER BY username DESC").
> 
> What i can't understand is whats do the 2) query, and also his
> description, "Use global and then domain level defaults" .
> Spamassassin use all the prefs from the @GLOBAL and work with it, and
> after that use the Domains prefs and wort again, thats what its does?
> or take the @GLOBAL prefs, and then override the prefs with the
> Domains prefs.?
> 
> Please, can anyone explain to me this?

As Michael said, your query will simply return ALL rows matching your
control statements. You need to limit the query to return the first
matching row, by simply adding "LIMIT 1" to the end of the query.

SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ \
  OR username = '@GLOBAL' OR username = '@~'||_DOMAIN_ \
  ORDER BY username ASC LIMIT 1

I guess you could call this method ghetto-XOR :-)

This would return a row for the matching username, fall back to the
global user, and last fall back to the default domain settings.

But why would you want the global user to have precedence over the
domain specific settings for the requested user? My tip is to have the
following hierarchical order:

        1: User specific settings
        2: Domain specific settings (if user settings are non-existant)
        3: Global settings (if neither user or domain settings exist)


Best of luck
-- 
Kim Christensen
"I am Jack's smirking revenge."

Reply via email to