From 648ae0494148798c3f6caa13974c98a3e8e23c16 Mon Sep 17 00:00:00 2001 From: Jian He Date: Mon, 21 Aug 2023 22:15:18 -0400 Subject: [PATCH 1/2] for sequences, account for nulls and zero --- src/SequencesProcessor.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/SequencesProcessor.ts b/src/SequencesProcessor.ts index 16351db4..800d5274 100644 --- a/src/SequencesProcessor.ts +++ b/src/SequencesProcessor.ts @@ -67,7 +67,10 @@ export const setSequenceValue = async ( const seqName: string = getSequenceName(tableName, columnName); const sql = `SELECT SETVAL(\'"${conversion._schema}"."${seqName}"\', - (SELECT MAX("${columnName}") FROM "${conversion._schema}"."${tableName}"));`; + GREATEST( + COALESCE((SELECT MAX("${columnName}") FROM "${conversion._schema}"."${tableName}"), 0) + , 1) + );`; const params: DBAccessQueryParams = { conversion: conversion, @@ -140,7 +143,10 @@ export const createIdentity = async (conversion: Conversion, tableName: string): params.client = createSequenceResult.client; params.shouldReturnClient = false; params.sql = `SELECT SETVAL(\'"${conversion._schema}"."${seqName}"\', - (SELECT MAX("${columnName}") FROM ${fullTableName}));`; + GREATEST( + COALESCE((SELECT MAX("${columnName}") FROM ${fullTableName}), 0) + , 1) + );`; const sqlSetSequenceValueResult: DBAccessQueryResult = await DBAccess.query(params); From 35aa32cfa978d0cff8a1c99a36210cb042b601fe Mon Sep 17 00:00:00 2001 From: Jian He Date: Thu, 7 Sep 2023 16:40:36 -0400 Subject: [PATCH 2/2] set sequence nextval to 1 by setting isUsed to false --- src/SequencesProcessor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SequencesProcessor.ts b/src/SequencesProcessor.ts index 800d5274..40d9085b 100644 --- a/src/SequencesProcessor.ts +++ b/src/SequencesProcessor.ts @@ -69,7 +69,7 @@ export const setSequenceValue = async ( const sql = `SELECT SETVAL(\'"${conversion._schema}"."${seqName}"\', GREATEST( COALESCE((SELECT MAX("${columnName}") FROM "${conversion._schema}"."${tableName}"), 0) - , 1) + , 1), false );`; const params: DBAccessQueryParams = { @@ -145,7 +145,7 @@ export const createIdentity = async (conversion: Conversion, tableName: string): params.sql = `SELECT SETVAL(\'"${conversion._schema}"."${seqName}"\', GREATEST( COALESCE((SELECT MAX("${columnName}") FROM ${fullTableName}), 0) - , 1) + , 1), false );`; const sqlSetSequenceValueResult: DBAccessQueryResult = await DBAccess.query(params);