Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MySQL] Correct $returningId() implementation to correctly store selected fields #2975

Merged

Conversation

danielsharvey
Copy link
Contributor

Currently, $returningId() only works when the primary key is in the first column (of the Drizzle table definition not the underlying MySQL table).

The issues was that the local variable returning computes the selected fields in the $returningId() method but throws this away. This fix updates to correctly store config in the insert query builder.

Added test to cover this issue.

Fixes #2971

@danielsharvey danielsharvey changed the title Bugfix/fix returningid Correct $returningId() implementation to correctly store selected fields Sep 16, 2024
@danielsharvey danielsharvey changed the title Correct $returningId() implementation to correctly store selected fields [MySQL] Correct $returningId() implementation to correctly store selected fields Sep 16, 2024
Currently, $returningId() only works when the primary key is in the
first column (of the Drizzle table definition not the underlying
MySQL table).

This new test checks for this behaviour by using $returningId()
when the primary key is in the second column.

See drizzle-team#2971

Signed-off-by: Daniel Harvey <[email protected]>
The local variable `returning` computes the selected fields in
$returningId() but throws this away. Change to correctly
store config in the insert query builder.

Fixed drizzle-team#2971

Signed-off-by: Daniel Harvey <[email protected]>
@danielsharvey
Copy link
Contributor Author

Note that for the "limit 0" and "limit -1" tests to work, I needed this fix: 218cddb (see mysql-common.ts)

@AndriiSherman AndriiSherman changed the base branch from main to beta November 3, 2024 14:27
@AndriiSherman AndriiSherman merged commit 908e6f4 into drizzle-team:beta Nov 7, 2024
6 checks passed
AndriiSherman added a commit that referenced this pull request Nov 14, 2024
* Fix breakpoints option default value

* fix: added commonly used columns to supabase auth.users table schema

* imports checker with OHM grammar

* imports checker with OHM grammar + fix of imports issues

* Formatting fix

