VALUES (user_user_id_seq.nextval,'Anonymous','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, '', current_timestamp, current_timestamp, 0);
CREATE TABLE &mw_prefix.user_groups (
- ug_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ ug_user NUMBER DEFAULT 0 NOT NULL,
ug_group VARCHAR2(16) NOT NULL
);
+ALTER TABLE &mw_prefix.user_groups ADD CONSTRAINT &mw_prefix.user_groups_fk1 FOREIGN KEY (ug_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.user_groups_u01 ON &mw_prefix.user_groups (ug_user,ug_group);
CREATE INDEX &mw_prefix.user_groups_i01 ON &mw_prefix.user_groups (ug_group);
CREATE TABLE &mw_prefix.user_newtalk (
- user_id NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ user_id NUMBER DEFAULT 0 NOT NULL,
user_ip VARCHAR2(40) NULL,
user_last_timestamp TIMESTAMP(6) WITH TIME ZONE
);
+ALTER TABLE &mw_prefix.user_newtalk ADD CONSTRAINT &mw_prefix.user_newtalk_fk1 FOREIGN KEY (user_id) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.user_newtalk_i01 ON &mw_prefix.user_newtalk (user_id);
CREATE INDEX &mw_prefix.user_newtalk_i02 ON &mw_prefix.user_newtalk (user_ip);
CREATE UNIQUE INDEX &mw_prefix.user_properties_u01 on &mw_prefix.user_properties (up_user,up_property);
CREATE INDEX &mw_prefix.user_properties_i01 on &mw_prefix.user_properties (up_property);
-
CREATE SEQUENCE page_page_id_seq;
CREATE TABLE &mw_prefix.page (
page_id NUMBER NOT NULL,
- page_namespace NUMBER NOT NULL,
+ page_namespace NUMBER DEFAULT 0 NOT NULL,
page_title VARCHAR2(255) NOT NULL,
page_restrictions VARCHAR2(255),
page_counter NUMBER DEFAULT 0 NOT NULL,
- page_is_redirect CHAR(1) DEFAULT 0 NOT NULL,
- page_is_new CHAR(1) DEFAULT 0 NOT NULL,
+ page_is_redirect CHAR(1) DEFAULT '0' NOT NULL,
+ page_is_new CHAR(1) DEFAULT '0' NOT NULL,
page_random NUMBER(15,14) NOT NULL,
page_touched TIMESTAMP(6) WITH TIME ZONE,
- page_latest NUMBER NOT NULL, -- FK?
- page_len NUMBER NOT NULL
+ page_latest NUMBER DEFAULT 0 NOT NULL, -- FK?
+ page_len NUMBER DEFAULT 0 NOT NULL
);
ALTER TABLE &mw_prefix.page ADD CONSTRAINT &mw_prefix.page_pk PRIMARY KEY (page_id);
CREATE UNIQUE INDEX &mw_prefix.page_u01 ON &mw_prefix.page (page_namespace,page_title);
CREATE INDEX &mw_prefix.page_i01 ON &mw_prefix.page (page_random);
CREATE INDEX &mw_prefix.page_i02 ON &mw_prefix.page (page_len);
+-- Create a dummy page to satisfy fk contraints especially with revisions
+INSERT INTO &mw_prefix.page
+ VALUES (0, 0, ' ', NULL, 0, 0, 0, 0, current_timestamp, 0, 0);
+
/*$mw$*/
CREATE TRIGGER &mw_prefix.page_set_random BEFORE INSERT ON &mw_prefix.page
FOR EACH ROW WHEN (new.page_random IS NULL)
CREATE SEQUENCE revision_rev_id_seq;
CREATE TABLE &mw_prefix.revision (
rev_id NUMBER NOT NULL,
- rev_page NUMBER NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ rev_page NUMBER NOT NULL,
rev_text_id NUMBER NULL,
rev_comment VARCHAR2(255),
- rev_user NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id),
+ rev_user NUMBER DEFAULT 0 NOT NULL,
rev_user_text VARCHAR2(255) NOT NULL,
rev_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
rev_minor_edit CHAR(1) DEFAULT '0' NOT NULL,
rev_parent_id NUMBER DEFAULT NULL
);
ALTER TABLE &mw_prefix.revision ADD CONSTRAINT &mw_prefix.revision_pk PRIMARY KEY (rev_id);
+ALTER TABLE &mw_prefix.revision ADD CONSTRAINT &mw_prefix.revision_fk1 FOREIGN KEY (rev_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.revision ADD CONSTRAINT &mw_prefix.revision_fk2 FOREIGN KEY (rev_user) REFERENCES &mw_prefix.mwuser(user_id) DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.revision_u01 ON &mw_prefix.revision (rev_page, rev_id);
CREATE INDEX &mw_prefix.revision_i01 ON &mw_prefix.revision (rev_timestamp);
CREATE INDEX &mw_prefix.revision_i02 ON &mw_prefix.revision (rev_page,rev_timestamp);
ALTER TABLE &mw_prefix.pagecontent ADD CONSTRAINT &mw_prefix.pagecontent_pk PRIMARY KEY (old_id);
CREATE TABLE &mw_prefix.archive (
- ar_namespace NUMBER NOT NULL,
+ ar_namespace NUMBER DEFAULT 0 NOT NULL,
ar_title VARCHAR2(255) NOT NULL,
ar_text CLOB,
ar_comment VARCHAR2(255),
- ar_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ ar_user NUMBER DEFAULT 0 NOT NULL,
ar_user_text VARCHAR2(255) NOT NULL,
ar_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
ar_minor_edit CHAR(1) DEFAULT '0' NOT NULL,
ar_flags VARCHAR2(255),
ar_rev_id NUMBER,
ar_text_id NUMBER,
- ar_deleted NUMBER DEFAULT '0' NOT NULL,
+ ar_deleted CHAR(1) DEFAULT '0' NOT NULL,
ar_len NUMBER,
ar_page_id NUMBER,
ar_parent_id NUMBER
);
+ALTER TABLE &mw_prefix.archive ADD CONSTRAINT &mw_prefix.archive_fk1 FOREIGN KEY (ar_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.archive_i01 ON &mw_prefix.archive (ar_namespace,ar_title,ar_timestamp);
CREATE INDEX &mw_prefix.archive_i02 ON &mw_prefix.archive (ar_user_text,ar_timestamp);
-
+CREATE INDEX &mw_prefix.archive_i03 ON &mw_prefix.archive (ar_rev_id);
CREATE TABLE &mw_prefix.pagelinks (
- pl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
- pl_namespace NUMBER NOT NULL,
+ pl_from NUMBER NOT NULL,
+ pl_namespace NUMBER DEFAULT 0 NOT NULL,
pl_title VARCHAR2(255) NOT NULL
);
+ALTER TABLE &mw_prefix.pagelinks ADD CONSTRAINT &mw_prefix.pagelinks_fk1 FOREIGN KEY (pl_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.pagelinks_u01 ON &mw_prefix.pagelinks (pl_from,pl_namespace,pl_title);
CREATE UNIQUE INDEX &mw_prefix.pagelinks_u02 ON &mw_prefix.pagelinks (pl_namespace,pl_title,pl_from);
CREATE TABLE &mw_prefix.templatelinks (
- tl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
- tl_namespace NUMBER NOT NULL,
+ tl_from NUMBER NOT NULL,
+ tl_namespace NUMBER DEFAULT 0 NOT NULL,
tl_title VARCHAR2(255) NOT NULL
);
+ALTER TABLE &mw_prefix.templatelinks ADD CONSTRAINT &mw_prefix.templatelinks_fk1 FOREIGN KEY (tl_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.templatelinks_u01 ON &mw_prefix.templatelinks (tl_from,tl_namespace,tl_title);
CREATE UNIQUE INDEX &mw_prefix.templatelinks_u02 ON &mw_prefix.templatelinks (tl_namespace,tl_title,tl_from);
CREATE TABLE &mw_prefix.imagelinks (
- il_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ il_from NUMBER NOT NULL,
il_to VARCHAR2(255) NOT NULL
);
+ALTER TABLE &mw_prefix.imagelinks ADD CONSTRAINT &mw_prefix.imagelinks_fk1 FOREIGN KEY (il_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.imagelinks_u01 ON &mw_prefix.imagelinks (il_from,il_to);
CREATE UNIQUE INDEX &mw_prefix.imagelinks_u02 ON &mw_prefix.imagelinks (il_to,il_from);
CREATE TABLE &mw_prefix.categorylinks (
- cl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ cl_from NUMBER NOT NULL,
cl_to VARCHAR2(255) NOT NULL,
- cl_sortkey VARCHAR2(255),
- cl_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL
+ cl_sortkey VARCHAR2(230),
+ cl_sortkey_prefix VARCHAR2(255) DEFAULT '' NOT NULL,
+ cl_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ cl_collation VARCHAR2(32) DEFAULT '' NOT NULL,
+ cl_type VARCHAR2(6) DEFAULT 'page' NOT NULL
);
+ALTER TABLE &mw_prefix.categorylinks ADD CONSTRAINT &mw_prefix.categorylinks_fk1 FOREIGN KEY (cl_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.categorylinks_u01 ON &mw_prefix.categorylinks (cl_from,cl_to);
-CREATE INDEX &mw_prefix.categorylinks_i01 ON &mw_prefix.categorylinks (cl_to,cl_sortkey,cl_from);
+CREATE INDEX &mw_prefix.categorylinks_i01 ON &mw_prefix.categorylinks (cl_to,cl_type,cl_sortkey,cl_from);
CREATE INDEX &mw_prefix.categorylinks_i02 ON &mw_prefix.categorylinks (cl_to,cl_timestamp);
+CREATE INDEX &mw_prefix.categorylinks_i03 ON &mw_prefix.categorylinks (cl_collation);
CREATE SEQUENCE category_cat_id_seq;
CREATE TABLE &mw_prefix.category (
CREATE INDEX &mw_prefix.category_i01 ON &mw_prefix.category (cat_pages);
CREATE TABLE &mw_prefix.externallinks (
- el_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ el_from NUMBER NOT NULL,
el_to VARCHAR2(2048) NOT NULL,
el_index VARCHAR2(2048) NOT NULL
);
+ALTER TABLE &mw_prefix.externallinks ADD CONSTRAINT &mw_prefix.externallinks_fk1 FOREIGN KEY (el_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.externallinks_i01 ON &mw_prefix.externallinks (el_from, el_to);
CREATE INDEX &mw_prefix.externallinks_i02 ON &mw_prefix.externallinks (el_to, el_from);
CREATE INDEX &mw_prefix.externallinks_i03 ON &mw_prefix.externallinks (el_index);
CREATE UNIQUE INDEX &mw_prefix.external_user_u01 ON &mw_prefix.external_user (eu_external_id);
CREATE TABLE &mw_prefix.langlinks (
- ll_from NUMBER NOT NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ ll_from NUMBER NOT NULL,
ll_lang VARCHAR2(20),
ll_title VARCHAR2(255)
);
+ALTER TABLE &mw_prefix.langlinks ADD CONSTRAINT &mw_prefix.langlinks_fk1 FOREIGN KEY (ll_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.langlinks_u01 ON &mw_prefix.langlinks (ll_from, ll_lang);
CREATE INDEX &mw_prefix.langlinks_i01 ON &mw_prefix.langlinks (ll_lang, ll_title);
+CREATE TABLE &mw_prefix.iwlinks (
+ iwl_from NUMBER DEFAULT 0 NOT NULL,
+ iwl_prefix VARCHAR2(20) DEFAULT '' NOT NULL,
+ iwl_title VARCHAR2(255) DEFAULT '' NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.iwlinks_ui01 ON &mw_prefix.iwlinks (iwl_from, iwl_prefix, iwl_title);
+CREATE UNIQUE INDEX &mw_prefix.iwlinks_ui02 ON &mw_prefix.iwlinks (iwl_prefix, iwl_title, iwl_from);
+
CREATE TABLE &mw_prefix.site_stats (
ss_row_id NUMBER NOT NULL ,
ss_total_views NUMBER DEFAULT 0,
CREATE TABLE &mw_prefix.ipblocks (
ipb_id NUMBER NOT NULL,
ipb_address VARCHAR2(255) NULL,
- ipb_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
- ipb_by NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ ipb_user NUMBER DEFAULT 0 NOT NULL,
+ ipb_by NUMBER DEFAULT 0 NOT NULL,
ipb_by_text VARCHAR2(255) NOT NULL,
ipb_reason VARCHAR2(255) NOT NULL,
ipb_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
ipb_allow_usertalk CHAR(1) DEFAULT '0' NOT NULL
);
ALTER TABLE &mw_prefix.ipblocks ADD CONSTRAINT &mw_prefix.ipblocks_pk PRIMARY KEY (ipb_id);
+ALTER TABLE &mw_prefix.ipblocks ADD CONSTRAINT &mw_prefix.ipblocks_fk1 FOREIGN KEY (ipb_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.ipblocks ADD CONSTRAINT &mw_prefix.ipblocks_fk2 FOREIGN KEY (ipb_by) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.ipblocks_u01 ON &mw_prefix.ipblocks (ipb_address, ipb_user, ipb_auto, ipb_anon_only);
CREATE INDEX &mw_prefix.ipblocks_i01 ON &mw_prefix.ipblocks (ipb_user);
CREATE INDEX &mw_prefix.ipblocks_i02 ON &mw_prefix.ipblocks (ipb_range_start, ipb_range_end);
CREATE TABLE &mw_prefix.image (
img_name VARCHAR2(255) NOT NULL,
- img_size NUMBER NOT NULL,
- img_width NUMBER NOT NULL,
- img_height NUMBER NOT NULL,
+ img_size NUMBER DEFAULT 0 NOT NULL,
+ img_width NUMBER DEFAULT 0 NOT NULL,
+ img_height NUMBER DEFAULT 0 NOT NULL,
img_metadata CLOB,
- img_bits NUMBER,
+ img_bits NUMBER DEFAULT 0 NOT NULL,
img_media_type VARCHAR2(32),
img_major_mime VARCHAR2(32) DEFAULT 'unknown',
img_minor_mime VARCHAR2(100) DEFAULT 'unknown',
img_description VARCHAR2(255),
- img_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ img_user NUMBER DEFAULT 0 NOT NULL,
img_user_text VARCHAR2(255) NOT NULL,
img_timestamp TIMESTAMP(6) WITH TIME ZONE,
- img_sha1 VARCHAR2(32)
+ img_sha1 VARCHAR2(32)
);
ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_pk PRIMARY KEY (img_name);
+ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_fk1 FOREIGN KEY (img_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.image_i01 ON &mw_prefix.image (img_user_text,img_timestamp);
CREATE INDEX &mw_prefix.image_i02 ON &mw_prefix.image (img_size);
CREATE INDEX &mw_prefix.image_i03 ON &mw_prefix.image (img_timestamp);
CREATE TABLE &mw_prefix.oldimage (
- oi_name VARCHAR2(255) NOT NULL REFERENCES &mw_prefix.image(img_name),
+ oi_name VARCHAR2(255) DEFAULT 0 NOT NULL,
oi_archive_name VARCHAR2(255),
- oi_size NUMBER NOT NULL,
- oi_width NUMBER NOT NULL,
- oi_height NUMBER NOT NULL,
- oi_bits NUMBER NOT NULL,
+ oi_size NUMBER DEFAULT 0 NOT NULL,
+ oi_width NUMBER DEFAULT 0 NOT NULL,
+ oi_height NUMBER DEFAULT 0 NOT NULL,
+ oi_bits NUMBER DEFAULT 0 NOT NULL,
oi_description VARCHAR2(255),
- oi_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ oi_user NUMBER DEFAULT 0 NOT NULL,
oi_user_text VARCHAR2(255) NOT NULL,
oi_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
oi_metadata CLOB,
oi_deleted NUMBER DEFAULT 0 NOT NULL,
oi_sha1 VARCHAR2(32)
);
+ALTER TABLE &mw_prefix.oldimage ADD CONSTRAINT &mw_prefix.oldimage_fk1 FOREIGN KEY (oi_name) REFERENCES &mw_prefix.image(img_name) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.oldimage ADD CONSTRAINT &mw_prefix.oldimage_fk2 FOREIGN KEY (oi_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.oldimage_i01 ON &mw_prefix.oldimage (oi_user_text,oi_timestamp);
CREATE INDEX &mw_prefix.oldimage_i02 ON &mw_prefix.oldimage (oi_name,oi_timestamp);
CREATE INDEX &mw_prefix.oldimage_i03 ON &mw_prefix.oldimage (oi_name,oi_archive_name);
fa_archive_name VARCHAR2(255),
fa_storage_group VARCHAR2(16),
fa_storage_key VARCHAR2(64),
- fa_deleted_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ fa_deleted_user NUMBER DEFAULT 0 NOT NULL,
fa_deleted_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
fa_deleted_reason CLOB,
- fa_size NUMBER NOT NULL,
- fa_width NUMBER NOT NULL,
- fa_height NUMBER NOT NULL,
+ fa_size NUMBER DEFAULT 0 NOT NULL,
+ fa_width NUMBER DEFAULT 0 NOT NULL,
+ fa_height NUMBER DEFAULT 0 NOT NULL,
fa_metadata CLOB,
- fa_bits NUMBER,
+ fa_bits NUMBER DEFAULT 0 NOT NULL,
fa_media_type VARCHAR2(32) DEFAULT NULL,
fa_major_mime VARCHAR2(32) DEFAULT 'unknown',
fa_minor_mime VARCHAR2(100) DEFAULT 'unknown',
fa_description VARCHAR2(255),
- fa_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ fa_user NUMBER DEFAULT 0 NOT NULL,
fa_user_text VARCHAR2(255) NOT NULL,
fa_timestamp TIMESTAMP(6) WITH TIME ZONE,
- fa_deleted NUMBER DEFAULT '0' NOT NULL
+ fa_deleted NUMBER DEFAULT 0 NOT NULL
);
ALTER TABLE &mw_prefix.filearchive ADD CONSTRAINT &mw_prefix.filearchive_pk PRIMARY KEY (fa_id);
+ALTER TABLE &mw_prefix.filearchive ADD CONSTRAINT &mw_prefix.filearchive_fk1 FOREIGN KEY (fa_deleted_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.filearchive ADD CONSTRAINT &mw_prefix.filearchive_fk2 FOREIGN KEY (fa_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.filearchive_i01 ON &mw_prefix.filearchive (fa_name, fa_timestamp);
CREATE INDEX &mw_prefix.filearchive_i02 ON &mw_prefix.filearchive (fa_storage_group, fa_storage_key);
CREATE INDEX &mw_prefix.filearchive_i03 ON &mw_prefix.filearchive (fa_deleted_timestamp);
rc_id NUMBER NOT NULL,
rc_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
rc_cur_time TIMESTAMP(6) WITH TIME ZONE NOT NULL,
- rc_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ rc_user NUMBER DEFAULT 0 NOT NULL,
rc_user_text VARCHAR2(255) NOT NULL,
- rc_namespace NUMBER NOT NULL,
+ rc_namespace NUMBER DEFAULT 0 NOT NULL,
rc_title VARCHAR2(255) NOT NULL,
rc_comment VARCHAR2(255),
rc_minor CHAR(1) DEFAULT '0' NOT NULL,
rc_bot CHAR(1) DEFAULT '0' NOT NULL,
rc_new CHAR(1) DEFAULT '0' NOT NULL,
- rc_cur_id NUMBER NULL REFERENCES &mw_prefix.page(page_id) ON DELETE SET NULL,
- rc_this_oldid NUMBER NOT NULL,
- rc_last_oldid NUMBER NOT NULL,
+ rc_cur_id NUMBER DEFAULT 0 NOT NULL,
+ rc_this_oldid NUMBER DEFAULT 0 NOT NULL,
+ rc_last_oldid NUMBER DEFAULT 0 NOT NULL,
rc_type CHAR(1) DEFAULT '0' NOT NULL,
- rc_moved_to_ns NUMBER,
+ rc_moved_to_ns NUMBER DEFAULT 0 NOT NULL,
rc_moved_to_title VARCHAR2(255),
rc_patrolled CHAR(1) DEFAULT '0' NOT NULL,
rc_ip VARCHAR2(15),
rc_old_len NUMBER,
rc_new_len NUMBER,
- rc_deleted NUMBER DEFAULT '0' NOT NULL,
- rc_logid NUMBER DEFAULT '0' NOT NULL,
+ rc_deleted CHAR(1) DEFAULT '0' NOT NULL,
+ rc_logid NUMBER DEFAULT 0 NOT NULL,
rc_log_type VARCHAR2(255),
rc_log_action VARCHAR2(255),
rc_params CLOB
);
ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_pk PRIMARY KEY (rc_id);
+ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_fk1 FOREIGN KEY (rc_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_fk2 FOREIGN KEY (rc_cur_id) REFERENCES &mw_prefix.page(page_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.recentchanges_i01 ON &mw_prefix.recentchanges (rc_timestamp);
CREATE INDEX &mw_prefix.recentchanges_i02 ON &mw_prefix.recentchanges (rc_namespace, rc_title);
CREATE INDEX &mw_prefix.recentchanges_i03 ON &mw_prefix.recentchanges (rc_cur_id);
CREATE INDEX &mw_prefix.recentchanges_i07 ON &mw_prefix.recentchanges (rc_user_text, rc_timestamp);
CREATE TABLE &mw_prefix.watchlist (
- wl_user NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ wl_user NUMBER NOT NULL,
wl_namespace NUMBER DEFAULT 0 NOT NULL,
wl_title VARCHAR2(255) NOT NULL,
wl_notificationtimestamp TIMESTAMP(6) WITH TIME ZONE
);
+ALTER TABLE &mw_prefix.watchlist ADD CONSTRAINT &mw_prefix.watchlist_fk1 FOREIGN KEY (wl_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.watchlist_u01 ON &mw_prefix.watchlist (wl_user, wl_namespace, wl_title);
CREATE INDEX &mw_prefix.watchlist_i01 ON &mw_prefix.watchlist (wl_namespace, wl_title);
CREATE TABLE &mw_prefix.interwiki (
iw_prefix VARCHAR2(32) NOT NULL,
iw_url VARCHAR2(127) NOT NULL,
+ iw_api BLOB NOT NULL,
+ iw_wikiid VARCHAR2(64),
iw_local CHAR(1) NOT NULL,
iw_trans CHAR(1) DEFAULT '0' NOT NULL
);
CREATE TABLE &mw_prefix.querycache (
qc_type VARCHAR2(32) NOT NULL,
- qc_value NUMBER NOT NULL,
- qc_namespace NUMBER NOT NULL,
+ qc_value NUMBER DEFAULT 0 NOT NULL,
+ qc_namespace NUMBER DEFAULT 0 NOT NULL,
qc_title VARCHAR2(255) NOT NULL
);
CREATE INDEX &mw_prefix.querycache_u01 ON &mw_prefix.querycache (qc_type,qc_value);
log_type VARCHAR2(10) NOT NULL,
log_action VARCHAR2(10) NOT NULL,
log_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
- log_user NUMBER REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ log_user NUMBER DEFAULT 0 NOT NULL,
log_user_text VARCHAR2(255),
- log_namespace NUMBER NOT NULL,
+ log_namespace NUMBER DEFAULT 0 NOT NULL,
log_title VARCHAR2(255) NOT NULL,
- log_page NUMBER,
+ log_page NUMBER,
log_comment VARCHAR2(255),
log_params CLOB,
- log_deleted NUMBER DEFAULT '0' NOT NULL
+ log_deleted CHAR(1) DEFAULT '0' NOT NULL
);
ALTER TABLE &mw_prefix.logging ADD CONSTRAINT &mw_prefix.logging_pk PRIMARY KEY (log_id);
+ALTER TABLE &mw_prefix.logging ADD CONSTRAINT &mw_prefix.logging_fk1 FOREIGN KEY (log_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.logging_i01 ON &mw_prefix.logging (log_type, log_timestamp);
CREATE INDEX &mw_prefix.logging_i02 ON &mw_prefix.logging (log_user, log_timestamp);
CREATE INDEX &mw_prefix.logging_i03 ON &mw_prefix.logging (log_namespace, log_title, log_timestamp);
CREATE SEQUENCE trackbacks_tb_id_seq;
CREATE TABLE &mw_prefix.trackbacks (
tb_id NUMBER NOT NULL,
- tb_page NUMBER REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ tb_page NUMBER,
tb_title VARCHAR2(255) NOT NULL,
tb_url VARCHAR2(255) NOT NULL,
tb_ex CLOB,
tb_name VARCHAR2(255)
);
ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_pk PRIMARY KEY (tb_id);
+ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_fk1 FOREIGN KEY (tb_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.trackbacks_i01 ON &mw_prefix.trackbacks (tb_page);
CREATE SEQUENCE job_job_id_seq;
CREATE TABLE &mw_prefix.job (
job_id NUMBER NOT NULL,
job_cmd VARCHAR2(60) NOT NULL,
- job_namespace NUMBER NOT NULL,
+ job_namespace NUMBER DEFAULT 0 NOT NULL,
job_title VARCHAR2(255) NOT NULL,
job_params CLOB NOT NULL
);
CREATE UNIQUE INDEX &mw_prefix.querycache_info_u01 ON &mw_prefix.querycache_info (qci_type);
CREATE TABLE &mw_prefix.redirect (
- rd_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
- rd_namespace NUMBER NOT NULL,
+ rd_from NUMBER NOT NULL,
+ rd_namespace NUMBER DEFAULT 0 NOT NULL,
rd_title VARCHAR2(255) NOT NULL,
rd_interwiki VARCHAR2(32),
rd_fragment VARCHAR2(255)
);
+ALTER TABLE &mw_prefix.redirect ADD CONSTRAINT &mw_prefix.redirect_fk1 FOREIGN KEY (rd_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.redirect_i01 ON &mw_prefix.redirect (rd_namespace,rd_title,rd_from);
CREATE TABLE &mw_prefix.querycachetwo (
CREATE SEQUENCE page_restrictions_pr_id_seq;
CREATE TABLE &mw_prefix.page_restrictions (
pr_id NUMBER NOT NULL,
- pr_page NUMBER NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ pr_page NUMBER NOT NULL,
pr_type VARCHAR2(255) NOT NULL,
pr_level VARCHAR2(255) NOT NULL,
pr_cascade NUMBER NOT NULL,
pr_expiry TIMESTAMP(6) WITH TIME ZONE NULL
);
ALTER TABLE &mw_prefix.page_restrictions ADD CONSTRAINT &mw_prefix.page_restrictions_pk PRIMARY KEY (pr_page,pr_type);
+ALTER TABLE &mw_prefix.page_restrictions ADD CONSTRAINT &mw_prefix.page_restrictions_fk1 FOREIGN KEY (pr_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX &mw_prefix.page_restrictions_i01 ON &mw_prefix.page_restrictions (pr_type,pr_level);
CREATE INDEX &mw_prefix.page_restrictions_i02 ON &mw_prefix.page_restrictions (pr_level);
CREATE INDEX &mw_prefix.page_restrictions_i03 ON &mw_prefix.page_restrictions (pr_cascade);
CREATE TABLE &mw_prefix.protected_titles (
- pt_namespace NUMBER NOT NULL,
+ pt_namespace NUMBER DEFAULT 0 NOT NULL,
pt_title VARCHAR2(255) NOT NULL,
pt_user NUMBER NOT NULL,
pt_reason VARCHAR2(255),
CREATE TABLE &mw_prefix.updatelog (
- ul_key VARCHAR2(255) NOT NULL
+ ul_key VARCHAR2(255) NOT NULL,
+ ul_value BLOB
);
ALTER TABLE &mw_prefix.updatelog ADD CONSTRAINT &mw_prefix.updatelog_pk PRIMARY KEY (ul_key);
--);
--CREATE UNIQUE INDEX &mw_prefix.profiling_u01 ON &mw_prefix.profiling (pf_name, pf_server);
-CREATE INDEX si_title_idx ON &mw_prefix.searchindex(si_title) INDEXTYPE IS ctxsys.context;
-CREATE INDEX si_text_idx ON &mw_prefix.searchindex(si_text) INDEXTYPE IS ctxsys.context;
+CREATE INDEX &mw_prefix.si_title_idx ON &mw_prefix.searchindex(si_title) INDEXTYPE IS ctxsys.context;
+CREATE INDEX &mw_prefix.si_text_idx ON &mw_prefix.searchindex(si_text) INDEXTYPE IS ctxsys.context;
CREATE TABLE &mw_prefix.l10n_cache (
lc_lang varchar2(32) NOT NULL,
);
CREATE INDEX &mw_prefix.l10n_cache_u01 ON &mw_prefix.l10n_cache (lc_lang, lc_key);
+CREATE TABLE &mw_prefix.msg_resource (
+ mr_resource VARCHAR2(255) NOT NULL,
+ mr_lang varchar2(32) NOT NULL,
+ mr_blob BLOB NOT NULL,
+ mr_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL
+) ;
+CREATE UNIQUE INDEX &mw_prefix.msg_resource_u01 ON &mw_prefix.msg_resource (mr_resource, mr_lang);
+
+CREATE TABLE &mw_prefix.msg_resource_links (
+ mrl_resource VARCHAR2(255) NOT NULL,
+ mrl_message VARCHAR2(255) NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.msg_resource_links_u01 ON &mw_prefix.msg_resource_links (mrl_message, mrl_resource);
+
+CREATE TABLE &mw_prefix.module_deps (
+ md_module VARCHAR2(255) NOT NULL,
+ md_skin VARCHAR2(32) NOT NULL,
+ md_deps BLOB NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps (md_module, md_skin);
+
-- do not prefix this table as it breaks parserTests
CREATE TABLE wiki_field_info_full (
table_name VARCHAR2(35) NOT NULL,
p_temporary IN BOOLEAN) IS
e_table_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT(e_table_not_exist, -00942);
+ l_temp_ei_sql VARCHAR2(2000);
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || p_newprefix || p_tabname ||
AND data_default IS NOT NULL) LOOP
EXECUTE IMMEDIATE 'ALTER TABLE ' || p_newprefix || p_tabname ||
' MODIFY ' || rc.column_name || ' DEFAULT ' ||
- substr(rc.data_default, 1, 2000);
+ SUBSTR(rc.data_default, 1, 2000);
END LOOP;
FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('CONSTRAINT',
constraint_name),
FROM user_constraints uc
WHERE table_name = p_oldprefix || p_tabname
AND constraint_type = 'P') LOOP
- dbms_output.put_line(SUBSTR(rc.ddlvc2,
- 1,
- INSTR(rc.ddlvc2, 'PCTFREE') - 1));
- EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql, 1, INSTR(l_temp_ei_sql, ')', INSTR(l_temp_ei_sql, 'PRIMARY KEY')+1)+1);
+ EXECUTE IMMEDIATE l_temp_ei_sql;
END LOOP;
+ IF (NOT p_temporary) THEN
FOR rc IN (SELECT REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('REF_CONSTRAINT',
constraint_name),
32767,
AND constraint_type = 'R') LOOP
EXECUTE IMMEDIATE rc.ddlvc2;
END LOOP;
+ END IF;
FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
index_name),
32767,
USER || '"."' || p_newprefix),
'"' || index_name || '"',
'"' || p_newprefix || index_name || '"') DDLVC2,
- index_name
+ index_name,
+ index_type
FROM user_indexes ui
WHERE table_name = p_oldprefix || p_tabname
- AND index_type != 'LOB'
+ AND index_type NOT IN ('LOB', 'DOMAIN')
AND NOT EXISTS
(SELECT NULL
FROM user_constraints
WHERE table_name = ui.table_name
AND constraint_name = ui.index_name)) LOOP
- EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql, 1, INSTR(l_temp_ei_sql, ')', INSTR(l_temp_ei_sql, '"' || USER || '"."' || p_newprefix || '"')+1)+1);
+ EXECUTE IMMEDIATE l_temp_ei_sql;
END LOOP;
FOR rc IN (SELECT REPLACE(REPLACE(UPPER(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('TRIGGER',
trigger_name),
trigger_name
FROM user_triggers
WHERE table_name = p_oldprefix || p_tabname) LOOP
- EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'ALTER ') - 1);
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'ALTER ') - 1);
+ EXECUTE IMMEDIATE l_temp_ei_sql;
END LOOP;
END;
/*$mw$*/
-/*$mw$*/
-BEGIN
- fill_wiki_info;
-END;
-/*$mw$*/
-
/*$mw$*/
CREATE OR REPLACE FUNCTION BITOR (x IN NUMBER, y IN NUMBER) RETURN NUMBER AS
BEGIN
END;
/*$mw$*/
-/*$mw$*/
CREATE OR REPLACE TYPE GET_OUTPUT_TYPE IS TABLE OF VARCHAR2(255);
-/*$mw$*/
/*$mw$*/
CREATE OR REPLACE FUNCTION GET_OUTPUT_LINES RETURN GET_OUTPUT_TYPE PIPELINED AS