Description
In new query pipeline, in order to facilitate creating different function, currently following variations are supported. (Also there niladic version)
Name(…)
dbo.Name(…)
Instance.Name(…)
Following are all the constructors. (You can ignore type, typeMapping, condition parameters, they are metadata)
public SqlFunctionExpression(
string functionName,
bool niladic,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(null, null, functionName, niladic, null, type, typeMapping, condition)
{
}
public SqlFunctionExpression(
string schema,
string functionName,
bool niladic,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(null, schema, functionName, niladic, null, type, typeMapping, condition)
{
}
public SqlFunctionExpression(
SqlExpression instance,
string functionName,
bool niladic,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(instance, null, functionName, niladic, null, type, typeMapping, condition)
{
}
public SqlFunctionExpression(
string functionName,
IEnumerable<SqlExpression> arguments,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(null, null, functionName, false, arguments, type, typeMapping, condition)
{
}
public SqlFunctionExpression(
string schema,
string functionName,
IEnumerable<SqlExpression> arguments,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(null, schema, functionName, false, arguments, type, typeMapping, condition)
{
}
public SqlFunctionExpression(
SqlExpression instance,
string functionName,
IEnumerable<SqlExpression> arguments,
Type type,
RelationalTypeMapping typeMapping,
bool condition)
: this(instance, null, functionName, false, arguments, type, typeMapping, condition)
{
}
Is above is exhaustive? Do we need to support more variations? Is dbo.Name
(niladic) or Instance.Name
(niladic) is useful or possible or impossible?
cc: @bricelam due to SQLite & Spatial
cc: @roji due to Postgre
cc: @pmiddleton based on all the work with DbFunction + pivot + TVF.