Example #1
0
        public void GeometryJoinWhereContains()
        {
            var query = @"
select 
    i.c36_geometry_linestring,
	o.Geometry	
from 
	ArubaContext.Runs as o 
left outer join 
		ArubaContext.AllTypes as i
	on 
		Edm.SpatialContains(
            i.c36_geometry_linestring,
			o.Geometry) 
	where 
		Edm.IsClosedSpatial(i.c36_geometry_linestring)"        ;

            // verifying that the correct sql is generated and the linestrings returned are closed per the query
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STContains"))
                {
                    VerifyValueCondition(reader, o =>
                    {
                        var g        = (DbGeometry)o;
                        var isClosed = DbSpatialServices.Default.GetIsClosed(g);
                        return(isClosed != null && (bool)isClosed);
                    });
                }
        }
Example #2
0
            public void Skip_limit_distinct()
            {
                var query = @"
SELECT DISTINCT o.FirstName as a
FROM ArubaContext.Owners as o
ORDER BY a SKIP 1 LIMIT 1";

                var expectedSql = @"
SELECT TOP (1) 
[Distinct1].[C1] AS [C1], 
[Distinct1].[FirstName] AS [FirstName]
FROM ( SELECT [Distinct1].[FirstName] AS [FirstName], [Distinct1].[C1] AS [C1], row_number() OVER (ORDER BY [Distinct1].[FirstName] ASC) AS [row_number]
	FROM ( SELECT DISTINCT 
		[Extent1].[FirstName] AS [FirstName], 
		1 AS [C1]
		FROM [dbo].[ArubaOwners] AS [Extent1]
	)  AS [Distinct1]
)  AS [Distinct1]
WHERE [Distinct1].[row_number] > 1
ORDER BY [Distinct1].[FirstName] ASC";

                // verifying that there is 1 result returned
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountString(reader, 1);
                    }
                }
            }
Example #3
0
            public void Multiple_sort_keys()
            {
                var query = @"
 SELECT o.id, o.FirstName, o.LastName
 FROM ArubaContext.Owners as o
 ORDER BY o.FirstName ASC, o.LastName DESC SKIP 3 LIMIT 4";

                var expectedSql = @"
SELECT TOP (4) 
[Extent1].[Id] AS [Id], 
[Extent1].[FirstName] AS [FirstName], 
[Extent1].[LastName] AS [LastName]
FROM ( SELECT [Extent1].[Id] AS [Id], [Extent1].[FirstName] AS [FirstName], [Extent1].[LastName] AS [LastName], row_number() OVER (ORDER BY [Extent1].[FirstName] ASC, [Extent1].[LastName] DESC) AS [row_number]
	FROM [dbo].[ArubaOwners] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > 3
ORDER BY [Extent1].[FirstName] ASC, [Extent1].[LastName] DESC";

                // verifying that there are 2 results returned
                using (var db = new ArubaContext())
                {
                    using (var db2 = new ArubaContext())
                    {
                        using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, expectedSql))
                        {
                            var expectedResults = db.Owners.ToList().OrderBy(o => o.FirstName).ThenByDescending(o => o.LastName)
                                                  .Skip(3).Take(4).Select(o => o.Id);
                            VerifyAgainstBaselineResults(reader, expectedResults);
                        }
                    }
                }
            }
Example #4
0
            public void Skip_limit_group_by()
            {
                var query = @"
SELECT o.FirstName as c
FROM ArubaContext.Owners as o
GROUP BY o.FirstName
ORDER BY c DESC SKIP 1 LIMIT 2";

                var expectedSql = @"
SELECT TOP (2) 
[Project2].[C1] AS [C1], 
[Project2].[FirstName] AS [FirstName]
FROM ( SELECT [Project2].[FirstName] AS [FirstName], [Project2].[C1] AS [C1], row_number() OVER (ORDER BY [Project2].[FirstName] DESC) AS [row_number]
	FROM ( SELECT 
		[Distinct1].[FirstName] AS [FirstName], 
		1 AS [C1]
		FROM ( SELECT DISTINCT 
			[Extent1].[FirstName] AS [FirstName]
			FROM [dbo].[ArubaOwners] AS [Extent1]
		)  AS [Distinct1]
	)  AS [Project2]
)  AS [Project2]
WHERE [Project2].[row_number] > 1
ORDER BY [Project2].[FirstName] DESC";

                // verifying that there are 2 results returned and they are sorted in Descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountString(reader, 2);
                    }
                }
            }
