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

Commit 3ed7e26

Browse files
committed
Add GetQuotedTableName overload + use in CreateTableRowCountUnionSql
1 parent e12b076 commit 3ed7e26

File tree

5 files changed

+32
-5
lines changed

5 files changed

+32
-5
lines changed

src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,8 @@ public override string GetTableName(string table, string schema, bool useStrateg
176176
: table;
177177
}
178178

179-
public override string GetQuotedTableName(string tableName, string schema = null)
180-
{
181-
return GetQuotedName(GetTableName(tableName, schema));
182-
}
179+
public override string GetQuotedTableName(string tableName, string schema = null) =>
180+
GetQuotedName(GetTableName(tableName, schema));
183181

184182
public override SqlExpression<T> SqlExpression<T>()
185183
{

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ public interface IOrmLiteDialectProvider
101101

102102
string GetQuotedTableName(string tableName, string schema=null);
103103

104+
string GetQuotedTableName(string tableName, string schema, bool useStrategy);
105+
104106
string GetQuotedColumnName(string columnName);
105107

106108
string GetQuotedName(string name);

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,9 @@ public virtual string GetQuotedTableName(string tableName, string schema = null)
397397
return $"{GetQuotedName(escapedSchema)}.{GetQuotedName(NamingStrategy.GetTableName(tableName))}";
398398
}
399399

400+
public virtual string GetQuotedTableName(string tableName, string schema, bool useStrategy) =>
401+
GetQuotedName(GetTableName(tableName, schema, useStrategy));
402+
400403
public virtual string GetQuotedColumnName(string columnName)
401404
{
402405
return GetQuotedName(NamingStrategy.GetColumnName(columnName));

src/ServiceStack.OrmLite/OrmLiteReadExpressionsApi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ private static string CreateTableRowCountUnionSql(IDbConnection db, string schem
158158
sb.Append(" UNION ");
159159

160160
// retain *real* table names and skip using naming strategy
161-
sb.AppendLine($"SELECT {OrmLiteUtils.QuotedLiteral(tableName)}, COUNT(*) FROM {dialect.GetTableName(tableName, schemaName, useStrategy:false)}");
161+
sb.AppendLine($"SELECT {OrmLiteUtils.QuotedLiteral(tableName)}, COUNT(*) FROM {dialect.GetQuotedTableName(tableName, schemaName, useStrategy:false)}");
162162
}
163163

164164
var sql = StringBuilderCache.ReturnAndFree(sb);

tests/ServiceStack.OrmLite.Tests/MetaDataTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.Tasks;
55
using NUnit.Framework;
66
using ServiceStack.OrmLite.Tests.Shared;
7+
using ServiceStack.OrmLite.Tests.UseCase;
78
using ServiceStack.Text;
89

910
namespace ServiceStack.OrmLite.Tests
@@ -129,6 +130,29 @@ public void Can_get_GetTableNamesWithRowCounts()
129130
}
130131
}
131132

133+
[Test]
134+
public void Can_get_GetTableNamesWithRowCounts_of_keyword_table()
135+
{
136+
using (var db = OpenDbConnection())
137+
{
138+
CustomerOrdersUseCase.DropTables(db); //Has conflicting 'Order' table
139+
db.CreateTable<Order>();
140+
141+
3.Times(i => db.Insert(new Order { CustomerId = i + 1, LineItem = $"Field{i+1}"}) );
142+
143+
var tableNames = db.GetTableNamesWithRowCounts(live:true);
144+
Assert.That(tableNames.Count, Is.GreaterThan(0));
145+
146+
var table1Name = db.GetDialectProvider().GetTableName(typeof(Order).GetModelMetadata()).StripQuotes();
147+
148+
var table1Pos = IndexOf(tableNames, x => x.Key.EqualsIgnoreCase(table1Name) && x.Value == 3);
149+
Assert.That(table1Pos, Is.GreaterThanOrEqualTo(0));
150+
151+
tableNames = db.GetTableNamesWithRowCounts(live:false);
152+
Assert.That(tableNames.Any(x => x.Key.EqualsIgnoreCase(table1Name)));
153+
}
154+
}
155+
132156
[Test]
133157
public async Task Can_get_GetTableNamesWithRowCounts_Async()
134158
{

0 commit comments

Comments
 (0)