Patch for raddb/sql/mysql/ippool.conf
Chris Moules
chris at gms.lu
Tue Aug 11 11:22:30 CEST 2009
Alan DeKok wrote:
> Chris Moules wrote:
>> Sorry this is not a GIT patch.
>>
>> Here are two minor fixes to the MySQL ippool.conf file.
>>
>> 1) A Syntax correction for the alternative 'allocate-find' query.
>
> Uh... which version of MySQL are you using? The examples were changed
> FROM "is null" TO '= null" in January.
Sorry for a late-ish reply, I have been away.
I am running MySQL 5.0.51a.
I know that some of the examples have been changes, I believe that I had posted some corrections to this before. I had just
noted that one of the non-default queries still had the 'incorrect' syntax:
(Copy / paste from patch in previous mail)
# allocate-find = "SELECT framedipaddress FROM ${ippool_table} \
# WHERE pool_name = '%{control:Pool-Name}' \
-# AND expiry_time = NULL \
+# AND expiry_time IS NULL \
# ORDER BY RAND() \
# LIMIT 1 \
# FOR UPDATE"
MySQL is a little odd in it's usage of 'NULL' data. As far as I understand things MySQL uses different syntax for the assignment
and checking of the NULL value:
In a "SET" part of the statement you use the "=" operator. EG "UPDATE mytable SET value = NULL".
In the "WHERE" part of a statement you use the "IS NULL" or "IS NOT NULL" syntax.
EG "SELECT * from mytable WHERE value IS NULL".
Documentation (Link to latest v6.0 docs, also the same for 5.0 and 5.1):
<http://dev.mysql.com/doc/refman/6.0/en/non-typed-operators.html>
The query "SELECT NULL = NULL" returns "NULL" not "TRUE" or "1" so no sensible logic can be based on it. Reading the docs I also
saw the "NULL-safe equal to operator", ("<=>"), that seems to do what you would expect...
I hope the makes (MySQL) sense. So yes, there is both "= NULL" and "IS NULL" syntax, just the appropriate one needs to be use in
the appropriate place.
>
>> 2) There was an issue with the 'start-update' query updating more than
>> it should.
>> I am using IMSI codes as my pool-key. In the case that a phone
>> disconnects, but no Acct-Stop is received the expiry_time is updated
>> every time that this phone reconnects as only the NAS and the pool-key
>> are used as update limiters.
>>
>> By including at least the framedipaddress this is solved.
>
> OK.
>
>> As both the 'stop-clear' and 'alive-update' sections are using the 3
>> additional qualifiers, it makes sense to use them here too. (I see no
>> reason no to).
>
> Looks good to me.
Cool.
>
> Alan DeKok.
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
>
Chris
More information about the Freeradius-Devel
mailing list