Skip to content

Commit 42aec43

Browse files
committed
Add comments and fix obsolete code
1 parent e43d86c commit 42aec43

3 files changed

Lines changed: 10 additions & 13 deletions

File tree

src/PhenX.EntityFrameworkCore.BulkInsert.Oracle/OracleBulkInsertOptions.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ public class OracleBulkInsertOptions : BulkInsertOptions
1111
{
1212
/// <inheritdoc cref="OracleBulkCopyOptions"/>
1313
public OracleBulkCopyOptions CopyOptions { get; set; } = OracleBulkCopyOptions.Default;
14-
1514
}

src/PhenX.EntityFrameworkCore.BulkInsert.Oracle/OracleBulkInsertProvider.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ internal class OracleBulkInsertProvider(ILogger<OracleBulkInsertProvider>? logge
2020
protected override string AddTableCopyBulkInsertId => ""; // No need to add an ID column in Oracle
2121

2222
/// <inheritdoc />
23+
/// <summary>
24+
/// The temporary table name is generated with a GUID to ensure uniqueness, but limited to less than 30 characters,
25+
/// because Oracle prior 12.2 has a limit of 30 characters for identifiers.
26+
/// </summary>
2327
protected override string GetTempTableName(string tableName) => $"#temp_bulk_insert_{Guid.NewGuid().ToString("N")[..8]}";
2428

2529
protected override OracleBulkInsertOptions CreateDefaultOptions() => new()

src/PhenX.EntityFrameworkCore.BulkInsert.Oracle/OracleDialectBuilder.cs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,16 @@ public override string BuildMoveDataSql<T>(
4949
throw new InvalidOperationException("Table has no primary key that can be used for conflict detection.");
5050
}
5151

52-
q.AppendLine($"MERGE INTO {target.QuotedTableName} AS TARGET");
52+
q.AppendLine($"MERGE INTO {target.QuotedTableName} AS {PseudoTableInserted}");
5353

5454
q.Append("USING (SELECT ");
5555
q.AppendColumns(insertedColumns);
56-
q.Append($" FROM {source}) AS SOURCE (");
56+
q.Append($" FROM {source}) AS {PseudoTableExcluded} (");
5757
q.AppendColumns(insertedColumns);
5858
q.AppendLine(")");
5959

6060
q.Append("ON ");
61-
q.AppendJoin(" AND ", matchColumns, (b, col) => b.Append($"TARGET.{col} = SOURCE.{col}"));
61+
q.AppendJoin(" AND ", matchColumns, (b, col) => b.Append($"{PseudoTableInserted}.{col} = {PseudoTableExcluded}.{col}"));
6262
q.AppendLine();
6363

6464
if (onConflictTyped.Update != null)
@@ -75,13 +75,13 @@ public override string BuildMoveDataSql<T>(
7575
q.AppendLine(")");
7676

7777
q.Append("VALUES (");
78-
q.AppendJoin(", ", insertedColumns, (b, col) => b.Append($"SOURCE.{col.QuotedColumName}"));
78+
q.AppendJoin(", ", insertedColumns, (b, col) => b.Append($"{PseudoTableExcluded}.{col.QuotedColumName}"));
7979
q.AppendLine(")");
8080

8181
if (returnedColumns.Count != 0)
8282
{
8383
q.Append("OUTPUT ");
84-
q.AppendJoin(", ", returnedColumns, (b, col) => b.Append($"INSERTED.{col.QuotedColumName} AS {col.QuotedColumName}"));
84+
q.AppendJoin(", ", returnedColumns, (b, col) => b.Append($"{PseudoTableInserted}.{col.QuotedColumName} AS {col.QuotedColumName}"));
8585
q.AppendLine();
8686
}
8787
}
@@ -110,12 +110,6 @@ public override string BuildMoveDataSql<T>(
110110

111111
q.AppendLine(";");
112112

113-
var result = q.ToString();
114-
return result;
115-
}
116-
117-
protected override string GetExcludedColumnName(string columnName)
118-
{
119-
return $"SOURCE.{columnName}";
113+
return q.ToString();
120114
}
121115
}

0 commit comments

Comments
 (0)