RoundCube Webmail
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

397 lines
13 KiB

  1. CREATE TABLE [dbo].[cache] (
  2. [user_id] [int] NOT NULL ,
  3. [cache_key] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  4. [created] [datetime] NOT NULL ,
  5. [expires] [datetime] NULL ,
  6. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  7. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  8. GO
  9. CREATE TABLE [dbo].[cache_shared] (
  10. [cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL ,
  11. [created] [datetime] NOT NULL ,
  12. [expires] [datetime] NULL ,
  13. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  14. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  15. GO
  16. CREATE TABLE [dbo].[cache_index] (
  17. [user_id] [int] NOT NULL ,
  18. [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  19. [expires] [datetime] NULL ,
  20. [valid] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
  21. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  22. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  23. GO
  24. CREATE TABLE [dbo].[cache_thread] (
  25. [user_id] [int] NOT NULL ,
  26. [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  27. [expires] [datetime] NULL ,
  28. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  29. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  30. GO
  31. CREATE TABLE [dbo].[cache_messages] (
  32. [user_id] [int] NOT NULL ,
  33. [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  34. [uid] [int] NOT NULL ,
  35. [expires] [datetime] NULL ,
  36. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL ,
  37. [flags] [int] NOT NULL
  38. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  39. GO
  40. CREATE TABLE [dbo].[contacts] (
  41. [contact_id] [int] IDENTITY (1, 1) NOT NULL ,
  42. [user_id] [int] NOT NULL ,
  43. [changed] [datetime] NOT NULL ,
  44. [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
  45. [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  46. [email] [varchar] (8000) COLLATE Latin1_General_CI_AI NOT NULL ,
  47. [firstname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  48. [surname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  49. [vcard] [text] COLLATE Latin1_General_CI_AI NULL ,
  50. [words] [text] COLLATE Latin1_General_CI_AI NULL
  51. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  52. GO
  53. CREATE TABLE [dbo].[contactgroups] (
  54. [contactgroup_id] [int] IDENTITY (1, 1) NOT NULL ,
  55. [user_id] [int] NOT NULL ,
  56. [changed] [datetime] NOT NULL ,
  57. [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
  58. [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL
  59. ) ON [PRIMARY]
  60. GO
  61. CREATE TABLE [dbo].[contactgroupmembers] (
  62. [contactgroup_id] [int] NOT NULL ,
  63. [contact_id] [int] NOT NULL ,
  64. [created] [datetime] NOT NULL
  65. ) ON [PRIMARY]
  66. GO
  67. CREATE TABLE [dbo].[identities] (
  68. [identity_id] [int] IDENTITY (1, 1) NOT NULL ,
  69. [user_id] [int] NOT NULL ,
  70. [changed] [datetime] NOT NULL ,
  71. [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
  72. [standard] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
  73. [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  74. [organization] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  75. [email] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  76. [reply-to] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  77. [bcc] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  78. [signature] [text] COLLATE Latin1_General_CI_AI NULL,
  79. [html_signature] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL
  80. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  81. GO
  82. CREATE TABLE [dbo].[session] (
  83. [sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  84. [created] [datetime] NOT NULL ,
  85. [changed] [datetime] NULL ,
  86. [ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL ,
  87. [vars] [text] COLLATE Latin1_General_CI_AI NOT NULL
  88. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  89. GO
  90. CREATE TABLE [dbo].[users] (
  91. [user_id] [int] IDENTITY (1, 1) NOT NULL ,
  92. [username] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  93. [mail_host] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  94. [created] [datetime] NOT NULL ,
  95. [last_login] [datetime] NULL ,
  96. [language] [varchar] (5) COLLATE Latin1_General_CI_AI NULL ,
  97. [preferences] [text] COLLATE Latin1_General_CI_AI NULL
  98. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  99. GO
  100. CREATE TABLE [dbo].[dictionary] (
  101. [user_id] [int] ,
  102. [language] [varchar] (5) COLLATE Latin1_General_CI_AI NOT NULL ,
  103. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  104. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  105. GO
  106. CREATE TABLE [dbo].[searches] (
  107. [search_id] [int] IDENTITY (1, 1) NOT NULL ,
  108. [user_id] [int] NOT NULL ,
  109. [type] [tinyint] NOT NULL ,
  110. [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
  111. [data] [text] COLLATE Latin1_General_CI_AI NOT NULL
  112. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  113. GO
  114. CREATE TABLE [dbo].[system] (
  115. [name] [varchar] (64) COLLATE Latin1_General_CI_AI NOT NULL ,
  116. [value] [text] COLLATE Latin1_General_CI_AI NOT NULL
  117. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  118. GO
  119. ALTER TABLE [dbo].[cache_index] WITH NOCHECK ADD
  120. PRIMARY KEY CLUSTERED
  121. (
  122. [user_id],[mailbox]
  123. ) ON [PRIMARY]
  124. GO
  125. ALTER TABLE [dbo].[cache_thread] WITH NOCHECK ADD
  126. PRIMARY KEY CLUSTERED
  127. (
  128. [user_id],[mailbox]
  129. ) ON [PRIMARY]
  130. GO
  131. ALTER TABLE [dbo].[cache_messages] WITH NOCHECK ADD
  132. PRIMARY KEY CLUSTERED
  133. (
  134. [user_id],[mailbox],[uid]
  135. ) ON [PRIMARY]
  136. GO
  137. ALTER TABLE [dbo].[contacts] WITH NOCHECK ADD
  138. CONSTRAINT [PK_contacts_contact_id] PRIMARY KEY CLUSTERED
  139. (
  140. [contact_id]
  141. ) ON [PRIMARY]
  142. GO
  143. ALTER TABLE [dbo].[contactgroups] WITH NOCHECK ADD
  144. CONSTRAINT [PK_contactgroups_contactgroup_id] PRIMARY KEY CLUSTERED
  145. (
  146. [contactgroup_id]
  147. ) ON [PRIMARY]
  148. GO
  149. ALTER TABLE [dbo].[contactgroupmembers] WITH NOCHECK ADD
  150. CONSTRAINT [PK_contactgroupmembers_id] PRIMARY KEY CLUSTERED
  151. (
  152. [contactgroup_id], [contact_id]
  153. ) ON [PRIMARY]
  154. GO
  155. ALTER TABLE [dbo].[identities] WITH NOCHECK ADD
  156. PRIMARY KEY CLUSTERED
  157. (
  158. [identity_id]
  159. ) ON [PRIMARY]
  160. GO
  161. ALTER TABLE [dbo].[session] WITH NOCHECK ADD
  162. CONSTRAINT [PK_session_sess_id] PRIMARY KEY CLUSTERED
  163. (
  164. [sess_id]
  165. ) ON [PRIMARY]
  166. GO
  167. ALTER TABLE [dbo].[users] WITH NOCHECK ADD
  168. CONSTRAINT [PK_users_user_id] PRIMARY KEY CLUSTERED
  169. (
  170. [user_id]
  171. ) ON [PRIMARY]
  172. GO
  173. ALTER TABLE [dbo].[searches] WITH NOCHECK ADD
  174. CONSTRAINT [PK_searches_search_id] PRIMARY KEY CLUSTERED
  175. (
  176. [search_id]
  177. ) ON [PRIMARY]
  178. GO
  179. ALTER TABLE [dbo].[system] WITH NOCHECK ADD
  180. CONSTRAINT [PK_system_name] PRIMARY KEY CLUSTERED
  181. (
  182. [name]
  183. ) ON [PRIMARY]
  184. GO
  185. ALTER TABLE [dbo].[cache] ADD
  186. CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id],
  187. CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key],
  188. CONSTRAINT [DF_cache_created] DEFAULT (getdate()) FOR [created]
  189. GO
  190. ALTER TABLE [dbo].[cache_shared] ADD
  191. CONSTRAINT [DF_cache_shared_created] DEFAULT (getdate()) FOR [created]
  192. GO
  193. ALTER TABLE [dbo].[cache_index] ADD
  194. CONSTRAINT [DF_cache_index_valid] DEFAULT ('0') FOR [valid]
  195. GO
  196. ALTER TABLE [dbo].[cache_messages] ADD
  197. CONSTRAINT [DF_cache_messages_flags] DEFAULT (0) FOR [flags]
  198. GO
  199. CREATE INDEX [IX_cache_user_id] ON [dbo].[cache]([user_id]) ON [PRIMARY]
  200. GO
  201. CREATE INDEX [IX_cache_cache_key] ON [dbo].[cache]([cache_key]) ON [PRIMARY]
  202. GO
  203. CREATE INDEX [IX_cache_shared_cache_key] ON [dbo].[cache_shared]([cache_key]) ON [PRIMARY]
  204. GO
  205. CREATE INDEX [IX_cache_index_user_id] ON [dbo].[cache_index]([user_id]) ON [PRIMARY]
  206. GO
  207. CREATE INDEX [IX_cache_thread_user_id] ON [dbo].[cache_thread]([user_id]) ON [PRIMARY]
  208. GO
  209. CREATE INDEX [IX_cache_messages_user_id] ON [dbo].[cache_messages]([user_id]) ON [PRIMARY]
  210. GO
  211. CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY]
  212. GO
  213. CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY]
  214. GO
  215. CREATE INDEX [IX_cache_index_expires] ON [dbo].[cache_index]([expires]) ON [PRIMARY]
  216. GO
  217. CREATE INDEX [IX_cache_thread_expires] ON [dbo].[cache_thread]([expires]) ON [PRIMARY]
  218. GO
  219. CREATE INDEX [IX_cache_messages_expires] ON [dbo].[cache_messages]([expires]) ON [PRIMARY]
  220. GO
  221. ALTER TABLE [dbo].[contacts] ADD
  222. CONSTRAINT [DF_contacts_user_id] DEFAULT (0) FOR [user_id],
  223. CONSTRAINT [DF_contacts_changed] DEFAULT (getdate()) FOR [changed],
  224. CONSTRAINT [DF_contacts_del] DEFAULT ('0') FOR [del],
  225. CONSTRAINT [DF_contacts_name] DEFAULT ('') FOR [name],
  226. CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email],
  227. CONSTRAINT [DF_contacts_firstname] DEFAULT ('') FOR [firstname],
  228. CONSTRAINT [DF_contacts_surname] DEFAULT ('') FOR [surname],
  229. CONSTRAINT [CK_contacts_del] CHECK ([del] = '1' or [del] = '0')
  230. GO
  231. CREATE INDEX [IX_contacts_user_id] ON [dbo].[contacts]([user_id]) ON [PRIMARY]
  232. GO
  233. ALTER TABLE [dbo].[contactgroups] ADD
  234. CONSTRAINT [DF_contactgroups_user_id] DEFAULT (0) FOR [user_id],
  235. CONSTRAINT [DF_contactgroups_changed] DEFAULT (getdate()) FOR [changed],
  236. CONSTRAINT [DF_contactgroups_del] DEFAULT ('0') FOR [del],
  237. CONSTRAINT [DF_contactgroups_name] DEFAULT ('') FOR [name],
  238. CONSTRAINT [CK_contactgroups_del] CHECK ([del] = '1' or [del] = '0')
  239. GO
  240. CREATE INDEX [IX_contactgroups_user_id] ON [dbo].[contactgroups]([user_id]) ON [PRIMARY]
  241. GO
  242. ALTER TABLE [dbo].[contactgroupmembers] ADD
  243. CONSTRAINT [DF_contactgroupmembers_contactgroup_id] DEFAULT (0) FOR [contactgroup_id],
  244. CONSTRAINT [DF_contactgroupmembers_contact_id] DEFAULT (0) FOR [contact_id],
  245. CONSTRAINT [DF_contactgroupmembers_created] DEFAULT (getdate()) FOR [created]
  246. GO
  247. CREATE INDEX [IX_contactgroupmembers_contact_id] ON [dbo].[contactgroupmembers]([contact_id]) ON [PRIMARY]
  248. GO
  249. ALTER TABLE [dbo].[identities] ADD
  250. CONSTRAINT [DF_identities_user] DEFAULT ('0') FOR [user_id],
  251. CONSTRAINT [DF_identities_del] DEFAULT ('0') FOR [del],
  252. CONSTRAINT [DF_identities_standard] DEFAULT ('0') FOR [standard],
  253. CONSTRAINT [DF_identities_name] DEFAULT ('') FOR [name],
  254. CONSTRAINT [DF_identities_organization] DEFAULT ('') FOR [organization],
  255. CONSTRAINT [DF_identities_email] DEFAULT ('') FOR [email],
  256. CONSTRAINT [DF_identities_reply] DEFAULT ('') FOR [reply-to],
  257. CONSTRAINT [DF_identities_bcc] DEFAULT ('') FOR [bcc],
  258. CONSTRAINT [DF_identities_html_signature] DEFAULT ('0') FOR [html_signature],
  259. CHECK ([standard] = '1' or [standard] = '0'),
  260. CHECK ([del] = '1' or [del] = '0')
  261. GO
  262. CREATE INDEX [IX_identities_user_id] ON [dbo].[identities]([user_id]) ON [PRIMARY]
  263. GO
  264. CREATE INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY]
  265. GO
  266. ALTER TABLE [dbo].[session] ADD
  267. CONSTRAINT [DF_session_sess_id] DEFAULT ('') FOR [sess_id],
  268. CONSTRAINT [DF_session_created] DEFAULT (getdate()) FOR [created],
  269. CONSTRAINT [DF_session_ip] DEFAULT ('') FOR [ip]
  270. GO
  271. CREATE INDEX [IX_session_changed] ON [dbo].[session]([changed]) ON [PRIMARY]
  272. GO
  273. ALTER TABLE [dbo].[users] ADD
  274. CONSTRAINT [DF_users_username] DEFAULT ('') FOR [username],
  275. CONSTRAINT [DF_users_mail_host] DEFAULT ('') FOR [mail_host],
  276. CONSTRAINT [DF_users_created] DEFAULT (getdate()) FOR [created]
  277. GO
  278. CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY]
  279. GO
  280. CREATE UNIQUE INDEX [IX_dictionary_user_language] ON [dbo].[dictionary]([user_id],[language]) ON [PRIMARY]
  281. GO
  282. ALTER TABLE [dbo].[searches] ADD
  283. CONSTRAINT [DF_searches_user] DEFAULT (0) FOR [user_id],
  284. CONSTRAINT [DF_searches_type] DEFAULT (0) FOR [type]
  285. GO
  286. CREATE UNIQUE INDEX [IX_searches_user_type_name] ON [dbo].[searches]([user_id],[type],[name]) ON [PRIMARY]
  287. GO
  288. ALTER TABLE [dbo].[identities] ADD CONSTRAINT [FK_identities_user_id]
  289. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  290. ON DELETE CASCADE ON UPDATE CASCADE
  291. GO
  292. ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [FK_contacts_user_id]
  293. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  294. ON DELETE CASCADE ON UPDATE CASCADE
  295. GO
  296. ALTER TABLE [dbo].[contactgroups] ADD CONSTRAINT [FK_contactgroups_user_id]
  297. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  298. ON DELETE CASCADE ON UPDATE CASCADE
  299. GO
  300. ALTER TABLE [dbo].[cache] ADD CONSTRAINT [FK_cache_user_id]
  301. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  302. ON DELETE CASCADE ON UPDATE CASCADE
  303. GO
  304. ALTER TABLE [dbo].[cache_index] ADD CONSTRAINT [FK_cache_index_user_id]
  305. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  306. ON DELETE CASCADE ON UPDATE CASCADE
  307. GO
  308. ALTER TABLE [dbo].[cache_thread] ADD CONSTRAINT [FK_cache_thread_user_id]
  309. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  310. ON DELETE CASCADE ON UPDATE CASCADE
  311. GO
  312. ALTER TABLE [dbo].[cache_messages] ADD CONSTRAINT [FK_cache_messages_user_id]
  313. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  314. ON DELETE CASCADE ON UPDATE CASCADE
  315. GO
  316. ALTER TABLE [dbo].[contactgroupmembers] ADD CONSTRAINT [FK_contactgroupmembers_contactgroup_id]
  317. FOREIGN KEY ([contactgroup_id]) REFERENCES [dbo].[contactgroups] ([contactgroup_id])
  318. ON DELETE CASCADE ON UPDATE CASCADE
  319. GO
  320. ALTER TABLE [dbo].[searches] ADD CONSTRAINT [FK_searches_user_id]
  321. FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
  322. ON DELETE CASCADE ON UPDATE CASCADE
  323. GO
  324. -- Use trigger instead of foreign key (#1487112)
  325. -- "Introducing FOREIGN KEY constraint ... may cause cycles or multiple cascade paths."
  326. CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts]
  327. AFTER DELETE AS
  328. DELETE FROM [dbo].[contactgroupmembers]
  329. WHERE [contact_id] IN (SELECT [contact_id] FROM deleted)
  330. GO
  331. INSERT INTO [dbo].[system] ([name], [value]) VALUES ('roundcube-version', '2014042900')
  332. GO