2016-04-05 5 views
1

この例では、開発バージョン3.1.0-alpha6でNpgsqlを使用します。NpgsqlでPostgisMultipolygonを選択したときのタイムアウト

PostgisGeometryオブジェクトをクエリ(NpgsqlDbType.Geometry) のパラメータとして指定し、オブジェクトを再度選択したいとします。

Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollectionなどのタイプのクエリは正しく返されます。ポリゴンが1つのみのPostgisMultiPolygonオブジェクトも正しく返されます。

しかし、複数のポリゴンを持つPostgisMultiPolygonでは動作しません。

PostgisMultiPolygon geom1 = new PostgisMultiPolygon(new[] 
{ 
    new PostgisPolygon(new[] 
    { 
     new[] 
     { 
      new Coordinate2D(40, 40), 
      new Coordinate2D(20, 45), 
      new Coordinate2D(45, 30), 
      new Coordinate2D(40, 40) 
     } 
    }) 
}) {SRID = 4326}; 
PostgisMultiPolygon geom2 = new PostgisMultiPolygon(new[] 
{ 
    new PostgisPolygon(new[] 
    { 
     new[] 
     { 
      new Coordinate2D(40, 40), 
      new Coordinate2D(20, 45), 
      new Coordinate2D(45, 30), 
      new Coordinate2D(40, 40) 
     } 
    }), 
    new PostgisPolygon(new[] 
    { 
     new[] 
     { 
      new Coordinate2D(20, 35), 
      new Coordinate2D(10, 30), 
      new Coordinate2D(10, 10), 
      new Coordinate2D(30, 5), 
      new Coordinate2D(45, 20), 
      new Coordinate2D(20, 35) 
     } 
    }) 
}) {SRID = 4326}; 

using (NpgsqlConnection connection = CreateConnection()) 
{ 
    NpgsqlCommand command = connection.CreateCommand(); 
    command.Parameters.AddWithValue("p1", NpgsqlDbType.Geometry, geom1); 
    command.CommandText = "Select :p1"; 
    command.ExecuteScalar(); 
} 

using (NpgsqlConnection connection = CreateConnection()) 
{ 
    NpgsqlCommand command = connection.CreateCommand(); 
    command.Parameters.AddWithValue("p1", NpgsqlDbType.Geometry, geom2); 
    command.CommandText = "Select :p1"; 
    command.ExecuteScalar(); //timeout occurs... 
} 

CommandTimeoutを大きくすると、とにかくタイムアウトが発生します。 ありがとうございます!このバグの

+0

私はこの出来事を見ることができ、あなたがhttp://github.com/npgsql/npgsqlで問題を開いてくださいすることができますか? –

+0

問題:https://github.com/npgsql/npgsql/issues/1022 –

答えて

関連する問題