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