Skip to content

Commit

Permalink
Additional changes to fix some minor bugs.
Browse files Browse the repository at this point in the history
  • Loading branch information
Curlack committed Nov 1, 2023
1 parent b13ebd5 commit b0649a0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ namespace PetaPoco.Tests.Integration.Databases.Oracle
{
public abstract partial class OracleDatabaseTests : DatabaseTests
{
protected OracleDatabaseTests(TestProvider provider)
private OracleTestProvider _provider;

protected OracleDatabaseTests(OracleTestProvider provider)
: base(provider)
{
_provider = provider;
}

[Collection("Oracle.Delimited")]
Expand All @@ -29,17 +32,18 @@ public Ordinary()
}

/// <remarks>
/// We need to retain the custom provider and default mapper specified in the test provider
/// to ensure correct logic is applied.
/// We need to retain the provider and mapper specified in the test provider
/// to ensure correct logic is applied, because they might be custom implementations.
/// </remarks>
protected override void AfterDbCreate(Database db)
{
var thisDb = _provider.GetDatabase();
base.AfterDbCreate(db);

// ReSharper disable once PossibleNullReferenceException
db.GetType().GetField("_provider", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, DB.Provider);
db.GetType().GetField("_provider", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, thisDb.Provider);
// ReSharper disable once PossibleNullReferenceException
db.GetType().GetField("_defaultMapper", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, DB.DefaultMapper);
db.GetType().GetField("_defaultMapper", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, thisDb.DefaultMapper);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ public override void QueryMultiple_ForSingleResultsSetWithSinglePoco_ShouldRetur
var pdName = pd.Columns.Values.First(c => c.PropertyInfo.Name == "Name").ColumnName;

var sql = $@"SELECT *
FROM {DB.Provider.EscapeTableName(pd.TableInfo.TableName)}
WHERE {DB.Provider.EscapeSqlIdentifier(pdName)} LIKE @0 || '%'";
FROM {DB.Provider.EscapeTableName(pd.TableInfo.TableName)}
WHERE {DB.Provider.EscapeSqlIdentifier(pdName)} LIKE @0 || '%'";

List<Person> result;
using (var multi = DB.QueryMultiple(sql, "Peta"))
Expand Down Expand Up @@ -174,21 +174,21 @@ public override void QueryMultiple_ForSingleResultsSetWithMultiPoco_ShouldReturn
var odPersonId = od.Columns.Values.First(c => c.PropertyInfo.Name == "PersonId").ColumnName;

//Oracle 12c and above only
// var sql = $@"SELECT *
//FROM {DB.Provider.EscapeTableName(od.TableInfo.TableName)} o
// INNER JOIN {DB.Provider.EscapeTableName(pd.TableInfo.TableName)} p ON p.{DB.Provider.EscapeSqlIdentifier(pdId)} = o.{DB.Provider.EscapeSqlIdentifier(odPersonId)}
//WHERE p.{DB.Provider.EscapeSqlIdentifier(pdName)} = @0
//ORDER BY 1 DESC
//FETCH FIRST 1 ROWS ONLY";
// var sql = $@"SELECT *
//FROM {DB.Provider.EscapeTableName(od.TableInfo.TableName)} o
// INNER JOIN {DB.Provider.EscapeTableName(pd.TableInfo.TableName)} p ON p.{DB.Provider.EscapeSqlIdentifier(pdId)} = o.{DB.Provider.EscapeSqlIdentifier(odPersonId)}
//WHERE p.{DB.Provider.EscapeSqlIdentifier(pdName)} = @0
//ORDER BY 1 DESC
//FETCH FIRST 1 ROWS ONLY";

var sql = $@"SELECT *
FROM (SELECT *
FROM {DB.Provider.EscapeTableName(od.TableInfo.TableName)} o
INNER JOIN {DB.Provider.EscapeTableName(pd.TableInfo.TableName)} p
ON p.{DB.Provider.EscapeSqlIdentifier(pdId)} = o.{DB.Provider.EscapeSqlIdentifier(odPersonId)}
WHERE p.{DB.Provider.EscapeSqlIdentifier(pdName)} = @0
ORDER BY 1 DESC)
WHERE ROWNUM <= 1";
FROM (SELECT *
FROM {DB.Provider.EscapeTableName(od.TableInfo.TableName)} o
INNER JOIN {DB.Provider.EscapeTableName(pd.TableInfo.TableName)} p
ON p.{DB.Provider.EscapeSqlIdentifier(pdId)} = o.{DB.Provider.EscapeSqlIdentifier(odPersonId)}
WHERE p.{DB.Provider.EscapeSqlIdentifier(pdName)} = @0
ORDER BY 1 DESC)
WHERE ROWNUM <= 1";

List<Order> result;
using (var multi = DB.QueryMultiple(sql, "Peta0"))
Expand Down
2 changes: 2 additions & 0 deletions PetaPoco.Tests.Integration/Providers/OracleTestProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public abstract class OracleTestProvider : TestProvider

protected override string ScriptResourceName => _resources[(int)_phase];

public IDatabase GetDatabase() => Database;

public override IDatabase Execute()
{
EnsureDatabaseSetup();
Expand Down

0 comments on commit b0649a0

Please sign in to comment.