Skip to content

Commit

Permalink
Issue #31: fixing Oracle SQL script to work with latest version 21 (#39)
Browse files Browse the repository at this point in the history
* Issue #31: fixing Oracle SQL script to work with latest version 21

* Fixing build warnings

* Fixing Oracle XE connection string

* Issue #31: fixing Oracle SQL script to work with latest version 21 (part 2)
  • Loading branch information
lerocha authored Jan 29, 2024
1 parent 42f107a commit 488a769
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 32 deletions.
3 changes: 2 additions & 1 deletion ChinookDatabase.Test/ChinookDatabase.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Nullable>disable</Nullable>
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion ChinookDatabase.Test/appsettings.test.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"Chinook_Db2": "Server=localhost;Database=Chinook;User Id=chinook;Password=chinook",
"Chinook_MySql": "Server=localhost;Database=Chinook;Uid=chinook;Pwd=chinook;",
"Chinook_MySql_AutoIncrement": "Server=localhost;Database=Chinook_AutoIncrement;Uid=chinook;Pwd=chinook;",
"Chinook_Oracle": "Data Source=xe;User Id=chinook;Password=chinook;",
"Chinook_Oracle": "Data Source=localhost:1521/XEPDB1;User Id=c##chinook;Password=chinook;",
"Chinook_PostgreSql": "Server=localhost;Database=Chinook;User Id=chinook;Password=chinook;",
"Chinook_Sqlite": "Data Source=..\\..\\..\\ChinookDatabase\\DataSources\\Chinook_Sqlite.sqlite",
"Chinook_Sqlite_AutoIncrement": "Data Source=..\\..\\..\\ChinookDatabase\\DataSources\\Chinook_Sqlite_AutoIncrementPKs.sqlite",
Expand Down
3 changes: 2 additions & 1 deletion ChinookDatabase/ChinookDatabase.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Nullable>disable</Nullable>
<NoWarn>$(NoWarn);SYSLIB0051</NoWarn>
</PropertyGroup>

<ItemGroup>
Expand Down
18 changes: 9 additions & 9 deletions ChinookDatabase/DataSources/Chinook_Oracle.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,27 @@
/*******************************************************************************
Drop database if it exists
********************************************************************************/
DROP USER chinook CASCADE;
DROP USER c##chinook CASCADE;


/*******************************************************************************
Create database
********************************************************************************/
CREATE USER chinook
IDENTIFIED BY p4ssw0rd
CREATE USER c##chinook
IDENTIFIED BY chinook
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 10M ON users;

GRANT connect to chinook;
GRANT resource to chinook;
GRANT create session TO chinook;
GRANT create table TO chinook;
GRANT create view TO chinook;
GRANT connect to c##chinook;
GRANT resource to c##chinook;
GRANT create session TO c##chinook;
GRANT create table TO c##chinook;
GRANT create view TO c##chinook;



conn chinook/p4ssw0rd
conn c##chinook/chinook