Example #5
0
        public void GeometryClosestDistance()
        {
            var query = @"
select 
	Edm.Distance(
		i.[Geometry],
		o.[c32_geometry]
		) as [Distance]
from 
	ArubaContext.[Runs] as [i],
    ArubaContext.[AllTypes] as [o]
where 
	i.[Geometry] is not null 
order by 
	Edm.Distance(
		i.[Geometry],
		o.[c32_geometry]
		) asc"        ;

            // verifying that the distances returned match the distances returned by a matching linq query
            using (var db = new ArubaContext())
                using (var db2 = new ArubaContext())
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, "STDistance"))
                    {
                        var allTypes        = db.AllTypes.Select(s => s.c32_geometry).ToList();
                        var runs            = db.Runs.Select(s => s.Geometry);
                        var expectedResults = from atGeometry in allTypes
                                              from rGeometry in runs
                                              orderby DbSpatialServices.Default.Distance(atGeometry, rGeometry) ascending
                                              select DbSpatialServices.Default.Distance(atGeometry, rGeometry);

                        VerifyAgainstBaselineResults(reader, expectedResults);
                    }
        }
Example #6
0
            public void Nested_limit()
            {
                var query = @"
SELECT C.Id
FROM (
        SELECT o.Id AS Id
        FROM ArubaContext.Owners as o
        ORDER BY o.Id LIMIT 5
    ) AS C
ORDER BY C.Id DESC LIMIT 3";

                var expectedSql = @"
SELECT TOP (3) 
[Limit1].[Id] AS [Id]
FROM ( SELECT TOP (5) [Extent1].[Id] AS [Id]
	FROM [dbo].[ArubaOwners] AS [Extent1]
	ORDER BY [Extent1].[Id] ASC
)  AS [Limit1]
ORDER BY [Limit1].[Id] DESC";

                // verifying that there are 3 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountInt(reader, 3);
                    }
                }
            }
Example #7
0
            public void Basic_skip_limit()
            {
                var query = @"
SELECT C.Id, C.Address 
FROM OFTYPE (ArubaContext.Configs, CodeFirstNamespace.ArubaMachineConfig) AS C 
ORDER BY C.Id DESC SKIP 3 LIMIT 2";

                var expectedSql = @"
SELECT TOP (2) 
[Filter1].[Id] AS [Id], 
[Filter1].[Address] AS [Address]
FROM ( SELECT [Extent1].[Id] AS [Id], [Extent1].[Address] AS [Address], row_number() OVER (ORDER BY [Extent1].[Id] DESC) AS [row_number]
	FROM [dbo].[ArubaConfigs] AS [Extent1]
	WHERE [Extent1].[Discriminator] = N'ArubaMachineConfig'
)  AS [Filter1]
WHERE [Filter1].[row_number] > 3
ORDER BY [Filter1].[Id] DESC";

                // verifying that there are 2 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var db2 = new ArubaContext())
                    {
                        using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, expectedSql))
                        {
                            var expectedResults =
                                db.Configs.ToList().OfType <ArubaMachineConfig>().OrderByDescending(o => o.Id).Skip(3).Take(2)
                                .Select(o => o.Id).ToList();
                            Assert.Equal(expectedResults.Count(), 2);
                            VerifyAgainstBaselineResults(reader, expectedResults);
                        }
                    }
                }
            }
Example #8
0
            public void Select_desc_skip_limit_with_params()
            {
                var query = @"
select o.Id
from ArubaContext.Owners as o 
order by o.Id desc skip @pInt16 LIMIT @pInt64";
                var prm1  = new EntityParameter("pInt16", DbType.Int16);
                var prm2  = new EntityParameter("pInt64", DbType.Int64);

                prm1.Value = 5;
                prm2.Value = 2;

                // verifying that there are 2 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var db2 = new ArubaContext())
                    {
                        using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, null, prm1, prm2))
                        {
                            var expectedResults = db.Owners.ToList().OrderByDescending(o => o.Id).Skip(5).Take(2).Select(o => o.Id).ToList();

                            Assert.Equal(expectedResults.Count, 2);
                            VerifyAgainstBaselineResults(reader, expectedResults);
                        }
                    }
                }
            }
