Skip to content

Commit 0a350c0

Browse files
authored
fix: unify returning queries (#17157)
1 parent 3819cf5 commit 0a350c0

File tree

20 files changed

+232
-303
lines changed

20 files changed

+232
-303
lines changed

packages/core/src/model.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2531,7 +2531,7 @@ ${associationOwner._getAssociationDebugList()}`);
25312531
!instance ||
25322532
(key === model.primaryKeyAttribute &&
25332533
instance.get(model.primaryKeyAttribute) &&
2534-
['mysql', 'mariadb', 'sqlite3'].includes(dialect))
2534+
['mysql', 'mariadb'].includes(dialect))
25352535
) {
25362536
// The query.js for these DBs is blind, it autoincrements the
25372537
// primarykey value, even if it was set manually. Also, it can

packages/core/test/integration/model/update.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,8 @@ describe('Model.update', () => {
451451

452452
expectsql(sqlQuery, {
453453
default: `UPDATE [users1] SET [secretValue]=$sequelize_1,[updatedAt]=$sequelize_2 WHERE [id] = $sequelize_3`,
454+
sqlite3:
455+
'UPDATE `users1` SET `secretValue`=$sequelize_1,`updatedAt`=$sequelize_2 WHERE `id` = $sequelize_3 RETURNING *',
454456
postgres: `UPDATE "users1" SET "secretValue"=$1,"updatedAt"=$2 WHERE "id" = $3 RETURNING *`,
455457
mysql: 'UPDATE `users1` SET `secretValue`=?,`updatedAt`=? WHERE `id` = ?',
456458
mariadb: 'UPDATE `users1` SET `secretValue`=?,`updatedAt`=? WHERE `id` = ?',

packages/core/test/integration/model/upsert.test.js

Lines changed: 29 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,16 @@ describe('Model', () => {
6363
describe('upsert', () => {
6464
it('works with upsert on id', async function () {
6565
const [, created0] = await this.User.upsert({ id: 42, username: 'john' });
66-
if (['sqlite3', 'postgres'].includes(dialectName)) {
66+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
6767
expect(created0).to.be.null;
68-
} else if (dialectName === 'db2') {
69-
expect(created0).to.be.undefined;
7068
} else {
7169
expect(created0).to.be.true;
7270
}
7371

7472
this.clock.tick(1000);
7573
const [, created] = await this.User.upsert({ id: 42, username: 'doe' });
76-
if (['sqlite3', 'postgres'].includes(dialectName)) {
74+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
7775
expect(created).to.be.null;
78-
} else if (dialectName === 'db2') {
79-
expect(created0).to.be.undefined;
8076
} else {
8177
expect(created).to.be.false;
8278
}
@@ -89,20 +85,16 @@ describe('Model', () => {
8985

9086
it('works with upsert on a composite key', async function () {
9187
const [, created0] = await this.User.upsert({ foo: 'baz', bar: 19, username: 'john' });
92-
if (['sqlite3', 'postgres'].includes(dialectName)) {
88+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
9389
expect(created0).to.be.null;
94-
} else if (dialectName === 'db2') {
95-
expect(created0).to.be.undefined;
9690
} else {
9791
expect(created0).to.be.true;
9892
}
9993

10094
this.clock.tick(1000);
10195
const [, created] = await this.User.upsert({ foo: 'baz', bar: 19, username: 'doe' });
102-
if (['sqlite3', 'postgres'].includes(dialectName)) {
96+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
10397
expect(created).to.be.null;
104-
} else if (dialectName === 'db2') {
105-
expect(created).to.be.undefined;
10698
} else {
10799
expect(created).to.be.false;
108100
}
@@ -152,12 +144,9 @@ describe('Model', () => {
152144
User.upsert({ a: 'a', b: 'a', username: 'curt' }),
153145
]);
154146

155-
if (['sqlite3', 'postgres'].includes(dialectName)) {
147+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
156148
expect(created1[1]).to.be.null;
157149
expect(created2[1]).to.be.null;
158-
} else if (dialectName === 'db2') {
159-
expect(created1[1]).to.be.undefined;
160-
expect(created2[1]).to.be.undefined;
161150
} else {
162151
expect(created1[1]).to.be.true;
163152
expect(created2[1]).to.be.true;
@@ -166,10 +155,8 @@ describe('Model', () => {
166155
this.clock.tick(1000);
167156
// Update the first one
168157
const [, created] = await User.upsert({ a: 'a', b: 'b', username: 'doe' });
169-
if (['sqlite3', 'postgres'].includes(dialectName)) {
158+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
170159
expect(created).to.be.null;
171-
} else if (dialectName === 'db2') {
172-
expect(created).to.be.undefined;
173160
} else {
174161
expect(created).to.be.false;
175162
}
@@ -215,10 +202,8 @@ describe('Model', () => {
215202

216203
await User.sync({ force: true });
217204
const [, created] = await User.upsert({ id: 1, email: 'notanemail' }, options);
218-
if (['sqlite3', 'postgres'].includes(dialectName)) {
205+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
219206
expect(created).to.be.null;
220-
} else if (dialectName === 'db2') {
221-
expect(created).to.be.undefined;
222207
} else {
223208
expect(created).to.be.true;
224209
}
@@ -230,10 +215,8 @@ describe('Model', () => {
230215
username: 'john',
231216
blob: Buffer.from('kaj'),
232217
});
233-
if (['sqlite3', 'postgres'].includes(dialectName)) {
218+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
234219
expect(created0).to.be.null;
235-
} else if (dialectName === 'db2') {
236-
expect(created0).to.be.undefined;
237220
} else {
238221
expect(created0).to.be.ok;
239222
}
@@ -244,10 +227,8 @@ describe('Model', () => {
244227
username: 'doe',
245228
blob: Buffer.from('andrea'),
246229
});
247-
if (['sqlite3', 'postgres'].includes(dialectName)) {
230+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
248231
expect(created).to.be.null;
249-
} else if (dialectName === 'db2') {
250-
expect(created).to.be.undefined;
251232
} else {
252233
expect(created).to.be.false;
253234
}
@@ -261,19 +242,15 @@ describe('Model', () => {
261242

262243
it('works with .field', async function () {
263244
const [, created0] = await this.User.upsert({ id: 42, baz: 'foo' });
264-
if (['sqlite3', 'postgres'].includes(dialectName)) {
245+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
265246
expect(created0).to.be.null;
266-
} else if (dialectName === 'db2') {
267-
expect(created0).to.be.undefined;
268247
} else {
269248
expect(created0).to.be.ok;
270249
}
271250

272251
const [, created] = await this.User.upsert({ id: 42, baz: 'oof' });
273-
if (['sqlite3', 'postgres'].includes(dialectName)) {
252+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
274253
expect(created).to.be.null;
275-
} else if (dialectName === 'db2') {
276-
expect(created).to.be.undefined;
277254
} else {
278255
expect(created).to.be.false;
279256
}
@@ -284,20 +261,16 @@ describe('Model', () => {
284261

285262
it('works with primary key using .field', async function () {
286263
const [, created0] = await this.ModelWithFieldPK.upsert({ userId: 42, foo: 'first' });
287-
if (['sqlite3', 'postgres'].includes(dialectName)) {
264+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
288265
expect(created0).to.be.null;
289-
} else if (dialectName === 'db2') {
290-
expect(created0).to.be.undefined;
291266
} else {
292267
expect(created0).to.be.ok;
293268
}
294269

295270
this.clock.tick(1000);
296271
const [, created] = await this.ModelWithFieldPK.upsert({ userId: 42, foo: 'second' });
297-
if (['sqlite3', 'postgres'].includes(dialectName)) {
272+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
298273
expect(created).to.be.null;
299-
} else if (dialectName === 'db2') {
300-
expect(created).to.be.undefined;
301274
} else {
302275
expect(created).to.be.false;
303276
}
@@ -312,10 +285,8 @@ describe('Model', () => {
312285
username: 'john',
313286
foo: this.sequelize.fn('upper', 'mixedCase1'),
314287
});
315-
if (['sqlite3', 'postgres'].includes(dialectName)) {
288+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
316289
expect(created0).to.be.null;
317-
} else if (dialectName === 'db2') {
318-
expect(created0).to.be.undefined;
319290
} else {
320291
expect(created0).to.be.ok;
321292
}
@@ -326,10 +297,8 @@ describe('Model', () => {
326297
username: 'doe',
327298
foo: this.sequelize.fn('upper', 'mixedCase2'),
328299
});
329-
if (['sqlite3', 'postgres'].includes(dialectName)) {
300+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
330301
expect(created).to.be.null;
331-
} else if (dialectName === 'db2') {
332-
expect(created).to.be.undefined;
333302
} else {
334303
expect(created).to.be.false;
335304
}
@@ -411,10 +380,8 @@ describe('Model', () => {
411380
await this.User.create({ id: 42, username: 'john' });
412381
const user = await this.User.findByPk(42);
413382
const [, created] = await this.User.upsert({ id: user.id, username: user.username });
414-
if (['sqlite3', 'postgres'].includes(dialectName)) {
383+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
415384
expect(created).to.be.null;
416-
} else if (dialectName === 'db2') {
417-
expect(created).to.be.undefined;
418385
} else {
419386
// After set node-mysql flags = '-FOUND_ROWS' / foundRows=false
420387
// result from upsert should be false when upsert a row to its current value
@@ -443,10 +410,8 @@ describe('Model', () => {
443410
444411
city: 'City',
445412
});
446-
if (['sqlite3', 'postgres'].includes(dialectName)) {
413+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
447414
expect(created0).to.be.null;
448-
} else if (dialectName === 'db2') {
449-
expect(created0).to.be.undefined;
450415
} else {
451416
expect(created0).to.be.ok;
452417
}
@@ -456,10 +421,8 @@ describe('Model', () => {
456421
457422
city: 'New City',
458423
});
459-
if (['sqlite3', 'postgres'].includes(dialectName)) {
424+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
460425
expect(created).to.be.null;
461-
} else if (dialectName === 'db2') {
462-
expect(created).to.be.undefined;
463426
} else {
464427
expect(created).to.be.false;
465428
}
@@ -499,10 +462,8 @@ describe('Model', () => {
499462
500463
city: 'City',
501464
});
502-
if (['sqlite3', 'postgres'].includes(dialectName)) {
465+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
503466
expect(created0).to.be.null;
504-
} else if (dialectName === 'db2') {
505-
expect(created0).to.be.undefined;
506467
} else {
507468
expect(created0).to.be.ok;
508469
}
@@ -512,10 +473,8 @@ describe('Model', () => {
512473
513474
city: 'New City',
514475
});
515-
if (['sqlite3', 'postgres'].includes(dialectName)) {
476+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
516477
expect(created).to.be.null;
517-
} else if (dialectName === 'db2') {
518-
expect(created).to.be.undefined;
519478
} else {
520479
expect(created).to.be.false;
521480
}
@@ -547,10 +506,8 @@ describe('Model', () => {
547506

548507
await User.sync({ force: true });
549508
const [, created0] = await User.upsert({ name: 'user1', address: 'address', city: 'City' });
550-
if (['sqlite3', 'postgres'].includes(dialectName)) {
509+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
551510
expect(created0).to.be.null;
552-
} else if (dialectName === 'db2') {
553-
expect(created0).to.be.undefined;
554511
} else {
555512
expect(created0).to.be.ok;
556513
}
@@ -560,10 +517,8 @@ describe('Model', () => {
560517
address: 'address',
561518
city: 'New City',
562519
});
563-
if (['sqlite3', 'postgres'].includes(dialectName)) {
520+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
564521
expect(created).to.be.null;
565-
} else if (dialectName === 'db2') {
566-
expect(created).to.be.undefined;
567522
} else {
568523
expect(created).not.to.be.ok;
569524
}
@@ -663,7 +618,7 @@ describe('Model', () => {
663618
);
664619
expect(user0.get('id')).to.equal(42);
665620
expect(user0.get('username')).to.equal('john');
666-
if (['sqlite3', 'postgres'].includes(dialectName)) {
621+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
667622
expect(created0).to.be.null;
668623
} else {
669624
expect(created0).to.be.true;
@@ -675,7 +630,7 @@ describe('Model', () => {
675630
);
676631
expect(user.get('id')).to.equal(42);
677632
expect(user.get('username')).to.equal('doe');
678-
if (['sqlite3', 'postgres'].includes(dialectName)) {
633+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
679634
expect(created).to.be.null;
680635
} else {
681636
expect(created).to.be.false;
@@ -702,7 +657,7 @@ describe('Model', () => {
702657
);
703658
expect(user0.get('id')).to.equal(42);
704659
expect(user0.get('username')).to.equal('john');
705-
if (['sqlite3', 'postgres'].includes(dialectName)) {
660+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
706661
expect(created0).to.be.null;
707662
} else {
708663
expect(created0).to.be.true;
@@ -714,7 +669,7 @@ describe('Model', () => {
714669
);
715670
expect(user.get('id')).to.equal(42);
716671
expect(user.get('username')).to.equal('doe');
717-
if (['sqlite3', 'postgres'].includes(dialectName)) {
672+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
718673
expect(created).to.be.null;
719674
} else {
720675
expect(created).to.be.false;
@@ -740,7 +695,7 @@ describe('Model', () => {
740695
);
741696
expect(user0.get('id')).to.equal('surya');
742697
expect(user0.get('username')).to.equal('john');
743-
if (['sqlite3', 'postgres'].includes(dialectName)) {
698+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
744699
expect(created0).to.be.null;
745700
} else {
746701
expect(created0).to.be.true;
@@ -752,7 +707,7 @@ describe('Model', () => {
752707
);
753708
expect(user.get('id')).to.equal('surya');
754709
expect(user.get('username')).to.equal('doe');
755-
if (['sqlite3', 'postgres'].includes(dialectName)) {
710+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
756711
expect(created).to.be.null;
757712
} else {
758713
expect(created).to.be.false;
@@ -775,10 +730,8 @@ describe('Model', () => {
775730
expect(user.name).to.equal('Test default value');
776731
expect(user.code).to.equal(2020);
777732

778-
if (['sqlite3', 'postgres'].includes(dialectName)) {
733+
if (['db2', 'sqlite3', 'postgres'].includes(dialectName)) {
779734
expect(created).to.be.null;
780-
} else if (dialectName === 'db2') {
781-
expect(created).to.be.undefined;
782735
} else {
783736
expect(created).to.be.true;
784737
}

0 commit comments

Comments
 (0)