saper has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/100141


Change subject: Crude way to recreate PgSQL references in tables
......................................................................

Crude way to recreate PgSQL references in tables

This is a crude way to re-apply all reference
checks (foreign key constraints) to see how
that impacts unit testing code.

This is work in progress, do not merge.

Bug: 37702

Change-Id: I326bb4a189bf881299b9fb678033a927b916efac
---
M includes/db/CloneDatabase.php
M includes/db/Database.php
M includes/db/DatabasePostgres.php
A maintenance/postgres/archives/refs.sql
4 files changed, 240 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/41/100141/1

diff --git a/includes/db/CloneDatabase.php b/includes/db/CloneDatabase.php
index 1e01d29..5b0829c 100644
--- a/includes/db/CloneDatabase.php
+++ b/includes/db/CloneDatabase.php
@@ -109,6 +109,7 @@
                        wfDebug( __METHOD__ . " duplicating $oldTableName to 
$newTableName\n", true );
                        $this->db->duplicateTableStructure( $oldTableName, 
$newTableName, $this->useTemporaryTables );
                }
+               $this->db->recreateReferences();
        }
 
        /**
diff --git a/includes/db/Database.php b/includes/db/Database.php
index fa12595..164cd2e 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -3525,6 +3525,9 @@
                        'DatabaseBase::duplicateTableStructure is not 
implemented in descendant class' );
        }
 
+       public function recreateReferences( ) {
+       }
+
        /**
         * List all tables on the database
         *
diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php
index cfa2074..30d87a7 100644
--- a/includes/db/DatabasePostgres.php
+++ b/includes/db/DatabasePostgres.php
@@ -1039,7 +1039,11 @@
                $oldName = $this->addIdentifierQuotes( $oldName );
 
                return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : 
'' ) . " TABLE $newName " .
-                       "(LIKE $oldName INCLUDING DEFAULTS)", $fname );
+                       "(LIKE $oldName INCLUDING ALL)", $fname );
+       }
+
+       public function recreateReferences( ) {
+               $this->sourceFile( $this->patchPath( "refs.sql" ) );
        }
 
        function listTables( $prefix = null, $fname = __METHOD__ ) {
diff --git a/maintenance/postgres/archives/refs.sql 
b/maintenance/postgres/archives/refs.sql
new file mode 100644
index 0000000..a6bff17
--- /dev/null
+++ b/maintenance/postgres/archives/refs.sql
@@ -0,0 +1,231 @@
+-- Name: archive_ar_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+INSERT INTO unittest_mwuser SELECT * FROM mwuser;
+
+ALTER TABLE ONLY unittest_archive
+    ADD CONSTRAINT ut_archive_ar_user_fkey FOREIGN KEY (ar_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: categorylinks_cl_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_categorylinks
+    ADD CONSTRAINT ut_categorylinks_cl_from_fkey FOREIGN KEY (cl_from) 
REFERENCES unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: externallinks_el_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_externallinks
+    ADD CONSTRAINT ut_externallinks_el_from_fkey FOREIGN KEY (el_from) 
REFERENCES unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: filearchive_fa_deleted_user_fkey; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_filearchive
+    ADD CONSTRAINT ut_filearchive_fa_deleted_user_fkey FOREIGN KEY 
(fa_deleted_user) REFERENCES unittest_mwuser(user_id) ON DELETE SET NULL 
DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: filearchive_fa_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_filearchive
+    ADD CONSTRAINT ut_filearchive_fa_user_fkey FOREIGN KEY (fa_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: image_img_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+ALTER TABLE ONLY unittest_image
+    ADD CONSTRAINT ut_image_img_user_fkey FOREIGN KEY (img_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: imagelinks_il_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_imagelinks
+    ADD CONSTRAINT ut_imagelinks_il_from_fkey FOREIGN KEY (il_from) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: ipblocks_ipb_by_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+ALTER TABLE ONLY unittest_ipblocks
+    ADD CONSTRAINT ut_ipblocks_ipb_by_fkey FOREIGN KEY (ipb_by) REFERENCES 
unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: ipblocks_ipb_parent_block_id_fkey; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_ipblocks
+    ADD CONSTRAINT ut_ipblocks_ipb_parent_block_id_fkey FOREIGN KEY 
(ipb_parent_block_id) REFERENCES unittest_ipblocks(ipb_id) ON DELETE SET NULL 
DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: ipblocks_ipb_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_ipblocks
+    ADD CONSTRAINT ut_ipblocks_ipb_user_fkey FOREIGN KEY (ipb_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: langlinks_ll_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_langlinks
+    ADD CONSTRAINT ut_langlinks_ll_from_fkey FOREIGN KEY (ll_from) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: logging_log_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+ALTER TABLE ONLY unittest_logging
+    ADD CONSTRAINT ut_logging_log_user_fkey FOREIGN KEY (log_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: oldimage_oi_name_fkey_cascaded; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_oldimage
+    ADD CONSTRAINT ut_oldimage_oi_name_fkey_cascaded FOREIGN KEY (oi_name) 
REFERENCES unittest_image(img_name) ON UPDATE CASCADE ON DELETE CASCADE 
DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: oldimage_oi_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+ALTER TABLE ONLY unittest_oldimage
+    ADD CONSTRAINT ut_oldimage_oi_user_fkey FOREIGN KEY (oi_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: page_props_pp_page_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_page_props
+    ADD CONSTRAINT ut_page_props_pp_page_fkey FOREIGN KEY (pp_page) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: page_restrictions_pr_page_fkey; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_page_restrictions
+    ADD CONSTRAINT ut_page_restrictions_pr_page_fkey FOREIGN KEY (pr_page) 
REFERENCES unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: pagelinks_pl_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_pagelinks
+    ADD CONSTRAINT ut_pagelinks_pl_from_fkey FOREIGN KEY (pl_from) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: protected_titles_pt_user_fkey; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_protected_titles
+    ADD CONSTRAINT ut_protected_titles_pt_user_fkey FOREIGN KEY (pt_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: recentchanges_rc_cur_id_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_recentchanges
+    ADD CONSTRAINT ut_recentchanges_rc_cur_id_fkey FOREIGN KEY (rc_cur_id) 
REFERENCES unittest_page(page_id) ON DELETE SET NULL DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: recentchanges_rc_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_recentchanges
+    ADD CONSTRAINT ut_recentchanges_rc_user_fkey FOREIGN KEY (rc_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: redirect_rd_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; Owner: 
wikiuser
+--
+
+ALTER TABLE ONLY unittest_redirect
+    ADD CONSTRAINT ut_redirect_rd_from_fkey FOREIGN KEY (rd_from) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: revision_rev_page_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_revision
+    ADD CONSTRAINT ut_revision_rev_page_fkey FOREIGN KEY (rev_page) REFERENCES 
unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: revision_rev_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_revision
+    ADD CONSTRAINT ut_revision_rev_user_fkey FOREIGN KEY (rev_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: templatelinks_tl_from_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_templatelinks
+    ADD CONSTRAINT ut_templatelinks_tl_from_fkey FOREIGN KEY (tl_from) 
REFERENCES unittest_page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: user_former_groups_ufg_user_fkey; Type: FK CONSTRAINT; Schema: 
mediawiki; Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_user_former_groups
+    ADD CONSTRAINT ut_user_former_groups_ufg_user_fkey FOREIGN KEY (ufg_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: user_groups_ug_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_user_groups
+    ADD CONSTRAINT ut_user_groups_ug_user_fkey FOREIGN KEY (ug_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: user_newtalk_user_id_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_user_newtalk
+    ADD CONSTRAINT ut_user_newtalk_user_id_fkey FOREIGN KEY (user_id) 
REFERENCES unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: user_properties_up_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_user_properties
+    ADD CONSTRAINT ut_user_properties_up_user_fkey FOREIGN KEY (up_user) 
REFERENCES unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY 
DEFERRED;
+
+
+--
+-- Name: watchlist_wl_user_fkey; Type: FK CONSTRAINT; Schema: mediawiki; 
Owner: wikiuser
+--
+
+ALTER TABLE ONLY unittest_watchlist
+    ADD CONSTRAINT ut_watchlist_wl_user_fkey FOREIGN KEY (wl_user) REFERENCES 
unittest_mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;

-- 
To view, visit https://gerrit.wikimedia.org/r/100141
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I326bb4a189bf881299b9fb678033a927b916efac
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: saper <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to