Example #9
0
            public void Select_desc_skip_limit_with_params_and_literal()
            {
                var query = @"
select o.Id
from ArubaContext.Owners as o
order by o.Id desc skip @pInt16 LIMIT 5";

                var expectedSql = @"
SELECT TOP (5) 
[Extent1].[Id] AS [Id]
FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] DESC) AS [row_number]
	FROM [dbo].[ArubaOwners] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > @pInt16
ORDER BY [Extent1].[Id] DESC";
                var prm1        = new EntityParameter("pInt16", DbType.Int16);

                prm1.Value = 5;

                // verifying that there are 5 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql, prm1))
                    {
                        VerifySortDescAndCountInt(reader, 5);
                    }
                }
            }
Example #10
0
            public void Select_top_nested_asc_and_desc_with_params()
            {
                var query = @"
SELECT TOP (@pInt64) C.OwnerId
FROM (
        SELECT TOP (@pInt16) o.Id AS OwnerId
        FROM ArubaContext.Owners as o
        ORDER BY o.Id ASC
    ) AS C
ORDER BY C.OwnerId DESC";

                string expectedSql = @"
SELECT TOP (@pInt64) 
[Limit1].[Id] AS [Id]
FROM ( SELECT TOP (@pInt16) [Extent1].[Id] AS [Id]
	FROM [dbo].[ArubaOwners] AS [Extent1]
	ORDER BY [Extent1].[Id] ASC
)  AS [Limit1]
ORDER BY [Limit1].[Id] DESC";
                var    prm1        = new EntityParameter("pInt16", DbType.Int16);
                var    prm2        = new EntityParameter("pInt64", DbType.Int64);

                prm1.Value = 5;
                prm2.Value = 3;

                // verifying that there are 3 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql, prm1, prm2))
                    {
                        VerifySortDescAndCountInt(reader, 3);
                    }
                }
            }
Example #11
0
            public void Select_top_nested_with_params()
            {
                var query = @"
SELECT TOP (@pInt64) C.OwnerId
FROM (
        SELECT TOP (@pInt16) o.Id AS OwnerId
        FROM ArubaContext.Owners as o
        ORDER BY o.Id
    ) AS C
ORDER BY C.OwnerId DESC";
                var prm1  = new EntityParameter("pInt16", DbType.Int16);
                var prm2  = new EntityParameter("pInt64", DbType.Int64);

                prm1.Value = 5;
                prm2.Value = 2;

                // verifying that there are 2 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, null, prm1, prm2))
                    {
                        VerifySortDescAndCountInt(reader, 2);
                    }
                }
            }
Example #12
0
            public void Select_top_order_by_reduced_with_inheritance()
            {
                var query = @"
SELECT  TOP (3) C.Id, C.Address
FROM OFTYPE (ArubaContext.Configs, CodeFirstNamespace.ArubaMachineConfig) AS C 
ORDER BY C.Id DESC";

                var expectedSql = @"
SELECT TOP (3) 
[Extent1].[Id] AS [Id], 
[Extent1].[Address] AS [Address]
FROM [dbo].[ArubaConfigs] AS [Extent1]
WHERE [Extent1].[Discriminator] = N'ArubaMachineConfig'
ORDER BY [Extent1].[Id] DESC";

                // verifying that there are 3 results returned and they are sorted in descending order
                // using a model with inheritance
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountInt(reader, 3);
                    }
                }
            }
