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

fix: resolves Postgres sequence identifier length error #7115

Merged
merged 1 commit into from
Jan 12, 2021

Conversation

matthewberryman
Copy link
Contributor

Changes the sequence name generator to handle cases where PostgreSQL auto-generated sequence name differed from TypeORM generated sequence name.

Closes: #7106

Description of change

Current behaviour: sequence name generator for PostgreSQL does not match PostgreSQL automatic sequence name implementation for some cases.
New behaviour: now it does.

Pull-Request Checklist

  • Code is up-to-date with the master branch
  • npm run lint passes with this change
  • 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 N/A
  • The new commits follow conventions explained in CONTRIBUTING.md

@@ -2051,11 +2051,14 @@ export class PostgresQueryRunner extends BaseQueryRunner implements QueryRunner
tableName = table.name.split(".")[1];
}

let seqName = `${tableName}_${columnName}_seq`;
if (seqName.length > 63) // note doesn't yet handle corner cases where .length differs from number of UTF-8 bytes
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of hard-coded magic value 63 I would recommend to use Driver.maxAliasLength property.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in all other places we already use a shorten function to shorten things... Can we use it here as well to achieve consistency?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have pushed an amended commit that uses the maxAliasLength property. I have not used shorten because it doesn't match the truncation algorithm that Postgres uses, thus won't fix the issue.

Changes the sequence name generator to handle cases where PostgreSQL auto-generated sequence name differed from TypeORM generated sequence name.

Closes: typeorm#7106
@matthewberryman
Copy link
Contributor Author

In the failing circleci test, it does pass the additional test, however there was a segfault that occurred later for some reason unrelated to the latest change.

@pleerock pleerock merged commit 568ef35 into typeorm:master Jan 12, 2021
@pleerock
Copy link
Member

Thank you for contribution! 🎉

zshipleyTAG pushed a commit to Amherst-Development/typeorm that referenced this pull request Oct 7, 2022
* typeorm-0.2.30: (212 commits)
  version bump
  docs: fix javascript usage examples (typeorm#7031)
  fix: resolve migration for UpdateDateColumn without ON UPDATE clause (typeorm#7057)
  fix: Error when sorting by an embedded entity while using join and skip/take (typeorm#7082)
  fix: resolves Postgres sequence identifier length error (typeorm#7115)
  feat: closure table custom naming (typeorm#7120)
  feat: relations: Orphaned row action (typeorm#7105)
  docs: fix invalid code block in "find many options" (typeorm#7268)
  docs: Embodying the example (typeorm#7116)
  docs: document withDeleted option (typeorm#7132)
  fix: return 'null' (instead of 'undefined') on lazy relations that have no results (typeorm#7146) (typeorm#7147)
  docs: update cascade options (typeorm#7140)
  docs: add .ts to supported ormconfig formats (typeorm#7139)
  fix: improve stack traces when using persist executor (typeorm#7218)
  refactor: remove Oracle multirow insert workaround (since typeorm#6927) (typeorm#7083)
  feat: add NOWAIT and SKIP LOCKED lock support for MySQL (typeorm#7236)
  docs: update OneToMany grammar (typeorm#7252)
  feat: JavaScript file migrations output (typeorm#7253)
  docs: update Repository.ts (typeorm#7254)
  chore: update dependency cli-highlight to v2.1.10 (typeorm#7265)
  ...
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.

PostgreSQL sequence identifier length error
2 participants