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.
 
 
 
 
 
 

1345 lines
52 KiB

  1. CREATE FUNCTION check_partial_state_events() RETURNS trigger
  2. LANGUAGE plpgsql
  3. AS $$
  4. BEGIN
  5. IF EXISTS (
  6. SELECT 1 FROM events
  7. WHERE events.event_id = NEW.event_id
  8. AND events.room_id != NEW.room_id
  9. ) THEN
  10. RAISE EXCEPTION 'Incorrect room_id in partial_state_events';
  11. END IF;
  12. RETURN NEW;
  13. END;
  14. $$;
  15. CREATE TABLE access_tokens (
  16. id bigint NOT NULL,
  17. user_id text NOT NULL,
  18. device_id text,
  19. token text NOT NULL,
  20. valid_until_ms bigint,
  21. puppets_user_id text,
  22. last_validated bigint,
  23. refresh_token_id bigint,
  24. used boolean
  25. );
  26. CREATE TABLE account_data (
  27. user_id text NOT NULL,
  28. account_data_type text NOT NULL,
  29. stream_id bigint NOT NULL,
  30. content text NOT NULL,
  31. instance_name text
  32. );
  33. CREATE SEQUENCE account_data_sequence
  34. START WITH 1
  35. INCREMENT BY 1
  36. NO MINVALUE
  37. NO MAXVALUE
  38. CACHE 1;
  39. CREATE TABLE account_validity (
  40. user_id text NOT NULL,
  41. expiration_ts_ms bigint NOT NULL,
  42. email_sent boolean NOT NULL,
  43. renewal_token text,
  44. token_used_ts_ms bigint
  45. );
  46. CREATE TABLE application_services_state (
  47. as_id text NOT NULL,
  48. state character varying(5),
  49. read_receipt_stream_id bigint,
  50. presence_stream_id bigint,
  51. to_device_stream_id bigint,
  52. device_list_stream_id bigint
  53. );
  54. CREATE SEQUENCE application_services_txn_id_seq
  55. START WITH 1
  56. INCREMENT BY 1
  57. NO MINVALUE
  58. NO MAXVALUE
  59. CACHE 1;
  60. CREATE TABLE application_services_txns (
  61. as_id text NOT NULL,
  62. txn_id bigint NOT NULL,
  63. event_ids text NOT NULL
  64. );
  65. CREATE TABLE appservice_room_list (
  66. appservice_id text NOT NULL,
  67. network_id text NOT NULL,
  68. room_id text NOT NULL
  69. );
  70. CREATE TABLE appservice_stream_position (
  71. lock character(1) DEFAULT 'X'::bpchar NOT NULL,
  72. stream_ordering bigint,
  73. CONSTRAINT appservice_stream_position_lock_check CHECK ((lock = 'X'::bpchar))
  74. );
  75. CREATE TABLE batch_events (
  76. event_id text NOT NULL,
  77. room_id text NOT NULL,
  78. batch_id text NOT NULL
  79. );
  80. CREATE TABLE blocked_rooms (
  81. room_id text NOT NULL,
  82. user_id text NOT NULL
  83. );
  84. CREATE TABLE cache_invalidation_stream_by_instance (
  85. stream_id bigint NOT NULL,
  86. instance_name text NOT NULL,
  87. cache_func text NOT NULL,
  88. keys text[],
  89. invalidation_ts bigint
  90. );
  91. CREATE SEQUENCE cache_invalidation_stream_seq
  92. START WITH 1
  93. INCREMENT BY 1
  94. NO MINVALUE
  95. NO MAXVALUE
  96. CACHE 1;
  97. CREATE TABLE current_state_delta_stream (
  98. stream_id bigint NOT NULL,
  99. room_id text NOT NULL,
  100. type text NOT NULL,
  101. state_key text NOT NULL,
  102. event_id text,
  103. prev_event_id text,
  104. instance_name text
  105. );
  106. CREATE TABLE current_state_events (
  107. event_id text NOT NULL,
  108. room_id text NOT NULL,
  109. type text NOT NULL,
  110. state_key text NOT NULL,
  111. membership text
  112. );
  113. CREATE TABLE dehydrated_devices (
  114. user_id text NOT NULL,
  115. device_id text NOT NULL,
  116. device_data text NOT NULL
  117. );
  118. CREATE TABLE deleted_pushers (
  119. stream_id bigint NOT NULL,
  120. app_id text NOT NULL,
  121. pushkey text NOT NULL,
  122. user_id text NOT NULL
  123. );
  124. CREATE TABLE destination_rooms (
  125. destination text NOT NULL,
  126. room_id text NOT NULL,
  127. stream_ordering bigint NOT NULL
  128. );
  129. CREATE TABLE destinations (
  130. destination text NOT NULL,
  131. retry_last_ts bigint,
  132. retry_interval bigint,
  133. failure_ts bigint,
  134. last_successful_stream_ordering bigint
  135. );
  136. CREATE TABLE device_auth_providers (
  137. user_id text NOT NULL,
  138. device_id text NOT NULL,
  139. auth_provider_id text NOT NULL,
  140. auth_provider_session_id text NOT NULL
  141. );
  142. CREATE TABLE device_federation_inbox (
  143. origin text NOT NULL,
  144. message_id text NOT NULL,
  145. received_ts bigint NOT NULL,
  146. instance_name text
  147. );
  148. CREATE TABLE device_federation_outbox (
  149. destination text NOT NULL,
  150. stream_id bigint NOT NULL,
  151. queued_ts bigint NOT NULL,
  152. messages_json text NOT NULL,
  153. instance_name text
  154. );
  155. CREATE TABLE device_inbox (
  156. user_id text NOT NULL,
  157. device_id text NOT NULL,
  158. stream_id bigint NOT NULL,
  159. message_json text NOT NULL,
  160. instance_name text
  161. );
  162. CREATE SEQUENCE device_inbox_sequence
  163. START WITH 1
  164. INCREMENT BY 1
  165. NO MINVALUE
  166. NO MAXVALUE
  167. CACHE 1;
  168. CREATE TABLE device_lists_changes_in_room (
  169. user_id text NOT NULL,
  170. device_id text NOT NULL,
  171. room_id text NOT NULL,
  172. stream_id bigint NOT NULL,
  173. converted_to_destinations boolean NOT NULL,
  174. opentracing_context text
  175. );
  176. CREATE TABLE device_lists_outbound_last_success (
  177. destination text NOT NULL,
  178. user_id text NOT NULL,
  179. stream_id bigint NOT NULL
  180. );
  181. CREATE TABLE device_lists_outbound_pokes (
  182. destination text NOT NULL,
  183. stream_id bigint NOT NULL,
  184. user_id text NOT NULL,
  185. device_id text NOT NULL,
  186. sent boolean NOT NULL,
  187. ts bigint NOT NULL,
  188. opentracing_context text
  189. );
  190. CREATE TABLE device_lists_remote_cache (
  191. user_id text NOT NULL,
  192. device_id text NOT NULL,
  193. content text NOT NULL
  194. );
  195. CREATE TABLE device_lists_remote_extremeties (
  196. user_id text NOT NULL,
  197. stream_id text NOT NULL
  198. );
  199. CREATE TABLE device_lists_remote_resync (
  200. user_id text NOT NULL,
  201. added_ts bigint NOT NULL
  202. );
  203. CREATE TABLE device_lists_stream (
  204. stream_id bigint NOT NULL,
  205. user_id text NOT NULL,
  206. device_id text NOT NULL
  207. );
  208. CREATE TABLE devices (
  209. user_id text NOT NULL,
  210. device_id text NOT NULL,
  211. display_name text,
  212. last_seen bigint,
  213. ip text,
  214. user_agent text,
  215. hidden boolean DEFAULT false
  216. );
  217. CREATE TABLE e2e_cross_signing_keys (
  218. user_id text NOT NULL,
  219. keytype text NOT NULL,
  220. keydata text NOT NULL,
  221. stream_id bigint NOT NULL
  222. );
  223. CREATE TABLE e2e_cross_signing_signatures (
  224. user_id text NOT NULL,
  225. key_id text NOT NULL,
  226. target_user_id text NOT NULL,
  227. target_device_id text NOT NULL,
  228. signature text NOT NULL
  229. );
  230. CREATE TABLE e2e_device_keys_json (
  231. user_id text NOT NULL,
  232. device_id text NOT NULL,
  233. ts_added_ms bigint NOT NULL,
  234. key_json text NOT NULL
  235. );
  236. CREATE TABLE e2e_fallback_keys_json (
  237. user_id text NOT NULL,
  238. device_id text NOT NULL,
  239. algorithm text NOT NULL,
  240. key_id text NOT NULL,
  241. key_json text NOT NULL,
  242. used boolean DEFAULT false NOT NULL
  243. );
  244. CREATE TABLE e2e_one_time_keys_json (
  245. user_id text NOT NULL,
  246. device_id text NOT NULL,
  247. algorithm text NOT NULL,
  248. key_id text NOT NULL,
  249. ts_added_ms bigint NOT NULL,
  250. key_json text NOT NULL
  251. );
  252. CREATE TABLE e2e_room_keys (
  253. user_id text NOT NULL,
  254. room_id text NOT NULL,
  255. session_id text NOT NULL,
  256. version bigint NOT NULL,
  257. first_message_index integer,
  258. forwarded_count integer,
  259. is_verified boolean,
  260. session_data text NOT NULL
  261. );
  262. CREATE TABLE e2e_room_keys_versions (
  263. user_id text NOT NULL,
  264. version bigint NOT NULL,
  265. algorithm text NOT NULL,
  266. auth_data text NOT NULL,
  267. deleted smallint DEFAULT 0 NOT NULL,
  268. etag bigint
  269. );
  270. CREATE TABLE erased_users (
  271. user_id text NOT NULL
  272. );
  273. CREATE TABLE event_auth (
  274. event_id text NOT NULL,
  275. auth_id text NOT NULL,
  276. room_id text NOT NULL
  277. );
  278. CREATE SEQUENCE event_auth_chain_id
  279. START WITH 1
  280. INCREMENT BY 1
  281. NO MINVALUE
  282. NO MAXVALUE
  283. CACHE 1;
  284. CREATE TABLE event_auth_chain_links (
  285. origin_chain_id bigint NOT NULL,
  286. origin_sequence_number bigint NOT NULL,
  287. target_chain_id bigint NOT NULL,
  288. target_sequence_number bigint NOT NULL
  289. );
  290. CREATE TABLE event_auth_chain_to_calculate (
  291. event_id text NOT NULL,
  292. room_id text NOT NULL,
  293. type text NOT NULL,
  294. state_key text NOT NULL
  295. );
  296. CREATE TABLE event_auth_chains (
  297. event_id text NOT NULL,
  298. chain_id bigint NOT NULL,
  299. sequence_number bigint NOT NULL
  300. );
  301. CREATE TABLE event_backward_extremities (
  302. event_id text NOT NULL,
  303. room_id text NOT NULL
  304. );
  305. CREATE TABLE event_edges (
  306. event_id text NOT NULL,
  307. prev_event_id text NOT NULL,
  308. room_id text,
  309. is_state boolean DEFAULT false NOT NULL
  310. );
  311. CREATE TABLE event_expiry (
  312. event_id text NOT NULL,
  313. expiry_ts bigint NOT NULL
  314. );
  315. CREATE TABLE event_forward_extremities (
  316. event_id text NOT NULL,
  317. room_id text NOT NULL
  318. );
  319. CREATE TABLE event_json (
  320. event_id text NOT NULL,
  321. room_id text NOT NULL,
  322. internal_metadata text NOT NULL,
  323. json text NOT NULL,
  324. format_version integer
  325. );
  326. CREATE TABLE event_labels (
  327. event_id text NOT NULL,
  328. label text NOT NULL,
  329. room_id text NOT NULL,
  330. topological_ordering bigint NOT NULL
  331. );
  332. CREATE TABLE event_push_actions (
  333. room_id text NOT NULL,
  334. event_id text NOT NULL,
  335. user_id text NOT NULL,
  336. profile_tag character varying(32),
  337. actions text NOT NULL,
  338. topological_ordering bigint,
  339. stream_ordering bigint,
  340. notif smallint,
  341. highlight smallint,
  342. unread smallint,
  343. thread_id text
  344. );
  345. CREATE TABLE event_push_actions_staging (
  346. event_id text NOT NULL,
  347. user_id text NOT NULL,
  348. actions text NOT NULL,
  349. notif smallint NOT NULL,
  350. highlight smallint NOT NULL,
  351. unread smallint,
  352. thread_id text
  353. );
  354. CREATE TABLE event_push_summary (
  355. user_id text NOT NULL,
  356. room_id text NOT NULL,
  357. notif_count bigint NOT NULL,
  358. stream_ordering bigint NOT NULL,
  359. unread_count bigint,
  360. last_receipt_stream_ordering bigint,
  361. thread_id text
  362. );
  363. CREATE TABLE event_push_summary_last_receipt_stream_id (
  364. lock character(1) DEFAULT 'X'::bpchar NOT NULL,
  365. stream_id bigint NOT NULL,
  366. CONSTRAINT event_push_summary_last_receipt_stream_id_lock_check CHECK ((lock = 'X'::bpchar))
  367. );
  368. CREATE TABLE event_push_summary_stream_ordering (
  369. lock character(1) DEFAULT 'X'::bpchar NOT NULL,
  370. stream_ordering bigint NOT NULL,
  371. CONSTRAINT event_push_summary_stream_ordering_lock_check CHECK ((lock = 'X'::bpchar))
  372. );
  373. CREATE TABLE event_relations (
  374. event_id text NOT NULL,
  375. relates_to_id text NOT NULL,
  376. relation_type text NOT NULL,
  377. aggregation_key text
  378. );
  379. CREATE TABLE event_reports (
  380. id bigint NOT NULL,
  381. received_ts bigint NOT NULL,
  382. room_id text NOT NULL,
  383. event_id text NOT NULL,
  384. user_id text NOT NULL,
  385. reason text,
  386. content text
  387. );
  388. CREATE TABLE event_search (
  389. event_id text,
  390. room_id text,
  391. sender text,
  392. key text,
  393. vector tsvector,
  394. origin_server_ts bigint,
  395. stream_ordering bigint
  396. );
  397. CREATE TABLE event_to_state_groups (
  398. event_id text NOT NULL,
  399. state_group bigint NOT NULL
  400. );
  401. CREATE TABLE event_txn_id (
  402. event_id text NOT NULL,
  403. room_id text NOT NULL,
  404. user_id text NOT NULL,
  405. token_id bigint NOT NULL,
  406. txn_id text NOT NULL,
  407. inserted_ts bigint NOT NULL
  408. );
  409. CREATE TABLE events (
  410. topological_ordering bigint NOT NULL,
  411. event_id text NOT NULL,
  412. type text NOT NULL,
  413. room_id text NOT NULL,
  414. content text,
  415. unrecognized_keys text,
  416. processed boolean NOT NULL,
  417. outlier boolean NOT NULL,
  418. depth bigint DEFAULT 0 NOT NULL,
  419. origin_server_ts bigint,
  420. received_ts bigint,
  421. sender text,
  422. contains_url boolean,
  423. instance_name text,
  424. stream_ordering bigint,
  425. state_key text,
  426. rejection_reason text
  427. );
  428. CREATE SEQUENCE events_backfill_stream_seq
  429. START WITH 1
  430. INCREMENT BY 1
  431. NO MINVALUE
  432. NO MAXVALUE
  433. CACHE 1;
  434. CREATE SEQUENCE events_stream_seq
  435. START WITH 1
  436. INCREMENT BY 1
  437. NO MINVALUE
  438. NO MAXVALUE
  439. CACHE 1;
  440. CREATE TABLE ex_outlier_stream (
  441. event_stream_ordering bigint NOT NULL,
  442. event_id text NOT NULL,
  443. state_group bigint NOT NULL,
  444. instance_name text
  445. );
  446. CREATE TABLE federation_inbound_events_staging (
  447. origin text NOT NULL,
  448. room_id text NOT NULL,
  449. event_id text NOT NULL,
  450. received_ts bigint NOT NULL,
  451. event_json text NOT NULL,
  452. internal_metadata text NOT NULL
  453. );
  454. CREATE TABLE federation_stream_position (
  455. type text NOT NULL,
  456. stream_id bigint NOT NULL,
  457. instance_name text DEFAULT 'master'::text NOT NULL
  458. );
  459. CREATE TABLE ignored_users (
  460. ignorer_user_id text NOT NULL,
  461. ignored_user_id text NOT NULL
  462. );
  463. CREATE TABLE insertion_event_edges (
  464. event_id text NOT NULL,
  465. room_id text NOT NULL,
  466. insertion_prev_event_id text NOT NULL
  467. );
  468. CREATE TABLE insertion_event_extremities (
  469. event_id text NOT NULL,
  470. room_id text NOT NULL
  471. );
  472. CREATE TABLE insertion_events (
  473. event_id text NOT NULL,
  474. room_id text NOT NULL,
  475. next_batch_id text NOT NULL
  476. );
  477. CREATE TABLE instance_map (
  478. instance_id integer NOT NULL,
  479. instance_name text NOT NULL
  480. );
  481. CREATE SEQUENCE instance_map_instance_id_seq
  482. AS integer
  483. START WITH 1
  484. INCREMENT BY 1
  485. NO MINVALUE
  486. NO MAXVALUE
  487. CACHE 1;
  488. ALTER SEQUENCE instance_map_instance_id_seq OWNED BY instance_map.instance_id;
  489. CREATE TABLE local_current_membership (
  490. room_id text NOT NULL,
  491. user_id text NOT NULL,
  492. event_id text NOT NULL,
  493. membership text NOT NULL
  494. );
  495. CREATE TABLE local_media_repository (
  496. media_id text,
  497. media_type text,
  498. media_length integer,
  499. created_ts bigint,
  500. upload_name text,
  501. user_id text,
  502. quarantined_by text,
  503. url_cache text,
  504. last_access_ts bigint,
  505. safe_from_quarantine boolean DEFAULT false NOT NULL
  506. );
  507. CREATE TABLE local_media_repository_thumbnails (
  508. media_id text,
  509. thumbnail_width integer,
  510. thumbnail_height integer,
  511. thumbnail_type text,
  512. thumbnail_method text,
  513. thumbnail_length integer
  514. );
  515. CREATE TABLE local_media_repository_url_cache (
  516. url text,
  517. response_code integer,
  518. etag text,
  519. expires_ts bigint,
  520. og text,
  521. media_id text,
  522. download_ts bigint
  523. );
  524. CREATE TABLE monthly_active_users (
  525. user_id text NOT NULL,
  526. "timestamp" bigint NOT NULL
  527. );
  528. CREATE TABLE open_id_tokens (
  529. token text NOT NULL,
  530. ts_valid_until_ms bigint NOT NULL,
  531. user_id text NOT NULL
  532. );
  533. CREATE TABLE partial_state_events (
  534. room_id text NOT NULL,
  535. event_id text NOT NULL
  536. );
  537. CREATE TABLE partial_state_rooms (
  538. room_id text NOT NULL
  539. );
  540. CREATE TABLE partial_state_rooms_servers (
  541. room_id text NOT NULL,
  542. server_name text NOT NULL
  543. );
  544. CREATE TABLE presence (
  545. user_id text NOT NULL,
  546. state character varying(20),
  547. status_msg text,
  548. mtime bigint
  549. );
  550. CREATE TABLE presence_stream (
  551. stream_id bigint,
  552. user_id text,
  553. state text,
  554. last_active_ts bigint,
  555. last_federation_update_ts bigint,
  556. last_user_sync_ts bigint,
  557. status_msg text,
  558. currently_active boolean,
  559. instance_name text
  560. );
  561. CREATE SEQUENCE presence_stream_sequence
  562. START WITH 1
  563. INCREMENT BY 1
  564. NO MINVALUE
  565. NO MAXVALUE
  566. CACHE 1;
  567. CREATE TABLE profiles (
  568. user_id text NOT NULL,
  569. displayname text,
  570. avatar_url text
  571. );
  572. CREATE TABLE push_rules (
  573. id bigint NOT NULL,
  574. user_name text NOT NULL,
  575. rule_id text NOT NULL,
  576. priority_class smallint NOT NULL,
  577. priority integer DEFAULT 0 NOT NULL,
  578. conditions text NOT NULL,
  579. actions text NOT NULL
  580. );
  581. CREATE TABLE push_rules_enable (
  582. id bigint NOT NULL,
  583. user_name text NOT NULL,
  584. rule_id text NOT NULL,
  585. enabled smallint
  586. );
  587. CREATE TABLE push_rules_stream (
  588. stream_id bigint NOT NULL,
  589. event_stream_ordering bigint NOT NULL,
  590. user_id text NOT NULL,
  591. rule_id text NOT NULL,
  592. op text NOT NULL,
  593. priority_class smallint,
  594. priority integer,
  595. conditions text,
  596. actions text
  597. );
  598. CREATE TABLE pusher_throttle (
  599. pusher bigint NOT NULL,
  600. room_id text NOT NULL,
  601. last_sent_ts bigint,
  602. throttle_ms bigint
  603. );
  604. CREATE TABLE pushers (
  605. id bigint NOT NULL,
  606. user_name text NOT NULL,
  607. access_token bigint,
  608. profile_tag text NOT NULL,
  609. kind text NOT NULL,
  610. app_id text NOT NULL,
  611. app_display_name text NOT NULL,
  612. device_display_name text NOT NULL,
  613. pushkey text NOT NULL,
  614. ts bigint NOT NULL,
  615. lang text,
  616. data text,
  617. last_stream_ordering bigint,
  618. last_success bigint,
  619. failing_since bigint
  620. );
  621. CREATE TABLE ratelimit_override (
  622. user_id text NOT NULL,
  623. messages_per_second bigint,
  624. burst_count bigint
  625. );
  626. CREATE TABLE receipts_graph (
  627. room_id text NOT NULL,
  628. receipt_type text NOT NULL,
  629. user_id text NOT NULL,
  630. event_ids text NOT NULL,
  631. data text NOT NULL,
  632. thread_id text
  633. );
  634. CREATE TABLE receipts_linearized (
  635. stream_id bigint NOT NULL,
  636. room_id text NOT NULL,
  637. receipt_type text NOT NULL,
  638. user_id text NOT NULL,
  639. event_id text NOT NULL,
  640. data text NOT NULL,
  641. instance_name text,
  642. event_stream_ordering bigint,
  643. thread_id text
  644. );
  645. CREATE SEQUENCE receipts_sequence
  646. START WITH 1
  647. INCREMENT BY 1
  648. NO MINVALUE
  649. NO MAXVALUE
  650. CACHE 1;
  651. CREATE TABLE received_transactions (
  652. transaction_id text,
  653. origin text,
  654. ts bigint,
  655. response_code integer,
  656. response_json bytea,
  657. has_been_referenced smallint DEFAULT 0
  658. );
  659. CREATE TABLE redactions (
  660. event_id text NOT NULL,
  661. redacts text NOT NULL,
  662. have_censored boolean DEFAULT false NOT NULL,
  663. received_ts bigint
  664. );
  665. CREATE TABLE refresh_tokens (
  666. id bigint NOT NULL,
  667. user_id text NOT NULL,
  668. device_id text NOT NULL,
  669. token text NOT NULL,
  670. next_token_id bigint,
  671. expiry_ts bigint,
  672. ultimate_session_expiry_ts bigint
  673. );
  674. CREATE TABLE registration_tokens (
  675. token text NOT NULL,
  676. uses_allowed integer,
  677. pending integer NOT NULL,
  678. completed integer NOT NULL,
  679. expiry_time bigint
  680. );
  681. CREATE TABLE rejections (
  682. event_id text NOT NULL,
  683. reason text NOT NULL,
  684. last_check text NOT NULL
  685. );
  686. CREATE TABLE remote_media_cache (
  687. media_origin text,
  688. media_id text,
  689. media_type text,
  690. created_ts bigint,
  691. upload_name text,
  692. media_length integer,
  693. filesystem_id text,
  694. last_access_ts bigint,
  695. quarantined_by text
  696. );
  697. CREATE TABLE remote_media_cache_thumbnails (
  698. media_origin text,
  699. media_id text,
  700. thumbnail_width integer,
  701. thumbnail_height integer,
  702. thumbnail_method text,
  703. thumbnail_type text,
  704. thumbnail_length integer,
  705. filesystem_id text
  706. );
  707. CREATE TABLE room_account_data (
  708. user_id text NOT NULL,
  709. room_id text NOT NULL,
  710. account_data_type text NOT NULL,
  711. stream_id bigint NOT NULL,
  712. content text NOT NULL,
  713. instance_name text
  714. );
  715. CREATE TABLE room_alias_servers (
  716. room_alias text NOT NULL,
  717. server text NOT NULL
  718. );
  719. CREATE TABLE room_aliases (
  720. room_alias text NOT NULL,
  721. room_id text NOT NULL,
  722. creator text
  723. );
  724. CREATE TABLE room_depth (
  725. room_id text NOT NULL,
  726. min_depth bigint
  727. );
  728. CREATE TABLE room_memberships (
  729. event_id text NOT NULL,
  730. user_id text NOT NULL,
  731. sender text NOT NULL,
  732. room_id text NOT NULL,
  733. membership text NOT NULL,
  734. forgotten integer DEFAULT 0,
  735. display_name text,
  736. avatar_url text
  737. );
  738. CREATE TABLE room_retention (
  739. room_id text NOT NULL,
  740. event_id text NOT NULL,
  741. min_lifetime bigint,
  742. max_lifetime bigint
  743. );
  744. CREATE TABLE room_stats_current (
  745. room_id text NOT NULL,
  746. current_state_events integer NOT NULL,
  747. joined_members integer NOT NULL,
  748. invited_members integer NOT NULL,
  749. left_members integer NOT NULL,
  750. banned_members integer NOT NULL,
  751. local_users_in_room integer NOT NULL,
  752. completed_delta_stream_id bigint NOT NULL,
  753. knocked_members integer
  754. );
  755. CREATE TABLE room_stats_earliest_token (
  756. room_id text NOT NULL,
  757. token bigint NOT NULL
  758. );
  759. CREATE TABLE room_stats_state (
  760. room_id text NOT NULL,
  761. name text,
  762. canonical_alias text,
  763. join_rules text,
  764. history_visibility text,
  765. encryption text,
  766. avatar text,
  767. guest_access text,
  768. is_federatable boolean,
  769. topic text,
  770. room_type text
  771. );
  772. CREATE TABLE room_tags (
  773. user_id text NOT NULL,
  774. room_id text NOT NULL,
  775. tag text NOT NULL,
  776. content text NOT NULL
  777. );
  778. CREATE TABLE room_tags_revisions (
  779. user_id text NOT NULL,
  780. room_id text NOT NULL,
  781. stream_id bigint NOT NULL,
  782. instance_name text
  783. );
  784. CREATE TABLE rooms (
  785. room_id text NOT NULL,
  786. is_public boolean,
  787. creator text,
  788. room_version text,
  789. has_auth_chain_index boolean
  790. );
  791. CREATE TABLE server_keys_json (
  792. server_name text NOT NULL,
  793. key_id text NOT NULL,
  794. from_server text NOT NULL,
  795. ts_added_ms bigint NOT NULL,
  796. ts_valid_until_ms bigint NOT NULL,
  797. key_json bytea NOT NULL
  798. );
  799. CREATE TABLE server_signature_keys (
  800. server_name text,
  801. key_id text,
  802. from_server text,
  803. ts_added_ms bigint,
  804. verify_key bytea,
  805. ts_valid_until_ms bigint
  806. );
  807. CREATE TABLE sessions (
  808. session_type text NOT NULL,
  809. session_id text NOT NULL,
  810. value text NOT NULL,
  811. expiry_time_ms bigint NOT NULL
  812. );
  813. CREATE TABLE state_events (
  814. event_id text NOT NULL,
  815. room_id text NOT NULL,
  816. type text NOT NULL,
  817. state_key text NOT NULL,
  818. prev_state text
  819. );
  820. CREATE TABLE stats_incremental_position (
  821. lock character(1) DEFAULT 'X'::bpchar NOT NULL,
  822. stream_id bigint NOT NULL,
  823. CONSTRAINT stats_incremental_position_lock_check CHECK ((lock = 'X'::bpchar))
  824. );
  825. CREATE TABLE stream_ordering_to_exterm (
  826. stream_ordering bigint NOT NULL,
  827. room_id text NOT NULL,
  828. event_id text NOT NULL
  829. );
  830. CREATE TABLE stream_positions (
  831. stream_name text NOT NULL,
  832. instance_name text NOT NULL,
  833. stream_id bigint NOT NULL
  834. );
  835. CREATE TABLE threepid_guest_access_tokens (
  836. medium text,
  837. address text,
  838. guest_access_token text,
  839. first_inviter text
  840. );
  841. CREATE TABLE threepid_validation_session (
  842. session_id text NOT NULL,
  843. medium text NOT NULL,
  844. address text NOT NULL,
  845. client_secret text NOT NULL,
  846. last_send_attempt bigint NOT NULL,
  847. validated_at bigint
  848. );
  849. CREATE TABLE threepid_validation_token (
  850. token text NOT NULL,
  851. session_id text NOT NULL,
  852. next_link text,
  853. expires bigint NOT NULL
  854. );
  855. CREATE TABLE ui_auth_sessions (
  856. session_id text NOT NULL,
  857. creation_time bigint NOT NULL,
  858. serverdict text NOT NULL,
  859. clientdict text NOT NULL,
  860. uri text NOT NULL,
  861. method text NOT NULL,
  862. description text NOT NULL
  863. );
  864. CREATE TABLE ui_auth_sessions_credentials (
  865. session_id text NOT NULL,
  866. stage_type text NOT NULL,
  867. result text NOT NULL
  868. );
  869. CREATE TABLE ui_auth_sessions_ips (
  870. session_id text NOT NULL,
  871. ip text NOT NULL,
  872. user_agent text NOT NULL
  873. );
  874. CREATE TABLE user_daily_visits (
  875. user_id text NOT NULL,
  876. device_id text,
  877. "timestamp" bigint NOT NULL,
  878. user_agent text
  879. );
  880. CREATE TABLE user_directory (
  881. user_id text NOT NULL,
  882. room_id text,
  883. display_name text,
  884. avatar_url text
  885. );
  886. CREATE TABLE user_directory_search (
  887. user_id text NOT NULL,
  888. vector tsvector
  889. );
  890. CREATE TABLE user_directory_stream_pos (
  891. lock character(1) DEFAULT 'X'::bpchar NOT NULL,
  892. stream_id bigint,
  893. CONSTRAINT user_directory_stream_pos_lock_check CHECK ((lock = 'X'::bpchar))
  894. );
  895. CREATE TABLE user_external_ids (
  896. auth_provider text NOT NULL,
  897. external_id text NOT NULL,
  898. user_id text NOT NULL
  899. );
  900. CREATE TABLE user_filters (
  901. user_id text NOT NULL,
  902. filter_id bigint NOT NULL,
  903. filter_json bytea NOT NULL
  904. );
  905. CREATE SEQUENCE user_id_seq
  906. START WITH 1
  907. INCREMENT BY 1
  908. NO MINVALUE
  909. NO MAXVALUE
  910. CACHE 1;
  911. CREATE TABLE user_ips (
  912. user_id text NOT NULL,
  913. access_token text NOT NULL,
  914. device_id text,
  915. ip text NOT NULL,
  916. user_agent text NOT NULL,
  917. last_seen bigint NOT NULL
  918. );
  919. CREATE TABLE user_signature_stream (
  920. stream_id bigint NOT NULL,
  921. from_user_id text NOT NULL,
  922. user_ids text NOT NULL
  923. );
  924. CREATE TABLE user_stats_current (
  925. user_id text NOT NULL,
  926. joined_rooms bigint NOT NULL,
  927. completed_delta_stream_id bigint NOT NULL
  928. );
  929. CREATE TABLE user_threepid_id_server (
  930. user_id text NOT NULL,
  931. medium text NOT NULL,
  932. address text NOT NULL,
  933. id_server text NOT NULL
  934. );
  935. CREATE TABLE user_threepids (
  936. user_id text NOT NULL,
  937. medium text NOT NULL,
  938. address text NOT NULL,
  939. validated_at bigint NOT NULL,
  940. added_at bigint NOT NULL
  941. );
  942. CREATE TABLE users (
  943. name text,
  944. password_hash text,
  945. creation_ts bigint,
  946. admin smallint DEFAULT 0 NOT NULL,
  947. upgrade_ts bigint,
  948. is_guest smallint DEFAULT 0 NOT NULL,
  949. appservice_id text,
  950. consent_version text,
  951. consent_server_notice_sent text,
  952. user_type text,
  953. deactivated smallint DEFAULT 0 NOT NULL,
  954. shadow_banned boolean,
  955. consent_ts bigint
  956. );
  957. CREATE TABLE users_in_public_rooms (
  958. user_id text NOT NULL,
  959. room_id text NOT NULL
  960. );
  961. CREATE TABLE users_pending_deactivation (
  962. user_id text NOT NULL
  963. );
  964. CREATE TABLE users_to_send_full_presence_to (
  965. user_id text NOT NULL,
  966. presence_stream_id bigint
  967. );
  968. CREATE TABLE users_who_share_private_rooms (
  969. user_id text NOT NULL,
  970. other_user_id text NOT NULL,
  971. room_id text NOT NULL
  972. );
  973. CREATE TABLE worker_locks (
  974. lock_name text NOT NULL,
  975. lock_key text NOT NULL,
  976. instance_name text NOT NULL,
  977. token text NOT NULL,
  978. last_renewed_ts bigint NOT NULL
  979. );
  980. ALTER TABLE ONLY instance_map ALTER COLUMN instance_id SET DEFAULT nextval('instance_map_instance_id_seq'::regclass);
  981. ALTER TABLE ONLY access_tokens
  982. ADD CONSTRAINT access_tokens_pkey PRIMARY KEY (id);
  983. ALTER TABLE ONLY access_tokens
  984. ADD CONSTRAINT access_tokens_token_key UNIQUE (token);
  985. ALTER TABLE ONLY account_data
  986. ADD CONSTRAINT account_data_uniqueness UNIQUE (user_id, account_data_type);
  987. ALTER TABLE ONLY account_validity
  988. ADD CONSTRAINT account_validity_pkey PRIMARY KEY (user_id);
  989. ALTER TABLE ONLY application_services_state
  990. ADD CONSTRAINT application_services_state_pkey PRIMARY KEY (as_id);
  991. ALTER TABLE ONLY application_services_txns
  992. ADD CONSTRAINT application_services_txns_as_id_txn_id_key UNIQUE (as_id, txn_id);
  993. ALTER TABLE ONLY appservice_stream_position
  994. ADD CONSTRAINT appservice_stream_position_lock_key UNIQUE (lock);
  995. ALTER TABLE ONLY current_state_events
  996. ADD CONSTRAINT current_state_events_event_id_key UNIQUE (event_id);
  997. ALTER TABLE ONLY current_state_events
  998. ADD CONSTRAINT current_state_events_room_id_type_state_key_key UNIQUE (room_id, type, state_key);
  999. ALTER TABLE ONLY dehydrated_devices
  1000. ADD CONSTRAINT dehydrated_devices_pkey PRIMARY KEY (user_id);
  1001. ALTER TABLE ONLY destination_rooms
  1002. ADD CONSTRAINT destination_rooms_pkey PRIMARY KEY (destination, room_id);
  1003. ALTER TABLE ONLY destinations
  1004. ADD CONSTRAINT destinations_pkey PRIMARY KEY (destination);
  1005. ALTER TABLE ONLY devices
  1006. ADD CONSTRAINT device_uniqueness UNIQUE (user_id, device_id);
  1007. ALTER TABLE ONLY e2e_device_keys_json
  1008. ADD CONSTRAINT e2e_device_keys_json_uniqueness UNIQUE (user_id, device_id);
  1009. ALTER TABLE ONLY e2e_fallback_keys_json
  1010. ADD CONSTRAINT e2e_fallback_keys_json_uniqueness UNIQUE (user_id, device_id, algorithm);
  1011. ALTER TABLE ONLY e2e_one_time_keys_json
  1012. ADD CONSTRAINT e2e_one_time_keys_json_uniqueness UNIQUE (user_id, device_id, algorithm, key_id);
  1013. ALTER TABLE ONLY event_auth_chain_to_calculate
  1014. ADD CONSTRAINT event_auth_chain_to_calculate_pkey PRIMARY KEY (event_id);
  1015. ALTER TABLE ONLY event_auth_chains
  1016. ADD CONSTRAINT event_auth_chains_pkey PRIMARY KEY (event_id);
  1017. ALTER TABLE ONLY event_backward_extremities
  1018. ADD CONSTRAINT event_backward_extremities_event_id_room_id_key UNIQUE (event_id, room_id);
  1019. ALTER TABLE ONLY event_expiry
  1020. ADD CONSTRAINT event_expiry_pkey PRIMARY KEY (event_id);
  1021. ALTER TABLE ONLY event_forward_extremities
  1022. ADD CONSTRAINT event_forward_extremities_event_id_room_id_key UNIQUE (event_id, room_id);
  1023. ALTER TABLE ONLY event_push_actions
  1024. ADD CONSTRAINT event_id_user_id_profile_tag_uniqueness UNIQUE (room_id, event_id, user_id, profile_tag);
  1025. ALTER TABLE ONLY event_json
  1026. ADD CONSTRAINT event_json_event_id_key UNIQUE (event_id);
  1027. ALTER TABLE ONLY event_labels
  1028. ADD CONSTRAINT event_labels_pkey PRIMARY KEY (event_id, label);
  1029. ALTER TABLE ONLY event_push_summary_last_receipt_stream_id
  1030. ADD CONSTRAINT event_push_summary_last_receipt_stream_id_lock_key UNIQUE (lock);
  1031. ALTER TABLE ONLY event_push_summary_stream_ordering
  1032. ADD CONSTRAINT event_push_summary_stream_ordering_lock_key UNIQUE (lock);
  1033. ALTER TABLE ONLY event_reports
  1034. ADD CONSTRAINT event_reports_pkey PRIMARY KEY (id);
  1035. ALTER TABLE ONLY event_to_state_groups
  1036. ADD CONSTRAINT event_to_state_groups_event_id_key UNIQUE (event_id);
  1037. ALTER TABLE ONLY events
  1038. ADD CONSTRAINT events_event_id_key UNIQUE (event_id);
  1039. ALTER TABLE ONLY ex_outlier_stream
  1040. ADD CONSTRAINT ex_outlier_stream_pkey PRIMARY KEY (event_stream_ordering);
  1041. ALTER TABLE ONLY instance_map
  1042. ADD CONSTRAINT instance_map_pkey PRIMARY KEY (instance_id);
  1043. ALTER TABLE ONLY local_media_repository
  1044. ADD CONSTRAINT local_media_repository_media_id_key UNIQUE (media_id);
  1045. ALTER TABLE ONLY user_threepids
  1046. ADD CONSTRAINT medium_address UNIQUE (medium, address);
  1047. ALTER TABLE ONLY open_id_tokens
  1048. ADD CONSTRAINT open_id_tokens_pkey PRIMARY KEY (token);
  1049. ALTER TABLE ONLY partial_state_events
  1050. ADD CONSTRAINT partial_state_events_event_id_key UNIQUE (event_id);
  1051. ALTER TABLE ONLY partial_state_rooms
  1052. ADD CONSTRAINT partial_state_rooms_pkey PRIMARY KEY (room_id);
  1053. ALTER TABLE ONLY partial_state_rooms_servers
  1054. ADD CONSTRAINT partial_state_rooms_servers_room_id_server_name_key UNIQUE (room_id, server_name);
  1055. ALTER TABLE ONLY presence
  1056. ADD CONSTRAINT presence_user_id_key UNIQUE (user_id);
  1057. ALTER TABLE ONLY profiles
  1058. ADD CONSTRAINT profiles_user_id_key UNIQUE (user_id);
  1059. ALTER TABLE ONLY push_rules_enable
  1060. ADD CONSTRAINT push_rules_enable_pkey PRIMARY KEY (id);
  1061. ALTER TABLE ONLY push_rules_enable
  1062. ADD CONSTRAINT push_rules_enable_user_name_rule_id_key UNIQUE (user_name, rule_id);
  1063. ALTER TABLE ONLY push_rules
  1064. ADD CONSTRAINT push_rules_pkey PRIMARY KEY (id);
  1065. ALTER TABLE ONLY push_rules
  1066. ADD CONSTRAINT push_rules_user_name_rule_id_key UNIQUE (user_name, rule_id);
  1067. ALTER TABLE ONLY pusher_throttle
  1068. ADD CONSTRAINT pusher_throttle_pkey PRIMARY KEY (pusher, room_id);
  1069. ALTER TABLE ONLY pushers
  1070. ADD CONSTRAINT pushers2_app_id_pushkey_user_name_key UNIQUE (app_id, pushkey, user_name);
  1071. ALTER TABLE ONLY pushers
  1072. ADD CONSTRAINT pushers2_pkey PRIMARY KEY (id);
  1073. ALTER TABLE ONLY receipts_graph
  1074. ADD CONSTRAINT receipts_graph_uniqueness UNIQUE (room_id, receipt_type, user_id);
  1075. ALTER TABLE ONLY receipts_graph
  1076. ADD CONSTRAINT receipts_graph_uniqueness_thread UNIQUE (room_id, receipt_type, user_id, thread_id);
  1077. ALTER TABLE ONLY receipts_linearized
  1078. ADD CONSTRAINT receipts_linearized_uniqueness UNIQUE (room_id, receipt_type, user_id);
  1079. ALTER TABLE ONLY receipts_linearized
  1080. ADD CONSTRAINT receipts_linearized_uniqueness_thread UNIQUE (room_id, receipt_type, user_id, thread_id);
  1081. ALTER TABLE ONLY received_transactions
  1082. ADD CONSTRAINT received_transactions_transaction_id_origin_key UNIQUE (transaction_id, origin);
  1083. ALTER TABLE ONLY redactions
  1084. ADD CONSTRAINT redactions_event_id_key UNIQUE (event_id);
  1085. ALTER TABLE ONLY refresh_tokens
  1086. ADD CONSTRAINT refresh_tokens_pkey PRIMARY KEY (id);
  1087. ALTER TABLE ONLY refresh_tokens
  1088. ADD CONSTRAINT refresh_tokens_token_key UNIQUE (token);
  1089. ALTER TABLE ONLY registration_tokens
  1090. ADD CONSTRAINT registration_tokens_token_key UNIQUE (token);
  1091. ALTER TABLE ONLY rejections
  1092. ADD CONSTRAINT rejections_event_id_key UNIQUE (event_id);
  1093. ALTER TABLE ONLY remote_media_cache
  1094. ADD CONSTRAINT remote_media_cache_media_origin_media_id_key UNIQUE (media_origin, media_id);
  1095. ALTER TABLE ONLY room_account_data
  1096. ADD CONSTRAINT room_account_data_uniqueness UNIQUE (user_id, room_id, account_data_type);
  1097. ALTER TABLE ONLY room_aliases
  1098. ADD CONSTRAINT room_aliases_room_alias_key UNIQUE (room_alias);
  1099. ALTER TABLE ONLY room_depth
  1100. ADD CONSTRAINT room_depth_room_id_key UNIQUE (room_id);
  1101. ALTER TABLE ONLY room_memberships
  1102. ADD CONSTRAINT room_memberships_event_id_key UNIQUE (event_id);
  1103. ALTER TABLE ONLY room_retention
  1104. ADD CONSTRAINT room_retention_pkey PRIMARY KEY (room_id, event_id);
  1105. ALTER TABLE ONLY room_stats_current
  1106. ADD CONSTRAINT room_stats_current_pkey PRIMARY KEY (room_id);
  1107. ALTER TABLE ONLY room_tags_revisions
  1108. ADD CONSTRAINT room_tag_revisions_uniqueness UNIQUE (user_id, room_id);
  1109. ALTER TABLE ONLY room_tags
  1110. ADD CONSTRAINT room_tag_uniqueness UNIQUE (user_id, room_id, tag);
  1111. ALTER TABLE ONLY rooms
  1112. ADD CONSTRAINT rooms_pkey PRIMARY KEY (room_id);
  1113. ALTER TABLE ONLY server_keys_json
  1114. ADD CONSTRAINT server_keys_json_uniqueness UNIQUE (server_name, key_id, from_server);
  1115. ALTER TABLE ONLY server_signature_keys
  1116. ADD CONSTRAINT server_signature_keys_server_name_key_id_key UNIQUE (server_name, key_id);
  1117. ALTER TABLE ONLY sessions
  1118. ADD CONSTRAINT sessions_session_type_session_id_key UNIQUE (session_type, session_id);
  1119. ALTER TABLE ONLY state_events
  1120. ADD CONSTRAINT state_events_event_id_key UNIQUE (event_id);
  1121. ALTER TABLE ONLY stats_incremental_position
  1122. ADD CONSTRAINT stats_incremental_position_lock_key UNIQUE (lock);
  1123. ALTER TABLE ONLY threepid_validation_session
  1124. ADD CONSTRAINT threepid_validation_session_pkey PRIMARY KEY (session_id);
  1125. ALTER TABLE ONLY threepid_validation_token
  1126. ADD CONSTRAINT threepid_validation_token_pkey PRIMARY KEY (token);
  1127. ALTER TABLE ONLY ui_auth_sessions_credentials
  1128. ADD CONSTRAINT ui_auth_sessions_credentials_session_id_stage_type_key UNIQUE (session_id, stage_type);
  1129. ALTER TABLE ONLY ui_auth_sessions_ips
  1130. ADD CONSTRAINT ui_auth_sessions_ips_session_id_ip_user_agent_key UNIQUE (session_id, ip, user_agent);
  1131. ALTER TABLE ONLY ui_auth_sessions
  1132. ADD CONSTRAINT ui_auth_sessions_session_id_key UNIQUE (session_id);
  1133. ALTER TABLE ONLY user_directory_stream_pos
  1134. ADD CONSTRAINT user_directory_stream_pos_lock_key UNIQUE (lock);
  1135. ALTER TABLE ONLY user_external_ids
  1136. ADD CONSTRAINT user_external_ids_auth_provider_external_id_key UNIQUE (auth_provider, external_id);
  1137. ALTER TABLE ONLY user_stats_current
  1138. ADD CONSTRAINT user_stats_current_pkey PRIMARY KEY (user_id);
  1139. ALTER TABLE ONLY users
  1140. ADD CONSTRAINT users_name_key UNIQUE (name);
  1141. ALTER TABLE ONLY users_to_send_full_presence_to
  1142. ADD CONSTRAINT users_to_send_full_presence_to_pkey PRIMARY KEY (user_id);
  1143. CREATE INDEX access_tokens_device_id ON access_tokens USING btree (user_id, device_id);
  1144. CREATE INDEX account_data_stream_id ON account_data USING btree (user_id, stream_id);
  1145. CREATE INDEX application_services_txns_id ON application_services_txns USING btree (as_id);
  1146. CREATE UNIQUE INDEX appservice_room_list_idx ON appservice_room_list USING btree (appservice_id, network_id, room_id);
  1147. CREATE INDEX batch_events_batch_id ON batch_events USING btree (batch_id);
  1148. CREATE UNIQUE INDEX blocked_rooms_idx ON blocked_rooms USING btree (room_id);
  1149. CREATE UNIQUE INDEX cache_invalidation_stream_by_instance_id ON cache_invalidation_stream_by_instance USING btree (stream_id);
  1150. CREATE INDEX cache_invalidation_stream_by_instance_instance_index ON cache_invalidation_stream_by_instance USING btree (instance_name, stream_id);
  1151. CREATE UNIQUE INDEX chunk_events_event_id ON batch_events USING btree (event_id);
  1152. CREATE INDEX current_state_delta_stream_idx ON current_state_delta_stream USING btree (stream_id);
  1153. CREATE INDEX current_state_events_member_index ON current_state_events USING btree (state_key) WHERE (type = 'm.room.member'::text);
  1154. CREATE INDEX deleted_pushers_stream_id ON deleted_pushers USING btree (stream_id);
  1155. CREATE INDEX destination_rooms_room_id ON destination_rooms USING btree (room_id);
  1156. CREATE INDEX device_auth_providers_devices ON device_auth_providers USING btree (user_id, device_id);
  1157. CREATE INDEX device_auth_providers_sessions ON device_auth_providers USING btree (auth_provider_id, auth_provider_session_id);
  1158. CREATE INDEX device_federation_inbox_sender_id ON device_federation_inbox USING btree (origin, message_id);
  1159. CREATE INDEX device_federation_outbox_destination_id ON device_federation_outbox USING btree (destination, stream_id);
  1160. CREATE INDEX device_federation_outbox_id ON device_federation_outbox USING btree (stream_id);
  1161. CREATE INDEX device_inbox_stream_id_user_id ON device_inbox USING btree (stream_id, user_id);
  1162. CREATE INDEX device_inbox_user_stream_id ON device_inbox USING btree (user_id, device_id, stream_id);
  1163. CREATE UNIQUE INDEX device_lists_changes_in_stream_id ON device_lists_changes_in_room USING btree (stream_id, room_id);
  1164. CREATE INDEX device_lists_changes_in_stream_id_unconverted ON device_lists_changes_in_room USING btree (stream_id) WHERE (NOT converted_to_destinations);
  1165. CREATE UNIQUE INDEX device_lists_outbound_last_success_unique_idx ON device_lists_outbound_last_success USING btree (destination, user_id);
  1166. CREATE INDEX device_lists_outbound_pokes_id ON device_lists_outbound_pokes USING btree (destination, stream_id);
  1167. CREATE INDEX device_lists_outbound_pokes_stream ON device_lists_outbound_pokes USING btree (stream_id);
  1168. CREATE INDEX device_lists_outbound_pokes_user ON device_lists_outbound_pokes USING btree (destination, user_id);
  1169. CREATE UNIQUE INDEX device_lists_remote_cache_unique_id ON device_lists_remote_cache USING btree (user_id, device_id);
  1170. CREATE UNIQUE INDEX device_lists_remote_extremeties_unique_idx ON device_lists_remote_extremeties USING btree (user_id);
  1171. CREATE UNIQUE INDEX device_lists_remote_resync_idx ON device_lists_remote_resync USING btree (user_id);
  1172. CREATE INDEX device_lists_remote_resync_ts_idx ON device_lists_remote_resync USING btree (added_ts);
  1173. CREATE INDEX device_lists_stream_id ON device_lists_stream USING btree (stream_id, user_id);
  1174. CREATE INDEX device_lists_stream_user_id ON device_lists_stream USING btree (user_id, device_id);
  1175. CREATE UNIQUE INDEX e2e_cross_signing_keys_idx ON e2e_cross_signing_keys USING btree (user_id, keytype, stream_id);
  1176. CREATE UNIQUE INDEX e2e_cross_signing_keys_stream_idx ON e2e_cross_signing_keys USING btree (stream_id);
  1177. CREATE INDEX e2e_cross_signing_signatures2_idx ON e2e_cross_signing_signatures USING btree (user_id, target_user_id, target_device_id);
  1178. CREATE UNIQUE INDEX e2e_room_keys_versions_idx ON e2e_room_keys_versions USING btree (user_id, version);
  1179. CREATE UNIQUE INDEX e2e_room_keys_with_version_idx ON e2e_room_keys USING btree (user_id, version, room_id, session_id);
  1180. CREATE UNIQUE INDEX erased_users_user ON erased_users USING btree (user_id);
  1181. CREATE INDEX ev_b_extrem_id ON event_backward_extremities USING btree (event_id);
  1182. CREATE INDEX ev_b_extrem_room ON event_backward_extremities USING btree (room_id);
  1183. CREATE INDEX ev_edges_prev_id ON event_edges USING btree (prev_event_id);
  1184. CREATE INDEX ev_extrem_id ON event_forward_extremities USING btree (event_id);
  1185. CREATE INDEX ev_extrem_room ON event_forward_extremities USING btree (room_id);
  1186. CREATE INDEX evauth_edges_id ON event_auth USING btree (event_id);
  1187. CREATE INDEX event_auth_chain_links_idx ON event_auth_chain_links USING btree (origin_chain_id, target_chain_id);
  1188. CREATE INDEX event_auth_chain_to_calculate_rm_id ON event_auth_chain_to_calculate USING btree (room_id);
  1189. CREATE UNIQUE INDEX event_auth_chains_c_seq_index ON event_auth_chains USING btree (chain_id, sequence_number);
  1190. CREATE INDEX event_contains_url_index ON events USING btree (room_id, topological_ordering, stream_ordering) WHERE ((contains_url = true) AND (outlier = false));
  1191. CREATE UNIQUE INDEX event_edges_event_id_prev_event_id_idx ON event_edges USING btree (event_id, prev_event_id);
  1192. CREATE INDEX event_expiry_expiry_ts_idx ON event_expiry USING btree (expiry_ts);
  1193. CREATE INDEX event_labels_room_id_label_idx ON event_labels USING btree (room_id, label, topological_ordering);
  1194. CREATE INDEX event_push_actions_highlights_index ON event_push_actions USING btree (user_id, room_id, topological_ordering, stream_ordering) WHERE (highlight = 1);
  1195. CREATE INDEX event_push_actions_rm_tokens ON event_push_actions USING btree (user_id, room_id, topological_ordering, stream_ordering);
  1196. CREATE INDEX event_push_actions_room_id_user_id ON event_push_actions USING btree (room_id, user_id);
  1197. CREATE INDEX event_push_actions_staging_id ON event_push_actions_staging USING btree (event_id);
  1198. CREATE INDEX event_push_actions_stream_highlight_index ON event_push_actions USING btree (highlight, stream_ordering) WHERE (highlight = 0);
  1199. CREATE INDEX event_push_actions_stream_ordering ON event_push_actions USING btree (stream_ordering, user_id);
  1200. CREATE INDEX event_push_actions_u_highlight ON event_push_actions USING btree (user_id, stream_ordering);
  1201. CREATE UNIQUE INDEX event_push_summary_unique_index ON event_push_summary USING btree (user_id, room_id);
  1202. CREATE UNIQUE INDEX event_push_summary_unique_index2 ON event_push_summary USING btree (user_id, room_id, thread_id);
  1203. CREATE UNIQUE INDEX event_relations_id ON event_relations USING btree (event_id);
  1204. CREATE INDEX event_relations_relates ON event_relations USING btree (relates_to_id, relation_type, aggregation_key);
  1205. CREATE INDEX event_search_ev_ridx ON event_search USING btree (room_id);
  1206. CREATE UNIQUE INDEX event_search_event_id_idx ON event_search USING btree (event_id);
  1207. CREATE INDEX event_search_fts_idx ON event_search USING gin (vector);
  1208. CREATE INDEX event_to_state_groups_sg_index ON event_to_state_groups USING btree (state_group);
  1209. CREATE UNIQUE INDEX event_txn_id_event_id ON event_txn_id USING btree (event_id);
  1210. CREATE INDEX event_txn_id_ts ON event_txn_id USING btree (inserted_ts);
  1211. CREATE UNIQUE INDEX event_txn_id_txn_id ON event_txn_id USING btree (room_id, user_id, token_id, txn_id);
  1212. CREATE INDEX events_order_room ON events USING btree (room_id, topological_ordering, stream_ordering);
  1213. CREATE INDEX events_room_stream ON events USING btree (room_id, stream_ordering);
  1214. CREATE UNIQUE INDEX events_stream_ordering ON events USING btree (stream_ordering);
  1215. CREATE INDEX events_ts ON events USING btree (origin_server_ts, stream_ordering);
  1216. CREATE UNIQUE INDEX federation_inbound_events_staging_instance_event ON federation_inbound_events_staging USING btree (origin, event_id);
  1217. CREATE INDEX federation_inbound_events_staging_room ON federation_inbound_events_staging USING btree (room_id, received_ts);
  1218. CREATE UNIQUE INDEX federation_stream_position_instance ON federation_stream_position USING btree (type, instance_name);
  1219. CREATE INDEX ignored_users_ignored_user_id ON ignored_users USING btree (ignored_user_id);
  1220. CREATE UNIQUE INDEX ignored_users_uniqueness ON ignored_users USING btree (ignorer_user_id, ignored_user_id);
  1221. CREATE INDEX insertion_event_edges_event_id ON insertion_event_edges USING btree (event_id);
  1222. CREATE INDEX insertion_event_edges_insertion_prev_event_id ON insertion_event_edges USING btree (insertion_prev_event_id);
  1223. CREATE INDEX insertion_event_edges_insertion_room_id ON insertion_event_edges USING btree (room_id);
  1224. CREATE UNIQUE INDEX insertion_event_extremities_event_id ON insertion_event_extremities USING btree (event_id);
  1225. CREATE INDEX insertion_event_extremities_room_id ON insertion_event_extremities USING btree (room_id);
  1226. CREATE UNIQUE INDEX insertion_events_event_id ON insertion_events USING btree (event_id);
  1227. CREATE INDEX insertion_events_next_batch_id ON insertion_events USING btree (next_batch_id);
  1228. CREATE UNIQUE INDEX instance_map_idx ON instance_map USING btree (instance_name);
  1229. CREATE UNIQUE INDEX local_current_membership_idx ON local_current_membership USING btree (user_id, room_id);
  1230. CREATE INDEX local_current_membership_room_idx ON local_current_membership USING btree (room_id);
  1231. CREATE UNIQUE INDEX local_media_repository_thumbn_media_id_width_height_method_key ON local_media_repository_thumbnails USING btree (media_id, thumbnail_width, thumbnail_height, thumbnail_type, thumbnail_method);
  1232. CREATE INDEX local_media_repository_thumbnails_media_id ON local_media_repository_thumbnails USING btree (media_id);
  1233. CREATE INDEX local_media_repository_url_cache_by_url_download_ts ON local_media_repository_url_cache USING btree (url, download_ts);
  1234. CREATE INDEX local_media_repository_url_cache_expires_idx ON local_media_repository_url_cache USING btree (expires_ts);
  1235. CREATE INDEX local_media_repository_url_cache_media_idx ON local_media_repository_url_cache USING btree (media_id);
  1236. CREATE INDEX local_media_repository_url_idx ON local_media_repository USING btree (created_ts) WHERE (url_cache IS NOT NULL);
  1237. CREATE INDEX monthly_active_users_time_stamp ON monthly_active_users USING btree ("timestamp");
  1238. CREATE UNIQUE INDEX monthly_active_users_users ON monthly_active_users USING btree (user_id);
  1239. CREATE INDEX open_id_tokens_ts_valid_until_ms ON open_id_tokens USING btree (ts_valid_until_ms);
  1240. CREATE INDEX partial_state_events_room_id_idx ON partial_state_events USING btree (room_id);
  1241. CREATE INDEX presence_stream_id ON presence_stream USING btree (stream_id, user_id);
  1242. CREATE INDEX presence_stream_state_not_offline_idx ON presence_stream USING btree (state) WHERE (state <> 'offline'::text);
  1243. CREATE INDEX presence_stream_user_id ON presence_stream USING btree (user_id);
  1244. CREATE INDEX public_room_index ON rooms USING btree (is_public);
  1245. CREATE INDEX push_rules_enable_user_name ON push_rules_enable USING btree (user_name);
  1246. CREATE INDEX push_rules_stream_id ON push_rules_stream USING btree (stream_id);
  1247. CREATE INDEX push_rules_stream_user_stream_id ON push_rules_stream USING btree (user_id, stream_id);
  1248. CREATE INDEX push_rules_user_name ON push_rules USING btree (user_name);
  1249. CREATE UNIQUE INDEX ratelimit_override_idx ON ratelimit_override USING btree (user_id);
  1250. CREATE UNIQUE INDEX receipts_graph_unique_index ON receipts_graph USING btree (room_id, receipt_type, user_id) WHERE (thread_id IS NULL);
  1251. CREATE INDEX receipts_linearized_id ON receipts_linearized USING btree (stream_id);
  1252. CREATE INDEX receipts_linearized_room_stream ON receipts_linearized USING btree (room_id, stream_id);
  1253. CREATE UNIQUE INDEX receipts_linearized_unique_index ON receipts_linearized USING btree (room_id, receipt_type, user_id) WHERE (thread_id IS NULL);
  1254. CREATE INDEX receipts_linearized_user ON receipts_linearized USING btree (user_id);
  1255. CREATE INDEX received_transactions_ts ON received_transactions USING btree (ts);
  1256. CREATE INDEX redactions_have_censored_ts ON redactions USING btree (received_ts) WHERE (NOT have_censored);
  1257. CREATE INDEX redactions_redacts ON redactions USING btree (redacts);
  1258. CREATE INDEX refresh_tokens_next_token_id ON refresh_tokens USING btree (next_token_id) WHERE (next_token_id IS NOT NULL);
  1259. CREATE UNIQUE INDEX remote_media_repository_thumbn_media_origin_id_width_height_met ON remote_media_cache_thumbnails USING btree (media_origin, media_id, thumbnail_width, thumbnail_height, thumbnail_type, thumbnail_method);
  1260. CREATE INDEX room_account_data_stream_id ON room_account_data USING btree (user_id, stream_id);
  1261. CREATE INDEX room_alias_servers_alias ON room_alias_servers USING btree (room_alias);
  1262. CREATE INDEX room_aliases_id ON room_aliases USING btree (room_id);
  1263. CREATE INDEX room_memberships_room_id ON room_memberships USING btree (room_id);
  1264. CREATE INDEX room_memberships_user_id ON room_memberships USING btree (user_id);
  1265. CREATE INDEX room_memberships_user_room_forgotten ON room_memberships USING btree (user_id, room_id) WHERE (forgotten = 1);
  1266. CREATE INDEX room_retention_max_lifetime_idx ON room_retention USING btree (max_lifetime);
  1267. CREATE UNIQUE INDEX room_stats_earliest_token_idx ON room_stats_earliest_token USING btree (room_id);
  1268. CREATE UNIQUE INDEX room_stats_state_room ON room_stats_state USING btree (room_id);
  1269. CREATE INDEX stream_ordering_to_exterm_idx ON stream_ordering_to_exterm USING btree (stream_ordering);
  1270. CREATE INDEX stream_ordering_to_exterm_rm_idx ON stream_ordering_to_exterm USING btree (room_id, stream_ordering);
  1271. CREATE UNIQUE INDEX stream_positions_idx ON stream_positions USING btree (stream_name, instance_name);
  1272. CREATE UNIQUE INDEX threepid_guest_access_tokens_index ON threepid_guest_access_tokens USING btree (medium, address);
  1273. CREATE INDEX threepid_validation_token_session_id ON threepid_validation_token USING btree (session_id);
  1274. CREATE INDEX user_daily_visits_ts_idx ON user_daily_visits USING btree ("timestamp");
  1275. CREATE INDEX user_daily_visits_uts_idx ON user_daily_visits USING btree (user_id, "timestamp");
  1276. CREATE INDEX user_directory_room_idx ON user_directory USING btree (room_id);
  1277. CREATE INDEX user_directory_search_fts_idx ON user_directory_search USING gin (vector);
  1278. CREATE UNIQUE INDEX user_directory_search_user_idx ON user_directory_search USING btree (user_id);
  1279. CREATE UNIQUE INDEX user_directory_user_idx ON user_directory USING btree (user_id);
  1280. CREATE INDEX user_external_ids_user_id_idx ON user_external_ids USING btree (user_id);
  1281. CREATE UNIQUE INDEX user_filters_unique ON user_filters USING btree (user_id, filter_id);
  1282. CREATE INDEX user_ips_device_id ON user_ips USING btree (user_id, device_id, last_seen);
  1283. CREATE INDEX user_ips_last_seen ON user_ips USING btree (user_id, last_seen);
  1284. CREATE INDEX user_ips_last_seen_only ON user_ips USING btree (last_seen);
  1285. CREATE UNIQUE INDEX user_ips_user_token_ip_unique_index ON user_ips USING btree (user_id, access_token, ip);
  1286. CREATE UNIQUE INDEX user_signature_stream_idx ON user_signature_stream USING btree (stream_id);
  1287. CREATE UNIQUE INDEX user_threepid_id_server_idx ON user_threepid_id_server USING btree (user_id, medium, address, id_server);
  1288. CREATE INDEX user_threepids_medium_address ON user_threepids USING btree (medium, address);
  1289. CREATE INDEX user_threepids_user_id ON user_threepids USING btree (user_id);
  1290. CREATE INDEX users_creation_ts ON users USING btree (creation_ts);
  1291. CREATE INDEX users_have_local_media ON local_media_repository USING btree (user_id, created_ts);
  1292. CREATE INDEX users_in_public_rooms_r_idx ON users_in_public_rooms USING btree (room_id);
  1293. CREATE UNIQUE INDEX users_in_public_rooms_u_idx ON users_in_public_rooms USING btree (user_id, room_id);
  1294. CREATE INDEX users_who_share_private_rooms_o_idx ON users_who_share_private_rooms USING btree (other_user_id);
  1295. CREATE INDEX users_who_share_private_rooms_r_idx ON users_who_share_private_rooms USING btree (room_id);
  1296. CREATE UNIQUE INDEX users_who_share_private_rooms_u_idx ON users_who_share_private_rooms USING btree (user_id, other_user_id, room_id);
  1297. CREATE UNIQUE INDEX worker_locks_key ON worker_locks USING btree (lock_name, lock_key);
  1298. CREATE TRIGGER check_partial_state_events BEFORE INSERT OR UPDATE ON partial_state_events FOR EACH ROW EXECUTE PROCEDURE check_partial_state_events();
  1299. ALTER TABLE ONLY access_tokens
  1300. ADD CONSTRAINT access_tokens_refresh_token_id_fkey FOREIGN KEY (refresh_token_id) REFERENCES refresh_tokens(id) ON DELETE CASCADE;
  1301. ALTER TABLE ONLY destination_rooms
  1302. ADD CONSTRAINT destination_rooms_destination_fkey FOREIGN KEY (destination) REFERENCES destinations(destination);
  1303. ALTER TABLE ONLY destination_rooms
  1304. ADD CONSTRAINT destination_rooms_room_id_fkey FOREIGN KEY (room_id) REFERENCES rooms(room_id);
  1305. ALTER TABLE ONLY event_edges
  1306. ADD CONSTRAINT event_edges_event_id_fkey FOREIGN KEY (event_id) REFERENCES events(event_id);
  1307. ALTER TABLE ONLY event_txn_id
  1308. ADD CONSTRAINT event_txn_id_event_id_fkey FOREIGN KEY (event_id) REFERENCES events(event_id) ON DELETE CASCADE;
  1309. ALTER TABLE ONLY event_txn_id
  1310. ADD CONSTRAINT event_txn_id_token_id_fkey FOREIGN KEY (token_id) REFERENCES access_tokens(id) ON DELETE CASCADE;
  1311. ALTER TABLE ONLY partial_state_events
  1312. ADD CONSTRAINT partial_state_events_event_id_fkey FOREIGN KEY (event_id) REFERENCES events(event_id);
  1313. ALTER TABLE ONLY partial_state_events
  1314. ADD CONSTRAINT partial_state_events_room_id_fkey FOREIGN KEY (room_id) REFERENCES partial_state_rooms(room_id);
  1315. ALTER TABLE ONLY partial_state_rooms
  1316. ADD CONSTRAINT partial_state_rooms_room_id_fkey FOREIGN KEY (room_id) REFERENCES rooms(room_id);
  1317. ALTER TABLE ONLY partial_state_rooms_servers
  1318. ADD CONSTRAINT partial_state_rooms_servers_room_id_fkey FOREIGN KEY (room_id) REFERENCES partial_state_rooms(room_id);
  1319. ALTER TABLE ONLY refresh_tokens
  1320. ADD CONSTRAINT refresh_tokens_next_token_id_fkey FOREIGN KEY (next_token_id) REFERENCES refresh_tokens(id) ON DELETE CASCADE;
  1321. ALTER TABLE ONLY ui_auth_sessions_credentials
  1322. ADD CONSTRAINT ui_auth_sessions_credentials_session_id_fkey FOREIGN KEY (session_id) REFERENCES ui_auth_sessions(session_id);
  1323. ALTER TABLE ONLY ui_auth_sessions_ips
  1324. ADD CONSTRAINT ui_auth_sessions_ips_session_id_fkey FOREIGN KEY (session_id) REFERENCES ui_auth_sessions(session_id);
  1325. ALTER TABLE ONLY users_to_send_full_presence_to
  1326. ADD CONSTRAINT users_to_send_full_presence_to_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(name);
  1327. INSERT INTO appservice_stream_position VALUES ('X', 0);
  1328. INSERT INTO event_push_summary_last_receipt_stream_id VALUES ('X', 0);
  1329. INSERT INTO event_push_summary_stream_ordering VALUES ('X', 0);
  1330. INSERT INTO federation_stream_position VALUES ('federation', -1, 'master');
  1331. INSERT INTO federation_stream_position VALUES ('events', -1, 'master');
  1332. INSERT INTO stats_incremental_position VALUES ('X', 1);
  1333. INSERT INTO user_directory_stream_pos VALUES ('X', 1);
  1334. SELECT pg_catalog.setval('account_data_sequence', 1, true);
  1335. SELECT pg_catalog.setval('application_services_txn_id_seq', 1, false);
  1336. SELECT pg_catalog.setval('cache_invalidation_stream_seq', 1, true);
  1337. SELECT pg_catalog.setval('device_inbox_sequence', 1, true);
  1338. SELECT pg_catalog.setval('event_auth_chain_id', 1, false);
  1339. SELECT pg_catalog.setval('events_backfill_stream_seq', 1, true);
  1340. SELECT pg_catalog.setval('events_stream_seq', 1, true);
  1341. SELECT pg_catalog.setval('instance_map_instance_id_seq', 1, false);
  1342. SELECT pg_catalog.setval('presence_stream_sequence', 1, true);
  1343. SELECT pg_catalog.setval('receipts_sequence', 1, true);
  1344. SELECT pg_catalog.setval('user_id_seq', 1, false);