Example #13
0
            public void Select_top_distinct()
            {
                var query = @"
SELECT DISTINCT TOP (2) o.FirstName AS name
FROM ArubaContext.Owners as o
ORDER BY name DESC";

                var expectedSql = @"
SELECT TOP (2) 
[Distinct1].[C1] AS [C1], 
[Distinct1].[FirstName] AS [FirstName]
FROM ( SELECT DISTINCT 
	[Extent1].[FirstName] AS [FirstName], 
	1 AS [C1]
	FROM [dbo].[ArubaOwners] AS [Extent1]
)  AS [Distinct1]
ORDER BY [Distinct1].[FirstName] DESC";

                // verifying that there are 2 results returned, that they are sorted in descending order
                // and they are distinct
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountString(reader, 2, distinct: true);
                    }
                }
            }
Example #14
0
        public void GeometryPointsWithinPolygon()
        {
            var query = @"
select value 
    g.c32_geometry
from 
    ArubaContext.AllTypes as g
where 
    Edm.SpatialWithin(
        g.c32_geometry,
        GeometryFromText(""MULTILINESTRING ((10 20, 15 20, 15 25, 10 25, 10 20), (12 22, 13 22, 13 23, 12 23, 12 22))"", 32768))";

            // verifying that the points returned are within the specified polygon
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STWithin"))
                {
                    var shape = DbGeometry.MultiLineFromText(
                        "MULTILINESTRING ((10 20, 15 20, 15 25, 10 25, 10 20), (12 22, 13 22, 13 23, 12 23, 12 22))", 32768);
                    VerifyValueCondition(reader, o =>
                    {
                        var g = (DbGeometry)o;
                        return(DbSpatialServices.Default.Within(g, shape));
                    });
                }
        }
Example #15
0
            public void Nested_skip_limits_in_from()
            {
                var query = @"
SELECT TOP.Id
FROM  (  
        SELECT o.Alias, o.Id 
        FROM ArubaContext.Owners AS o
        ORDER BY o.Id desc SKIP 2 LIMIT 5
) AS TOP
ORDER BY TOP.Id SKIP 1 LIMIT 2";

                var expectedSql = @"
SELECT TOP (2) 
[Limit1].[Id] AS [Id]
FROM ( SELECT [Limit1].[Id] AS [Id], row_number() OVER (ORDER BY [Limit1].[Id] ASC) AS [row_number]
	FROM ( SELECT TOP (5) [Extent1].[Id] AS [Id]
		FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] DESC) AS [row_number]
			FROM [dbo].[ArubaOwners] AS [Extent1]
		)  AS [Extent1]
		WHERE [Extent1].[row_number] > 2
		ORDER BY [Extent1].[Id] DESC
	)  AS [Limit1]
)  AS [Limit1]
WHERE [Limit1].[row_number] > 1
ORDER BY [Limit1].[Id] ASC";

                // verifying that there are 2 integer results returned
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifyTypeAndCount(reader, 2, "Int32");
                    }
                }
            }
Example #16
0
            public void Skip_no_limit_with_inheritance()
            {
                var query = @"
SELECT Config.Id, Config.Address
FROM OFTYPE (ArubaContext.Configs, CodeFirstNamespace.ArubaMachineConfig) AS Config 
ORDER BY Config.Id DESC SKIP 1";

                var expectedSql = @"
SELECT 
[Filter1].[Id] AS [Id], 
[Filter1].[Address] AS [Address]
FROM ( SELECT [Extent1].[Id] AS [Id], [Extent1].[Address] AS [Address], row_number() OVER (ORDER BY [Extent1].[Id] DESC) AS [row_number]
	FROM [dbo].[ArubaConfigs] AS [Extent1]
	WHERE [Extent1].[Discriminator] = N'ArubaMachineConfig'
)  AS [Filter1]
WHERE [Filter1].[row_number] > 1
ORDER BY [Filter1].[Id] DESC";

                // verify that the first 1 is skipped and that the results are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var db2 = new ArubaContext())
                    {
                        using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, expectedSql))
                        {
                            var expectedResults = db.Configs.OfType <ArubaMachineConfig>().ToList().OrderByDescending(c => c.Id).Skip(1)
                                                  .Select(c => c.Id);
                            VerifyAgainstBaselineResults(reader, expectedResults);
                        }
                    }
                }
            }