/*******************************************************************************
Expand Down
23 changes: 13 additions & 10 deletions ChinookDatabase/DdlStrategies/OracleStrategy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,28 +38,28 @@ public override string FormatDateValue(string value)
_ => "error_" + column.DataType
};

public override string WriteDropDatabase(string databaseName) => $"DROP USER {databaseName.ToLower()} CASCADE;";
public override string WriteDropDatabase(string databaseName) => $"DROP USER {GetUsername(databaseName)} CASCADE;";

public override string WriteCreateDatabase(string databaseName)
{
var name = databaseName.ToLower();
var username = GetUsername(databaseName);
var builder = new StringBuilder();

builder.AppendFormat("CREATE USER {0}\r\n", name)
.AppendFormat("IDENTIFIED BY p4ssw0rd\r\n")
builder.AppendFormat("CREATE USER {0}\r\n", username)
.AppendFormat("IDENTIFIED BY {0}\r\n", GetPassword(databaseName))
.AppendFormat("DEFAULT TABLESPACE users\r\n")
.AppendFormat("TEMPORARY TABLESPACE temp\r\n")
.AppendFormat("QUOTA 10M ON users;\r\n\r\n")
.AppendFormat("GRANT connect to {0};\r\n", name)
.AppendFormat("GRANT resource to {0};\r\n", name)
.AppendFormat("GRANT create session TO {0};\r\n", name)
.AppendFormat("GRANT create table TO {0};\r\n", name)
.AppendFormat("GRANT create view TO {0};\r\n", name);
.AppendFormat("GRANT connect to {0};\r\n", username)
.AppendFormat("GRANT resource to {0};\r\n", username)
.AppendFormat("GRANT create session TO {0};\r\n", username)
.AppendFormat("GRANT create table TO {0};\r\n", username)
.AppendFormat("GRANT create view TO {0};\r\n", username);

return builder.ToString();
}

public override string WriteUseDatabase(string databaseName) => $"conn {databaseName.ToLower()}/p4ssw0rd";
public override string WriteUseDatabase(string databaseName) => $"conn {GetUsername(databaseName)}/{GetPassword(databaseName)}";

public override string WriteForeignKeyDeleteAction(ForeignKeyConstraint foreignKeyConstraint) => foreignKeyConstraint.DeleteRule switch
{
Expand All @@ -70,6 +70,9 @@ public override string WriteCreateDatabase(string databaseName)
public override string WriteForeignKeyUpdateAction(ForeignKeyConstraint foreignKeyConstraint) => string.Empty;

public override string WriteFinishCommit() => "commit;\r\nexit;";

private static string GetUsername(String databaseName) => $"c##{databaseName.ToLower()}";
private static string GetPassword(String databaseName) => databaseName.ToLower();
}

}
23 changes: 13 additions & 10 deletions ChinookDatabase/_T4Templates/Chinook.ttinclude
Original file line number Diff line number Diff line change
Expand Up @@ -6550,28 +6550,28 @@
_ => "error_" + column.DataType
};

public override string WriteDropDatabase(string databaseName) => $"DROP USER {databaseName.ToLower()} CASCADE;";
public override string WriteDropDatabase(string databaseName) => $"DROP USER {GetUsername(databaseName)} CASCADE;";

public override string WriteCreateDatabase(string databaseName)
{
var name = databaseName.ToLower();
var username = GetUsername(databaseName);
var builder = new StringBuilder();

builder.AppendFormat("CREATE USER {0}\r\n", name)
.AppendFormat("IDENTIFIED BY p4ssw0rd\r\n")
builder.AppendFormat("CREATE USER {0}\r\n", username)
.AppendFormat("IDENTIFIED BY {0}\r\n", GetPassword(databaseName))
.AppendFormat("DEFAULT TABLESPACE users\r\n")
.AppendFormat("TEMPORARY TABLESPACE temp\r\n")
.AppendFormat("QUOTA 10M ON users;\r\n\r\n")
.AppendFormat("GRANT connect to {0};\r\n", name)
.AppendFormat("GRANT resource to {0};\r\n", name)
.AppendFormat("GRANT create session TO {0};\r\n", name)
.AppendFormat("GRANT create table TO {0};\r\n", name)
.AppendFormat("GRANT create view TO {0};\r\n", name);
.AppendFormat("GRANT connect to {0};\r\n", username)
.AppendFormat("GRANT resource to {0};\r\n", username)
.AppendFormat("GRANT create session TO {0};\r\n", username)
.AppendFormat("GRANT create table TO {0};\r\n", username)
.AppendFormat("GRANT create view TO {0};\r\n", username);

return builder.ToString();
}

public override string WriteUseDatabase(string databaseName) => $"conn {databaseName.ToLower()}/p4ssw0rd";
public override string WriteUseDatabase(string databaseName) => $"conn {GetUsername(databaseName)}/{GetPassword(databaseName)}";

public override string WriteForeignKeyDeleteAction(ForeignKeyConstraint foreignKeyConstraint) => foreignKeyConstraint.DeleteRule switch
{
Expand All @@ -6582,6 +6582,9 @@
public override string WriteForeignKeyUpdateAction(ForeignKeyConstraint foreignKeyConstraint) => string.Empty;

public override string WriteFinishCommit() => "commit;\r\nexit;";

private static string GetUsername(String databaseName) => $"c##{databaseName.ToLower()}";
private static string GetPassword(String databaseName) => databaseName.ToLower();
}


Expand Down

0 comments on commit 488a769

Please sign in to comment.