Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit ac22464

Browse files
committed
Fix firebird tests
1 parent bbdca0a commit ac22464

11 files changed

+69
-52
lines changed

lib/ServiceStack.Client.dll

0 Bytes
Binary file not shown.

lib/ServiceStack.Common.dll

0 Bytes
Binary file not shown.

lib/ServiceStack.Interfaces.dll

0 Bytes
Binary file not shown.

src/ServiceStack.OrmLite.Firebird/FirebirdOrmLiteDialectProvider.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ public override string ToCreateTableStatement(Type tableType)
293293
var modelDef = GetModel(tableType);
294294
foreach (var fieldDef in modelDef.FieldDefinitions)
295295
{
296+
if (fieldDef.CustomSelect != null)
297+
continue;
298+
296299
if (fieldDef.IsPrimaryKey)
297300
sbPk.AppendFormat(sbPk.Length != 0 ? ",{0}" : "{0}", GetQuotedColumnName(fieldDef.FieldName));
298301

@@ -657,20 +660,6 @@ public override string EscapeWildcards(string value)
657660
.Replace("%", @"^%");
658661
}
659662

660-
public override string GetColumnNames(ModelDefinition modelDef)
661-
{
662-
var sqlColumns = StringBuilderCache.Allocate();
663-
foreach (var field in modelDef.FieldDefinitions)
664-
{
665-
if (sqlColumns.Length > 0)
666-
sqlColumns.Append(", ");
667-
668-
sqlColumns.Append(field.GetQuotedName(this));
669-
}
670-
671-
return StringBuilderCache.ReturnAndFree(sqlColumns);
672-
}
673-
674663
public override string GetQuotedName(string fieldName)
675664
{
676665
return Quote(fieldName);
@@ -740,13 +729,14 @@ public override bool DoesColumnExist(IDbConnection db, string columnName, string
740729
var table = GetTableName(tableName, schema);
741730

742731
if (!QuoteNames & !RESERVED.Contains(tableName.ToUpper()))
743-
table = tableName.ToUpper();
732+
table = table.ToUpper();
744733

745734
var sql = "SELECT COUNT(*) FROM RDB$RELATION_FIELDS "
746735
+ " WHERE RDB$RELATION_FIELDS.RDB$RELATION_NAME = UPPER(@table)"
747736
+ " AND RDB$RELATION_FIELDS.RDB$FIELD_NAME = UPPER(@columnName)";
748737

749738
var result = db.SqlScalar<long>(sql, new { table, columnName });
739+
750740
return result > 0;
751741
}
752742

@@ -836,6 +826,16 @@ public override string ToSelectStatement(ModelDefinition modelDef,
836826

837827
return StringBuilderCache.ReturnAndFree(sb);
838828
}
829+
830+
public override void DropColumn(IDbConnection db, Type modelType, string columnName)
831+
{
832+
var provider = db.GetDialectProvider();
833+
var command = string.Format("ALTER TABLE {0} DROP {1};",
834+
provider.GetQuotedTableName(modelType.GetModelMetadata().ModelName),
835+
provider.GetQuotedColumnName(columnName));
836+
837+
db.ExecuteSql(command);
838+
}
839839
}
840840
}
841841

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ string ToSelectFromProcedureStatement(object fromObjWithProperties,
156156
bool DoesColumnExist(IDbConnection db, string columnName, string tableName, string schema = null);
157157
bool DoesSequenceExist(IDbCommand dbCmd, string sequencName);
158158

159+
void DropColumn(IDbConnection db, Type modelType, string columnName);
160+
159161
ulong FromDbRowVersion(object value);
160162
SelectItem GetRowVersionColumnName(FieldDefinition field);
161163

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,16 @@ public virtual string ToRowCountStatement(string innerSql)
15111511
return "SELECT COUNT(*) FROM ({0}) AS COUNT".Fmt(innerSql);
15121512
}
15131513

1514+
public virtual void DropColumn(IDbConnection db, Type modelType, string columnName)
1515+
{
1516+
var provider = db.GetDialectProvider();
1517+
var command = string.Format("ALTER TABLE {0} DROP COLUMN {1};",
1518+
provider.GetQuotedTableName(modelType.GetModelDefinition().ModelName),
1519+
provider.GetQuotedColumnName(columnName));
1520+
1521+
db.ExecuteSql(command);
1522+
}
1523+
15141524
//Async API's, should be overrided by Dialect Providers to use .ConfigureAwait(false)
15151525
//Default impl below uses TaskAwaiter shim in async.cs
15161526