Example #17
0
        public void GeometryPointsIntersectWithBufferOfPolygon()
        {
            var query   = @"
select value 
	g.c32_geometry
from 
	ArubaContext.AllTypes as g 
where 
	Edm.SpatialIntersects(
		GeometryFromText(""POLYGON ((11 20, 10 20, 10 21, 11 20))"", 32768),
		Edm.SpatialBuffer(g.c32_geometry, 5)
	)"    ;
            var polygon = DbGeometry.PolygonFromText("POLYGON ((11 20, 10 20, 10 21, 11 20))", 32768);

            // verifying that the results returned intersect the buffer (5)
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STIntersects"))
                {
                    VerifyValueCondition(reader, o =>
                    {
                        var g = (DbGeometry)o;
                        return(DbSpatialServices.Default.Intersects(polygon, DbSpatialServices.Default.Buffer(g, 5)));
                    });
                }
        }
Example #18
0
        public void GeographyPointsIntersectsPolygon()
        {
            var query = @"  
select value 
    g.c31_geography
from 
    ArubaContext.AllTypes as g
where 
    Edm.SpatialIntersects(
        g.c31_geography,
        GeographyFromText(""MULTIPOLYGON (((-136.34518219919187 -45.444057174306, 100.08107983924452 0.029396673640468753, -12.771444237628261 0.029396673640468753, -136.34518219919187 -45.444057174306), (-136.34518219919187 -59.574853846584816, -6.6232329320655019 -12.718185214660565, 93.93286853368177 -12.718185214660565, -136.34518219919187 -59.574853846584816)))"", 4326))";

            // verifying that the results that are returned intersect the specified polygons
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STIntersect"))
                {
                    var polygon = DbGeography.MultiPolygonFromText(
                        "MULTIPOLYGON (((-136.34518219919187 -45.444057174306, 100.08107983924452 0.029396673640468753, -12.771444237628261 0.029396673640468753, -136.34518219919187 -45.444057174306), (-136.34518219919187 -59.574853846584816, -6.6232329320655019 -12.718185214660565, 93.93286853368177 -12.718185214660565, -136.34518219919187 -59.574853846584816)))",
                        4326);

                    VerifyValueCondition(reader, o =>
                    {
                        var g = (DbGeography)o;
                        return(DbSpatialServices.Default.Intersects(polygon, g));
                    });
                }
        }
Example #19
0
            public void Edge_case_column_name()
            {
                var query = @"
SELECT c.Id as [row_number]
FROM ArubaContext.Owners as c
ORDER BY [row_number] skip 2 limit 3";

                var expectedSql = @"
SELECT TOP (3) 
[Extent1].[Id] AS [Id]
FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] ASC) AS [row_number]
	FROM [dbo].[ArubaOwners] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > 2
ORDER BY [Extent1].[Id] ASC";

                // verifying that there are 3 results returned and they are sorted in ascending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortAscAndCountInt(reader, 3);
                    }
                }
            }
Example #20
0
        public void GeometryPolygonsIntersectionAndDisjointAnother()
        {
            var query       = @"
select value 
	g.c32_geometry
from 
	ArubaContext.AllTypes as g 
where 
	Edm.SpatialDisjoint(
		GeometryFromText(""POLYGON ((13 22, 12 22, 12 23, 13 22))"", 32768),
		Edm.SpatialIntersection(
			g.c32_geometry,
			GeometryFromText(""MULTILINESTRING ((12 22, 15 22, 15 25, 12 25, 12 22), (13 23, 14 23, 14 24, 13 24, 13 23))"", 32768)
		)
	)"    ;
            var polygon     = DbGeometry.PolygonFromText("POLYGON ((13 22, 12 22, 12 23, 13 22))", 32768);
            var multiString =
                DbGeometry.MultiLineFromText(
                    "MULTILINESTRING ((12 22, 15 22, 15 25, 12 25, 12 22), (13 23, 14 23, 14 24, 13 24, 13 23))", 32768);


            // verifying that the results that are returned, when intersected with the given lineStrings are disjoint from the
            // specified polygon as stated in the query
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STDisjoint"))
                {
                    VerifyValueCondition(reader, o =>
                    {
                        var g = (DbGeometry)o;
                        return(DbSpatialServices.Default.Disjoint(polygon, DbSpatialServices.Default.Intersection(g, multiString)));
                    });
                }
        }
