-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
fix: resolve alias or table name in upsert and orUpdate for PostgreSQL driver conditionally #11452
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
fix: resolve alias or table name in upsert and orUpdate for PostgreSQL driver conditionally #11452
Conversation
This fix addresses a regression introduced in pull request typeorm#11082 by ensuring correct handling of alias names and table names when they are equal or distinct when entities use schema Closes: typeorm#11440
commit: |
…alias-or-tablename-upsert-and-orupdate-with-schema-postgres-driver-11440
…alias-or-tablename-upsert-and-orupdate-with-schema-postgres-driver-11440
gioboa
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your help @mmarifat
Co-authored-by: Mike Guida <[email protected]>
WalkthroughA local variable for determining the correct table or alias name is introduced in the Changes
Sequence Diagram(s)sequenceDiagram
participant TestRunner
participant DataSource
participant InsertQueryBuilder
participant Database
TestRunner->>DataSource: Initialize with Post entity
TestRunner->>Database: Save initial posts
TestRunner->>InsertQueryBuilder: Build upsert query (with skipUpdateIfNoValuesChanged)
InsertQueryBuilder->>Database: Execute upsert
TestRunner->>InsertQueryBuilder: Build insert query with orUpdate and skipUpdateIfNoValuesChanged
InsertQueryBuilder->>Database: Execute insert/update
TestRunner->>Database: Query posts for verification
Suggested reviewers
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
npm warn config production Use Note ⚡️ AI Code Reviews for VS Code, Cursor, WindsurfCodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback. Note ⚡️ Faster reviews with cachingCodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 30th. To opt out, configure ✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
test/github-issues/11440/issue-11440.ts (1)
25-108: Consider awaiting the Promise.all callThe test uses
Promise.allwithout awaiting it, which could potentially allow the test to complete before all assertions are verified.- Promise.all( + await Promise.all(
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/query-builder/InsertQueryBuilder.ts(2 hunks)test/github-issues/11440/entity/Post.ts(1 hunks)test/github-issues/11440/issue-11440.ts(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/query-builder/InsertQueryBuilder.ts (1)
src/naming-strategy/DefaultNamingStrategy.ts (1)
tableName(23-28)
🔇 Additional comments (7)
test/github-issues/11440/entity/Post.ts (1)
1-13: Appropriately defined entity with schema configurationThe Post entity is correctly defined with the proper schema configuration and column definitions. The primary key and nullable constraints are properly set up.
src/query-builder/InsertQueryBuilder.ts (2)
409-412: Good fix for schema name handling in SQL generationThis change correctly addresses the issue by introducing a variable that determines whether to use the escaped alias or the escaped table name (which includes schema information). This ensures proper SQL generation when using schema names with upsert operations and the
skipUpdateIfNoValuesChangedoption.
597-601: Correctly using the new tableOrAliasName variableThe fix is properly applied here, using the newly introduced
tableOrAliasNamevariable in the WHERE clause of the conflict resolution condition. This ensures that the correct identifier (either alias or table name with schema) is used in SQL generation.test/github-issues/11440/issue-11440.ts (4)
15-22: Well-structured test setupGood test configuration with appropriate drivers for testing the PostgreSQL-specific issue. The test is properly set up with the necessary lifecycle methods.
24-61: Thorough test for upsert functionalityThis section effectively tests the upsert functionality with
skipUpdateIfNoValuesChangedenabled, ensuring that no unnecessary updates occur when values haven't changed.
62-87: Good validation of SQL generationThe test appropriately validates the generated SQL string, confirming that the alias is correctly used in the WHERE clause of the ON CONFLICT statement.
89-107: Effective validation of final database stateThe test correctly verifies the final state of the database after the operations, ensuring that the expected updates have been applied.
|
@mmarifat @mguida22 Unfortunately the test does not execute correctly, it succeeds even though the first save throws an error:
There's another PR changing the same code, so this fix might be broken by that and we wouldn't know because the test doesn't run. |
Probably I can make two separate tests, should I go for it? |
|
Honestly, I'm not sure why do we get "Connection terminated". I've only seen it in this test, and it happens in the very first query that TypeORM executes in the test (a It might be due to some unawaited promise when obtaining the DB connection (when creating the QueryRunner). But why only here? IDK yet. If you can figure out why do we get the error, that would be great. Replication steps: podman compose up postgres
# or: docker compose up postgres
npm exec rimraf ./build && npm run watch
npm run test:fast -- --grep "11440"
[{
"skip": false,
"name": "postgres",
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "test",
"password": "test",
"database": "test",
"logging": true
}] |
 <h3>Snyk has created this PR to upgrade typeorm from 0.3.24 to 0.3.25.</h3> :information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project. <hr/> - The recommended version is **22 versions** ahead of your current version. - The recommended version was released **22 days ago**. <details> <summary><b>Release notes</b></summary> <br/> <details> <summary>Package name: <b>typeorm</b></summary> <ul> <li> <b>0.3.25</b> - <a href="https://redirect.github.com/typeorm/typeorm/releases/tag/0.3.25">2025-06-19</a></br><h2>What's Changed</h2> <ul> <li>docs: use correct SQL statements in softDelete/restore comments by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sgarner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/sgarner">@ sgarner</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3081453606" data-permission-text="Title is private" data-url="typeorm/typeorm#11489" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11489/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11489">#11489</a></li> <li>fix: resolve alias or table name in upsert and orUpdate for PostgreSQL driver conditionally by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mmarifat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mmarifat">@ mmarifat</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3047096667" data-permission-text="Title is private" data-url="typeorm/typeorm#11452" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11452/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11452">#11452</a></li> <li>feat(spanner): use credentials from connection options by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denes/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/denes">@ denes</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3086575395" data-permission-text="Title is private" data-url="typeorm/typeorm#11492" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11492/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11492">#11492</a></li> <li>feat: add upsert support for Oracle, SQLServer and SAP HANA by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Yuuki-Sakura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/Yuuki-Sakura">@ Yuuki-Sakura</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2404532307" data-permission-text="Title is private" data-url="typeorm/typeorm#10974" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/10974/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/10974">#10974</a></li> <li>fix: handle limit(0) and offset(0) correctly in SelectQueryBuilder by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yeonghun104/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/yeonghun104">@ yeonghun104</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3116497992" data-permission-text="Title is private" data-url="typeorm/typeorm#11507" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11507/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11507">#11507</a></li> <li>fix: add collation update detection in PostgresDriver by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asn6878/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/asn6878">@ asn6878</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3040527205" data-permission-text="Title is private" data-url="typeorm/typeorm#11441" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11441/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11441">#11441</a></li> <li>feat: add typesense/docsearch-scraper by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gioboa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/gioboa">@ gioboa</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3003003060" data-permission-text="Title is private" data-url="typeorm/typeorm#11424" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11424/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11424">#11424</a></li> <li>chore: improve linting by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alumni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/alumni">@ alumni</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3122060339" data-permission-text="Title is private" data-url="typeorm/typeorm#11510" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11510/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11510">#11510</a></li> <li>chore: improve linting (fixup) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alumni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/alumni">@ alumni</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3122508176" data-permission-text="Title is private" data-url="typeorm/typeorm#11511" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11511/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11511">#11511</a></li> <li>docs: new website initial commit by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/naorpeled/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/naorpeled">@ naorpeled</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2991307150" data-permission-text="Title is private" data-url="typeorm/typeorm#11408" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11408/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11408">#11408</a></li> <li>fix: fix up doc search workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gioboa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/gioboa">@ gioboa</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3125253351" data-permission-text="Title is private" data-url="typeorm/typeorm#11513" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11513/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11513">#11513</a></li> <li>chore: update workflows to ignore changes in docs directory by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dlhck/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/dlhck">@ dlhck</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3132733241" data-permission-text="Title is private" data-url="typeorm/typeorm#11518" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11518/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11518">#11518</a></li> <li>feat(docs): add Plausible analytics script to Docusaurus config by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dlhck/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/dlhck">@ dlhck</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3132688431" data-permission-text="Title is private" data-url="typeorm/typeorm#11517" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11517/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11517">#11517</a></li> <li>docs: add note about using YugabyteDB by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3137325649" data-permission-text="Title is private" data-url="typeorm/typeorm#11521" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11521/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11521">#11521</a></li> <li>chore(docs): improve website generation config by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alumni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/alumni">@ alumni</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3143665449" data-permission-text="Title is private" data-url="typeorm/typeorm#11527" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11527/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11527">#11527</a></li> <li>fix(tree-entity): closure junction table primary key definition should match parent table by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gongAll/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/gongAll">@ gongAll</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3002433767" data-permission-text="Title is private" data-url="typeorm/typeorm#11422" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11422/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11422">#11422</a></li> <li>docs: add heading to Getting Started page by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sgarner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/sgarner">@ sgarner</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3151614715" data-permission-text="Title is private" data-url="typeorm/typeorm#11531" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11531/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11531">#11531</a></li> <li>fix: Multiple relations with same columns cause invalid SQL to be generated by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yevhen-komarov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/yevhen-komarov">@ yevhen-komarov</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2984486062" data-permission-text="Title is private" data-url="typeorm/typeorm#11400" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11400/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11400">#11400</a></li> <li>fix: fix null pointer exception on date array column comparison by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mnbaccari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mnbaccari">@ mnbaccari</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3153601577" data-permission-text="Title is private" data-url="typeorm/typeorm#11532" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11532/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11532">#11532</a></li> <li>chore(ci): simplify workflows by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alumni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/alumni">@ alumni</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3147752910" data-permission-text="Title is private" data-url="typeorm/typeorm#11530" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11530/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11530">#11530</a></li> <li>fix: improve async calls on disconnect by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alumni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/alumni">@ alumni</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3139265175" data-permission-text="Title is private" data-url="typeorm/typeorm#11523" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11523/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11523">#11523</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mmarifat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mmarifat">@ mmarifat</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3047096667" data-permission-text="Title is private" data-url="typeorm/typeorm#11452" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11452/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11452">#11452</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yeonghun104/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/yeonghun104">@ yeonghun104</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3116497992" data-permission-text="Title is private" data-url="typeorm/typeorm#11507" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11507/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11507">#11507</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asn6878/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/asn6878">@ asn6878</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3040527205" data-permission-text="Title is private" data-url="typeorm/typeorm#11441" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11441/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11441">#11441</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gongAll/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/gongAll">@ gongAll</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3002433767" data-permission-text="Title is private" data-url="typeorm/typeorm#11422" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11422/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11422">#11422</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://redirect.github.com/typeorm/typeorm/compare/0.3.24...0.3.25"><tt>0.3.24...0.3.25</tt></a></p> </li> <li> <b>0.3.25-dev.eb3093d</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.ead4f98</b> - 2025-06-18 </li> <li> <b>0.3.25-dev.ce23d46</b> - 2025-06-16 </li> <li> <b>0.3.25-dev.b1e93f7</b> - 2025-06-18 </li> <li> <b>0.3.25-dev.af9ecc0</b> - 2025-06-17 </li> <li> <b>0.3.25-dev.a9c16ee</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.930eefd</b> - 2025-06-06 </li> <li> <b>0.3.25-dev.86f12c9</b> - 2025-06-10 </li> <li> <b>0.3.25-dev.65d5a00</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.63a3b9a</b> - 2025-06-17 </li> <li> <b>0.3.25-dev.61753b1</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.5003aaa</b> - 2025-05-21 </li> <li> <b>0.3.25-dev.4b0ffee</b> - 2025-06-06 </li> <li> <b>0.3.25-dev.42e7cbe</b> - 2025-06-17 </li> <li> <b>0.3.25-dev.42913b9</b> - 2025-06-11 </li> <li> <b>0.3.25-dev.413f0a6</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.2bfa300</b> - 2025-06-04 </li> <li> <b>0.3.25-dev.24c3e38</b> - 2025-06-05 </li> <li> <b>0.3.25-dev.12a71e4</b> - 2025-05-14 </li> <li> <b>0.3.25-dev.07d7913</b> - 2025-06-04 </li> <li> <b>0.3.25-dev.03faa78</b> - 2025-06-14 </li> <li> <b>0.3.24</b> - <a href="https://redirect.github.com/typeorm/typeorm/releases/tag/0.3.24">2025-05-14</a></br><h2>What's Changed</h2> <ul> <li>feat: add tagged template for executing raw SQL queries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Newbie012/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/Newbie012">@ Newbie012</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3028712893" data-permission-text="Title is private" data-url="typeorm/typeorm#11432" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11432/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11432">#11432</a></li> <li>chore: Add husky and lint-staged by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/maxbronnikov10/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/maxbronnikov10">@ maxbronnikov10</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3044164801" data-permission-text="Title is private" data-url="typeorm/typeorm#11448" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11448/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11448">#11448</a></li> <li>fix: resolve pkg.pr.new issue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/naorpeled/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/naorpeled">@ naorpeled</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3054189764" data-permission-text="Title is private" data-url="typeorm/typeorm#11463" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11463/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11463">#11463</a></li> <li>perf: improve save performance during entities update by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lotczyk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/lotczyk">@ lotczyk</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3049144737" data-permission-text="Title is private" data-url="typeorm/typeorm#11456" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11456/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11456">#11456</a></li> <li>refactor: remove unused NamingStrategyNotFoundError by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053756244" data-permission-text="Title is private" data-url="typeorm/typeorm#11462" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11462/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11462">#11462</a></li> <li>chore: add note about breaking change in 0.3.23 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3057590521" data-permission-text="Title is private" data-url="typeorm/typeorm#11469" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11469/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11469">#11469</a></li> <li>build: include db version in coveralls flag-name by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053694931" data-permission-text="Title is private" data-url="typeorm/typeorm#11461" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11461/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11461">#11461</a></li> <li>chore: include warning about update({}) in changelog by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sgarner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/sgarner">@ sgarner</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3058303343" data-permission-text="Title is private" data-url="typeorm/typeorm#11471" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11471/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11471">#11471</a></li> <li>feat: add updateAll and deleteAll methods to EntityManager and Repository APIs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sgarner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/sgarner">@ sgarner</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3051787023" data-permission-text="Title is private" data-url="typeorm/typeorm#11459" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11459/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11459">#11459</a></li> <li>Fix/11466 mssql find operator by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/christian-forgacs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/christian-forgacs">@ christian-forgacs</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3056841300" data-permission-text="Title is private" data-url="typeorm/typeorm#11468" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11468/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11468">#11468</a></li> <li>feat(spanner): support insert returning by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denes/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/denes">@ denes</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3052844885" data-permission-text="Title is private" data-url="typeorm/typeorm#11460" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11460/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11460">#11460</a></li> <li>chore: clarify commit practices by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3058510988" data-permission-text="Title is private" data-url="typeorm/typeorm#11472" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11472/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11472">#11472</a></li> <li>fix(mssql): avoid mutating input parameter array values by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sgarner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/sgarner">@ sgarner</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3061331662" data-permission-text="Title is private" data-url="typeorm/typeorm#11476" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11476/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11476">#11476</a></li> <li>fix: capacitor driver PRAGMA bug by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexAzartsev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AlexAzartsev">@ AlexAzartsev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3056524220" data-permission-text="Title is private" data-url="typeorm/typeorm#11467" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11467/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11467">#11467</a></li> <li>chore: version 0.3.24 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mguida22/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/mguida22">@ mguida22</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3063696327" data-permission-text="Title is private" data-url="typeorm/typeorm#11478" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11478/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11478">#11478</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denes/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/denes">@ denes</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3052844885" data-permission-text="Title is private" data-url="typeorm/typeorm#11460" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11460/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11460">#11460</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexAzartsev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AlexAzartsev">@ AlexAzartsev</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3056524220" data-permission-text="Title is private" data-url="typeorm/typeorm#11467" data-hovercard-type="pull_request" data-hovercard-url="/typeorm/typeorm/pull/11467/hovercard" href="https://redirect.github.com/typeorm/typeorm/pull/11467">#11467</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://redirect.github.com/typeorm/typeorm/compare/0.3.23...0.3.24"><tt>0.3.23...0.3.24</tt></a></p> </li> </ul> from <a href="https://redirect.github.com/typeorm/typeorm/releases">typeorm GitHub release notes</a> </details> </details> --- > [!IMPORTANT] > > - Check the changes in this PR to ensure they won't cause issues with your project. > - This PR was automatically created by Snyk using the credentials of a real user. > - Snyk has automatically assigned this pull request, [set who gets assigned](/settings/integration). --- **Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._ **For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiIwYjZmODgzMy0xZWFiLTRmYjItOGY5My1mNDAxMmRhYmFkZWQiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjBiNmY4ODMzLTFlYWItNGZiMi04ZjkzLWY0MDEyZGFiYWRlZCJ9fQ==" width="0" height="0"/> > - 🧐 [View latest project report](https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5?utm_source=github&utm_medium=referral&page=upgrade-pr) > - 👩💻 [Set who automatically gets assigned](https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr/) > - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template) > - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr) > - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5/settings/integration?pkg=typeorm&utm_source=github&utm_medium=referral&page=upgrade-pr#auto-dep-upgrades) [//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"typeorm","from":"0.3.24","to":"0.3.25"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"0b6f8833-1eab-4fb2-8f93-f4012dabaded","prPublicId":"0b6f8833-1eab-4fb2-8f93-f4012dabaded","packageManager":"npm","priorityScoreList":[],"projectPublicId":"31d5132a-e6b1-4b8a-a6a3-43b157a71ac5","projectUrl":"https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":22,"publishedDate":"2025-06-19T18:32:25.818Z"},"vulns":[]}' Co-authored-by: snyk-bot <[email protected]>
… conditionally (typeorm#11452) * fix: resolve regression in upsert and orUpdate for PostgreSQL driver This fix addresses a regression introduced in pull request typeorm#11082 by ensuring correct handling of alias names and table names when they are equal or distinct when entities use schema Closes: typeorm#11440 * style: code formatted * chore: run tests by running through all the drivers * chore: set enabledDrivers as postgres * chore: added postgres family members as enabled drivers * chore: accepted suggestion to remove extra comments Co-authored-by: Mike Guida <[email protected]> --------- Co-authored-by: Mike Guida <[email protected]>
Fixes #11440, fixes #11546
Description of change
When using upsert or orUpdate query with
schema nameandskipUpdateIfNoValuesChangedin entity produces wrong SQL that throws an errorExpected Behavior
..."schemaName"."tableName"."name" IS DISTINCT FROM...should be generatedActual Behavior
..."schemaName.tableName"."name" IS DISTINCT FROM...actually generatedThis fix addresses a regression introduced in pull request #11082 by ensuring correct handling of alias names and table names when they are equal or distinct when entities use schema. When alias name does not match with main table name the escaped alias is used or else the table name is used in a proper format.
Pull-Request Checklist
masterbranchnpm run formatto apply prettier formattingnpm run testpasses with this changeFixes #0000Summary by CodeRabbit