{"data":{"id":"magento2-40582","source":"github-pr","sourceRef":"magento/magento2#40582","title":"Fix: Real column type introspection skips unsigned/nullable processors, uses defaults","pr":{"number":40582,"url":"https://github.com/magento/magento2/pull/40582","author":"furan917","mergedAt":"2026-05-26T07:34:02Z","mergeCommit":"640e24b95f124243b6a06f68b71cdd02799f4292","headCommit":"3fb8bdfc26e251b507cccdfb816f8a69ce2f8987","baseRef":"2.4-develop","diffSha256":"a5dafa794083c42ed33c8695b4c2f047e26841f499d855569a1ce54a5a70591b"},"issues":[{"number":40646,"url":"https://github.com/magento/magento2/issues/40646","title":"[Issue] Fix: Real column type introspection skips unsigned/nullable processors, uses defaults","labels":["Area: Framework","Component: Framework/DB","Issue: Confirmed","Priority: P2","Progress: PR Created","Progress: done","Reported on 2.4.x","Reproduced on 2.4.x"],"kind":"pr-derived"}],"fixedIn":null,"containingTags":[],"reportedOn":null,"codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"clean","2.4.8-p1":"clean","2.4.8-p2":"clean","2.4.8-p3":"clean","2.4.8-p4":"clean","2.4.8-p5":"clean","2.4.9":"clean"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10","2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5","2.4.9"],"components":["magento/framework"],"files":[{"path":"lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/Definition/Columns/Real.php","change":"modified","package":"magento/framework"}],"stripped":{"tests":["lib/internal/Magento/Framework/Setup/Test/Unit/Declaration/Schema/Db/MySQL/Definition/Columns/RealTest.php"],"docs":[],"outsideCode":[]},"linesChanged":7,"mergeBatched":false,"excluded":null,"sections":{"description":"`setup:db-schema:upgrade` and `setup:db:status` perpetually report pending modify_column changes for DOUBLE UNSIGNED columns that have no explicit precision/scale even when the database schema is already correct.","stepsToReproduce":"1. `composer require yotpo/module-yotpo-core` or create an XML DB Schema with a `double` column which needs to be missing precision, or scale definitions.\n2. Run `setup:db:status`\n3. Run `setup:db-schema:upgrade`\n4. Run `setup:db:status` # <- This should be clean, but it isn't due to the doubles in the yotpo module","expectedResult":null,"actualResult":null,"source":"pr"},"signatures":[],"labels":{"area":["Framework"],"component":["Framework/DB"],"priority":"P2","severity":null,"reportedOn":["2.4.x"]},"categories":[],"triage":{"model":"@cf/cloudflare/clef","requestHash":"59ff04fdd1458ee81b8a3b8806da1ef15e566deb816eedf718b2b6e45f6bba24","isBugfix":0.9772,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.96,"feature":0.0059,"refactor":0.0183,"tests_only":0.008,"docs_only":0.0038,"dependency":0.004},"confidence":0.9065},"scope":{"score":0.519,"probabilities":{"0":0.5733,"1":0.3344,"2":0.0923},"confidence":0.1735},"risk":{"score":0.351,"probabilities":{"0":0.7473,"1":0.1544,"2":0.0983},"confidence":0.388},"area":{"choice":"framework","probabilities":{"catalog":0.0095,"checkout":0.0058,"customer":0.0043,"admin":0.0195,"graphql_api":0.0045,"framework":0.9384,"frontend":0.0063,"other":0.0117},"confidence":0.8643},"securityRelevant":0.0064,"reportedVersion":{"choice":"unspecified","probabilities":{"2.4.0":0.0039,"2.4.0-p1":0.0036,"2.4.1":0.003,"2.4.1-p1":0.0029,"2.4.2":0.0047,"2.4.2-p1":0.0042,"2.4.2-p2":0.0056,"2.4.3":0.0096,"2.4.3-p1":0.0074,"2.4.3-p2":0.0084,"2.4.3-p3":0.0061,"2.4.4":0.0119,"2.4.4-p1":0.0063,"2.4.4-p10":0.0061,"2.4.4-p11":0.0061,"2.4.4-p12":0.0051,"2.4.4-p13":0.0052,"2.4.4-p14":0.0066,"2.4.4-p15":0.0052,"2.4.4-p16":0.0064,"2.4.4-p17":0.0055,"2.4.4-p18":0.0045,"2.4.4-p2":0.0026,"2.4.4-p3":0.003,"2.4.4-p4":0.0032,"2.4.4-p5":0.0036,"2.4.4-p6":0.0039,"2.4.4-p7":0.0043,"2.4.4-p8":0.0043,"2.4.4-p9":0.0038,"2.4.5":0.0112,"2.4.5-p1":0.0087,"2.4.5-p10":0.0064,"2.4.5-p11":0.0119,"2.4.5-p12":0.0087,"2.4.5-p13":0.0077,"2.4.5-p14":0.0084,"2.4.5-p15":0.0065,"2.4.5-p16":0.0071,"2.4.5-p17":0.0063,"2.4.5-p2":0.0032,"2.4.5-p3":0.0047,"2.4.5-p4":0.0046,"2.4.5-p5":0.004,"2.4.5-p6":0.0051,"2.4.5-p7":0.0057,"2.4.5-p8":0.0051,"2.4.5-p9":0.0045,"2.4.6":0.0293,"2.4.6-p1":0.0159,"2.4.6-p10":0.009,"2.4.6-p11":0.013,"2.4.6-p12":0.0104,"2.4.6-p13":0.0106,"2.4.6-p14":0.0104,"2.4.6-p15":0.0087,"2.4.6-p2":0.0047,"2.4.6-p3":0.0077,"2.4.6-p4":0.0088,"2.4.6-p5":0.0071,"2.4.6-p6":0.0079,"2.4.6-p7":0.0084,"2.4.6-p8":0.007,"2.4.6-p9":0.0072,"2.4.7":0.0249,"2.4.7-p1":0.0158,"2.4.7-p10":0.0112,"2.4.7-p2":0.0074,"2.4.7-p3":0.0165,"2.4.7-p4":0.0178,"2.4.7-p5":0.0137,"2.4.7-p6":0.0171,"2.4.7-p7":0.0143,"2.4.7-p8":0.0103,"2.4.7-p9":0.0071,"2.4.8":0.0256,"2.4.8-p1":0.0222,"2.4.8-p2":0.0244,"2.4.8-p3":0.0212,"2.4.8-p4":0.0201,"2.4.8-p5":0.015,"2.4.9":0.024,"unspecified":0.2485},"confidence":0.0604},"backportWorthy":{"score":1.6228,"probabilities":{"0":0.0725,"1":0.2322,"2":0.6953},"confidence":0.3139}},"curated":{"title":"Fixes setup:db:status reporting changes for unsigned doubles without precision","description":"setup:db-schema:upgrade and setup:db:status keep reporting pending modify_column changes for double unsigned columns that have no explicit precision and scale, even when the database schema is already correct. In Real::fromDefinition(), the change moved the nullable and unsigned processor calls out of the precision and scale match, so they run for any float, decimal or double definition.","categories":[],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":{"2.4.8-p5":{"before":"not-runnable","after":"pass","adapted":true,"runAt":"2026-10-06T09:20:24.344Z","releaseCommit":"870a22c63d9d9b68fa3297962e2d5d5841115814","suites":{"unit":{"before":"not-runnable","after":"pass","runAt":"2026-10-06T09:20:24.344Z"}}},"2.4.9":{"before":"not-runnable","after":"pass","adapted":false,"runAt":"2026-10-06T09:20:21.149Z","releaseCommit":"755e34dd689021c5165db9d35ecff74f7dc51527","suites":{"unit":{"before":"not-runnable","after":"pass","runAt":"2026-10-06T09:20:21.149Z"}}},"2.4.7-p10":{"before":"not-runnable","after":"pass","adapted":true,"runAt":"2026-10-06T09:29:33.354Z","releaseCommit":"72561bf80652f57cc642a03e2c9a51d74a285b14","suites":{"unit":{"before":"not-runnable","after":"pass","runAt":"2026-10-06T09:29:33.354Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-40582 details"}