src/ServiceStack.OrmLite/OrmLiteSchemaModifyApi.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,9 @@ public static void DropColumn<T>(this IDbConnection dbConn, string columnName)
8484
dbConn.DropColumn(typeof(T), columnName);
8585
}
8686

87-
8887
public static void DropColumn(this IDbConnection dbConn, Type modelType, string columnName)
8988
{
90-
var provider = dbConn.GetDialectProvider();
91-
var command = string.Format("ALTER TABLE {0} DROP COLUMN {1};",
92-
provider.GetQuotedTableName(modelType.GetModelDefinition().ModelName),
93-
provider.GetQuotedColumnName(columnName));
94-
95-
dbConn.ExecuteSql(command);
89+
dbConn.GetDialectProvider().DropColumn(dbConn, modelType, columnName);
9690
}
9791

9892
public static void AddForeignKey<T, TForeign>(this IDbConnection dbConn,

tests/ServiceStack.OrmLite.Tests/AutoQueryTests.cs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,9 @@ public void Can_use_dynamic_apis_on_Custom_Select()
211211

212212
var resultsMap = db.Select<Dictionary<string, object>>(q);
213213
Assert.That(resultsMap.Count, Is.EqualTo(2));
214-
Assert.That(resultsMap[0].ContainsKey("FirstName"));
215-
Assert.That(!resultsMap[0].ContainsKey("Id"));
214+
var row = new Dictionary<string,object>(resultsMap[0], StringComparer.OrdinalIgnoreCase);
215+
Assert.That(row.ContainsKey("FirstName"));
216+
Assert.That(!row.ContainsKey("Id"));
216217

217218
var resultsList = db.Select<List<object>>(q);
218219
Assert.That(resultsList.Count, Is.EqualTo(2));
@@ -221,8 +222,16 @@ public void Can_use_dynamic_apis_on_Custom_Select()
221222
var resultsDynamic = db.Select<dynamic>(q);
222223
Assert.That(resultsDynamic.Count, Is.EqualTo(2));
223224
var map = (IDictionary<string, object>) resultsDynamic[0];
224-
Assert.That(map.ContainsKey("FirstName"));
225-
Assert.That(!map.ContainsKey("Id"));
225+
if (Dialect != Dialect.Firebird)
226+
{
227+
Assert.That(map.ContainsKey("FirstName"));
228+
Assert.That(!map.ContainsKey("Id"));
229+
}
230+
else
231+
{
232+
Assert.That(map.ContainsKey("FIRSTNAME"));
233+
Assert.That(!map.ContainsKey("ID"));
234+
}
226235
}
227236
}
228237

@@ -357,20 +366,18 @@ public void Can_Select_custom_fields_using_dynamic()
357366
.Join<Department2>()
358367
.Select<DeptEmployee, Department2>(
359368
(de, d2) => new { de.FirstName, de.LastName, d2.Name });
360-
361369
var results = db.Select<dynamic>(q);
370+
db.GetLastSql().Print();
362371

363372
var sb = new StringBuilder();
364373
foreach (var result in results)
365374
{
366-
if (Dialect != Dialect.PostgreSql)
367-
{
368-
sb.AppendLine(result.FirstName + "," + result.LastName + "," + result.Name);
369-
}
370-
else
371-
{
375+
if (Dialect == Dialect.PostgreSql)
372376
sb.AppendLine(result.first_name + "," + result.last_name + "," + result.name);
373-
}
377+
else if (Dialect == Dialect.Firebird)
378+
sb.AppendLine(result.FIRSTNAME + "," + result.LASTNAME + "," + result.NAME);
379+
else
380+
sb.AppendLine(result.FirstName + "," + result.LastName + "," + result.Name);
374381
}
375382

