wikimedia/mediawiki-core

View on GitHub
maintenance/abstractSchemaChanges/patch-page_restrictions-pr_page.json

Summary

Maintainability
Test Coverage
{
    "comment": "Set unsigned true for pr_page in page_restrictions table",
    "before": {
        "name": "page_restrictions",
        "comment": "Used for storing page restrictions (i.e. protection levels)",
        "columns": [
            {
                "name": "pr_id",
                "comment": "Field for an ID for this restrictions row (sort-key for Special:ProtectedPages)",
                "type": "integer",
                "options": { "unsigned": true, "notnull": true, "autoincrement": true }
            },
            {
                "name": "pr_page",
                "comment": "Page to apply restrictions to (Foreign Key to page).",
                "type": "integer",
                "options": { "notnull": true }
            },
            {
                "name": "pr_type",
                "comment": "The protection type (edit, move, etc)",
                "type": "binary",
                "options": { "length": 60, "notnull": true }
            },
            {
                "name": "pr_level",
                "comment": "The protection level (Sysop, autoconfirmed, etc)",
                "type": "binary",
                "options": { "length": 60, "notnull": true }
            },
            {
                "name": "pr_cascade",
                "type": "mwtinyint",
                "options": { "notnull": true }
            },
            {
                "name": "pr_expiry",
                "comment": "Field for time-limited protection.",
                "type": "mwtimestamp",
                "options": {
                    "notnull": false,
                    "CustomSchemaOptions": {
                        "allowInfinite": true
                    }
                }
            }
        ],
        "indexes": [
            { "name": "pr_pagetype", "columns": [ "pr_page", "pr_type" ], "unique": true },
            { "name": "pr_typelevel", "columns": [ "pr_type", "pr_level" ], "unique": false },
            { "name": "pr_level", "columns": [ "pr_level" ], "unique": false },
            { "name": "pr_cascade", "columns": [ "pr_cascade" ], "unique": false }
        ],
        "pk": [ "pr_id" ]
    },
    "after": {
        "name": "page_restrictions",
        "comment": "Used for storing page restrictions (i.e. protection levels)",
        "columns": [
            {
                "name": "pr_id",
                "comment": "Field for an ID for this restrictions row (sort-key for Special:ProtectedPages)",
                "type": "integer",
                "options": { "unsigned": true, "notnull": true, "autoincrement": true }
            },
            {
                "name": "pr_page",
                "comment": "Page to apply restrictions to (Foreign Key to page).",
                "type": "integer",
                "options": { "notnull": true, "unsigned": true }
            },
            {
                "name": "pr_type",
                "comment": "The protection type (edit, move, etc)",
                "type": "binary",
                "options": { "length": 60, "notnull": true }
            },
            {
                "name": "pr_level",
                "comment": "The protection level (Sysop, autoconfirmed, etc)",
                "type": "binary",
                "options": { "length": 60, "notnull": true }
            },
            {
                "name": "pr_cascade",
                "type": "mwtinyint",
                "options": { "notnull": true }
            },
            {
                "name": "pr_expiry",
                "comment": "Field for time-limited protection.",
                "type": "mwtimestamp",
                "options": {
                    "notnull": false,
                    "CustomSchemaOptions": {
                        "allowInfinite": true
                    }
                }
            }
        ],
        "indexes": [
            { "name": "pr_pagetype", "columns": [ "pr_page", "pr_type" ], "unique": true },
            { "name": "pr_typelevel", "columns": [ "pr_type", "pr_level" ], "unique": false },
            { "name": "pr_level", "columns": [ "pr_level" ], "unique": false },
            { "name": "pr_cascade", "columns": [ "pr_cascade" ], "unique": false }
        ],
        "pk": [ "pr_id" ]
    }
}