From b55a417ea4852ad2e66091cfa800534f7ccdd3c9 Mon Sep 17 00:00:00 2001 From: James Ward Date: Tue, 22 Sep 2020 08:42:54 -0400 Subject: [PATCH] fix: resolve issues ora-00972:identifier is too long (#6751) * fix: resolve issues ora-00972:identifier is too long Closes: #5067 * fix: ensure that this changes applies just for Oracle Driver Closes: #5067 * fix test - remove `.only` & set the `enabledDrivers` to oracle * simplify test case Co-authored-by: Murat Gundes --- src/driver/oracle/OracleDriver.ts | 2 +- test/github-issues/5067/issue-5067.ts | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/github-issues/5067/issue-5067.ts diff --git a/src/driver/oracle/OracleDriver.ts b/src/driver/oracle/OracleDriver.ts index 3d02f3b537..52a2bf46f9 100644 --- a/src/driver/oracle/OracleDriver.ts +++ b/src/driver/oracle/OracleDriver.ts @@ -635,7 +635,7 @@ export class OracleDriver implements Driver { * Creates an escaped parameter. */ createParameter(parameterName: string, index: number): string { - return ":" + parameterName; + return ":" + (index + 1); } /** diff --git a/test/github-issues/5067/issue-5067.ts b/test/github-issues/5067/issue-5067.ts new file mode 100644 index 0000000000..3082a03894 --- /dev/null +++ b/test/github-issues/5067/issue-5067.ts @@ -0,0 +1,20 @@ +import "reflect-metadata"; +import {expect} from "chai"; +import {Connection} from "../../../src"; +import {closeTestingConnections, createTestingConnections} from "../../utils/test-utils"; + +describe("github issues > #5067 ORA-00972: identifier is too long", () => { + let connections: Connection[]; + before(async () => connections = await createTestingConnections({ + enabledDrivers: ["oracle"] + })); + after(() => closeTestingConnections(connections)); + + it("generated parameter name is within the size constraints", () => Promise.all(connections.map(async connection => { + const paramName = "output_that_is_really_long_and_must_be_truncated_in_this_driver"; + const createdParameter = await connection.driver.createParameter(paramName, 0); + + expect(createdParameter).to.be.an("String"); + expect(createdParameter.length).to.be.lessThan(30); + }))); +});