Example #21
0
            public void Skip_with_no_limit_and_multiset()
            {
                var query = @"
SELECT c.Id
FROM ArubaContext.Owners AS c
ORDER BY c.Id DESC SKIP 2";

                var expectedSql = @"
SELECT 
[Extent1].[Id] AS [Id]
FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] DESC) AS [row_number]
	FROM [dbo].[ArubaOwners] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > 2
ORDER BY [Extent1].[Id] DESC";

                using (var db = new ArubaContext())
                {
                    using (var db2 = new ArubaContext())
                    {
                        using (var reader = QueryTestHelpers.EntityCommandSetup(db2, query, expectedSql))
                        {
                            var expectedResults = db.Owners.ToList().OrderByDescending(o => o.Id).Skip(2).Select(o => o.Id);
                            VerifyAgainstBaselineResults(reader, expectedResults);
                        }
                    }
                }
            }
Example #22
0
            public void Select_top_nested_order_by()
            {
                var query = @"
SELECT TOP (4) C.Id
FROM ( SELECT TOP (14) o.Id AS Id
    FROM ArubaContext.Owners as o
    ORDER BY o.Id
) AS C
ORDER BY C.Id DESC";

                var expectedSql = @"
SELECT TOP (4) 
[Limit1].[Id] AS [Id]
FROM ( SELECT TOP (14) [Extent1].[Id] AS [Id]
	FROM [dbo].[ArubaOwners] AS [Extent1]
	ORDER BY [Extent1].[Id] ASC
)  AS [Limit1]
ORDER BY [Limit1].[Id] DESC";

                // verifying that there are 4 results returned and they are sorted in descending order
                // with nested TOP statements
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountInt(reader, 4);
                    }
                }
            }
Example #23
0
            public void Complicated_order_by()
            {
                var query = @"
SELECT 1, d.Id 
FROM ArubaContext.Owners as c, ArubaContext.Owners as d 
WHERE c.Id == d.Id 
ORDER BY anyelement(select value c.Id * (-1) from {d} as c) SKIP 4 LIMIT 3";

                var expectedSql = @"
SELECT TOP (3) 
[Project1].[Id] AS [Id], 
[Project1].[C2] AS [C1]
FROM ( SELECT [Project1].[C1] AS [C1], [Project1].[Id] AS [Id], [Project1].[C2] AS [C2], row_number() OVER (ORDER BY [Project1].[C1] ASC) AS [row_number]
	FROM ( SELECT 
		[Extent1].[Id] * -1 AS [C1], 
		[Extent1].[Id] AS [Id], 
		1 AS [C2]
		FROM [dbo].[ArubaOwners] AS [Extent1]
	)  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] > 4
ORDER BY [Project1].[C1] ASC";

                // verifying that there are 3 results returned and they are sorted in descending order
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifySortDescAndCountInt(reader, 3);
                    }
                }
            }
Example #24
0
            public void Anyelement_over_skip_limit()
            {
                var query = @"
ANYELEMENT (
    SELECT C.Id
    FROM ArubaContext.Owners AS C
    ORDER BY C.Id SKIP 3 LIMIT 2
)";

                var expectedSql = @"
SELECT 
[Element1].[Id] AS [Id]
FROM   ( SELECT 1 AS X ) AS [SingleRowTable1]
LEFT OUTER JOIN  (SELECT TOP (1) [element].[Id] AS [Id]
	FROM ( SELECT TOP (2) 
		[Extent1].[Id] AS [Id]
		FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] ASC) AS [row_number]
			FROM [dbo].[ArubaOwners] AS [Extent1]
		)  AS [Extent1]
		WHERE [Extent1].[row_number] > 3
		ORDER BY [Extent1].[Id] ASC
	)  AS [element] ) AS [Element1] ON 1 = 1"    ;

                // verifying that there is 1 result returned and that it is an integer
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        VerifyTypeAndCount(reader, 1, "Int32");
                    }
                }
            }
