Commit a9376cc
authored
feat (Repo): Raise an error on query-like keyword opts to Repo functions (#4717)
Consider the following, written by a new-to-Elixir developer:
```elixir
Repo.delete_all(User, where: [account_id: user.account_id])
```
The developer mistakenly believed that the `opts` to the Repo function worked like the Ecto.Query DSL, when in fact these keyword options were entirely ignored (making this an unscoped deletion of all users).
With this change, Ecto will raise a runtime error when given `opts` keys that seem to indicate the user was trying to modify the queryable passed in to:
- Repo.all/2
- Repo.all_by/3
- Repo.delete_all/2
- Repo.exists?/2
- Repo.get/3
- Repo.get_by/3
- Repo.one/2
- Repo.stream/21 parent d962b66 commit a9376cc
2 files changed
+106
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
326 | 326 | | |
327 | 327 | | |
328 | 328 | | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
329 | 360 | | |
330 | 361 | | |
331 | 362 | | |
| |||
491 | 522 | | |
492 | 523 | | |
493 | 524 | | |
| 525 | + | |
| 526 | + | |
494 | 527 | | |
495 | 528 | | |
496 | 529 | | |
| |||
502 | 535 | | |
503 | 536 | | |
504 | 537 | | |
| 538 | + | |
| 539 | + | |
505 | 540 | | |
506 | 541 | | |
507 | 542 | | |
| |||
512 | 547 | | |
513 | 548 | | |
514 | 549 | | |
| 550 | + | |
| 551 | + | |
515 | 552 | | |
516 | 553 | | |
517 | 554 | | |
| |||
523 | 560 | | |
524 | 561 | | |
525 | 562 | | |
| 563 | + | |
| 564 | + | |
526 | 565 | | |
527 | 566 | | |
528 | 567 | | |
| |||
533 | 572 | | |
534 | 573 | | |
535 | 574 | | |
| 575 | + | |
| 576 | + | |
536 | 577 | | |
537 | 578 | | |
538 | 579 | | |
| |||
555 | 596 | | |
556 | 597 | | |
557 | 598 | | |
| 599 | + | |
| 600 | + | |
558 | 601 | | |
559 | 602 | | |
560 | 603 | | |
| |||
597 | 640 | | |
598 | 641 | | |
599 | 642 | | |
| 643 | + | |
| 644 | + | |
600 | 645 | | |
601 | 646 | | |
602 | 647 | | |
| |||
657 | 702 | | |
658 | 703 | | |
659 | 704 | | |
| 705 | + | |
| 706 | + | |
660 | 707 | | |
661 | 708 | | |
662 | 709 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1600 | 1600 | | |
1601 | 1601 | | |
1602 | 1602 | | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
1603 | 1660 | | |
1604 | 1661 | | |
1605 | 1662 | | |
| |||
1970 | 2027 | | |
1971 | 2028 | | |
1972 | 2029 | | |
| 2030 | + | |
1973 | 2031 | | |
| 2032 | + | |
1974 | 2033 | | |
1975 | 2034 | | |
1976 | 2035 | | |
| |||
0 commit comments