From 8f58dc9700cd047f5f616511a7854d68e639e27a Mon Sep 17 00:00:00 2001 From: Gints Polis Date: Sun, 4 Nov 2018 08:43:26 +0200 Subject: [PATCH] Fix #3009 user newer extension for postgress UUID gen. New extension does not support Old postgres versions: 9.2 / 9.1 / 9.0 / 8.4 / 8.3 --- src/driver/postgres/PostgresDriver.ts | 4 ++-- src/driver/postgres/PostgresQueryRunner.ts | 4 ++-- test/functional/schema-builder/change-column.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/driver/postgres/PostgresDriver.ts b/src/driver/postgres/PostgresDriver.ts index cc329ab227..301e697903 100644 --- a/src/driver/postgres/PostgresDriver.ts +++ b/src/driver/postgres/PostgresDriver.ts @@ -299,9 +299,9 @@ export class PostgresDriver implements Driver { if (err) return fail(err); if (hasUuidColumns) try { - await this.executeQuery(connection, `CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`); + await this.executeQuery(connection, `CREATE EXTENSION IF NOT EXISTS "pgcrypto"`); } catch (_) { - logger.log("warn", "At least one of the entities has uuid column, but the 'uuid-ossp' extension cannot be installed automatically. Please install it manually using superuser rights"); + logger.log("warn", "At least one of the entities has uuid column, but the 'pgcrypto' extension cannot be installed automatically. Please install it manually using superuser rights"); } if (hasCitextColumns) try { diff --git a/src/driver/postgres/PostgresQueryRunner.ts b/src/driver/postgres/PostgresQueryRunner.ts index 0868236c11..d612aaceaf 100644 --- a/src/driver/postgres/PostgresQueryRunner.ts +++ b/src/driver/postgres/PostgresQueryRunner.ts @@ -1413,7 +1413,7 @@ export class PostgresQueryRunner extends BaseQueryRunner implements QueryRunner tableColumn.isGenerated = true; tableColumn.generationStrategy = "increment"; - } else if (/^uuid_generate_v\d\(\)/.test(dbColumn["column_default"])) { + } else if (/^gen_random_uuid\(\)/.test(dbColumn["column_default"])) { tableColumn.isGenerated = true; tableColumn.generationStrategy = "uuid"; @@ -1818,7 +1818,7 @@ export class PostgresQueryRunner extends BaseQueryRunner implements QueryRunner if (column.default !== undefined && column.default !== null) c += " DEFAULT " + column.default; if (column.isGenerated && column.generationStrategy === "uuid" && !column.default) - c += " DEFAULT uuid_generate_v4()"; + c += " DEFAULT gen_random_uuid()"; return c; } diff --git a/test/functional/schema-builder/change-column.ts b/test/functional/schema-builder/change-column.ts index 296e950c98..a1e74261b4 100644 --- a/test/functional/schema-builder/change-column.ts +++ b/test/functional/schema-builder/change-column.ts @@ -150,7 +150,7 @@ describe("schema builder > change column", () => { const queryRunner = connection.createQueryRunner(); if (connection.driver instanceof PostgresDriver) - await queryRunner.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`); + await queryRunner.query(`CREATE EXTENSION IF NOT EXISTS "pgcrypto"`); const postMetadata = connection.getMetadata(Post); const idColumn = postMetadata.findColumnWithPropertyName("id")!;