Example #25
0
            public void Nested_projections_list()
            {
                var query = @"
SELECT VALUE (
       SELECT VALUE TOP (2) d.Id
       FROM  ArubaContext.Owners AS d
       WHERE d.Id > c.Id
       ORDER BY d.Id 
       ) AS top 
FROM ArubaContext.Owners AS c 
ORDER BY c.Id skip 5 limit 2";

                var expectedSql = @"
SELECT 
[Project2].[Id] AS [Id], 
[Project2].[C1] AS [C1], 
[Project2].[Id1] AS [Id1]
FROM ( SELECT 
	[Limit1].[Id] AS [Id], 
	[Limit2].[Id] AS [Id1], 
	CASE WHEN ([Limit2].[Id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]
	FROM   (SELECT TOP (2) [Extent1].[Id] AS [Id]
		FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] ASC) AS [row_number]
			FROM [dbo].[ArubaOwners] AS [Extent1]
		)  AS [Extent1]
		WHERE [Extent1].[row_number] > 5
		ORDER BY [Extent1].[Id] ASC ) AS [Limit1]
	OUTER APPLY  (SELECT TOP (2) [Project1].[Id] AS [Id]
		FROM ( SELECT 
			[Extent2].[Id] AS [Id]
			FROM [dbo].[ArubaOwners] AS [Extent2]
			WHERE [Extent2].[Id] > [Limit1].[Id]
		)  AS [Project1]
		ORDER BY [Project1].[Id] ASC ) AS [Limit2]
)  AS [Project2]
ORDER BY [Project2].[Id] ASC, [Project2].[C1] ASC";

                // verifying that there are 4 results returned and they are integers
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        var count = 0;

                        while (reader.Read())
                        {
                            var nestedReader = (DbDataReader)reader.GetValue(0);
                            while (nestedReader.Read())
                            {
                                Assert.Equal("Int32", ((CollectionType)reader.DataRecordInfo.RecordType.EdmType).TypeUsage.EdmType.Name);
                                count++;
                            }
                        }

                        Assert.Equal(4, count);
                    }
                }
            }
Example #26
0
            public void Nested_skip_limits_in_select()
            {
                var query = @"
SELECT (
        SELECT o.Id 
        FROM ArubaContext.Owners AS o 
        ORDER BY o.Id SKIP 1 LIMIT 2) AS TOP, oo.Id
FROM ArubaContext.Owners as oo 
WHERE oo.Id > 3
ORDER BY oo.Id SKIP 2 LIMIT 3";

                var expectedSql = @"
SELECT 
[Limit1].[Id] AS [Id], 
[Project1].[C1] AS [C1], 
[Project1].[Id] AS [Id1]
FROM   (SELECT TOP (3) [Filter1].[Id] AS [Id]
	FROM ( SELECT [Extent1].[Id] AS [Id], row_number() OVER (ORDER BY [Extent1].[Id] ASC) AS [row_number]
		FROM [dbo].[ArubaOwners] AS [Extent1]
		WHERE [Extent1].[Id] > 3
	)  AS [Filter1]
	WHERE [Filter1].[row_number] > 2
	ORDER BY [Filter1].[Id] ASC ) AS [Limit1]
LEFT OUTER JOIN  (SELECT TOP (2) 
	[Extent2].[Id] AS [Id], 
	1 AS [C1]
	FROM ( SELECT [Extent2].[Id] AS [Id], row_number() OVER (ORDER BY [Extent2].[Id] ASC) AS [row_number]
		FROM [dbo].[ArubaOwners] AS [Extent2]
	)  AS [Extent2]
	WHERE [Extent2].[row_number] > 1
	ORDER BY [Extent2].[Id] ASC ) AS [Project1] ON 1 = 1
ORDER BY [Limit1].[Id] ASC, [Project1].[C1] ASC";

                // verifying that there are 3 results returned
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        var count = 0;
                        while (reader.Read())
                        {
                            var nestedReader = (DbDataReader)reader.GetValue(0);
                            while (nestedReader.Read())
                            {
                                count++;
                            }
                        }

                        Assert.Equal(3 * 2, count);
                    }
                }
            }
