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

Commit 64e35e7

Browse files
committed
Resolve failing tests
1 parent 341b1aa commit 64e35e7

File tree

8 files changed

+36
-15
lines changed

8 files changed

+36
-15
lines changed

src/ServiceStack.OrmLite.PostgreSQL/PostgreSQLDialectProvider.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,16 @@ public override void PrepareParameterizedInsertStatement<T>(IDbCommand cmd, ICol
301301
//Convert xmin into an integer so it can be used in comparisons
302302
public const string RowVersionFieldComparer = "int8in(xidout(xmin))";
303303

304-
public override SelectItem GetRowVersionColumnName(FieldDefinition field, string tablePrefix = null)
304+
public override SelectItem GetRowVersionSelectColumn(FieldDefinition field, string tablePrefix = null)
305305
{
306306
return new SelectItemColumn(this, "xmin", field.FieldName, tablePrefix);
307307
}
308308

309+
public override string GetRowVersionColumn(FieldDefinition field, string tablePrefix = null)
310+
{
311+
return RowVersionFieldComparer;
312+
}
313+
309314
public override void AppendFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef, IDbCommand cmd)
310315
{
311316
var columnName = fieldDef.IsRowVersion

src/ServiceStack.OrmLite/Converters/SpecialConverters.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public class RowVersionConverter : OrmLiteConverter
9494
{
9595
public override string ColumnDefinition => "BIGINT";
9696

97+
public override DbType DbType => DbType.Int64;
98+
9799
public override object FromDbValue(Type fieldType, object value)
98100
{
99101
if (value is byte[] bytes)

src/ServiceStack.OrmLite/Expressions/SqlExpression.Join.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ public string SelectInto<TModel>()
266266
}
267267
else
268268
{
269-
sbSelect.Append(DialectProvider.GetRowVersionColumnName(fieldDef, DialectProvider.GetTableName(tableDef.ModelName)));
269+
sbSelect.Append(DialectProvider.GetRowVersionSelectColumn(fieldDef, DialectProvider.GetTableName(tableDef.ModelName)));
270270
}
271271
}
272272
else
@@ -303,7 +303,7 @@ public string SelectInto<TModel>()
303303
}
304304
else
305305
{
306-
sbSelect.Append(DialectProvider.GetRowVersionColumnName(fieldDef, DialectProvider.GetTableName(tableDef.ModelName)));
306+
sbSelect.Append(DialectProvider.GetRowVersionSelectColumn(fieldDef, DialectProvider.GetTableName(tableDef.ModelName)));
307307
}
308308
}
309309
else

src/ServiceStack.OrmLite/FieldDefinition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public object GetValue(object onInstance)
7676
public string GetQuotedName(IOrmLiteDialectProvider dialectProvider)
7777
{
7878
return IsRowVersion
79-
? dialectProvider.GetRowVersionColumnName(this).ToString()
79+
? dialectProvider.GetRowVersionSelectColumn(this).ToString()
8080
: dialectProvider.GetQuotedColumnName(FieldName);
8181
}
8282

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using System.Linq.Expressions;
1616
using System.Threading;
1717
using System.Threading.Tasks;
18+
using ServiceStack.OrmLite.Converters;
1819
using ServiceStack.Text;
1920

2021
namespace ServiceStack.OrmLite
@@ -40,7 +41,7 @@ public interface IOrmLiteDialectProvider
4041
/// Return best matching converter, falling back to Enum, Value or Ref Type Converters
4142
/// </summary>
4243
IOrmLiteConverter GetConverterBestMatch(Type type);
43-
44+
4445
IOrmLiteConverter GetConverterBestMatch(FieldDefinition fieldDef);
4546

4647
string ParamString { get; set; }
@@ -171,7 +172,8 @@ string ToSelectFromProcedureStatement(object fromObjWithProperties,
171172

172173
object FromDbRowVersion(Type fieldType, object value);
173174

174-
SelectItem GetRowVersionColumnName(FieldDefinition field, string tablePrefix = null);
175+
SelectItem GetRowVersionSelectColumn(FieldDefinition field, string tablePrefix = null);
176+
string GetRowVersionColumn(FieldDefinition field, string tablePrefix = null);
175177

176178
string GetColumnNames(ModelDefinition modelDef);
177179
SelectItem[] GetColumnNames(ModelDefinition modelDef, bool tableQualified);

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,10 @@ public virtual object FromDbRowVersion(Type fieldType, object value)
258258
}
259259

