Skip to content

Conversation

@mmarifat
Copy link
Contributor

@mmarifat mmarifat commented May 7, 2025

Fixes #11440, fixes #11546

Description of change

When using upsert or orUpdate query with schema name and skipUpdateIfNoValuesChanged in entity produces wrong SQL that throws an error

Expected Behavior
..."schemaName"."tableName"."name" IS DISTINCT FROM... should be generated

Actual Behavior
..."schemaName.tableName"."name" IS DISTINCT FROM... actually generated

This 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

  • Code is up-to-date with the master branch
  • npm run format to apply prettier formatting
  • npm run test passes with this change
  • This pull request links relevant issues as Fixes #0000
  • There are new or updated unit tests validating the change
  • Documentation has been updated to reflect this change
  • The new commits follow conventions explained in CONTRIBUTING.md

Summary by CodeRabbit

  • New Features
    • Added support for handling upsert and update operations with schema names and the skip-update-if-no-values-changed option for PostgreSQL-compatible databases.
  • Tests
    • Introduced new tests to verify correct behavior of upsert and update operations with schema-qualified tables and conflict resolution.
  • Refactor
    • Improved internal logic for generating SQL expressions to ensure consistent handling of table names and aliases in conflict resolution scenarios.

mmarifat added 2 commits May 7, 2025 21:08
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
@pkg-pr-new
Copy link

pkg-pr-new bot commented May 8, 2025

typeorm-sql-js-example

npm i https://pkg.pr.new/typeorm/typeorm@11452

commit: 27816c9

@coveralls
Copy link

coveralls commented May 8, 2025

Coverage Status

coverage: 76.367% (+0.06%) from 76.308%
when pulling 27816c9 on mmarifat:fix/alias-or-tablename-upsert-and-orupdate-with-schema-postgres-driver-11440
into d325d9e on typeorm:master.

@mmarifat mmarifat requested a review from mguida22 May 14, 2025 14:41
Copy link
Collaborator

@gioboa gioboa left a 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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 22, 2025

Walkthrough

A local variable for determining the correct table or alias name is introduced in the InsertQueryBuilder class to ensure consistent SQL generation, especially in upsert conflict clauses. Additionally, a new Post entity and a comprehensive test suite are added to verify upsert and update behaviors with schema names and the skipUpdateIfNoValuesChanged option.

Changes

File(s) Change Summary
src/query-builder/InsertQueryBuilder.ts Refactored to introduce a local variable tableOrAliasName in createInsertExpression for consistent alias/table name usage in SQL generation, particularly within conflict update conditions.
test/github-issues/11440/entity/Post.ts Added new Post entity class with id (primary key) and nullable title, mapped to the "post" table in the "typeorm_test" schema.
test/github-issues/11440/issue-11440.ts Introduced a new test suite to validate upsert and update logic with schema names and the skipUpdateIfNoValuesChanged flag, ensuring correct SQL and database state across multiple PostgreSQL-compatible drivers.

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
Loading

Suggested reviewers

  • mguida22
  • gioboa

Poem

In the schema’s gentle warren, a Post hops in with glee,
New logic for upserts, as clean as can be.
Table names and aliases now dance in line,
With tests to ensure all behaviors align.
🐇 Code grows, SQL flows—what a hoppy time!

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

npm warn config production Use --omit=dev instead.
npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error https://github.com/npm/cli/issues
npm error A complete log of this run can be found in: /.npm/_logs/2025-05-22T08_08_04_967Z-debug-0.log

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit 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.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit 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 Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 call

The test uses Promise.all without 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

📥 Commits

Reviewing files that changed from the base of the PR and between d325d9e and 27816c9.

📒 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 configuration

The 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 generation

This 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 skipUpdateIfNoValuesChanged option.


597-601: Correctly using the new tableOrAliasName variable

The fix is properly applied here, using the newly introduced tableOrAliasName variable 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 setup

Good 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 functionality

This section effectively tests the upsert functionality with skipUpdateIfNoValuesChanged enabled, ensuring that no unnecessary updates occur when values haven't changed.


62-87: Good validation of SQL generation

The 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 state

The test correctly verifies the final state of the database after the operations, ensuring that the expected updates have been applied.

@alumni alumni merged commit 2bfa300 into typeorm:master Jun 4, 2025
89 checks passed
@alumni
Copy link
Collaborator

alumni commented Jun 4, 2025

@mmarifat @mguida22 Unfortunately the test does not execute correctly, it succeeds even though the first save throws an error:

✔ should use table or alias name during upsert or doUpdate when both schema name and skipUpdateIfNoValuesChanged supplied
query: SELECT "Post"."id" AS "Post_id", "Post"."title" AS "Post_title" FROM "typeorm_test"."post" "Post" WHERE "Post"."id" IN ($1, $2, $3) -- PARAMETERS: [1,2,3]

query failed: SELECT "Post"."id" AS "Post_id", "Post"."title" AS "Post_title" FROM "typeorm_test"."post" "Post" WHERE "Post"."id" IN ($1, $2, $3) -- PARAMETERS: [1,2,3]
error: Error: Connection terminated

1 passing (443ms)

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.

@mmarifat
Copy link
Contributor Author

mmarifat commented Jun 5, 2025

@mmarifat @mguida22 Unfortunately the test does not execute correctly, it succeeds even though the first save throws an error:

✔ should use table or alias name during upsert or doUpdate when both schema name and skipUpdateIfNoValuesChanged supplied
query: SELECT "Post"."id" AS "Post_id", "Post"."title" AS "Post_title" FROM "typeorm_test"."post" "Post" WHERE "Post"."id" IN ($1, $2, $3) -- PARAMETERS: [1,2,3]
query failed: SELECT "Post"."id" AS "Post_id", "Post"."title" AS "Post_title" FROM "typeorm_test"."post" "Post" WHERE "Post"."id" IN ($1, $2, $3) -- PARAMETERS: [1,2,3]
error: Error: Connection terminated
1 passing (443ms)

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?

@alumni
Copy link
Collaborator

alumni commented Jun 5, 2025

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 SELECT issued by Repository.save()). Surprisingly, the queries executed before (in the test setup) are fine.

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"

ormconfig.json:

[{
    "skip": false,
    "name": "postgres",
    "type": "postgres",
    "host": "localhost",
    "port": 5432,
    "username": "test",
    "password": "test",
    "database": "test",
    "logging": true
}]

renatosugimoto added a commit to renatosugimoto/ts-nestjs-trainning that referenced this pull request Jul 22, 2025
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)


<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&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 👩‍💻 [Set who automatically gets
assigned](https://app.snyk.io/org/renatosugimoto/project/31d5132a-e6b1-4b8a-a6a3-43b157a71ac5/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;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&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;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&#x3D;typeorm&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;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]>
ThbltLmr pushed a commit to ThbltLmr/typeorm that referenced this pull request Dec 2, 2025
… 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issue with upsert Method and skipUpdateIfNoValuesChanged regression for insert orUpdate with Postgres driver

5 participants