Skip to content

Commit

Permalink
handle all types of db
Browse files Browse the repository at this point in the history
  • Loading branch information
JFriel committed Feb 4, 2025
1 parent dccd3db commit 4761d77
Showing 1 changed file with 38 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
using System.Linq;
using System.Threading.Tasks;
using FAnsi;
using FAnsi.Discovery;
using FAnsi.Discovery.QuerySyntax;
using MySqlConnector;
using Rdmp.Core.Curation.Data;
using Rdmp.Core.DataExport.Data;
using Rdmp.Core.DataExport.DataExtraction.Commands;
Expand Down Expand Up @@ -177,17 +177,44 @@ private static string RandomString(int length)

private void CreateCohortTempTable(DbConnection con, IDataLoadEventListener listener)
{
var db = _externalCohortTable.Discover();
_uuid = $"#{RandomString(24)}";
var sql = $"""
SELECT *
INTO {_uuid}
FROM(
SELECT * FROM {_externalCohortTable.TableName}
WHERE {_whereSQL}
) as cohortTempTable
""";
var sql = "";
var db = _externalCohortTable.Discover();
switch (db.Server.DatabaseType)
{
case DatabaseType.MicrosoftSQLServer:
sql = $"""
SELECT *
INTO {_uuid}
FROM(
SELECT * FROM {_externalCohortTable.TableName}
WHERE {_whereSQL}
) as cohortTempTable
""";
break;
case DatabaseType.MySql:
sql = $"""
CREATE TEMPORARY TABLE {_uuid} ENGINE=MEMORY
as (SELECT * FROM {_externalCohortTable.TableName} WHERE {_whereSQL})
""";
break;
case DatabaseType.Oracle:
sql= $"""
CREATE TEMPORARY TABLE {_uuid} SELECT * FROM {_externalCohortTable.TableName} WHERE {_whereSQL}
""";
break;
case DatabaseType.PostgreSql:
sql= $"""
CREATE TEMP TABLE {_uuid} AS
SELECT * FROM {_externalCohortTable.TableName} WHERE {_whereSQL}
""";
break;
default:
listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Warning, $"Unable to create temporary table for cohort. Original cohort table will be used"));
return;


}
listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, $"About to copy the cohort into a temporary table using the SQL: {sql}"));

using var cmd = db.Server.GetCommand(sql, con);
Expand Down

0 comments on commit 4761d77

Please sign in to comment.