Skip to content

Commit

Permalink
#4375 Fixed Sproc/Function/TableFunction sorting. (#4376)
Browse files Browse the repository at this point in the history
  • Loading branch information
igor-tkachev committed Jan 27, 2024
1 parent 7b26d88 commit 6a19c94
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 125 deletions.
9 changes: 5 additions & 4 deletions Source/LinqToDB.Templates/LinqToDB.ttinclude
Expand Up @@ -691,10 +691,11 @@ void GenerateTypesFromMetadata()
var tabfs = new MemberGroup { Region = "Table Functions" };

var currentContext = DataContextObject;
foreach (var p in Procedures.Values.Where(
proc => proc.IsLoaded || proc.IsFunction && !proc.IsTableFunction ||
proc.IsTableFunction && proc.ResultException != null
))
foreach (var p in Procedures.Values
.Where(proc =>
proc.IsLoaded || proc.IsFunction && !proc.IsTableFunction ||
proc.IsTableFunction && proc.ResultException != null)
.OrderBy(proc => proc.Name))
{
Action<MemberGroup> addProcs = tp => procs.Members.Add(tp);
Action<MemberGroup> addFuncs = tp => funcs.Members.Add(tp);
Expand Down
127 changes: 67 additions & 60 deletions Tests/Tests.T4/Databases/SqlServer.MS.generated.cs
Expand Up @@ -667,29 +667,6 @@ public partial class EmployeeSalesByCountryResult

#endregion

#region SalesByYear

public static List<SalesByYearResult> SalesByYear(this NorthwindDB dataConnection, DateTime? @BeginningDate, DateTime? @EndingDate)
{
var parameters = new []
{
new DataParameter("@Beginning_Date", @BeginningDate, LinqToDB.DataType.DateTime),
new DataParameter("@Ending_Date", @EndingDate, LinqToDB.DataType.DateTime)
};

return dataConnection.QueryProc<SalesByYearResult>("[Sales by Year]", parameters).ToList();
}

public partial class SalesByYearResult
{
public DateTime? ShippedDate { get; set; }
public int OrderID { get; set; }
public decimal? Subtotal { get; set; }
public string? Year { get; set; }
}

#endregion

#region SalesByCategory

public static List<SalesByCategoryResult> SalesByCategory(this NorthwindDB dataConnection, string? @CategoryName, string? @OrdYear)
Expand Down Expand Up @@ -717,6 +694,29 @@ public partial class SalesByCategoryResult

#endregion

#region SalesByYear

public static List<SalesByYearResult> SalesByYear(this NorthwindDB dataConnection, DateTime? @BeginningDate, DateTime? @EndingDate)
{
var parameters = new []
{
new DataParameter("@Beginning_Date", @BeginningDate, LinqToDB.DataType.DateTime),
new DataParameter("@Ending_Date", @EndingDate, LinqToDB.DataType.DateTime)
};

return dataConnection.QueryProc<SalesByYearResult>("[Sales by Year]", parameters).ToList();
}

public partial class SalesByYearResult
{
public DateTime? ShippedDate { get; set; }
public int OrderID { get; set; }
public decimal? Subtotal { get; set; }
public string? Year { get; set; }
}

#endregion

#region TenMostExpensiveProducts

public static List<TenMostExpensiveProductsResult> TenMostExpensiveProducts(this NorthwindDB dataConnection)
Expand Down Expand Up @@ -1125,13 +1125,12 @@ public static Territory Region(this Region obj, IDataContext db)
#endregion
}

