public void TestGetFeatureInvalidGeometry(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ValidateGeometries = validateGeometries; var feature = sq.GetFeature(_idInvalidGeom); NUnit.Framework.Assert.IsNotNull(feature); if (providerMode == SqlServerProviderMode.NativeSqlBytes) { // client side conversion always attempts validation NUnit.Framework.Assert.IsTrue(!feature.Geometry.IsEmpty && feature.Geometry.IsValid); } else { if (validateGeometries) { NUnit.Framework.Assert.IsTrue(!feature.Geometry.IsEmpty && feature.Geometry.IsValid); } else { NUnit.Framework.Assert.IsTrue(feature.Geometry.IsEmpty); } } }
public void TestGetFeatureNonExisting(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); var feature = sq.GetFeature(99999999); NUnit.Framework.Assert.IsNull(feature); }
public void TestGetFeatureEmptyGeometry(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); var feature = sq.GetFeature(_idEmptyGeom); NUnit.Framework.Assert.IsNotNull(feature); NUnit.Framework.Assert.IsTrue(feature.Geometry.IsEmpty); }
public void TestGetFeatureNullGeometry(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); var feature = sq.GetFeature(_idNullGeom); Assert.IsNotNull(feature); Assert.IsNull(feature.Geometry); }
public void TestGetGeometriesInViewNOLOCK(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.NoLockHint = true; sq.ValidateGeometries = validateGeometries; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); NUnit.Framework.Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, geometries.Count); }
public void TestGetGeometriesInViewDefinitionQuery(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.DefinitionQuery = "NAME LIKE 'A%'"; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); NUnit.Framework.Assert.IsNotNull(geometries); NUnit.Framework.Assert.LessOrEqual(geometries.Count, _numValidGeoms); }
public void TestGetGeometriesInView(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ValidateGeometries = validateGeometries; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); Assert.IsNotNull(geometries); Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, geometries.Count); }
public void TestExecuteIntersectionQuery(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ValidateGeometries = validateGeometries; SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(GetTestEnvelope(spatialType), ds); NUnit.Framework.Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, ds.Tables[0].Rows.Count); }
public void TestGetGeometriesInViewFORCESEEK(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ForceSeekHint = true; sq.ValidateGeometries = validateGeometries; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); Assert.IsNotNull(geometries); // NOTE ValidateGeometries is ignored when using ForceSeek Assert.AreEqual(_numValidGeoms, geometries.Count); }
public void TestGetGeometriesInViewFORCEINDEX(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ForceIndex = spatialType == SharpMap.Data.Providers.SqlServerSpatialObjectType.Geometry ? GeometrySpatialIndex : GeographySpatialIndex; sq.ValidateGeometries = validateGeometries; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); NUnit.Framework.Assert.IsNotNull(geometries); // NOTE ValidateGeometries is ignored when using ForceIndex NUnit.Framework.Assert.AreEqual(_numValidGeoms, geometries.Count); }
public void TestExecuteIntersectionQueryExceedGeogMaxExtents(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, double x1, double x2, double y1, double y2) { // occurs when user zooms out beyond map extents. For Geog, when latitude approaches 90 N or S can result in // error 24206: "The specified input cannot be accepted because it contains an edge with antipodal points." // Longitudes exceeding -179.99999999 or 180.0 are "wrapped" resulting in unexpected polygon (also contributes to err 24206) SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(new GeoAPI.Geometries.Envelope(x1, x2, y1, y2), ds); NUnit.Framework.Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, ds.Tables[0].Rows.Count); }
public void TestGetGeometriesInViewAllHints(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.NoLockHint = true; sq.ForceSeekHint = true; sq.ForceIndex = spatialType == SqlServerSpatialObjectType.Geometry ? GeometrySpatialIndex : GeographySpatialIndex; sq.ValidateGeometries = validateGeometries; var geometries = sq.GetGeometriesInView(GetTestEnvelope(spatialType)); Assert.IsNotNull(geometries); // Note: ValidateGeometries is ignored when using ForceSeek or ForceIndex Assert.AreEqual(_numValidGeoms, geometries.Count); }
public void TestExecuteIntersectionQueryAllHints(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.NoLockHint = true; sq.ForceSeekHint = true; sq.ForceIndex = spatialType == SharpMap.Data.Providers.SqlServerSpatialObjectType.Geometry ? GeometrySpatialIndex : GeographySpatialIndex;; sq.ValidateGeometries = validateGeometries; SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(GetTestEnvelope(spatialType), ds); // Note: ValidateGeometries ignored when using ForceSeek or ForceIndex NUnit.Framework.Assert.AreEqual(_numValidGeoms, ds.Tables[0].Rows.Count); }
private SharpMap.Data.Providers.SqlServer2008 GetTestProvider(SqlServerProviderMode providerMode, SharpMap.Data.Providers.SqlServerSpatialObjectType spatialType) { SharpMap.Data.Providers.SqlServer2008 provider; switch (providerMode) { case SqlServerProviderMode.NativeSqlBytes: //Assert.Ignore("Ignore SharpMap.Data.Providers.SqlServer2008Ex"); if (spatialType == SharpMap.Data.Providers.SqlServerSpatialObjectType.Geography) { // NB note forcing WGS84 provider = new SharpMap.Data.Providers.SqlServer2008Ex(UnitTests.Properties.Settings.Default.SqlServer2008, "roads_ugl_geog", "GEOG", "ID", spatialType, GeographySrid, SharpMap.Data.Providers.SqlServer2008ExtentsMode.QueryIndividualFeatures); } else { provider = new SharpMap.Data.Providers.SqlServer2008Ex(UnitTests.Properties.Settings.Default.SqlServer2008, "roads_ugl_geom", "GEOM", "ID", spatialType, _geometrySrid, SharpMap.Data.Providers.SqlServer2008ExtentsMode.QueryIndividualFeatures); } break; default: if (spatialType == SharpMap.Data.Providers.SqlServerSpatialObjectType.Geography) { // NB note forcing WGS84 provider = new SharpMap.Data.Providers.SqlServer2008(UnitTests.Properties.Settings.Default.SqlServer2008, "roads_ugl_geog", "GEOG", "ID", spatialType, GeographySrid, SharpMap.Data.Providers.SqlServer2008ExtentsMode.QueryIndividualFeatures); } else { provider = new SharpMap.Data.Providers.SqlServer2008(UnitTests.Properties.Settings.Default.SqlServer2008, "roads_ugl_geom", "GEOM", "ID", spatialType, _geometrySrid, SharpMap.Data.Providers.SqlServer2008ExtentsMode.QueryIndividualFeatures); } break; } //provider.ValidateGeometries = true //provider.DefinitionQuery = "ID NOT IN (103)" // Invalid Geom return(provider); }
public SqlProvider() { _mode = SqlServerProviderMode.Sql2008; }
private void SetProviderMode(Enum value) { if(value == null) { // use default. return; } if(!(value is SqlServerProviderMode)) { throw Error.ArgumentTypeMismatch("ProviderMode value"); } if(!Enum.IsDefined(typeof(SqlServerProviderMode), value)) { throw Error.ArgumentOutOfRange("ProviderMode"); } _mode = (SqlServerProviderMode)value; }
internal SqlProvider(SqlServerProviderMode mode) { _mode = mode; }
internal Visitor(SqlFactory sql, SqlServerProviderMode providerMode) { this.sql = sql; this.providerMode = providerMode; this.skipper = new SqlSelectionSkipper(this); }
[ResourceExposure(ResourceScope.Machine)] // connection parameter may refer to filenames. void IProvider.Initialize(IDataServices dataServices, object connection) { if(dataServices == null) { throw Error.ArgumentNull("dataServices"); } _services = dataServices; DbConnection con; DbTransaction tx = null; string fileOrServerOrConnectionString = connection as string; if(fileOrServerOrConnectionString != null) { string connectionString = this.GetConnectionString(fileOrServerOrConnectionString); _dbName = this.GetDatabaseName(connectionString); if(_dbName.EndsWith(".sdf", StringComparison.OrdinalIgnoreCase)) { _mode = SqlServerProviderMode.SqlCE; } if(_mode == SqlServerProviderMode.SqlCE) { DbProviderFactory factory = SqlProvider.GetProvider(SqlCeProviderInvariantName); if(factory == null) { throw Error.ProviderNotInstalled(_dbName, SqlCeProviderInvariantName); } con = factory.CreateConnection(); } else { con = new SqlConnection(); } con.ConnectionString = connectionString; } else { // We only support SqlTransaction and SqlCeTransaction tx = connection as SqlTransaction; if(tx == null) { // See if it's a SqlCeTransaction if(connection.GetType().FullName == SqlCeTransactionTypeName) { tx = connection as DbTransaction; } } if(tx != null) { connection = tx.Connection; } con = connection as DbConnection; if(con == null) { throw Error.InvalidConnectionArgument("connection"); } if(con.GetType().FullName == SqlCeConnectionTypeName) { _mode = SqlServerProviderMode.SqlCE; } _dbName = this.GetDatabaseName(con.ConnectionString); } // initialize to the default command timeout using(DbCommand c = con.CreateCommand()) { _commandTimeout = c.CommandTimeout; } int maxUsersPerConnection = 1; if(con.ConnectionString.IndexOf("MultipleActiveResultSets", StringComparison.OrdinalIgnoreCase) >= 0) { DbConnectionStringBuilder builder = new DbConnectionStringBuilder(); builder.ConnectionString = con.ConnectionString; if(string.Compare((string)builder["MultipleActiveResultSets"], "true", StringComparison.OrdinalIgnoreCase) == 0) { maxUsersPerConnection = 10; } } // If fileOrServerOrConnectionString != null, that means we just created the connection instance and we have to tell // the SqlConnectionManager that it should dispose the connection when the context is disposed. Otherwise the user owns // the connection and should dispose of it themselves. _conManager = new ConnectionManager(this, con, maxUsersPerConnection, fileOrServerOrConnectionString != null /*disposeConnection*/); if(tx != null) { _conManager.Transaction = tx; } #if DEBUG SqlNode.Formatter = new SqlFormatter(); #endif Type readerType; if(_mode == SqlServerProviderMode.SqlCE) { readerType = con.GetType().Module.GetType(SqlCeDataReaderTypeName); } else if(con is SqlConnection) { readerType = typeof(SqlDataReader); } else { readerType = typeof(DbDataReader); } _readerCompiler = new ObjectReaderCompiler(readerType, _services); }
internal static SqlNode Convert(SqlNode node, SqlFactory nodeFactory, SqlServerProviderMode providerMode) { return new Visitor(nodeFactory, providerMode).Visit(node); }