wiki.techinc.nl/maintenance/abstractSchemaChanges/patch-externallinks-el_to_default.json
Amir Sarabadani 080883da09 Schema: Set default or nullable to three columns of externallinks
We need to drop these columns and we need to make them take default
values so we can issue write queries without these columns.

Also noting that MySQL prior to 8.0 can't set default values to blob
columns making this way more complicated than it should be but MariaDB
can set them (https://mariadb.com/kb/en/blob/). We also made these
columns nullable to make this work in MySQL.

Bug: T341828
Change-Id: I0d60742b6ce7adf642393ee00b66aa539b76dfc1
2023-07-18 11:59:09 +02:00

115 lines
4.6 KiB
JSON

{
"comment": "Set default for old externallinks columns in preparation of dropping them (T312666).",
"before": {
"name": "externallinks",
"comment": "Track links to external URLs",
"columns": [
{
"name": "el_id",
"type": "integer",
"options": { "unsigned": true, "notnull": true, "autoincrement": true }
},
{
"name": "el_from",
"type": "integer",
"comment": "page_id of the referring page",
"options": { "unsigned": true, "notnull": true, "default": 0 }
},
{
"name": "el_to",
"type": "blob",
"comment": "The external link",
"options": { "length": 65530, "notnull": true }
},
{
"name": "el_index",
"type": "blob",
"comment": "In the case of HTTP URLs, this is the URL with any username or password removed, and with the labels in the hostname reversed and converted to lower case which will allow faster searching for all pages with WHERE clause. Note: If PHP's intl extension is enabled/disabled, maintenance/refreshExternallinksIndex.php needs to be run to refresh this field",
"options": { "length": 65530, "notnull": true }
},
{
"name": "el_index_60",
"type": "binary",
"comment": "'el_index' truncated to 60 bytes to allow for sortable queries that aren't supported by a partial index",
"options": { "notnull": true, "length": 60 }
},
{
"name": "el_to_domain_index",
"type": "binary",
"comment": "Indexable domain",
"options": { "notnull": true, "length": 255, "default": "" }
},
{
"name": "el_to_path",
"type": "blob",
"comment": "Path to the external link without considering the domain",
"options": { "length": 65530, "notnull": false }
}
],
"indexes": [
{ "name": "el_from", "columns": [ "el_from" ], "unique": false },
{ "name": "el_to", "columns": [ "el_to", "el_from" ], "unique": false, "options": { "lengths": [ 60, null ] } },
{ "name": "el_index", "columns": [ "el_index" ], "unique": false, "options": { "lengths": [ 60 ] } },
{ "name": "el_index_60", "columns": [ "el_index_60", "el_id" ], "unique": false },
{ "name": "el_from_index_60", "columns": [ "el_from", "el_index_60", "el_id" ], "unique": false },
{ "name": "el_to_domain_index_to_path", "columns": [ "el_to_domain_index", "el_to_path" ], "unique": false, "options": { "lengths": [ null, 60 ] } }
],
"pk": [ "el_id" ]
},
"after": {
"name": "externallinks",
"comment": "Track links to external URLs",
"columns": [
{
"name": "el_id",
"type": "integer",
"options": { "unsigned": true, "notnull": true, "autoincrement": true }
},
{
"name": "el_from",
"type": "integer",
"comment": "page_id of the referring page",
"options": { "unsigned": true, "notnull": true, "default": 0 }
},
{
"name": "el_to",
"type": "blob",
"comment": "The external link",
"options": { "length": 65530, "notnull": false, "default": "" }
},
{
"name": "el_index",
"type": "blob",
"comment": "In the case of HTTP URLs, this is the URL with any username or password removed, and with the labels in the hostname reversed and converted to lower case which will allow faster searching for all pages with WHERE clause. Note: If PHP's intl extension is enabled/disabled, maintenance/refreshExternallinksIndex.php needs to be run to refresh this field",
"options": { "length": 65530, "notnull": false, "default": "" }
},
{
"name": "el_index_60",
"type": "binary",
"comment": "'el_index' truncated to 60 bytes to allow for sortable queries that aren't supported by a partial index",
"options": { "notnull": true, "length": 60, "default": "" }
},
{
"name": "el_to_domain_index",
"type": "binary",
"comment": "Indexable domain",
"options": { "notnull": true, "length": 255, "default": "" }
},
{
"name": "el_to_path",
"type": "blob",
"comment": "Path to the external link without considering the domain",
"options": { "length": 65530, "notnull": false }
}
],
"indexes": [
{ "name": "el_from", "columns": [ "el_from" ], "unique": false },
{ "name": "el_to", "columns": [ "el_to", "el_from" ], "unique": false, "options": { "lengths": [ 60, null ] } },
{ "name": "el_index", "columns": [ "el_index" ], "unique": false, "options": { "lengths": [ 60 ] } },
{ "name": "el_index_60", "columns": [ "el_index_60", "el_id" ], "unique": false },
{ "name": "el_from_index_60", "columns": [ "el_from", "el_index_60", "el_id" ], "unique": false },
{ "name": "el_to_domain_index_to_path", "columns": [ "el_to_domain_index", "el_to_path" ], "unique": false, "options": { "lengths": [ null, 60 ] } }
],
"pk": [ "el_id" ]
}
}