Musing and digressing around sqlite
Arran Cudbard-Bell
a.cudbardb at freeradius.org
Wed Jul 9 01:18:37 CEST 2014
On 8 Jul 2014, at 14:57, Axel Luttgens <axel.luttgens at skynet.be> wrote:
> Hello,
>
> I'm testing FR with the slite backend, with the configs provided by:
>
> raddb/mods-config/sql/main/sqlite/schema.sql
> raddb/mods-config/sql/main/sqlite/queries.conf
>
> And I have some questions.
> So, if I may ask...
>
> 1. Almost all tables have an id column, conveniently named "id" and defined as:
>
> id int(11) PRIMARY KEY
>
> Is there any reason for not having defined those columns as
>
> id INTEGER PRIMARY KEY AUTOINCREMENT
> instead?
Nope.
>
> 2. Incidentally, table "radusergroup" doesn't have such a column.
> An omission? Or could it prove problematic to define such a column?
It should probably have one as well.
> 3. The post-auth query is defined as:
>
> query = "\
> INSERT INTO ${..postauth_table} \
> (username, pass, reply, authdate) \
> VALUES ( \
> '%{SQL-User-Name}', \
> '%{%{User-Password}:-%{Chap-Password}}', \
> '%{reply:Packet-Type}', \
> %{%{integer:Event-Timestamp}:-date('now')})"
>
> and the log shows it expands as:
>
> INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( 'bob', 'hello', 'Access-Accept', )
>
> As a result, no row is inserted into table "radpostauth", since its column "authdate" is defined to be NOT NULL.
Could you provide the debug output please.
> How is the expression %{%{integer:Event-Timestamp}:-date('now')} supposed to be interpreted?
> More specifically, why the enclosing %{...}?
It's interpreted by the xlat parser. As integer:Event-Timestamp expands to a zero length string, data('now')
should be inserted into the query string instead...
I guess that's a bug.
> 4. Replacing above expression by '%S' works beautifully.
> I mean, the expansion for the query yields a timestamp such as "'2014-07-08 18:09:54'", and a row is now happily inserted into table "radpostauth". :-)
> What is the rationale for having devised a query based on Event-Timestamp at first hand?
It's adjusted for delay, whereas %S isn't.
If you're using the detail/reader writer combo using %S will produce invalid results.
If you're doing accounting Acct-Delay-Time will be taken into account when producing the value for Event-Timestamp also.
> 5. BTW, file http://networkradius.com/doc/FreeRADIUS-Implementation-Ch16.pdf describes %S as returning a timestamp with format "YYYY-mmm-ddd HH:MM:SS".
> Wouldn't something like "YYYY-MM-DD HH:MM:SS" be more accurate?
Probably.
>
> 6. I've left the default setting
>
> radius_db = "radius"
>
> in raddb/mods-available/sql, even if my db file is named "radiusdb".
> Everything seems to be working fine.
> What is the role of variable "radius_db" in an sqlite context?
None.
The database file is set with
sql {
sqlite {
filename = "/path/to/file"
}
}
> 7. Going back to question 3, this raises the usual question about sqlite in such cases.
> Would there be a way to get an explicit error message written to syslog?
Use linelog to log Module-Failure-Message attribute values.
-Arran
Arran Cudbard-Bell <a.cudbardb at freeradius.org>
FreeRADIUS Development Team
FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 881 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20140708/68281932/attachment.pgp>
More information about the Freeradius-Users
mailing list