* [MySQL] Add unsigned floating point types + Fix unsigned integer type bugs in Kit (#3284)

* Fix bugs with MySQL introspection tests

* Update float data type in MySQL

* Better support for float types in MySQL

* Handle existing unsigned numerical types in MySQL

* Add unsigned to floating point types in MySQL

* Handle unsigned floating point types in MySQL

* Update decimal data type

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Batch of bugfixes for ORM (#3181)

* (MySQL) Fix placeholder type error in offset and limit

* Add prepared statement tests

* Add PG test

* Fix blob parsing in bun sqlite driver

* Lint and format

* Fix file

* Fix tests

* Use const instead of let in tests

* Format

---------

Co-authored-by: Andrii Sherman <[email protected]>

* main to beta (#3404)

* Update Github issue templates (#3157)

* Update GH issue templates

* Update issue templates

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Fix checkboxes

---------

Co-authored-by: L-Mario564 <[email protected]>

* feat: add tablesFilter to pushSchema api (#3141)

* feat: add tablesFilter to pushSchema api

* Format with dprint

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Batch of bugfixes for Kit (#2959)

* Escape single quote in enum value

* Escape single quotes in string default values

* Handle instrospection of strings with single quotes

* Add tests

* Add tests

* Uncomment tests

* Fix SQL statement order in MySQL

* Add MySQL test

* Fix alter composite PK statement missing quotes in PG

* Add tests

* Handle SQL expressions in timestamp, date and time in PG

* Use `.run` instead of `.query` in SQLite queries that don't return anything

* Fix parsing of enum array types in PG

* Generate more PG index operators

* Fix primary key recreate on table rename

* Format

* Format

* Update test

* Format

* Fix tests

* Fix terminal output mistake

* Remove duplicate import

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Bump versions

* fix: typo (#3172)

Co-authored-by: Andrii Sherman <[email protected]>

* Fix typo (#3030)

Trivial: "You ... is ready" -> "Your ... is ready"

Co-authored-by: Andrii Sherman <[email protected]>

* [MySQL] Correct $returningId() implementation to correctly store selected fields (#2975)

* Add test to reproduce $returningId() column order issue

Currently, $returningId() only works when the primary key is in the
first column (of the Drizzle table definition not the underlying
MySQL table).

This new test checks for this behaviour by using $returningId()
when the primary key is in the second column.

See #2971

Signed-off-by: Daniel Harvey <[email protected]>

* Fix $returningId() to correctly set selected fields

The local variable `returning` computes the selected fields in
$returningId() but throws this away. Change to correctly
store config in the insert query builder.

Fixed #2971

Signed-off-by: Daniel Harvey <[email protected]>

---------

Signed-off-by: Daniel Harvey <[email protected]>
Co-authored-by: Andrii Sherman <[email protected]>

* revise and proofread project documentation (#2960)

Co-authored-by: Andrii Sherman <[email protected]>

* Fixed lack of schema name on columns in sql (#3531)

* Beta (#3503)

* Fix breakpoints option default value

* fix: added commonly used columns to supabase auth.users table schema

* imports checker with OHM grammar

* imports checker with OHM grammar + fix of imports issues

* Formatting fix

* [MySQL] Add unsigned floating point types + Fix unsigned integer type bugs in Kit (#3284)

* Fix bugs with MySQL introspection tests

* Update float data type in MySQL

* Better support for float types in MySQL

* Handle existing unsigned numerical types in MySQL

* Add unsigned to floating point types in MySQL

* Handle unsigned floating point types in MySQL

* Update decimal data type

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Batch of bugfixes for ORM (#3181)

* (MySQL) Fix placeholder type error in offset and limit

* Add prepared statement tests

* Add PG test

* Fix blob parsing in bun sqlite driver

* Lint and format

* Fix file

* Fix tests

* Use const instead of let in tests

* Format

---------

Co-authored-by: Andrii Sherman <[email protected]>

* main to beta (#3404)

* Update Github issue templates (#3157)

* Update GH issue templates

* Update issue templates

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Fix checkboxes

---------

Co-authored-by: L-Mario564 <[email protected]>

* feat: add tablesFilter to pushSchema api (#3141)

* feat: add tablesFilter to pushSchema api

* Format with dprint

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Batch of bugfixes for Kit (#2959)

* Escape single quote in enum value

* Escape single quotes in string default values

* Handle instrospection of strings with single quotes

* Add tests

* Add tests

* Uncomment tests

* Fix SQL statement order in MySQL

* Add MySQL test

* Fix alter composite PK statement missing quotes in PG

* Add tests

* Handle SQL expressions in timestamp, date and time in PG

* Use `.run` instead of `.query` in SQLite queries that don't return anything

* Fix parsing of enum array types in PG

* Generate more PG index operators

* Fix primary key recreate on table rename

* Format

* Format

* Update test

* Format

* Fix tests

* Fix terminal output mistake

* Remove duplicate import

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Bump versions

---------

Co-authored-by: Steffen <[email protected]>
Co-authored-by: Nicholas Ly <[email protected]>
Co-authored-by: Alex Blokh <[email protected]>
Co-authored-by: Sukairo-02 <[email protected]>
Co-authored-by: L-Mario564 <[email protected]>
Co-authored-by: Dan Ribbens <[email protected]>

* Dprint

* Fixed `sql` omitting schema names when processing columns, fixed related test cases

* Fixed dprint formatting issues

* Fixed lack of schema name on integration tests column references

* Removed `\!`

---------

Co-authored-by: Andrii Sherman <[email protected]>
Co-authored-by: Steffen <[email protected]>
Co-authored-by: Nicholas Ly <[email protected]>
Co-authored-by: Alex Blokh <[email protected]>
Co-authored-by: L-Mario564 <[email protected]>
Co-authored-by: Dan Ribbens <[email protected]>

* Update driver.ts (#3424)

Co-authored-by: Andrii Sherman <[email protected]>

* fix: wrong dialect set in mysql/sqlite introspect (#2865)

Co-authored-by: Andrii Sherman <[email protected]>

* Extra `update` in comment (#2864)

Removed and extra `update` text in the comment description using onDuplicateKeyUpdate

* chore: export PgIntegerBuilderInitial type as are all other pg-core columns (#2846)

Co-authored-by: Alexis Reymann <[email protected]>
Co-authored-by: Andrii Sherman <[email protected]>

* Support more types in text comparing sql expressions (#2805)

Co-authored-by: Andrii Sherman <[email protected]>

* drizzle-kit/commands/migrate: fix "you code" typo (#2801)

"put you code below" 
should be
"put your code below"

* Fixed `.generated` behaviour with non-strict `tsconfig` (fixes #2654) (#3542)

* Fix Drizzle ORM for expo-sqlite (#3197)

* Fix Drizzle ORM for expo-sqlite

closes #3195

* bump expo-sqlite version to 14.0.0 in package.json and pnpm-lock.yaml

---------

Co-authored-by: Andrii Sherman <[email protected]>

* Upgrade turbo to v2

* Wait for drizzle-orm to be ready

* Format turbo json

* Fix turbo for eslint plugin

* Add release notes

---------

Signed-off-by: Daniel Harvey <[email protected]>
Co-authored-by: Steffen <[email protected]>
Co-authored-by: Nicholas Ly <[email protected]>
Co-authored-by: Alex Blokh <[email protected]>
Co-authored-by: Sukairo-02 <[email protected]>
Co-authored-by: L-Mario564 <[email protected]>
Co-authored-by: Dan Ribbens <[email protected]>
Co-authored-by: Armand SALLE <[email protected]>
Co-authored-by: Christopher Masto <[email protected]>
Co-authored-by: Daniel Harvey <[email protected]>
Co-authored-by: wackbyte <[email protected]>
Co-authored-by: Sergey Reka <[email protected]>
Co-authored-by: Michael Lohr <[email protected]>
Co-authored-by: Mickael Lecoq <[email protected]>
Co-authored-by: Asher Chan <[email protected]>
Co-authored-by: Alexis Reymann <[email protected]>
Co-authored-by: Alexis Reymann <[email protected]>
Co-authored-by: Max Leiter <[email protected]>
Co-authored-by: Subramanya Chakravarthy <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG]: MySQL $returningId does not necessarily use primary key field at runtime
2 participants