1

Closed

QueryableAttribute doesn't support compare complex type with null

description

Repro code:

public class BlahController : ApiController
{
    [Queryable]
    public IQueryable<User> Get()
    {
        return new List<User>()
        {
        new User() { FirstName = "A", LastName = "AL", Age = 10 },
        new User() { FirstName = "B", LastName = "BL", Age = 50 },
        new User() { FirstName = "C", LastName = "CL", Age = 25 },
        }.AsQueryable();
    }
}

public class Address
{
    public string StreetName { get; set; }
}

[DataContract]
public class User
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string LastName { get; set; }

    public int Age { get; set; }

    [DataMember]
    public Address Address { get; set; }
}
Test request:
http://localhost:1592/api/Blah?$filter=Address+ne+null Expected: Returns records which has Address property not equal to null.

Actual:
Report 500 error
<Error><Message>An error has occurred.</Message><ExceptionMessage>The method or operation is not implemented.</ExceptionMessage><ExceptionType>System.NotImplementedException</ExceptionType><StackTrace> at Microsoft.Data.OData.Query.MetadataBinder.BindPropertyAccess(PropertyAccessQueryToken propertyAccessToken)
at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)
at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorQueryToken binaryOperatorToken)
at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)
at Microsoft.Data.OData.Query.MetadataBinder.ProcessFilter(QueryNode query, QueryToken filter)
at Microsoft.Data.OData.Query.MetadataBinder.BindTree(SyntacticTree syntax)
at Microsoft.Data.OData.Query.MetadataBinder.BindQuery(SyntacticTree syntax)
at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model, Int32 maxDepth)
at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model)
at System.Web.Http.OData.Query.FilterQueryOption.get_QueryNode() in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\OData\Query\FilterQueryOption.cs:line 68
at System.Web.Http.OData.Query.FilterQueryOption.ApplyTo(IQueryable query, Boolean handleNullPropagation, IAssembliesResolver assembliesResolver) in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\OData\Query\FilterQueryOption.cs:line 100
at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, Boolean handleNullPropagation, Boolean canUseDefaultOrderBy) in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\OData\Query\ODataQueryOptions.cs:line 213
at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, Boolean handleNullPropagation) in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\OData\Query\ODataQueryOptions.cs:line 191
at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query) in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\OData\Query\ODataQueryOptions.cs:line 180
at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in C:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\runtime\src\System.Web.Http.OData\QueryableAttribute.cs:line 168
at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext, HttpResponseMessage response, Exception exception)
at System.Web.Http.Filters.ActionFilterAttribute.<>c__DisplayClass2.<System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync>b__0(HttpResponseMessage response)
at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass412.<Then>b__40(Task1 t)
at System.Threading.Tasks.TaskHelpersExtensions.ThenImpl[TTask,TOuterResult](TTask task, Func`2 continuation, CancellationToken cancellationToken, Boolean runSynchronously)</StackTrace></Error>
Closed Jan 3 at 8:53 PM by hongyes
Working in ODataLib 5.2.0 RTM

comments

raghuramn wrote Sep 5, 2012 at 10:28 PM

looks like a uri parser bug.
@Hongye: can you open a bug on the OData team to track it ?

HongmeiG wrote Dec 14, 2012 at 9:39 PM

Hongye, can you verify if this is fixed in the new ODataParser?