376383
Assert.That(sb.ToString().NormalizeNewLines(), Is.EqualTo(
@@ -385,14 +392,12 @@ public void Can_Select_custom_fields_using_dynamic()
385392
sb.Length = 0;
386393
foreach (var result in results)
387394
{
388-
if (Dialect != Dialect.PostgreSql)
389-
{
390-
sb.AppendLine(result.Name);
391-
}
392-
else
393-
{
395+
if (Dialect == Dialect.PostgreSql)
394396
sb.AppendLine(result.name);
395-
}
397+
else if (Dialect == Dialect.Firebird)
398+
sb.AppendLine(result.NAME);
399+
else
400+
sb.AppendLine(result.Name);
396401
}
397402

398403
Assert.That(sb.ToString().NormalizeNewLines(), Is.EqualTo("Dept 1\nDept 2\nDept 3\n"));

tests/ServiceStack.OrmLite.Tests/Issues/SqlExpressionSubSqlExpressionIssue.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,22 @@ public class AnyObjectClass
2323

2424
public class SqlExpressionSubSqlExpressionIssue : OrmLiteTestBase
2525
{
26+
private static void RecreateAnyObjectTables(IDbConnection db)
27+
{
28+
db.DropTable<AnyObjectClassItem>();
29+
db.DropTable<AnyObjectClass>();
30+
db.CreateTable<AnyObjectClass>();
31+
db.CreateTable<AnyObjectClassItem>();
32+
}
33+
2634
[Test]
2735
public void Can_compare_null_constant_in_subquery()
2836
{
2937
LogManager.LogFactory = new ConsoleLogFactory();
3038

3139
using (var db = OpenDbConnection())
3240
{
33-
db.DropAndCreateTable<AnyObjectClass>();
41+
RecreateAnyObjectTables(db);
3442

3543
var inQ = db.From<AnyObjectClass>()
3644
.Where(y => y.Identity != null)
@@ -51,7 +59,7 @@ public void Can_compare_null_constant_in_subquery_nested_in_SqlExpression()
5159

5260
using (var db = OpenDbConnection())
5361
{
54-
db.DropAndCreateTable<AnyObjectClass>();
62+
RecreateAnyObjectTables(db);
5563

5664
var q = db.From<AnyObjectClass>().Where(x => Sql.In(x.Identity,
5765
db.From<AnyObjectClass>()
@@ -149,10 +157,7 @@ public void Can_select_sub_expression_when_called_within_a_datamodel()
149157
{
150158
using (var db = OpenDbConnection())
151159
{
152-
db.DropTable<AnyObjectClassItem>();
153-
db.DropTable<AnyObjectClass>();
154-
db.CreateTable<AnyObjectClass>();
155-
db.CreateTable<AnyObjectClassItem>();
160+
RecreateAnyObjectTables(db);
156161

157162
var model = new AnyObjectClass { db = db };
158163
var result = model.CustomProperty;
@@ -162,6 +167,5 @@ public void Can_select_sub_expression_when_called_within_a_datamodel()
162167
result.PrintDump();
163168
}
164169
}
165-
166170
}
167171
}

tests/ServiceStack.OrmLite.Tests/LoadReferencesJoinTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,7 @@ public void Can_populate_multiple_POCOs_using_Dappers_QueryMultiple()
752752
var q = db.From<Customer>()
753753
.Join<Customer, CustomerAddress>()
754754
.Join<Customer, Order>()
755+
.OrderBy<Order>(x => x.Id)
755756
.Select("*");
756757

757758
using (var multi = db.QueryMultiple(q.ToSelectStatement()))
@@ -819,7 +820,8 @@ public void Can_populate_multiple_POCOs_using_SelectMulti3()
819820
.Join<Customer, CustomerAddress>()
820821
.Join<Customer, Order>()
821822
.Where(x => x.Id == 1)
822-
.And<CustomerAddress>(x => x.Country == "Australia");
823+
.And<CustomerAddress>(x => x.Country == "Australia")
824+
.OrderBy<Order>(x => x.Id);
823825

824826
var tuples = db.SelectMulti<Customer, CustomerAddress, Order>(q);
825827

@@ -833,7 +835,7 @@ public void Can_populate_multiple_POCOs_using_SelectMulti3()
833835
sb.AppendLine("Order:");
834836
sb.AppendLine(tuple.Item3.Dump());
835837
}
836-
838+
sb.ToString().Print();
837839
AssertMultiCustomerOrderResults(sb);
838840
}
839841

0 commit comments

Comments
 (0)