Example #27
0
            public void Skip_limit_with_duplicates()
            {
                var query = @"
SELECT i
FROM  {1,1,1,2,2} as i
ORDER BY i SKIP 2 LIMIT 4";

                var expectedSql = @"
SELECT TOP (4) 
[UnionAll4].[C1] AS [C1]
FROM ( SELECT [UnionAll4].[C1] AS [C1], row_number() OVER (ORDER BY [UnionAll4].[C1] ASC) AS [row_number]
	FROM  (SELECT 
		[UnionAll3].[C1] AS [C1]
		FROM  (SELECT 
			[UnionAll2].[C1] AS [C1]
			FROM  (SELECT 
				[UnionAll1].[C1] AS [C1]
				FROM  (SELECT 
					1 AS [C1]
					FROM  ( SELECT 1 AS X ) AS [SingleRowTable1]
				UNION ALL
					SELECT 
					1 AS [C1]
					FROM  ( SELECT 1 AS X ) AS [SingleRowTable2]) AS [UnionAll1]
			UNION ALL
				SELECT 
				1 AS [C1]
				FROM  ( SELECT 1 AS X ) AS [SingleRowTable3]) AS [UnionAll2]
		UNION ALL
			SELECT 
			2 AS [C1]
			FROM  ( SELECT 1 AS X ) AS [SingleRowTable4]) AS [UnionAll3]
	UNION ALL
		SELECT 
		2 AS [C1]
		FROM  ( SELECT 1 AS X ) AS [SingleRowTable5]) AS [UnionAll4]
)  AS [UnionAll4]
WHERE [UnionAll4].[row_number] > 2
ORDER BY [UnionAll4].[C1] ASC";

                // verifying that there are 3 results returned and that they match the expected output
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, expectedSql))
                    {
                        var values = new List <int> {
                            1, 2, 2
                        };
                        VerifyAgainstBaselineResults(reader, values);
                    }
                }
            }
Example #28
0
        public void GeographyDistanceFromMultiPolygon()
        {
            var query = @"
select Edm.Distance(g.c31_geography,
    CAST(Edm.GeographyFromText(""MULTIPOLYGON (((-136.34518219919187 -45.444057174306, 100.08107983924452 0.029396673640468753, -12.771444237628261 0.029396673640468753, -136.34518219919187 -45.444057174306), (-136.34518219919187 -59.574853846584816, -6.6232329320655019 -12.718185214660565, 93.93286853368177 -12.718185214660565, -136.34518219919187 -59.574853846584816)))"", 4326) AS Edm.Geography))
from ArubaContext.AllTypes as g 
where (Edm.Distance(g.c31_geography,
    CAST(Edm.GeographyFromText(""MULTIPOLYGON (((-136.34518219919187 -45.444057174306, 100.08107983924452 0.029396673640468753, -12.771444237628261 0.029396673640468753, -136.34518219919187 -45.444057174306), (-136.34518219919187 -59.574853846584816, -6.6232329320655019 -12.718185214660565, 93.93286853368177 -12.718185214660565, -136.34518219919187 -59.574853846584816)))"", 4326) AS Edm.Geography)) <= 600000)";

            // verifying that all of the results are less than or equal to 600000 as specified in the query
            using (var db = new ArubaContext())
                using (var reader = QueryTestHelpers.EntityCommandSetup(db, query, "STDistance"))
                {
                    VerifyValueCondition(reader, a => (double)a <= 600000);
                }
        }
Example #29
0
            public void Table_self_referential_except()
            {
                var query = @"
ArubaContext.Owners
EXCEPT
ArubaContext.Owners";

                // verifying that there are no results returned
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query))
                    {
                        VerifySortAscAndCountInt(reader, 0);
                    }
                }
            }
Example #30
0
            public void Except_with_nulls()
            {
                var query = @"
{1, null, null, 5} except {5, null, 7}";

                // verifying that { 1 } is returned
                using (var db = new ArubaContext())
                {
                    using (var reader = QueryTestHelpers.EntityCommandSetup(db, query))
                    {
                        VerifyAgainstBaselineResults(reader, new List <int> {
                            1
                        });
                    }
                }
            }