public class StringIndexingTest : RavenTestBase
{
public class Employee
{
public string Id { get; set; }
public string FirstName { get; set; }
public string StrVal { get; set; }
}
public class EmployeeView
{
public string Id { get; set; }
public string FirstName { get; set; }
public string StrVal { get; set; }
}
public class EmployeeIndex : AbstractMultiMapIndexCreationTask<EmployeeView>
{
public EmployeeIndex()
{
AddMap<Employee>(
employees => from employee in employees
select new
{
employee.Id,
employee.FirstName,
employee.StrVal,
});
Reduce = results => from result in results
group result by result.Id
into g
let employee = g.First()
select new
{
Id = employee.Id,
FirstName = employee.FirstName,
StrVal = g.Select(x => x.StrVal).FirstOrDefault(x => !string.IsNullOrEmpty(x)), // results of this construct can't be queried using [[NULL_VALUE]]
};
}
}
[Fact]
public void StringArraysWithNoDataCanBeQueried()
{
using (var store = NewRemoteDocumentStore())
{
new EmployeeIndex().Execute(store);
using (var session = store.OpenSession())
{
session.Store(new Employee{ Id = "1", FirstName = "A", StrVal = null });
session.Store(new Employee{ Id = "2", FirstName = "B", StrVal = "B" });
session.SaveChanges();
}
using (var session = store.OpenSession())
{
session.Query<EmployeeView, EmployeeIndex>()
.Customize(x => x.WaitForNonStaleResults())
.Count();
}
using (var session = store.OpenSession())
{
var nonNullCount = session.Query<EmployeeView, EmployeeIndex>()
.Where(x => x.StrVal != null)
.Count();
Assert.Equal(1, nonNullCount); // works correctly
var nullCount = session.Query<EmployeeView, EmployeeIndex>()
.Where(x => x.StrVal == null)
.Count();
Assert.Equal(1, nullCount); // doesn't find the document
}
}
}
}
Hibernating Rhinos Ltd
Oren Eini l CEO l Mobile: + 972-52-548-6969
Office: +972-4-622-7811 l Fax: +972-153-4-622-7811
--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+unsubscribe@googlegroups.com.