public partial class TestData2014DB : LinqToDB.Data.DataConnection
public partial class TestDataDB : LinqToDB.Data.DataConnection
{
public ITable<AllType> AllTypes { get { return this.GetTable<AllType>(); } }
public ITable<AllTypes2> AllTypes2 { get { return this.GetTable<AllTypes2>(); } }
public ITable<Child> Children { get { return this.GetTable<Child>(); } }
public ITable<CollatedTable> CollatedTables { get { return this.GetTable<CollatedTable>(); } }
public ITable<CreateIfNotExistsTable> CreateIfNotExistsTables { get { return this.GetTable<CreateIfNotExistsTable>(); } }
public ITable<DataType> DataTypes { get { return this.GetTable<DataType>(); } }
public ITable<DecimalOverflow> DecimalOverflows { get { return this.GetTable<DecimalOverflow>(); } }
public ITable<Doctor> Doctors { get { return this.GetTable<Doctor>(); } }
Expand Down Expand Up @@ -1176,14 +1175,14 @@ public void InitSchemas()

#endregion

public TestData2014DB(int i)
public TestDataDB(int i)
{
InitSchemas();
InitDataContext();
InitMappingSchema();
}

public TestData2014DB(string configuration)
public TestDataDB(string configuration)
: base(configuration)
{
InitSchemas();
Expand Down Expand Up @@ -1312,13 +1311,6 @@ public partial class CollatedTable
[Column(DbType="nvarchar(20)", DataType=LinqToDB.DataType.NVarChar, Length=20), NotNull] public string CaseInsensitive { get; set; } = null!; // nvarchar(20)
}

[Table("CreateIfNotExistsTable")]
public partial class CreateIfNotExistsTable
{
[Column(DbType="int", DataType=LinqToDB.DataType.Int32), NotNull] public int Id { get; set; } // int
[Column(DbType="int", DataType=LinqToDB.DataType.Int32), NotNull] public int Value { get; set; } // int
}

[Table("DataType")]
public partial class DataType
{
Expand Down Expand Up @@ -1670,11 +1662,11 @@ public partial class TestSchemaY
#endregion
}

public static partial class TestData2014DBStoredProcedures
public static partial class TestDataDBStoredProcedures
{
#region AddIssue792Record

public static int AddIssue792Record(this TestData2014DB dataConnection)
public static int AddIssue792Record(this TestDataDB dataConnection)
{
return dataConnection.ExecuteProc("[AddIssue792Record]");
}
Expand All @@ -1683,7 +1675,7 @@ public static int AddIssue792Record(this TestData2014DB dataConnection)

#region DuplicateColumnNames

public static List<DuplicateColumnNamesResult> DuplicateColumnNames(this TestData2014DB dataConnection)
public static List<DuplicateColumnNamesResult> DuplicateColumnNames(this TestDataDB dataConnection)
{
var ms = dataConnection.MappingSchema;

Expand All @@ -1706,7 +1698,7 @@ public partial class DuplicateColumnNamesResult

#region ExecuteProcIntParameters

public static int ExecuteProcIntParameters(this TestData2014DB dataConnection, int? @input, ref int? @output)
public static int ExecuteProcIntParameters(this TestDataDB dataConnection, int? @input, ref int? @output)
{
var parameters = new []
{
Expand Down Expand Up @@ -1734,7 +1726,7 @@ public static int ExecuteProcIntParameters(this TestData2014DB dataConnection, i
/// <param name="input">
/// This is &lt;test&gt; procedure parameter!
/// </param>
public static List<ExecuteProcStringParametersResult> ExecuteProcStringParameters(this TestData2014DB dataConnection, int? @input, ref int? @output)
public static List<ExecuteProcStringParametersResult> ExecuteProcStringParameters(this TestDataDB dataConnection, int? @input, ref int? @output)
{
var parameters = new []
{
Expand Down Expand Up @@ -1768,7 +1760,7 @@ public partial class ExecuteProcStringParametersResult

#region Issue1897

public static int Issue1897(this TestData2014DB dataConnection, out int @return)
public static int Issue1897(this TestDataDB dataConnection, out int @return)
{
var parameters = new []
{
Expand All @@ -1789,7 +1781,7 @@ public static int Issue1897(this TestData2014DB dataConnection, out int @return)

#region OutRefEnumTest

public static int OutRefEnumTest(this TestData2014DB dataConnection, string? @str, ref string? @outputStr, ref string? @inputOutputStr)
public static int OutRefEnumTest(this TestDataDB dataConnection, string? @str, ref string? @outputStr, ref string? @inputOutputStr)
{
var parameters = new []
{
Expand Down Expand Up @@ -1821,7 +1813,7 @@ public static int OutRefEnumTest(this TestData2014DB dataConnection, string? @st

#region OutRefTest

public static int OutRefTest(this TestData2014DB dataConnection, int? @ID, ref int? @outputID, ref int? @inputOutputID, string? @str, ref string? @outputStr, ref string? @inputOutputStr)
public static int OutRefTest(this TestDataDB dataConnection, int? @ID, ref int? @outputID, ref int? @inputOutputID, string? @str, ref string? @outputStr, ref string? @inputOutputStr)
{
var parameters = new []
{
Expand Down Expand Up @@ -1864,7 +1856,7 @@ public static int OutRefTest(this TestData2014DB dataConnection, int? @ID, ref i

#region PatientSelectAll

public static List<PatientSelectAllResult> PatientSelectAll(this TestData2014DB dataConnection)
public static List<PatientSelectAllResult> PatientSelectAll(this TestDataDB dataConnection)
{
return dataConnection.QueryProc<PatientSelectAllResult>("[Patient_SelectAll]").ToList();
}
Expand All @@ -1883,7 +1875,7 @@ public partial class PatientSelectAllResult

#region PatientSelectByName

public static List<PatientSelectByNameResult> PatientSelectByName(this TestData2014DB dataConnection, string? @firstName, string? @lastName)
public static List<PatientSelectByNameResult> PatientSelectByName(this TestDataDB dataConnection, string? @firstName, string? @lastName)
{
var parameters = new []
{
Expand Down Expand Up @@ -1914,7 +1906,7 @@ public partial class PatientSelectByNameResult

#region PersonDelete

public static int PersonDelete(this TestData2014DB dataConnection, int? @PersonID)
public static int PersonDelete(this TestDataDB dataConnection, int? @PersonID)
{
var parameters = new []
{
Expand All @@ -1928,7 +1920,7 @@ public static int PersonDelete(this TestData2014DB dataConnection, int? @PersonI

#region PersonInsert

public static List<PersonInsertResult> PersonInsert(this TestData2014DB dataConnection, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender)
public static List<PersonInsertResult> PersonInsert(this TestDataDB dataConnection, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender)
{
var parameters = new []
{
Expand Down Expand Up @@ -1962,7 +1954,7 @@ public partial class PersonInsertResult

#region PersonInsertOutputParameter

public static int PersonInsertOutputParameter(this TestData2014DB dataConnection, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender, ref int? @PersonID)
public static int PersonInsertOutputParameter(this TestDataDB dataConnection, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender, ref int? @PersonID)
{
var parameters = new []
{
Expand Down Expand Up @@ -1999,7 +1991,7 @@ public static int PersonInsertOutputParameter(this TestData2014DB dataConnection

#region PersonSelectAll

public static List<PersonSelectAllResult> PersonSelectAll(this TestData2014DB dataConnection)
public static List<PersonSelectAllResult> PersonSelectAll(this TestDataDB dataConnection)
{
return dataConnection.QueryProc<PersonSelectAllResult>("[Person_SelectAll]").ToList();
}
Expand All @@ -2017,7 +2009,7 @@ public partial class PersonSelectAllResult

#region PersonSelectByKey

public static List<PersonSelectByKeyResult> PersonSelectByKey(this TestData2014DB dataConnection, int? @id)
public static List<PersonSelectByKeyResult> PersonSelectByKey(this TestDataDB dataConnection, int? @id)
{
var parameters = new []
{
Expand All @@ -2040,7 +2032,7 @@ public partial class PersonSelectByKeyResult

#region PersonSelectByKeyLowercase

public static List<PersonSelectByKeyLowercaseResult> PersonSelectByKeyLowercase(this TestData2014DB dataConnection, int? @id)
public static List<PersonSelectByKeyLowercaseResult> PersonSelectByKeyLowercase(this TestDataDB dataConnection, int? @id)
{
var parameters = new []
{
Expand All @@ -2060,7 +2052,7 @@ public partial class PersonSelectByKeyLowercaseResult

#region PersonSelectByName

public static List<PersonSelectByNameResult> PersonSelectByName(this TestData2014DB dataConnection, string? @firstName, string? @lastName)
public static List<PersonSelectByNameResult> PersonSelectByName(this TestDataDB dataConnection, string? @firstName, string? @lastName)
{
var parameters = new []
{
Expand Down Expand Up @@ -2090,7 +2082,7 @@ public partial class PersonSelectByNameResult

#region PersonSelectListByName

public static List<PersonSelectListByNameResult> PersonSelectListByName(this TestData2014DB dataConnection, string? @firstName, string? @lastName)
public static List<PersonSelectListByNameResult> PersonSelectListByName(this TestDataDB dataConnection, string? @firstName, string? @lastName)
{
var parameters = new []
{
Expand Down Expand Up @@ -2120,7 +2112,7 @@ public partial class PersonSelectListByNameResult

#region PersonUpdate

public static int PersonUpdate(this TestData2014DB dataConnection, int? @PersonID, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender)
public static int PersonUpdate(this TestDataDB dataConnection, int? @PersonID, string? @FirstName, string? @LastName, string? @MiddleName, char? @Gender)
{
var parameters = new []
{
Expand Down Expand Up @@ -2150,7 +2142,7 @@ public static int PersonUpdate(this TestData2014DB dataConnection, int? @PersonI

#region QueryProcMultipleParameters

public static List<QueryProcMultipleParametersResult> QueryProcMultipleParameters(this TestData2014DB dataConnection, int? @input, ref int? @output1, ref int? @output2, ref int? @output3)
public static List<QueryProcMultipleParametersResult> QueryProcMultipleParameters(this TestDataDB dataConnection, int? @input, ref int? @output1, ref int? @output2, ref int? @output3)
{
var parameters = new []
{
Expand Down Expand Up @@ -2191,7 +2183,7 @@ public partial class QueryProcMultipleParametersResult

#region QueryProcParameters

public static List<QueryProcParametersResult> QueryProcParameters(this TestData2014DB dataConnection, int? @input, ref int? @output1, ref int? @output2)
public static List<QueryProcParametersResult> QueryProcParameters(this TestDataDB dataConnection, int? @input, ref int? @output1, ref int? @output2)
{
var parameters = new []
{
Expand Down Expand Up @@ -2227,7 +2219,7 @@ public partial class QueryProcParametersResult

#region SelectImplicitColumn

public static List<SelectImplicitColumnResult> SelectImplicitColumn(this TestData2014DB dataConnection)
public static List<SelectImplicitColumnResult> SelectImplicitColumn(this TestDataDB dataConnection)
{
var ms = dataConnection.MappingSchema;

Expand All @@ -2248,7 +2240,7 @@ public partial class SelectImplicitColumnResult

#region TableTypeTestProc

public static List<TableTypeTestProcResult> TableTypeTestProc(this TestData2014DB dataConnection, DataTable? @table)
public static List<TableTypeTestProcResult> TableTypeTestProc(this TestDataDB dataConnection, DataTable? @table)
{
var parameters = new []
{
Expand All @@ -2271,7 +2263,7 @@ public partial class TableTypeTestProcResult

#region VariableResults

public static List<VariableResultsResult> VariableResults(this TestData2014DB dataConnection, bool? @ReturnFullRow)
public static List<VariableResultsResult> VariableResults(this TestDataDB dataConnection, bool? @ReturnFullRow)
{
var parameters = new []
{
Expand Down Expand Up @@ -2749,6 +2741,21 @@ public DataContext(IDataContext dataContext)
{
_dataContext = dataContext;
}

#region Table Functions

#region SchemaTableFunction

[Sql.TableFunction(Schema="TestSchema", Name="SchemaTableFunction")]
public ITable<Parent> SchemaTableFunction(int? @id)
{
return _dataContext.GetTable<Parent>(this, (MethodInfo)MethodBase.GetCurrentMethod()!,
@id);
}

#endregion

#endregion
}

[Table(Schema="TestSchema", Name="SameTableName")]
Expand Down Expand Up @@ -2817,11 +2824,11 @@ public partial class TestSchemaB
#endregion
}

public static partial class TestData2014DBStoredProcedures
public static partial class TestDataDBStoredProcedures
{
#region TestProcedure

public static List<TestProcedureResult> TestProcedure(TestData2014DB dataConnection)
public static List<TestProcedureResult> TestProcedure(TestDataDB dataConnection)
{
var ms = dataConnection.MappingSchema;

Expand Down
4 changes: 2 additions & 2 deletions Tests/Tests.T4/Databases/SqlServer.MS.tt
Expand Up @@ -34,7 +34,7 @@
GenerateProcedureResultAsList = true;

GetSchemaOptions.LoadTable = t => t.Name != "Products" && t.Name != "Person";

LoadSqlServerMetadata(GetConnectionString("SqlServer.Northwind"), SqlServerVersion.v2012, LinqToDB.DataProvider.SqlServer.SqlServerProvider.MicrosoftDataSqlClient);

Tables["Order Details"].Columns["OrderID"]. MemberName = "ID";
Expand All @@ -56,7 +56,7 @@

//GenerateConstructors = false;

LoadSqlServerMetadata(GetConnectionString("SqlServer.2014"), SqlServerVersion.v2012, LinqToDB.DataProvider.SqlServer.SqlServerProvider.MicrosoftDataSqlClient);
LoadSqlServerMetadata(GetConnectionString("SqlServer.2019"), SqlServerVersion.v2012, LinqToDB.DataProvider.SqlServer.SqlServerProvider.MicrosoftDataSqlClient);

AddReturnParameter("Issue1897");

Expand Down

0 comments on commit 6a19c94

Please sign in to comment.