Beispiel #1
0
        public void retrieves_query_plan_with_where_and_all_options_enabled()
        {
            var user1 = new SimpleUser
            {
                UserName  = "******",
                Number    = 5,
                Birthdate = new DateTime(1986, 10, 4),
                Address   = new SimpleAddress {
                    HouseNumber = "12bis", Street = "rue de la martre"
                }
            };
            var user2 = new SimpleUser
            {
                UserName  = "******",
                Number    = 6,
                Birthdate = new DateTime(1987, 10, 4),
                Address   = new SimpleAddress {
                    HouseNumber = "12bis", Street = "rue de la martre"
                }
            };

            theSession.Store(user1, user2);
            theSession.SaveChanges();

            var plan = theSession.Query <SimpleUser>().Where(u => u.Number > 5)
                       .OrderBy(x => x.Number)
                       .Explain(c =>
            {
                c
                .Analyze()
                .Buffers()
                .Costs()
                .Timing()
                .Verbose();
            });

            SpecificationExtensions.ShouldNotBeNull(plan);
            SpecificationExtensions.ShouldBeGreaterThan(plan.ActualTotalTime, 0m);
            SpecificationExtensions.ShouldBeGreaterThan(plan.PlanningTime, 0m);
            SpecificationExtensions.ShouldBeGreaterThan(plan.ExecutionTime, 0m);
            plan.SortKey.ShouldContain("(((d.data ->> 'Number'::text))::integer)");
            plan.Plans.ShouldNotBeEmpty();
        }