RT vs Pg8 (ticket 1364)
[freeside.git] / rt / etc / schema.Pg
1 ------------------------------------------------------------------
2 -- My2Pg 1.23 translated dump
3 --
4 ------------------------------------------------------------------
5
6 --
7 -- Deal with changed defaults of Pg 8.x
8 --
9 SELECT CASE WHEN version() like '%PostgreSQL 8%" THEN
10   set_config('default_with_oids','on','f')
11 END;
12
13
14 --
15 -- Sequences for table ATTACHMENTS
16 --
17
18 CREATE SEQUENCE attachments_id_seq;
19
20 -- {{{ Attachments
21
22 CREATE TABLE Attachments (
23   id INTEGER DEFAULT nextval('attachments_id_seq'),
24   TransactionId integer NOT NULL  ,
25   Parent integer NOT NULL DEFAULT 0  ,
26   MessageId varchar(160) NULL  ,
27   Subject varchar(255) NULL  ,
28   Filename varchar(255) NULL  ,
29   ContentType varchar(80) NULL  ,
30   ContentEncoding varchar(80) NULL  ,
31   Content text NULL  ,
32   Headers text NULL  ,
33   Creator integer NOT NULL DEFAULT 0  ,
34   Created TIMESTAMP NULL  ,
35   PRIMARY KEY (id)
36
37 );
38
39 CREATE INDEX Attachments1 ON Attachments (Parent) ;
40 CREATE INDEX Attachments2 ON Attachments (TransactionId) ;
41 CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId) ;
42 -- }}}
43
44 -- {{{ Queues
45
46
47 --
48 -- Sequences for table QUEUES
49 --
50
51 CREATE SEQUENCE queues_id_seq;
52
53 CREATE TABLE Queues (
54   id INTEGER DEFAULT nextval('queues_id_seq'),
55   Name varchar(200) NOT NULL  ,
56   Description varchar(255) NULL  ,
57   CorrespondAddress varchar(120) NULL  ,
58   CommentAddress varchar(120) NULL  ,
59   InitialPriority integer NOT NULL DEFAULT 0  ,
60   FinalPriority integer NOT NULL DEFAULT 0  ,
61   DefaultDueIn integer NOT NULL DEFAULT 0  ,
62   Creator integer NOT NULL DEFAULT 0  ,
63   Created TIMESTAMP NULL  ,
64   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
65   LastUpdated TIMESTAMP NULL  ,
66   Disabled integer NOT NULL DEFAULT 0 ,
67   PRIMARY KEY (id)
68
69 );
70 CREATE UNIQUE INDEX Queues1 ON Queues (Name) ;
71
72 -- }}}
73
74 -- {{{ Links
75
76
77
78 --
79 -- Sequences for table LINKS
80 --
81
82 CREATE SEQUENCE links_id_seq;
83
84 CREATE TABLE Links (
85   id INTEGER DEFAULT nextval('links_id_seq'),
86   Base varchar(240) NULL  ,
87   Target varchar(240) NULL  ,
88   Type varchar(20) NOT NULL  ,
89   LocalTarget integer NOT NULL DEFAULT 0  ,
90   LocalBase integer NOT NULL DEFAULT 0  ,
91   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
92   LastUpdated TIMESTAMP NULL  ,
93   Creator integer NOT NULL DEFAULT 0  ,
94   Created TIMESTAMP NULL  ,
95   PRIMARY KEY (id)
96
97 );
98 CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type) ;
99 CREATE INDEX Links4 ON Links(Type,LocalBase);
100
101 -- }}}
102
103 -- {{{ Principals
104
105
106
107 --
108 -- Sequences for table PRINCIPALS
109 --
110
111 CREATE SEQUENCE principals_id_seq;
112
113 CREATE TABLE Principals (
114         id INTEGER DEFAULT nextval('principals_id_seq') not null,
115         PrincipalType VARCHAR(16) not null,
116         ObjectId integer, 
117         Disabled integer NOT NULL DEFAULT 0 ,
118         PRIMARY KEY (id)
119
120 );
121
122 CREATE INDEX Principals2 ON Principals (ObjectId);
123
124
125 -- }}}
126
127 -- {{{ Groups
128
129
130
131 --
132 -- Sequences for table GROUPS
133 --
134
135 CREATE SEQUENCE groups_id_seq;
136
137 CREATE TABLE Groups (
138   id INTEGER DEFAULT nextval('groups_id_seq'),
139   Name varchar(200) NULL  ,
140   Description varchar(255) NULL  ,
141   Domain varchar(64),
142   Type varchar(64),
143   Instance integer,
144   PRIMARY KEY (id)
145
146 );
147 CREATE UNIQUE INDEX Groups1 ON Groups (Domain,Instance,Type,id, Name);
148 CREATE INDEX Groups2 On Groups  (Type, Instance, Domain);
149
150
151 -- }}}
152
153 -- {{{ ScripConditions
154
155
156
157 --
158 -- Sequences for table SCRIPCONDITIONS
159 --
160
161 CREATE SEQUENCE scripconditions_id_seq;
162
163 CREATE TABLE ScripConditions (
164   id INTEGER DEFAULT nextval('scripconditions_id_seq'),
165   Name varchar(200) NULL  ,
166   Description varchar(255) NULL  ,
167   ExecModule varchar(60) NULL  ,
168   Argument varchar(255) NULL  ,
169   ApplicableTransTypes varchar(60) NULL  ,
170
171   Creator integer NOT NULL DEFAULT 0  ,
172   Created TIMESTAMP NULL  ,
173   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
174   LastUpdated TIMESTAMP NULL  ,
175   PRIMARY KEY (id)
176
177 );
178
179 -- }}}
180
181 -- {{{ Transactions
182
183
184 --
185 -- Sequences for table TRANSACTIONS
186 --
187
188 CREATE SEQUENCE transactions_id_seq;
189
190 CREATE TABLE Transactions (
191   id INTEGER DEFAULT nextval('transactions_id_seq'),
192   ObjectType varchar(255) NOT NULL  ,
193   ObjectId integer NOT NULL DEFAULT 0  ,
194   TimeTaken integer NOT NULL DEFAULT 0  ,
195   Type varchar(20) NULL  ,
196   Field varchar(40) NULL  ,
197   OldValue varchar(255) NULL  ,
198   NewValue varchar(255) NULL  ,
199   ReferenceType varchar(255) NULL,
200   OldReference integer NULL  ,
201   NewReference integer NULL  ,
202   Data varchar(255) NULL  ,
203
204   Creator integer NOT NULL DEFAULT 0  ,
205   Created TIMESTAMP NULL  ,
206   PRIMARY KEY (id)
207
208 );
209 CREATE INDEX Transactions1 ON Transactions (ObjectType, ObjectId);
210
211 -- }}}
212
213 -- {{{ Scrips 
214
215
216
217 --
218 -- Sequences for table SCRIPS
219 --
220
221 CREATE SEQUENCE scrips_id_seq;
222
223 CREATE TABLE Scrips (
224   id INTEGER DEFAULT nextval('scrips_id_seq'),
225   Description varchar(255),
226   ScripCondition integer NOT NULL DEFAULT 0  ,
227   ScripAction integer NOT NULL DEFAULT 0  ,
228   ConditionRules text NULL  ,
229   ActionRules text NULL  ,
230   CustomIsApplicableCode text NULL  ,
231   CustomPrepareCode text NULL  ,
232   CustomCommitCode text NULL  ,
233   Stage varchar(32) NULL  ,
234   Queue integer NOT NULL DEFAULT 0  ,
235   Template integer NOT NULL DEFAULT 0  ,
236   Creator integer NOT NULL DEFAULT 0  ,
237   Created TIMESTAMP NULL  ,
238   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
239   LastUpdated TIMESTAMP NULL  ,
240   PRIMARY KEY (id)
241
242 );
243
244 -- }}}
245
246 -- {{{ ACL
247
248
249 --
250 -- Sequences for table ACL
251 --
252
253 CREATE SEQUENCE acl_id_seq;
254
255 CREATE TABLE ACL (
256   id INTEGER DEFAULT nextval('acl_id_seq'),
257   PrincipalType varchar(25) NOT NULL, 
258
259   PrincipalId integer NOT NULL  , 
260   RightName varchar(25) NOT NULL  ,
261   ObjectType varchar(25) NOT NULL  ,
262   ObjectId integer NOT NULL DEFAULT 0,
263   DelegatedBy integer NOT NULL DEFAULT 0, 
264   DelegatedFrom integer NOT NULL DEFAULT 0, 
265   PRIMARY KEY (id)
266
267 );
268
269 CREATE INDEX  ACL1 on ACL(RightName, ObjectType, ObjectId,PrincipalType,PrincipalId);
270
271
272 -- }}}
273
274 -- {{{ GroupMembers 
275
276
277
278 --
279 -- Sequences for table GROUPMEMBERS
280 --
281
282 CREATE SEQUENCE groupmembers_id_seq;
283
284 CREATE TABLE GroupMembers (
285   id INTEGER DEFAULT nextval('groupmembers_id_seq'),
286   GroupId integer NOT NULL DEFAULT 0,
287   MemberId integer NOT NULL DEFAULT 0,  
288   PRIMARY KEY (id)
289
290 );
291
292 -- }}}
293
294 -- {{{ GroupMembersCache
295
296
297
298 --
299 -- Sequences for table CACHEDGROUPMEMBERS
300 --
301
302 CREATE SEQUENCE cachedgroupmembers_id_seq;
303
304 CREATE TABLE CachedGroupMembers (
305         id int DEFAULT nextval('cachedgroupmembers_id_seq'),
306         GroupId int, 
307         MemberId int, 
308         Via int, 
309         ImmediateParentId int, 
310         Disabled integer NOT NULL DEFAULT 0 , 
311         PRIMARY KEY (id)
312
313 );
314
315 CREATE INDEX CachedGroupMembers2 on CachedGroupMembers (MemberId);
316 CREATE INDEX CachedGroupMembers3 on CachedGroupMembers (GroupId);
317 CREATE INDEX DisGrouMem  on CachedGroupMembers (GroupId,MemberId,Disabled); 
318
319 -- }}}
320
321 -- {{{ Users
322
323
324
325 --
326 -- Sequences for table USERS
327 --
328
329 CREATE SEQUENCE users_id_seq;
330
331 CREATE TABLE Users (
332   id INTEGER DEFAULT nextval('users_id_seq'),
333   Name varchar(200) NOT NULL  ,
334   Password varchar(40) NULL  ,
335   Comments text NULL  ,
336   Signature text NULL  ,
337   EmailAddress varchar(120) NULL  ,
338   FreeformContactInfo text NULL  ,
339   Organization varchar(200) NULL  ,
340   RealName varchar(120) NULL  ,
341   NickName varchar(16) NULL  ,
342   Lang varchar(16) NULL  ,
343   EmailEncoding varchar(16) NULL  ,
344   WebEncoding varchar(16) NULL  ,
345   ExternalContactInfoId varchar(100) NULL  ,
346   ContactInfoSystem varchar(30) NULL  ,
347   ExternalAuthId varchar(100) NULL  ,
348   AuthSystem varchar(30) NULL  ,
349   Gecos varchar(16) NULL  ,
350   HomePhone varchar(30) NULL  ,
351   WorkPhone varchar(30) NULL  ,
352   MobilePhone varchar(30) NULL  ,
353   PagerPhone varchar(30) NULL  ,
354   Address1 varchar(200) NULL  ,
355   Address2 varchar(200) NULL  ,
356   City varchar(100) NULL  ,
357   State varchar(100) NULL  ,
358   Zip varchar(16) NULL  ,
359   Country varchar(50) NULL  ,
360   Timezone varchar(50) NULL  ,
361   PGPKey text NULL,
362
363   Creator integer NOT NULL DEFAULT 0  ,
364   Created TIMESTAMP NULL  ,
365   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
366   LastUpdated TIMESTAMP NULL  ,
367   PRIMARY KEY (id)
368
369 );
370
371
372 CREATE UNIQUE INDEX Users1 ON Users (Name) ;
373 CREATE INDEX Users2 ON Users (Name);
374 CREATE INDEX Users3 ON Users (id, EmailAddress);
375 CREATE INDEX Users4 ON Users (EmailAddress);
376
377
378 -- }}}
379
380 -- {{{ Tickets
381
382
383
384 --
385 -- Sequences for table TICKETS
386 --
387
388 CREATE SEQUENCE tickets_id_seq;
389
390 CREATE TABLE Tickets (
391   id INTEGER DEFAULT nextval('tickets_id_seq'),
392   EffectiveId integer NOT NULL DEFAULT 0  ,
393   Queue integer NOT NULL DEFAULT 0  ,
394   Type varchar(16) NULL  ,
395   IssueStatement integer NOT NULL DEFAULT 0  ,
396   Resolution integer NOT NULL DEFAULT 0  ,
397   Owner integer NOT NULL DEFAULT 0  ,
398   Subject varchar(200) NULL DEFAULT '[no subject]' ,
399   InitialPriority integer NOT NULL DEFAULT 0  ,
400   FinalPriority integer NOT NULL DEFAULT 0  ,
401   Priority integer NOT NULL DEFAULT 0  ,
402   TimeEstimated integer NOT NULL DEFAULT 0  ,
403   TimeWorked integer NOT NULL DEFAULT 0  ,
404   Status varchar(10) NULL  ,
405   TimeLeft integer NOT NULL DEFAULT 0  ,
406   Told TIMESTAMP NULL  ,
407   Starts TIMESTAMP NULL  ,
408   Started TIMESTAMP NULL  ,
409   Due TIMESTAMP NULL  ,
410   Resolved TIMESTAMP NULL  ,
411
412
413   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
414   LastUpdated TIMESTAMP NULL  ,
415   Creator integer NOT NULL DEFAULT 0  ,
416   Created TIMESTAMP NULL  ,
417   Disabled integer NOT NULL DEFAULT 0 ,
418   PRIMARY KEY (id)
419
420 );
421
422 CREATE INDEX Tickets1 ON Tickets (Queue, Status) ;
423 CREATE INDEX Tickets2 ON Tickets (Owner) ;
424 CREATE INDEX Tickets3 ON Tickets (EffectiveId) ;
425 CREATE INDEX Tickets4 ON Tickets (id, Status) ;
426 CREATE INDEX Tickets5 ON Tickets (id, EffectiveId) ;
427
428 -- }}}
429
430 -- {{{ ScripActions
431
432
433
434 --
435 -- Sequences for table SCRIPACTIONS
436 --
437
438 CREATE SEQUENCE scripactions_id_seq;
439
440 CREATE TABLE ScripActions (
441   id INTEGER DEFAULT nextval('scripactions_id_seq'),
442   Name varchar(200) NULL  ,
443   Description varchar(255) NULL  ,
444   ExecModule varchar(60) NULL  ,
445   Argument varchar(255) NULL  ,
446   Creator integer NOT NULL DEFAULT 0  ,
447   Created TIMESTAMP NULL  ,
448   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
449   LastUpdated TIMESTAMP NULL  ,
450   PRIMARY KEY (id)
451
452 );
453
454 -- }}}
455
456 -- {{{ Templates
457
458
459
460 --
461 -- Sequences for table TEMPLATES
462 --
463
464 CREATE SEQUENCE templates_id_seq;
465
466 CREATE TABLE Templates (
467   id INTEGER DEFAULT nextval('templates_id_seq'),
468   Queue integer NOT NULL DEFAULT 0 ,
469   Name varchar(200) NOT NULL  ,
470   Description varchar(255) NULL  ,
471   Type varchar(16) NULL  ,
472   Language varchar(16) NULL  ,
473   TranslationOf integer NOT NULL DEFAULT 0  ,
474   Content text NULL  ,
475   LastUpdated TIMESTAMP NULL  ,
476   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
477   Creator integer NOT NULL DEFAULT 0  ,
478   Created TIMESTAMP NULL  ,
479   PRIMARY KEY (id)
480
481 );
482
483 -- }}}
484
485 -- {{{ ObjectCustomFieldValues 
486
487
488
489 --
490 -- Sequences for table TICKETCUSTOMFIELDVALUES
491 --
492
493 CREATE SEQUENCE objectcustomfieldvalues_id_s;
494
495 CREATE TABLE ObjectCustomFieldValues (
496   id INTEGER DEFAULT nextval('objectcustomfieldvalues_id_s'),
497   CustomField int NOT NULL  ,
498   ObjectType varchar(255) NULL  ,
499   ObjectId int NOT NULL  ,
500   SortOrder integer NOT NULL DEFAULT 0  ,
501
502   Content varchar(255) NULL  ,
503   LargeContent text NULL,
504   ContentType varchar(80) NULL,
505   ContentEncoding varchar(80) NULL  ,
506
507   Creator integer NOT NULL DEFAULT 0  ,
508   Created TIMESTAMP NULL  ,
509   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
510   LastUpdated TIMESTAMP NULL  ,
511   Disabled integer NOT NULL DEFAULT 0 ,
512   PRIMARY KEY (id)
513
514 );
515
516 CREATE INDEX ObjectCustomFieldValues1 ON ObjectCustomFieldValues (CustomField,ObjectType,ObjectId,Content); 
517 CREATE INDEX ObjectCustomFieldValues2 ON ObjectCustomFieldValues (CustomField,ObjectType,ObjectId); 
518
519 -- }}}
520
521 -- {{{ CustomFields
522
523
524
525 --
526 -- Sequences for table CUSTOMFIELDS
527 --
528
529 CREATE SEQUENCE customfields_id_seq;
530
531 CREATE TABLE CustomFields (
532   id INTEGER DEFAULT nextval('customfields_id_seq'),
533   Name varchar(200) NULL  ,
534   Type varchar(200) NULL  ,
535   MaxValues integer NOT NULL DEFAULT 0  ,
536   Repeated integer NOT NULL DEFAULT 0 , 
537   Pattern varchar(255) NULL  ,
538   LookupType varchar(255) NOT NULL  ,
539   Description varchar(255) NULL  ,
540   SortOrder integer NOT NULL DEFAULT 0  ,
541
542   Creator integer NOT NULL DEFAULT 0  ,
543   Created TIMESTAMP NULL  ,
544   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
545   LastUpdated TIMESTAMP NULL  ,
546   Disabled integer NOT NULL DEFAULT 0 ,
547   PRIMARY KEY (id)
548
549 );
550
551 -- }}}
552
553 -- {{{ ObjectCustomFields 
554
555 CREATE SEQUENCE objectcustomfields_id_s;
556
557 CREATE TABLE ObjectCustomFields (
558   id INTEGER DEFAULT nextval('objectcustomfields_id_s'),
559   CustomField integer NOT NULL,
560   ObjectId integer NOT NULL,
561   SortOrder integer NOT NULL DEFAULT 0  ,
562
563   Creator integer NOT NULL DEFAULT 0  ,
564   Created TIMESTAMP NULL  ,
565   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
566   LastUpdated TIMESTAMP NULL  ,
567   PRIMARY KEY (id)
568
569 );
570
571 -- }}}
572
573 -- {{{ CustomFieldValues 
574
575
576
577 --
578 -- Sequences for table CUSTOMFIELDVALUES
579 --
580
581 CREATE SEQUENCE customfieldvalues_id_seq;
582
583 CREATE TABLE CustomFieldValues (
584   id INTEGER DEFAULT nextval('customfieldvalues_id_seq'),
585   CustomField int NOT NULL  ,
586   Name varchar(200) NULL  ,
587   Description varchar(255) NULL  ,
588   SortOrder integer NOT NULL DEFAULT 0  ,
589
590   Creator integer NOT NULL DEFAULT 0  ,
591   Created TIMESTAMP NULL  ,
592   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
593   LastUpdated TIMESTAMP NULL  ,
594   PRIMARY KEY (id)
595
596 );
597
598 CREATE INDEX CustomFieldValues1 ON CustomFieldValues (CustomField);
599
600 -- }}}
601
602
603 -- {{{ Attributes
604
605 CREATE SEQUENCE attributes_id_seq;
606
607 CREATE TABLE Attributes (
608   id INTEGER DEFAULT nextval('attributes_id_seq'),
609   Name varchar(255) NOT NULL  ,
610   Description varchar(255) NULL  ,
611   Content text,
612   ContentType varchar(16),
613   ObjectType varchar(64),
614   ObjectId integer, 
615   Creator integer NOT NULL DEFAULT 0  ,
616   Created TIMESTAMP NULL  ,
617   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
618   LastUpdated TIMESTAMP NULL  ,
619   PRIMARY KEY (id)
620
621 );
622
623 CREATE INDEX Attributes1 on Attributes(Name);
624 CREATE INDEX Attributes2 on Attributes(ObjectType, ObjectId);
625
626 -- }}}
627
628 -- {{{ Sessions
629
630 -- sessions is used by Apache::Session to keep sessions in the database.
631 -- We should have a reaper script somewhere.
632
633 CREATE TABLE sessions (
634     id char(32) NOT NULL,
635     a_session bytea,
636     LastUpdated TIMESTAMP not null default current_timestamp,
637     PRIMARY KEY (id)
638
639 );
640
641 -- }}}
642