Fixed parameter type search for In method
This commit is contained in:
@@ -6347,7 +6347,7 @@ namespace DynamORM
|
||||
else if (node is DynamicParser.Node.SetMember) return ParseSetMember((DynamicParser.Node.SetMember)node, ref columnSchema, pars, decorate, isMultiPart);
|
||||
else if (node is DynamicParser.Node.Unary) return ParseUnary((DynamicParser.Node.Unary)node, pars);
|
||||
else if (node is DynamicParser.Node.Binary) return ParseBinary((DynamicParser.Node.Binary)node, pars);
|
||||
else if (node is DynamicParser.Node.Method) return ParseMethod((DynamicParser.Node.Method)node, pars);
|
||||
else if (node is DynamicParser.Node.Method) return ParseMethod((DynamicParser.Node.Method)node, ref columnSchema, pars);
|
||||
else if (node is DynamicParser.Node.Invoke) return ParseInvoke((DynamicParser.Node.Invoke)node, ref columnSchema, pars);
|
||||
else if (node is DynamicParser.Node.Convert) return ParseConvert((DynamicParser.Node.Convert)node, pars);
|
||||
}
|
||||
@@ -6500,10 +6500,10 @@ namespace DynamORM
|
||||
return string.Format("({0} {1} {2})", left, op, right);
|
||||
}
|
||||
|
||||
protected virtual string ParseMethod(DynamicParser.Node.Method node, IDictionary<string, IParameter> pars = null)
|
||||
protected virtual string ParseMethod(DynamicParser.Node.Method node, ref DynamicSchemaColumn? columnSchema, IDictionary<string, IParameter> pars = null)
|
||||
{
|
||||
string method = node.Name.ToUpper();
|
||||
string parent = node.Host == null ? null : Parse(node.Host, pars: pars);
|
||||
string parent = node.Host == null ? null : Parse(node.Host, ref columnSchema, pars: pars);
|
||||
string item = null;
|
||||
|
||||
// Root-level methods...
|
||||
@@ -6513,7 +6513,7 @@ namespace DynamORM
|
||||
{
|
||||
case "NOT":
|
||||
if (node.Arguments == null || node.Arguments.Length != 1) throw new ArgumentNullException("NOT method expects one argument: " + node.Arguments.Sketch());
|
||||
item = Parse(node.Arguments[0], pars: pars);
|
||||
item = Parse(node.Arguments[0], ref columnSchema, pars: pars);
|
||||
return string.Format("(NOT {0})", item);
|
||||
}
|
||||
}
|
||||
@@ -6546,7 +6546,7 @@ namespace DynamORM
|
||||
throw new ArgumentException("BETWEEN method expects single argument to be enumerable of exactly two elements: " + node.Arguments.Sketch());
|
||||
}
|
||||
|
||||
return string.Format("{0} BETWEEN {1} AND {2}", parent, Parse(arguments[0], pars: pars), Parse(arguments[1], pars: pars));
|
||||
return string.Format("{0} BETWEEN {1} AND {2}", parent, Parse(arguments[0], ref columnSchema, pars: pars), Parse(arguments[1], ref columnSchema, pars: pars));
|
||||
}
|
||||
|
||||
case "IN":
|
||||
@@ -6576,13 +6576,13 @@ namespace DynamORM
|
||||
else
|
||||
firstParam = false;
|
||||
|
||||
sbin.Append(Parse(val, pars: pars));
|
||||
sbin.Append(Parse(val, ref columnSchema, pars: pars));
|
||||
}
|
||||
else
|
||||
sbin.Append(Parse(arg, pars: pars));
|
||||
sbin.Append(Parse(arg, ref columnSchema, pars: pars));
|
||||
}
|
||||
else
|
||||
sbin.Append(Parse(arg, pars: pars));
|
||||
sbin.Append(Parse(arg, ref columnSchema, pars: pars));
|
||||
|
||||
firstParam = false;
|
||||
}
|
||||
@@ -6594,13 +6594,13 @@ namespace DynamORM
|
||||
if (node.Arguments == null || node.Arguments.Length != 1)
|
||||
throw new ArgumentException("LIKE method expects one argument: " + node.Arguments.Sketch());
|
||||
|
||||
return string.Format("{0} LIKE {1}", parent, Parse(node.Arguments[0], pars: pars));
|
||||
return string.Format("{0} LIKE {1}", parent, Parse(node.Arguments[0], ref columnSchema, pars: pars));
|
||||
|
||||
case "NOTLIKE":
|
||||
if (node.Arguments == null || node.Arguments.Length != 1)
|
||||
throw new ArgumentException("NOT LIKE method expects one argument: " + node.Arguments.Sketch());
|
||||
|
||||
return string.Format("{0} NOT LIKE {1}", parent, Parse(node.Arguments[0], pars: pars));
|
||||
return string.Format("{0} NOT LIKE {1}", parent, Parse(node.Arguments[0], ref columnSchema, pars: pars));
|
||||
|
||||
case "AS":
|
||||
if (node.Arguments == null || node.Arguments.Length != 1)
|
||||
@@ -6617,7 +6617,7 @@ namespace DynamORM
|
||||
if (node.Arguments == null || node.Arguments.Length == 0)
|
||||
return "COUNT(*)";
|
||||
|
||||
return string.Format("COUNT({0})", Parse(node.Arguments[0], pars: Parameters, nulls: true));
|
||||
return string.Format("COUNT({0})", Parse(node.Arguments[0], ref columnSchema, pars: Parameters, nulls: true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6637,7 +6637,7 @@ namespace DynamORM
|
||||
else
|
||||
first = false;
|
||||
|
||||
sb.Append(Parse(argument, pars, nulls: true)); // We don't accept raw strings here!!!
|
||||
sb.Append(Parse(argument, ref columnSchema, pars, nulls: true)); // We don't accept raw strings here!!!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user