resourceloader: Use AND instead of OR for upsert conds in saveFileDependencies()
authorReedy <reedy@wikimedia.org>
Thu, 23 May 2019 23:16:42 +0000 (00:16 +0100)
committerKrinkle <krinklemail@gmail.com>
Fri, 24 May 2019 13:24:01 +0000 (13:24 +0000)
Follows-up e7b57d881a, which changed it from replace() to upsert()
but lost one of the wrapping arrays in doing so.

Previously updated many more rows than expected on Postgresql, when it
should only be updating individual rows, not all rows that match either
criteria.

SQL query before:
 WHERE ((md_module = 'jquery.makeCollapsible.styles') OR (md_skin = 'vector|en-gb'))

SQL query after:
 WHERE ((md_module = 'jquery.makeCollapsible.styles' AND md_skin = 'vector|en-gb'))

Not a problem on MySQL as upsert() is implemented differently there.

Bug: T222385
Change-Id: If8a458bf4543b297b3a06f31e09c0e77666bf7e6

includes/resourceloader/ResourceLoaderModule.php

index ca311d9..66a4edf 100644 (file)
@@ -504,7 +504,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
                                        'md_skin' => $vary,
                                        'md_deps' => $deps,
                                ],
-                               [ 'md_module', 'md_skin' ],
+                               [ [ 'md_module', 'md_skin' ] ],
                                [
                                        'md_deps' => $deps,
                                ],