Make CloneDatabase error out on shared tables.
authorBrian Wolff <bawolff+wn@gmail.com>
Thu, 22 May 2014 21:36:40 +0000 (18:36 -0300)
committerReedy <reedy@wikimedia.org>
Thu, 19 Jun 2014 09:36:12 +0000 (09:36 +0000)
Due to the way prefixes are handled, this doesn't work properly.

Make it quit early to prevent confusion. I don't think there's
many people who need shared table support, so I don't know if
its worth the effort to actually fix.

Bug: 65654
Change-Id: I6cd701998fc9066d8c7a4fc86d93a4282cc7f9bd

includes/db/CloneDatabase.php

index 536d721..3017ea8 100644 (file)
@@ -71,7 +71,13 @@ class CloneDatabase {
         * Clone the table structure
         */
        public function cloneTableStructure() {
+               global $wgSharedTables, $wgSharedDB;
                foreach ( $this->tablesToClone as $tbl ) {
+                       if ( $wgSharedDB && in_array( $tbl, $wgSharedTables, true ) ) {
+                               // Shared tables don't work properly when cloning due to
+                               // how prefixes are handled (bug 65654)
+                               throw new MWException( "Cannot clone shared table $tbl." );
+                       }
                        # Clean up from previous aborted run.  So that table escaping
                        # works correctly across DB engines, we need to change the pre-
                        # fix back and forth so tableName() works right.