Pull from CVS head: Build-dependancies due to new libtool 1.5
[freeradius.git] / src / modules / rlm_sql / drivers / rlm_sql_oracle / db_oracle.sql
1 /*
2  * $Id$
3  *
4  * Oracle schema for FreeRADIUS
5  *
6  *
7  * NOTE: Which columns are NULLable??
8  */
9
10 /*
11  * Table structure for table 'nas'
12  * This is not currently used but FreeRADIUS but is usefull for reporting
13  * anyway.
14  */
15
16 CREATE TABLE nas (
17         id              INT PRIMARY KEY,
18         nasname         VARCHAR(128),
19         shortname       VARCHAR(32),
20         ipaddr          VARCHAR(15),
21         type            VARCHAR(30),
22         ports           INT,
23         secret          VARCHAR(60),
24         community       VARCHAR(50),
25         snmp            VARCHAR(10),
26         naslocation     VARCHAR(10)
27 );
28 CREATE SEQUENCE nas_seq START WITH 1 INCREMENT BY 1;
29
30 /*
31  * Table structure for table 'radacct'
32  */
33 CREATE TABLE radacct (
34         radacctid               INT PRIMARY KEY,
35         acctsessionid           VARCHAR(32) NOT NULL,
36         acctuniqueid            VARCHAR(32),
37         username                VARCHAR(32) NOT NULL,
38         realm                   VARCHAR(30),
39         nasipaddress            VARCHAR(15) NOT NULL,
40         nasportid               NUMERIC(12),
41         nasporttype             VARCHAR(32),
42         acctstarttime           DATE,
43         acctstoptime            DATE,
44         acctsessiontime         NUMERIC(12),
45         acctauthentic           VARCHAR(32),
46         connectinfo_start       VARCHAR(32),
47         connectinfo_stop        VARCHAR(32),
48         acctinputoctets         NUMERIC(12),
49         acctoutputoctets        NUMERIC(12),
50         calledstationid         VARCHAR(50),
51         callingstationid        VARCHAR(50),
52         acctterminatecause      VARCHAR(32),
53         servicetype             VARCHAR(32),
54         framedprotocol          VARCHAR(32),
55         framedipaddress         VARCHAR(15),
56         acctstartdelay          NUMERIC(12),
57         acctstopdelay           NUMERIC(12)
58 );
59 CREATE UNIQUE INDEX radacct_idx1
60        ON radacct(acctsessionid,username,acctstarttime,
61                 acctstoptime,nasipaddress,framedipaddress);
62
63 CREATE SEQUENCE radacct_seq START WITH 1 INCREMENT BY 1;
64
65 /* Trigger to emulate a serial # on the primary key */
66 CREATE OR REPLACE TRIGGER radacct_serialnumber 
67         BEFORE INSERT OR UPDATE OF radacctid ON radacct
68         FOR EACH ROW
69         BEGIN
70                 if ( :new.radacctid = 0 or :new.radacctid is null ) then
71                         SELECT radacct_seq.nextval into :new.radacctid from dual;
72                 end if;
73         END;
74 /
75
76 /*
77  * Table structure for table 'radcheck'
78  */
79 CREATE TABLE radcheck (
80         id              INT PRIMARY KEY,
81         username        VARCHAR(30) NOT NULL,
82         attribute       VARCHAR(30),
83         op              VARCHAR(2) NOT NULL,
84         value           VARCHAR(40)
85 );
86 CREATE SEQUENCE radcheck_seq START WITH 1 INCREMENT BY 1;
87
88 /* Trigger to emulate a serial # on the primary key */
89 CREATE OR REPLACE TRIGGER radcheck_serialnumber 
90         BEFORE INSERT OR UPDATE OF id ON radcheck
91         FOR EACH ROW
92         BEGIN
93                 if ( :new.id = 0 or :new.id is null ) then
94                         SELECT radcheck_seq.nextval into :new.id from dual;
95                 end if;
96         END;
97 /
98
99 /*
100  * Table structure for table 'radgroupcheck'
101  */
102 CREATE TABLE radgroupcheck (
103         id              INT PRIMARY KEY,
104         groupname       VARCHAR(20) UNIQUE NOT NULL,
105         attribute       VARCHAR(40),
106         op              VARCHAR(2) NOT NULL,
107         value           VARCHAR(40)
108 );
109 CREATE SEQUENCE radgroupcheck_seq START WITH 1 INCREMENT BY 1;
110
111 /*
112  * Table structure for table 'radgroupreply'
113  */
114 CREATE TABLE radgroupreply (
115         id              INT PRIMARY KEY,
116         GroupName       VARCHAR(20) UNIQUE NOT NULL,
117         Attribute       VARCHAR(40),
118         op              VARCHAR(2) NOT NULL,
119         Value           VARCHAR(40)
120 );
121 CREATE SEQUENCE radgroupreply_seq START WITH 1 INCREMENT BY 1;
122
123 /*
124  * Table structure for table 'radreply'
125  */
126 CREATE TABLE radreply (
127         id              INT PRIMARY KEY,
128         UserName        VARCHAR(30) NOT NULL,
129         Attribute       VARCHAR(30),
130         op              VARCHAR(2) NOT NULL,
131         Value           VARCHAR(40)
132 );
133 CREATE INDEX radreply_idx1 ON radreply(UserName);
134 CREATE SEQUENCE radreply_seq START WITH 1 INCREMENT BY 1;
135
136 /* Trigger to emulate a serial # on the primary key */
137 CREATE OR REPLACE TRIGGER radreply_serialnumber 
138         BEFORE INSERT OR UPDATE OF id ON radreply
139         FOR EACH ROW
140         BEGIN
141                 if ( :new.id = 0 or :new.id is null ) then
142                         SELECT radreply_seq.nextval into :new.id from dual;
143                 end if;
144         END;
145 /
146
147 /*
148  * Table structure for table 'usergroup'
149  */
150 CREATE TABLE usergroup (
151         id              INT PRIMARY KEY,
152         UserName        VARCHAR(30) UNIQUE NOT NULL,
153         GroupName       VARCHAR(30)
154 );
155 CREATE SEQUENCE usergroup_seq START WITH 1 INCREMENT BY 1;
156
157 /*
158  * Table structure for table 'realmgroup'
159  */
160 CREATE TABLE realmgroup (
161         id              INT PRIMARY KEY,
162         RealmName       VARCHAR(30) UNIQUE NOT NULL,
163         GroupName       VARCHAR(30)
164 );
165 CREATE SEQUENCE realmgroup_seq START WITH 1 INCREMENT BY 1;
166
167 CREATE TABLE realms (
168         id              INT PRIMARY KEY,
169         realmname       VARCHAR(64),
170         nas             VARCHAR(128),
171         authport        INT,
172         options         VARCHAR(128)
173 );
174 CREATE SEQUENCE realms_seq START WITH 1 INCREMENT BY 1;