260260
public IOrmLiteConverter GetConverterBestMatch(Type type)
261-
{
261+
{
262+
if (type == typeof(RowVersionConverter))
263+
return RowVersionConverter;
264+
262265
var converter = GetConverter(type);
263266
if (converter != null)
264267
return converter;
@@ -502,11 +505,16 @@ public virtual string ToSelectStatement(ModelDefinition modelDef,
502505
return StringBuilderCache.ReturnAndFree(sb);
503506
}
504507

505-
public virtual SelectItem GetRowVersionColumnName(FieldDefinition field, string tablePrefix = null)
508+
public virtual SelectItem GetRowVersionSelectColumn(FieldDefinition field, string tablePrefix = null)
506509
{
507510
return new SelectItemColumn(this, field.FieldName, null, tablePrefix);
508511
}
509512

513+
public virtual string GetRowVersionColumn(FieldDefinition field, string tablePrefix = null)
514+
{
515+
return GetRowVersionSelectColumn(field, tablePrefix).ToString();
516+
}
517+
510518
public virtual string GetColumnNames(ModelDefinition modelDef)
511519
{
512520
return GetColumnNames(modelDef, false).ToSelectString();
@@ -527,7 +535,7 @@ public virtual SelectItem[] GetColumnNames(ModelDefinition modelDef, bool tableQ
527535
}
528536
else if (field.IsRowVersion)
529537
{
530-
sqlColumns[i] = GetRowVersionColumnName(field, tablePrefix);
538+
sqlColumns[i] = GetRowVersionSelectColumn(field, tablePrefix);
531539
}
532540
else
533541
{

src/ServiceStack.OrmLite/OrmLiteWriteCommandExtensions.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System.Linq;
1717
using ServiceStack.Data;
1818
using ServiceStack.Logging;
19+
using ServiceStack.OrmLite.Converters;
1920
using ServiceStack.Text;
2021

2122
namespace ServiceStack.OrmLite
@@ -573,15 +574,15 @@ internal static string DeleteByIdSql<T>(this IDbCommand dbCmd, object id, ulong
573574

574575
var rowVersionParam = dbCmd.CreateParameter();
575576
rowVersionParam.ParameterName = dialectProvider.GetParam("rowVersion");
576-
var converter = dialectProvider.GetConverterBestMatch(typeof(ulong));
577+
var converter = dialectProvider.GetConverterBestMatch(typeof(RowVersionConverter));
577578
converter.InitDbParam(rowVersionParam, typeof(ulong));
578579

579-
rowVersionParam.Value = rowVersion;
580+
rowVersionParam.Value = converter.ToDbValue(typeof(ulong), rowVersion);
580581
dbCmd.Parameters.Add(rowVersionParam);
581582

582583
var sql = $"DELETE FROM {dialectProvider.GetQuotedTableName(modelDef)} " +
583584
$"WHERE {dialectProvider.GetQuotedColumnName(modelDef.PrimaryKey.FieldName)} = {idParam.ParameterName} " +
584-
$"AND {dialectProvider.GetQuotedColumnName(rowVersionField.FieldName)} = {rowVersionParam.ParameterName}";
585+
$"AND {dialectProvider.GetRowVersionColumn(rowVersionField)} = {rowVersionParam.ParameterName}";
585586

586587
return sql;
587588
}
@@ -994,7 +995,7 @@ internal static string RowVersionSql(this IDbCommand dbCmd, ModelDefinition mode
994995
var dialectProvider = dbCmd.GetDialectProvider();
995996
var idParamString = dialectProvider.GetParam();
996997

997-
var sql = $"SELECT {dialectProvider.GetRowVersionColumnName(modelDef.RowVersion)} " +
998+
var sql = $"SELECT {dialectProvider.GetRowVersionSelectColumn(modelDef.RowVersion)} " +
998999
$"FROM {dialectProvider.GetQuotedTableName(modelDef)} " +
9991000
$"WHERE {dialectProvider.GetQuotedColumnName(modelDef.PrimaryKey.FieldName)} = {idParamString}";
10001001

tests/ServiceStack.OrmLite.Tests/SoftDeleteTests.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using NUnit.Framework;
55
using ServiceStack.DataAnnotations;
66
using ServiceStack.OrmLite.Tests.UseCase;
7+
using ServiceStack.Text;
78

89
namespace ServiceStack.OrmLite.Tests
910
{
@@ -136,7 +137,8 @@ public void Can_get_active_vendor_and_active_references_using_SoftDelete_ref_fil
136137
var meta = type.GetModelMetadata();
137138
if (type.HasInterface(typeof(ISoftDelete)))
138139
{
139-
sql += $" AND (\"{meta.ModelName}\".\"IsDeleted\" = 0)";
140+
var sqlFalse = OrmLiteConfig.DialectProvider.SqlBool(false);
141+
sql += $" AND ({meta.ModelName.SqlTable()}.{"IsDeleted".SqlColumn()} = {sqlFalse})";
140142
}
141143

142144
return sql;
@@ -165,7 +167,8 @@ public void Can_get_single_vendor_and__load_active_references_using_soft_delete_
165167
var meta = type.GetModelMetadata();
166168
if (type.HasInterface(typeof(ISoftDelete)))
167169
{
168-
sql += $" AND (\"{meta.ModelName}\".\"IsDeleted\" = 0)";
170+
var sqlFalse = OrmLiteConfig.DialectProvider.SqlBool(false);
171+
sql += $" AND ({meta.ModelName.SqlTable()}.{"IsDeleted".SqlColumn()} = {sqlFalse})";
169172
}
170173

171174
return sql;

0 commit comments

Comments
 (0)