Ticket #49364: 49364.diff
File 49364.diff, 12.9 KB (added by , 4 years ago) |
---|
-
src/wp-admin/includes/schema.php
52 52 */ 53 53 $max_index_length = 191; 54 54 55 $db_version = $wpdb->db_version(); 56 57 /* 58 * Display width for integer data types. 59 * 60 * Prior to MySQL 8.0.17, integer types had a default width: BIGINT(20), INT(11). 61 * Since MySQL 8.0.17, display width for integer data types is no longer supported. 62 */ 63 if ( version_compare( $db_version, '8.0.17', '<' ) ) { 64 $bigint_display_width = '(20)'; 65 $int_display_width = '(11)'; 66 67 // `term_group` field in the `$wpdb->terms` table. 68 $term_group_display_width = '(10)'; 69 } else { 70 $bigint_display_width = ''; 71 $int_display_width = ''; 72 73 // `term_group` field in the `$wpdb->terms` table. 74 $term_group_display_width = ''; 75 } 76 55 77 // Blog-specific tables. 56 78 $blog_tables = "CREATE TABLE $wpdb->termmeta ( 57 meta_id bigint (20)unsigned NOT NULL auto_increment,58 term_id bigint (20)unsigned NOT NULL default '0',79 meta_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 80 term_id bigint{$bigint_display_width} unsigned NOT NULL default '0', 59 81 meta_key varchar(255) default NULL, 60 82 meta_value longtext, 61 83 PRIMARY KEY (meta_id), … … 63 85 KEY meta_key (meta_key($max_index_length)) 64 86 ) $charset_collate; 65 87 CREATE TABLE $wpdb->terms ( 66 term_id bigint (20)unsigned NOT NULL auto_increment,88 term_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 67 89 name varchar(200) NOT NULL default '', 68 90 slug varchar(200) NOT NULL default '', 69 term_group bigint (10)NOT NULL default 0,91 term_group bigint{$term_group_display_width} NOT NULL default 0, 70 92 PRIMARY KEY (term_id), 71 93 KEY slug (slug($max_index_length)), 72 94 KEY name (name($max_index_length)) 73 95 ) $charset_collate; 74 96 CREATE TABLE $wpdb->term_taxonomy ( 75 term_taxonomy_id bigint (20)unsigned NOT NULL auto_increment,76 term_id bigint (20)unsigned NOT NULL default 0,97 term_taxonomy_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 98 term_id bigint{$bigint_display_width} unsigned NOT NULL default 0, 77 99 taxonomy varchar(32) NOT NULL default '', 78 100 description longtext NOT NULL, 79 parent bigint (20)unsigned NOT NULL default 0,80 count bigint (20)NOT NULL default 0,101 parent bigint{$bigint_display_width} unsigned NOT NULL default 0, 102 count bigint{$bigint_display_width} NOT NULL default 0, 81 103 PRIMARY KEY (term_taxonomy_id), 82 104 UNIQUE KEY term_id_taxonomy (term_id,taxonomy), 83 105 KEY taxonomy (taxonomy) 84 106 ) $charset_collate; 85 107 CREATE TABLE $wpdb->term_relationships ( 86 object_id bigint (20)unsigned NOT NULL default 0,87 term_taxonomy_id bigint (20)unsigned NOT NULL default 0,88 term_order int (11)NOT NULL default 0,108 object_id bigint{$bigint_display_width} unsigned NOT NULL default 0, 109 term_taxonomy_id bigint{$bigint_display_width} unsigned NOT NULL default 0, 110 term_order int{$int_display_width} NOT NULL default 0, 89 111 PRIMARY KEY (object_id,term_taxonomy_id), 90 112 KEY term_taxonomy_id (term_taxonomy_id) 91 113 ) $charset_collate; 92 114 CREATE TABLE $wpdb->commentmeta ( 93 meta_id bigint (20)unsigned NOT NULL auto_increment,94 comment_id bigint (20)unsigned NOT NULL default '0',115 meta_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 116 comment_id bigint{$bigint_display_width} unsigned NOT NULL default '0', 95 117 meta_key varchar(255) default NULL, 96 118 meta_value longtext, 97 119 PRIMARY KEY (meta_id), … … 99 121 KEY meta_key (meta_key($max_index_length)) 100 122 ) $charset_collate; 101 123 CREATE TABLE $wpdb->comments ( 102 comment_ID bigint (20)unsigned NOT NULL auto_increment,103 comment_post_ID bigint (20)unsigned NOT NULL default '0',124 comment_ID bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 125 comment_post_ID bigint{$bigint_display_width} unsigned NOT NULL default '0', 104 126 comment_author tinytext NOT NULL, 105 127 comment_author_email varchar(100) NOT NULL default '', 106 128 comment_author_url varchar(200) NOT NULL default '', … … 108 130 comment_date datetime NOT NULL default '0000-00-00 00:00:00', 109 131 comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', 110 132 comment_content text NOT NULL, 111 comment_karma int (11)NOT NULL default '0',133 comment_karma int{$int_display_width} NOT NULL default '0', 112 134 comment_approved varchar(20) NOT NULL default '1', 113 135 comment_agent varchar(255) NOT NULL default '', 114 136 comment_type varchar(20) NOT NULL default 'comment', 115 comment_parent bigint (20)unsigned NOT NULL default '0',116 user_id bigint (20)unsigned NOT NULL default '0',137 comment_parent bigint{$bigint_display_width} unsigned NOT NULL default '0', 138 user_id bigint{$bigint_display_width} unsigned NOT NULL default '0', 117 139 PRIMARY KEY (comment_ID), 118 140 KEY comment_post_ID (comment_post_ID), 119 141 KEY comment_approved_date_gmt (comment_approved,comment_date_gmt), … … 122 144 KEY comment_author_email (comment_author_email(10)) 123 145 ) $charset_collate; 124 146 CREATE TABLE $wpdb->links ( 125 link_id bigint (20)unsigned NOT NULL auto_increment,147 link_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 126 148 link_url varchar(255) NOT NULL default '', 127 149 link_name varchar(255) NOT NULL default '', 128 150 link_image varchar(255) NOT NULL default '', … … 129 151 link_target varchar(25) NOT NULL default '', 130 152 link_description varchar(255) NOT NULL default '', 131 153 link_visible varchar(20) NOT NULL default 'Y', 132 link_owner bigint (20)unsigned NOT NULL default '1',133 link_rating int (11)NOT NULL default '0',154 link_owner bigint{$bigint_display_width} unsigned NOT NULL default '1', 155 link_rating int{$int_display_width} NOT NULL default '0', 134 156 link_updated datetime NOT NULL default '0000-00-00 00:00:00', 135 157 link_rel varchar(255) NOT NULL default '', 136 158 link_notes mediumtext NOT NULL, … … 139 161 KEY link_visible (link_visible) 140 162 ) $charset_collate; 141 163 CREATE TABLE $wpdb->options ( 142 option_id bigint (20)unsigned NOT NULL auto_increment,164 option_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 143 165 option_name varchar(191) NOT NULL default '', 144 166 option_value longtext NOT NULL, 145 167 autoload varchar(20) NOT NULL default 'yes', … … 148 170 KEY autoload (autoload) 149 171 ) $charset_collate; 150 172 CREATE TABLE $wpdb->postmeta ( 151 meta_id bigint (20)unsigned NOT NULL auto_increment,152 post_id bigint (20)unsigned NOT NULL default '0',173 meta_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 174 post_id bigint{$bigint_display_width} unsigned NOT NULL default '0', 153 175 meta_key varchar(255) default NULL, 154 176 meta_value longtext, 155 177 PRIMARY KEY (meta_id), … … 157 179 KEY meta_key (meta_key($max_index_length)) 158 180 ) $charset_collate; 159 181 CREATE TABLE $wpdb->posts ( 160 ID bigint (20)unsigned NOT NULL auto_increment,161 post_author bigint (20)unsigned NOT NULL default '0',182 ID bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 183 post_author bigint{$bigint_display_width} unsigned NOT NULL default '0', 162 184 post_date datetime NOT NULL default '0000-00-00 00:00:00', 163 185 post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', 164 186 post_content longtext NOT NULL, … … 174 196 post_modified datetime NOT NULL default '0000-00-00 00:00:00', 175 197 post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00', 176 198 post_content_filtered longtext NOT NULL, 177 post_parent bigint (20)unsigned NOT NULL default '0',199 post_parent bigint{$bigint_display_width} unsigned NOT NULL default '0', 178 200 guid varchar(255) NOT NULL default '', 179 menu_order int (11)NOT NULL default '0',201 menu_order int{$int_display_width} NOT NULL default '0', 180 202 post_type varchar(20) NOT NULL default 'post', 181 203 post_mime_type varchar(100) NOT NULL default '', 182 comment_count bigint (20)NOT NULL default '0',204 comment_count bigint{$bigint_display_width} NOT NULL default '0', 183 205 PRIMARY KEY (ID), 184 206 KEY post_name (post_name($max_index_length)), 185 207 KEY type_status_date (post_type,post_status,post_date,ID), … … 189 211 190 212 // Single site users table. The multisite flavor of the users table is handled below. 191 213 $users_single_table = "CREATE TABLE $wpdb->users ( 192 ID bigint (20)unsigned NOT NULL auto_increment,214 ID bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 193 215 user_login varchar(60) NOT NULL default '', 194 216 user_pass varchar(255) NOT NULL default '', 195 217 user_nicename varchar(50) NOT NULL default '', … … 197 219 user_url varchar(100) NOT NULL default '', 198 220 user_registered datetime NOT NULL default '0000-00-00 00:00:00', 199 221 user_activation_key varchar(255) NOT NULL default '', 200 user_status int (11)NOT NULL default '0',222 user_status int{$int_display_width} NOT NULL default '0', 201 223 display_name varchar(250) NOT NULL default '', 202 224 PRIMARY KEY (ID), 203 225 KEY user_login_key (user_login), … … 207 229 208 230 // Multisite users table. 209 231 $users_multi_table = "CREATE TABLE $wpdb->users ( 210 ID bigint (20)unsigned NOT NULL auto_increment,232 ID bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 211 233 user_login varchar(60) NOT NULL default '', 212 234 user_pass varchar(255) NOT NULL default '', 213 235 user_nicename varchar(50) NOT NULL default '', … … 215 237 user_url varchar(100) NOT NULL default '', 216 238 user_registered datetime NOT NULL default '0000-00-00 00:00:00', 217 239 user_activation_key varchar(255) NOT NULL default '', 218 user_status int (11)NOT NULL default '0',240 user_status int{$int_display_width} NOT NULL default '0', 219 241 display_name varchar(250) NOT NULL default '', 220 242 spam tinyint(2) NOT NULL default '0', 221 243 deleted tinyint(2) NOT NULL default '0', … … 227 249 228 250 // Usermeta. 229 251 $usermeta_table = "CREATE TABLE $wpdb->usermeta ( 230 umeta_id bigint (20)unsigned NOT NULL auto_increment,231 user_id bigint (20)unsigned NOT NULL default '0',252 umeta_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 253 user_id bigint{$bigint_display_width} unsigned NOT NULL default '0', 232 254 meta_key varchar(255) default NULL, 233 255 meta_value longtext, 234 256 PRIMARY KEY (umeta_id), … … 245 267 246 268 // Multisite global tables. 247 269 $ms_global_tables = "CREATE TABLE $wpdb->blogs ( 248 blog_id bigint (20)NOT NULL auto_increment,249 site_id bigint (20)NOT NULL default '0',270 blog_id bigint{$bigint_display_width} NOT NULL auto_increment, 271 site_id bigint{$bigint_display_width} NOT NULL default '0', 250 272 domain varchar(200) NOT NULL default '', 251 273 path varchar(100) NOT NULL default '', 252 274 registered datetime NOT NULL default '0000-00-00 00:00:00', … … 256 278 mature tinyint(2) NOT NULL default '0', 257 279 spam tinyint(2) NOT NULL default '0', 258 280 deleted tinyint(2) NOT NULL default '0', 259 lang_id int (11)NOT NULL default '0',281 lang_id int{$int_display_width} NOT NULL default '0', 260 282 PRIMARY KEY (blog_id), 261 283 KEY domain (domain(50),path(5)), 262 284 KEY lang_id (lang_id) 263 285 ) $charset_collate; 264 286 CREATE TABLE $wpdb->blogmeta ( 265 meta_id bigint (20)unsigned NOT NULL auto_increment,266 blog_id bigint (20)NOT NULL default '0',287 meta_id bigint{$bigint_display_width} unsigned NOT NULL auto_increment, 288 blog_id bigint{$bigint_display_width} NOT NULL default '0', 267 289 meta_key varchar(255) default NULL, 268 290 meta_value longtext, 269 291 PRIMARY KEY (meta_id), … … 271 293 KEY blog_id (blog_id) 272 294 ) $charset_collate; 273 295 CREATE TABLE $wpdb->registration_log ( 274 ID bigint (20)NOT NULL auto_increment,296 ID bigint{$bigint_display_width} NOT NULL auto_increment, 275 297 email varchar(255) NOT NULL default '', 276 298 IP varchar(30) NOT NULL default '', 277 blog_id bigint (20)NOT NULL default '0',299 blog_id bigint{$bigint_display_width} NOT NULL default '0', 278 300 date_registered datetime NOT NULL default '0000-00-00 00:00:00', 279 301 PRIMARY KEY (ID), 280 302 KEY IP (IP) 281 303 ) $charset_collate; 282 304 CREATE TABLE $wpdb->site ( 283 id bigint (20)NOT NULL auto_increment,305 id bigint{$bigint_display_width} NOT NULL auto_increment, 284 306 domain varchar(200) NOT NULL default '', 285 307 path varchar(100) NOT NULL default '', 286 308 PRIMARY KEY (id), … … 287 309 KEY domain (domain(140),path(51)) 288 310 ) $charset_collate; 289 311 CREATE TABLE $wpdb->sitemeta ( 290 meta_id bigint (20)NOT NULL auto_increment,291 site_id bigint (20)NOT NULL default '0',312 meta_id bigint{$bigint_display_width} NOT NULL auto_increment, 313 site_id bigint{$bigint_display_width} NOT NULL default '0', 292 314 meta_key varchar(255) default NULL, 293 315 meta_value longtext, 294 316 PRIMARY KEY (meta_id), … … 296 318 KEY site_id (site_id) 297 319 ) $charset_collate; 298 320 CREATE TABLE $wpdb->signups ( 299 signup_id bigint (20)NOT NULL auto_increment,321 signup_id bigint{$bigint_display_width} NOT NULL auto_increment, 300 322 domain varchar(200) NOT NULL default '', 301 323 path varchar(100) NOT NULL default '', 302 324 title longtext NOT NULL, -
tests/phpunit/tests/dbdelta.php
705 705 /** 706 706 * @ticket 20263 707 707 */ 708 function test_wp_get_db_schema_does_no _alter_queries_on_existing_install() {708 function test_wp_get_db_schema_does_not_alter_queries_on_existing_install() { 709 709 $updates = dbDelta( wp_get_db_schema() ); 710 710 711 711 $this->assertEmpty( $updates );