From dc7eca82a436cf7dbaa55d502a62fbe56fae03dd Mon Sep 17 00:00:00 2001 From: Jiri Prajz Date: Sun, 21 May 2023 14:19:10 +0200 Subject: [PATCH 1/4] Fixed build UpsertType SQL command for PostgreSQL. --- .../Generators/AbstractSqlCommandGenerator.cs | 5 +++-- .../Origam.DA.Service/Generators/MsSqlCommandGenerator.cs | 4 ++++ .../Origam.DA.Service/Generators/PgSqlCommandGenerator.cs | 6 +++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index 3ac5caefa7..4ed34f8121 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -1409,9 +1409,9 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) keysBuilder.Append(", "); searchPredicatesBuilder.Append(" AND "); } - keysBuilder.AppendFormat("{0} as {1}", + keysBuilder.AppendFormat(BuildUpsertONConflictKey( paramName, - fieldName); + fieldName)); searchPredicatesBuilder.AppendFormat("{0}.{1} = src.{1}", tableName, fieldName); keys++; @@ -1446,6 +1446,7 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) return sqlExpression.ToString(); } + protected abstract string BuildUpsertONConflictKey(string paramName, string fieldName); internal abstract string MergeSql(string tableName, StringBuilder keysBuilder, StringBuilder searchPredicatesBuilder, StringBuilder updateBuilder, StringBuilder insertColumnsBuilder, StringBuilder insertValuesBuilder); public string InsertSql(DataStructure ds, DataStructureEntity entity) diff --git a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs index fea6193a14..02ee1ff12d 100644 --- a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs @@ -469,5 +469,9 @@ protected override string SqlPrimaryIndex() { return " PRIMARY KEY NONCLUSTERED"; } + protected override string BuildUpsertONConflictKey(string paramName, string fieldName) + { + return string.Format("{0} as {1}", paramName, fieldName); + } } } \ No newline at end of file diff --git a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs index 3564c34f7b..e1cf1ede14 100644 --- a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs @@ -230,7 +230,7 @@ internal override string MergeSql(string tableName, StringBuilder keysBuilder, S { StringBuilder sqlExpression = new StringBuilder(); return sqlExpression.AppendFormat( - "INSERT INTO {0} ({1}) VALUES ({2}) ON CONFLICT {3} DO UPDATE SET {4};", + "INSERT INTO {0} ({1}) VALUES ({2}) ON CONFLICT ({3}) DO UPDATE SET {4};", tableName, insertColumnsBuilder, insertValuesBuilder, @@ -415,5 +415,9 @@ protected override string SqlPrimaryIndex() return " PRIMARY KEY"; } + protected override string BuildUpsertONConflictKey(string paramName, string fieldName) + { + return fieldName; + } } } \ No newline at end of file From 5d96b09ed49d2c691794c7452f5d999dbbac9158 Mon Sep 17 00:00:00 2001 From: "jiri.prajz" Date: Mon, 22 May 2023 12:22:30 +0200 Subject: [PATCH 2/4] Improved Typo. --- .../Generators/AbstractSqlCommandGenerator.cs | 5 ++--- .../Origam.DA.Service/Generators/MsSqlCommandGenerator.cs | 2 +- .../Origam.DA.Service/Generators/PgSqlCommandGenerator.cs | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index 4ed34f8121..a4d7029de2 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -1409,7 +1409,7 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) keysBuilder.Append(", "); searchPredicatesBuilder.Append(" AND "); } - keysBuilder.AppendFormat(BuildUpsertONConflictKey( + keysBuilder.AppendFormat(RenderUpsetKey( paramName, fieldName)); searchPredicatesBuilder.AppendFormat("{0}.{1} = src.{1}", @@ -1445,8 +1445,6 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) insertValuesBuilder)); return sqlExpression.ToString(); } - - protected abstract string BuildUpsertONConflictKey(string paramName, string fieldName); internal abstract string MergeSql(string tableName, StringBuilder keysBuilder, StringBuilder searchPredicatesBuilder, StringBuilder updateBuilder, StringBuilder insertColumnsBuilder, StringBuilder insertValuesBuilder); public string InsertSql(DataStructure ds, DataStructureEntity entity) @@ -4044,6 +4042,7 @@ var placeholderElements } return output; } + internal abstract string RenderUpsetKey(string paramName, string fieldName); #endregion #region Operators diff --git a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs index 02ee1ff12d..c8076c5d5e 100644 --- a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs @@ -469,7 +469,7 @@ protected override string SqlPrimaryIndex() { return " PRIMARY KEY NONCLUSTERED"; } - protected override string BuildUpsertONConflictKey(string paramName, string fieldName) + protected override string RenderUpsetKey(string paramName, string fieldName) { return string.Format("{0} as {1}", paramName, fieldName); } diff --git a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs index e1cf1ede14..551fe6cf1b 100644 --- a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs @@ -415,7 +415,7 @@ protected override string SqlPrimaryIndex() return " PRIMARY KEY"; } - protected override string BuildUpsertONConflictKey(string paramName, string fieldName) + protected override string RenderUpsetKey(string paramName, string fieldName) { return fieldName; } From 0f3842cd6a16687fa4c94e3865630e3c19922a85 Mon Sep 17 00:00:00 2001 From: "jiri.prajz" Date: Mon, 22 May 2023 12:47:09 +0200 Subject: [PATCH 3/4] Fixed less access abstract function. --- .../Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index a4d7029de2..1cbccfc485 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -4042,7 +4042,7 @@ var placeholderElements } return output; } - internal abstract string RenderUpsetKey(string paramName, string fieldName); + protected abstract string RenderUpsetKey(string paramName, string fieldName); #endregion #region Operators From 171b912e4bb21f1ad8082ba75de53d0e4060f658 Mon Sep 17 00:00:00 2001 From: "jiri.prajz" Date: Mon, 22 May 2023 13:27:03 +0200 Subject: [PATCH 4/4] Fixed Typo --- .../Generators/AbstractSqlCommandGenerator.cs | 4 ++-- backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs | 2 +- backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index 1cbccfc485..d887cb8f92 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -1409,7 +1409,7 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) keysBuilder.Append(", "); searchPredicatesBuilder.Append(" AND "); } - keysBuilder.AppendFormat(RenderUpsetKey( + keysBuilder.AppendFormat(RenderUpsertKey( paramName, fieldName)); searchPredicatesBuilder.AppendFormat("{0}.{1} = src.{1}", @@ -4042,7 +4042,7 @@ var placeholderElements } return output; } - protected abstract string RenderUpsetKey(string paramName, string fieldName); + protected abstract string RenderUpsertKey(string paramName, string fieldName); #endregion #region Operators diff --git a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs index c8076c5d5e..78861e566b 100644 --- a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs @@ -469,7 +469,7 @@ protected override string SqlPrimaryIndex() { return " PRIMARY KEY NONCLUSTERED"; } - protected override string RenderUpsetKey(string paramName, string fieldName) + protected override string RenderUpsertKey(string paramName, string fieldName) { return string.Format("{0} as {1}", paramName, fieldName); } diff --git a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs index 551fe6cf1b..abb5525bbd 100644 --- a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs @@ -415,7 +415,7 @@ protected override string SqlPrimaryIndex() return " PRIMARY KEY"; } - protected override string RenderUpsetKey(string paramName, string fieldName) + protected override string RenderUpsertKey(string paramName, string fieldName) { return fieldName; }