From 57c62fbe276fd0919facff0ef5ddbfa7efebe031 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 6 Nov 2024 11:12:57 +0100 Subject: [PATCH 1/3] reverted testEqualConstraints --- integration-tests/engines.js | 4 +- packages/tools/src/diffTools.ts | 91 ++++++++++++++------------------- 2 files changed, 41 insertions(+), 54 deletions(-) diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 011af6378..eb14d8c4e 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -188,8 +188,8 @@ const filterLocal = [ // filter local testing '-MySQL', '-MariaDB', - '-PostgreSQL', - 'SQL Server', + 'PostgreSQL', + '-SQL Server', '-SQLite', '-CockroachDB', '-ClickHouse', diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 7b301ea5f..96c259b32 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -392,62 +392,49 @@ function testEqualCheck(a: CheckInfo, b: CheckInfo, opts: DbDiffOptions) { return true; } +// function testEqualConstraints(a: ConstraintInfo, b: ConstraintInfo, opts: DbDiffOptions = {}) { +// if (a.constraintType != b.constraintType) { +// console.debug(`Constraint ${a.pureName}: different constraint type: ${a.constraintType}, ${b.constraintType}`); +// return false; +// } + +// switch (a.constraintType) { +// case 'primaryKey': +// case 'sortingKey': +// return testEqualPrimaryKeys(a as PrimaryKeyInfo, b as PrimaryKeyInfo, opts); +// case 'foreignKey': +// return testEqualForeignKeys(a as ForeignKeyInfo, b as ForeignKeyInfo, opts); +// case 'index': +// return testEqualIndex(a as IndexInfo, b as IndexInfo, opts); +// case 'unique': +// return testEqualUnique(a as UniqueInfo, b as UniqueInfo, opts); +// case 'check': +// return testEqualCheck(a as CheckInfo, b as CheckInfo, opts); +// } + +// console.debug(`Unknown constraint type: ${a.pureName}`); + +// return false; +// } + function testEqualConstraints(a: ConstraintInfo, b: ConstraintInfo, opts: DbDiffOptions = {}) { - if (a.constraintType != b.constraintType) { - console.debug(`Constraint ${a.pureName}: different constraint type: ${a.constraintType}, ${b.constraintType}`); - return false; + const omitList = ['pairingId']; + if (opts.ignoreForeignKeyActions) { + omitList.push('updateAction'); + omitList.push('deleteAction'); + } + if (opts.ignoreConstraintNames) { + omitList.push('constraintName'); + } + if (opts.schemaMode == 'ignore') { + omitList.push('schemaName'); + omitList.push('refSchemaName'); } - switch (a.constraintType) { - case 'primaryKey': - case 'sortingKey': - return testEqualPrimaryKeys(a as PrimaryKeyInfo, b as PrimaryKeyInfo, opts); - case 'foreignKey': - return testEqualForeignKeys(a as ForeignKeyInfo, b as ForeignKeyInfo, opts); - case 'index': - return testEqualIndex(a as IndexInfo, b as IndexInfo, opts); - case 'unique': - return testEqualUnique(a as UniqueInfo, b as UniqueInfo, opts); - case 'check': - return testEqualCheck(a as CheckInfo, b as CheckInfo, opts); - } + const aStringified = stableStringify(_omit(a, omitList)); + const bStringified = stableStringify(_omit(b, omitList)); - console.debug(`Unknown constraint type: ${a.pureName}`); - - return false; - - // const omitList = ['pairingId']; - // if (opts.ignoreForeignKeyActions) { - // omitList.push('updateAction'); - // omitList.push('deleteAction'); - // } - // if (opts.ignoreConstraintNames) { - // omitList.push('constraintName'); - // } - // if (opts.schemaMode == 'ignore') { - // omitList.push('schemaName'); - // omitList.push('refSchemaName'); - // } - - // if (a.constraintType == 'primaryKey' && b.constraintType == 'primaryKey') { - // console.log('PK1', stableStringify(_.omit(a, omitList))); - // console.log('PK2', stableStringify(_.omit(b, omitList))); - // } - - // if (a.constraintType == 'foreignKey' && b.constraintType == 'foreignKey') { - // console.log('FK1', stableStringify(_omit(a, omitList))); - // console.log('FK2', stableStringify(_omit(b, omitList))); - // } - - // if (a.constraintType == 'index' && b.constraintType == 'index') { - // console.log('IX1', stableStringify(_omit(a, omitList))); - // console.log('IX2', stableStringify(_omit(b, omitList))); - // } - - // const aStringified = stableStringify(_omit(a, omitList)); - // const bStringified = stableStringify(_omit(b, omitList)); - - // return aStringified == bStringified; + return aStringified == bStringified; } export function testEqualTypes(a: ColumnInfo, b: ColumnInfo, opts: DbDiffOptions = {}) { From 89a9cc4380d3776a046bd353ac8c04024fa698fa Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 6 Nov 2024 11:21:39 +0100 Subject: [PATCH 2/3] Revert "reverted testEqualConstraints" This reverts commit 57c62fbe276fd0919facff0ef5ddbfa7efebe031. --- integration-tests/engines.js | 4 +- packages/tools/src/diffTools.ts | 91 +++++++++++++++++++-------------- 2 files changed, 54 insertions(+), 41 deletions(-) diff --git a/integration-tests/engines.js b/integration-tests/engines.js index eb14d8c4e..011af6378 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -188,8 +188,8 @@ const filterLocal = [ // filter local testing '-MySQL', '-MariaDB', - 'PostgreSQL', - '-SQL Server', + '-PostgreSQL', + 'SQL Server', '-SQLite', '-CockroachDB', '-ClickHouse', diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 96c259b32..7b301ea5f 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -392,49 +392,62 @@ function testEqualCheck(a: CheckInfo, b: CheckInfo, opts: DbDiffOptions) { return true; } -// function testEqualConstraints(a: ConstraintInfo, b: ConstraintInfo, opts: DbDiffOptions = {}) { -// if (a.constraintType != b.constraintType) { -// console.debug(`Constraint ${a.pureName}: different constraint type: ${a.constraintType}, ${b.constraintType}`); -// return false; -// } - -// switch (a.constraintType) { -// case 'primaryKey': -// case 'sortingKey': -// return testEqualPrimaryKeys(a as PrimaryKeyInfo, b as PrimaryKeyInfo, opts); -// case 'foreignKey': -// return testEqualForeignKeys(a as ForeignKeyInfo, b as ForeignKeyInfo, opts); -// case 'index': -// return testEqualIndex(a as IndexInfo, b as IndexInfo, opts); -// case 'unique': -// return testEqualUnique(a as UniqueInfo, b as UniqueInfo, opts); -// case 'check': -// return testEqualCheck(a as CheckInfo, b as CheckInfo, opts); -// } - -// console.debug(`Unknown constraint type: ${a.pureName}`); - -// return false; -// } - function testEqualConstraints(a: ConstraintInfo, b: ConstraintInfo, opts: DbDiffOptions = {}) { - const omitList = ['pairingId']; - if (opts.ignoreForeignKeyActions) { - omitList.push('updateAction'); - omitList.push('deleteAction'); - } - if (opts.ignoreConstraintNames) { - omitList.push('constraintName'); - } - if (opts.schemaMode == 'ignore') { - omitList.push('schemaName'); - omitList.push('refSchemaName'); + if (a.constraintType != b.constraintType) { + console.debug(`Constraint ${a.pureName}: different constraint type: ${a.constraintType}, ${b.constraintType}`); + return false; } - const aStringified = stableStringify(_omit(a, omitList)); - const bStringified = stableStringify(_omit(b, omitList)); + switch (a.constraintType) { + case 'primaryKey': + case 'sortingKey': + return testEqualPrimaryKeys(a as PrimaryKeyInfo, b as PrimaryKeyInfo, opts); + case 'foreignKey': + return testEqualForeignKeys(a as ForeignKeyInfo, b as ForeignKeyInfo, opts); + case 'index': + return testEqualIndex(a as IndexInfo, b as IndexInfo, opts); + case 'unique': + return testEqualUnique(a as UniqueInfo, b as UniqueInfo, opts); + case 'check': + return testEqualCheck(a as CheckInfo, b as CheckInfo, opts); + } - return aStringified == bStringified; + console.debug(`Unknown constraint type: ${a.pureName}`); + + return false; + + // const omitList = ['pairingId']; + // if (opts.ignoreForeignKeyActions) { + // omitList.push('updateAction'); + // omitList.push('deleteAction'); + // } + // if (opts.ignoreConstraintNames) { + // omitList.push('constraintName'); + // } + // if (opts.schemaMode == 'ignore') { + // omitList.push('schemaName'); + // omitList.push('refSchemaName'); + // } + + // if (a.constraintType == 'primaryKey' && b.constraintType == 'primaryKey') { + // console.log('PK1', stableStringify(_.omit(a, omitList))); + // console.log('PK2', stableStringify(_.omit(b, omitList))); + // } + + // if (a.constraintType == 'foreignKey' && b.constraintType == 'foreignKey') { + // console.log('FK1', stableStringify(_omit(a, omitList))); + // console.log('FK2', stableStringify(_omit(b, omitList))); + // } + + // if (a.constraintType == 'index' && b.constraintType == 'index') { + // console.log('IX1', stableStringify(_omit(a, omitList))); + // console.log('IX2', stableStringify(_omit(b, omitList))); + // } + + // const aStringified = stableStringify(_omit(a, omitList)); + // const bStringified = stableStringify(_omit(b, omitList)); + + // return aStringified == bStringified; } export function testEqualTypes(a: ColumnInfo, b: ColumnInfo, opts: DbDiffOptions = {}) { From 634fe1812709503b86558fbdf5a1e8de65e170ae Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 6 Nov 2024 12:01:43 +0100 Subject: [PATCH 3/3] db diff fix --- integration-tests/engines.js | 4 ++-- packages/tools/src/diffTools.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 011af6378..eb14d8c4e 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -188,8 +188,8 @@ const filterLocal = [ // filter local testing '-MySQL', '-MariaDB', - '-PostgreSQL', - 'SQL Server', + 'PostgreSQL', + '-SQL Server', '-SQLite', '-CockroachDB', '-ClickHouse', diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 7b301ea5f..73911720e 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -358,6 +358,7 @@ function testEqualColumnRefs(a: ColumnReference[], b: ColumnReference[], opts: D if (!testEqualNames(a[i].columnName, b[i].columnName, opts)) return false; if (!testEqualNames(a[i].refColumnName, b[i].refColumnName, opts)) return false; } + return true; } function testEqualPrimaryKeys(a: PrimaryKeyInfo, b: PrimaryKeyInfo, opts: DbDiffOptions) {