Anomie added a comment.
Bah, I figured it out. I should have read https://www.sqlite.org/lang_UPSERT.html more closely. The diagram at the top shows part of the syntax is optional, but the text adds restrictions: > The syntax that occurs in between the "ON CONFLICT" and "DO" keywords is called the "conflict target". The conflict target specifies a specific uniqueness constraint that will trigger the upsert. **The conflict target is required for DO UPDATE upserts,** but is optional for DO NOTHING. When the conflict target is omitted, the upsert behavior is triggered by a violation of any uniqueness constraint on the table of the INSERT. So it's not anything to do with sqlite being 3.22 instead of 3.24, it's that rMW4bd1b4b45571: rdbms: optimize insert(), replace(), and upsert() for sqlite when possible <https://phabricator.wikimedia.org/rMW4bd1b4b455712c74d71ad2d5fb73060b5e6e8187> missed that required part of the syntax. I note that IDatabase::upsert() allows multiple "indexes" to be specified via `$uniqueIndexes`, but the SQLite syntax allows only one. So it would presumably have to fall back to the parent implementation if multiple indexes are supplied too. TASK DETAIL https://phabricator.wikimedia.org/T234795 EMAIL PREFERENCES https://phabricator.wikimedia.org/settings/panel/emailpreferences/ To: Anomie Cc: Anomie, Krinkle, aaron, Ladsgroup, Aklapper, WMDE-leszek, Iflorez, darthmon_wmde, alaa_wmde, DannyS712, Nandana, Imarlier, Lahi, Gq86, GoranSMilovanovic, QZanden, LawExplorer, Vali.matei, _jensen, rosalieper, Jonas, Wikidata-bugs, aude, waldyrious, Lydia_Pintscher, Mbch331
_______________________________________________ Wikidata-bugs mailing list Wikidata-bugs@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs