1. 14 Oct, 2011 1 commit
    • Alexey Botchkov's avatar
      GIS code. · 8432284d
      Alexey Botchkov authored
      Forward calculations introduced.
      
      per-file comments:
        sql/gcalc_slicescan.cc
        sql/gcalc_slicescan.h
        sql/gcalc_tools.cc
        sql/gcalc_tools.h
        sql/item_geofunc.cc
      8432284d
  2. 06 Oct, 2011 1 commit
  3. 05 Oct, 2011 1 commit
    • Alexey Botchkov's avatar
      Valgrind warning fixed. · 0048f0b1
      Alexey Botchkov authored
      Coordinate size limitation removed.
      
      per-file comments:
        mysql-test/r/gis-precise.result
              test result updated.
        sql/gcalc_slicescan.cc
              Check coordinate extent to pick better precidion in the ::set_double()
        sql/gcalc_slicescan.h
              free_list() can lead to valgrind warnig. Fixed
        sql/gcalc_tools.cc
              free_list() call changed.
      0048f0b1
  4. 04 Oct, 2011 2 commits
    • Alexey Botchkov's avatar
      GIS code cleanup. · 0edb291d
      Alexey Botchkov authored
      GCALC_xxx macros fixed for the GCALC_DBUG_OFF case.
      
      per-file comments:
        sql/gcalc_slicescan.h
      GIS code cleanup.
      0edb291d
    • Alexey Botchkov's avatar
      GIS library code cleanup. · e9985077
      Alexey Botchkov authored
      GCALC_DBUG_OFF and related infrastructure defined so we can enable/disable debugging conveniently.
      
      per-file comments:
        sql/gcalc_slicescan.cc
      GIS library code cleanup.
        sql/gcalc_slicescan.h
      GIS library code cleanup.
        sql/gcalc_tools.cc
      GIS library code cleanup.
        sql/gcalc_tools.h
      GIS library code cleanup.
      e9985077
  5. 23 Sep, 2011 4 commits
    • Alexey Botchkov's avatar
      bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs · 6e7d578b
      Alexey Botchkov authored
              Line autointersection point was treated as if it doesn't belong to the line.
              It's in some way logical, but seems to confuse people. Fixed.
      
      per_file_comments:
        mysql-test/r/gis-precise.result
      bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs
              test result updated.
        mysql-test/t/gis-precise.test
      bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs
              test case added.
        sql/gcalc_tools.cc
      bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs
              Point of line autointersection handled as it belongs to the line.
        sql/gcalc_tools.h
      bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs
              Gcalc_function::set_i_state() added
      6e7d578b
    • Alexey Botchkov's avatar
      bug #857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON · 5b83aee3
      Alexey Botchkov authored
              actually only testcase added as the bug was fixed already.
      
      modified:
        mysql-test/r/gis-precise.result
      bug #857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON
              test result updated.
        mysql-test/t/gis-precise.test
      bug #857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON
              test case added.
        sql/gcalc_tools.cc
              superfluous variable removed.
      5b83aee3
    • Alexey Botchkov's avatar
      fix for bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTs · dca6ff48
      Alexey Botchkov authored
              The 'single point' event was forgotten in the relation's calculation
      
      per-file comments:
        mysql-test/r/gis-precise.result
      fix for bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTs
              test result updated.
        mysql-test/t/gis-precise.test
      fix for bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTs
              test case added.
        sql/gcalc_tools.cc
      fix for bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTs
              scev_single_point is properly handled.
      dca6ff48
    • Alexey Botchkov's avatar
      fix for 857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON · 53ad390f
      Alexey Botchkov authored
              return GEOMETRYCOLLECTION EMPTY, not NULL for the query
      
      per-file comments:
        mysql-test/r/gis.result
      fix for 857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON
              test result updated.
        sql/spatial.cc
      fix for 857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON
              return of the Geometry::envelope() changed for the empty geometry.
      53ad390f
  6. 22 Sep, 2011 1 commit
    • Alexey Botchkov's avatar
      fixed bugs · 5123f59e
      Alexey Botchkov authored
      855485  ST_CROSSES returns different result than PostGIS for overlapping polygons
      855487  ST_WITHIN returns wrong result for partially overlapping polygons
      855492  ST_WITHIN returns TRUE on point on the edge of a polygon
      855497  ST_ENVELOPE of GEOMETRYCOLLECTION EMPTY returns NULL and not GEOMETRYCOLLECTION EMPTY
      855503  ST_EQUALS reports TRUE between a POLYGON and a MULTILINESTRING
      855505  ST_TOUCHES reports TRUE for intersecting polygon and linestring
      
              Changed the way weird functions like Crosses or Touches treated.
              Added BORDER handling to the Gcalc_function.
      
      per-file comments:
        mysql-test/r/gis-precise.result
              GIS bugs fixed.
              test result updated.
        mysql-test/t/gis-precise.test
              GIS bugs fixed.
              test cases added.
        sql/gcalc_slicescan.h
              GIS bugs fixed.
        sql/gcalc_tools.cc
              GIS bugs fixed.
        sql/gcalc_tools.h
              GIS bugs fixed.
        sql/item_create.cc
              GIS bugs fixed.
        sql/item_geofunc.cc
              GIS bugs fixed.
        sql/item_geofunc.h
              GIS bugs fixed.
        sql/spatial.cc
              GIS bugs fixed.
      5123f59e
  7. 21 Sep, 2011 3 commits
    • Alexey Botchkov's avatar
      bug 855336 ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed. · d0f2e1e5
      Alexey Botchkov authored
      per-file comments:
        mysql-test/r/gis.result
      bug 855336      ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed.
              test result updated.
        mysql-test/t/gis.test
      bug 855336      ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed.
              test case added.
        sql/item_geofunc.cc
      bug 855336      ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed.
              geom_length() call fixed.
        sql/spatial.cc
      bug 855336      ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed.
              Geometry_collection::geom_length implemented.
        sql/spatial.h
      bug 855336      ST_LENGTH does not work on GEOMETRYCOLLECTIONs fixed.
              Geometry_collection::geom_length declaration added.
      d0f2e1e5
    • Alexey Botchkov's avatar
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of... · 6b64baf3
      Alexey Botchkov authored
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
      
      per-file comments:
        mysql-test/r/gis.result
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              test result updated.
        mysql-test/t/gis.test
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              test case added.
        sql/gstream.cc
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              lookup_next_word() implemented.
        sql/gstream.h
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              lookup_next_word() added.
        sql/spatial.cc
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              name changed for the empty geometry.
        sql/spatial.h
      fix for bug 848926 GIS functions return "GEOMETRYCOLLECTION()" instead of "GEOMETRYCOLLECTION EMPTY"
              declarations modified.
      
      6b64baf3
    • Alexey Botchkov's avatar
      bugs fixed · 25b5019c
      Alexey Botchkov authored
              855253 Compiler error: gcalc_slicescan.cc:2036: error: suggest parentheses around comparison in operand of .|. in maria-5.3-gis
              850775 ST_AREA does not work on GEOMETRYCOLLECTIONs in maria-5.3-gis
      
      per-file comments:
        mysql-test/r/gis.result
              test result updated.
        mysql-test/t/gis.test
              test case added for 850775.
        sql/gcalc_slicescan.cc
              compiler error fixed.
        sql/spatial.cc
              ST_AREA implementation for GEOMETRY_COLLECTION, POINT and LINESTRING.
        sql/spatial.h
              area() declarations added.
      25b5019c
  8. 20 Sep, 2011 1 commit
    • Alexey Botchkov's avatar
      several bugs fixed here. · 0249413a
      Alexey Botchkov authored
              849789  Second assertion `m_poly_borders->next' failed in Gcalc_operation_reducer::count_slice in maria-5.3-gis
              849791  Fourth assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos
              849789  Second assertion `m_poly_borders->next' failed in Gcalc_operation_reducer::count_slice in maria-5.3-gis
              848901   Assertion `fabs(cur_isc->x-m_cur_intersection->x) + fabs(cur_isc->y-m_cur_intersection->y) < 0.000000000001' failed in Gcalc_scan_iterator::intersection_scan() in maria-5.3-gis
              
      per-file comments:
        mysql-test/r/gis-precise.result
              test result updated.
        mysql-test/r/gis.result
              test result updated.
        sql/gcalc_slicescan.cc
              bugfixes.
        sql/gcalc_slicescan.h
              bugfixes.
        sql/gcalc_tools.cc
              bugfixes.
        sql/gcalc_tools.h
              bugfixes.
        sql/item_geofunc.cc
              bugfixes.
        sql/spatial.cc
              bugfixes.
      0249413a
  9. 13 Sep, 2011 3 commits
    • Alexey Botchkov's avatar
      Fix for bug 848939 Wrong result with ST_INTERSECTION between linestrings and a polygon in 5.3-gis · 5a04ac7b
      Alexey Botchkov authored
              Coordinates were mistakenly reversed for MULTIPOINT.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug 848939 Wrong result with ST_INTERSECTION between linestrings and a polygon in 5.3-gis
              test result updated.
        mysql-test/t/gis-precise.test
      Fix for bug 848939 Wrong result with ST_INTERSECTION between linestrings and a polygon in 5.3-gis
              test case added.
        sql/gcalc_tools.cc
      Fix for bug 848939 Wrong result with ST_INTERSECTION between linestrings and a polygon in 5.3-gis
              coordinates set in the proper order.
      5a04ac7b
    • Alexey Botchkov's avatar
      Fix for bug #848901 Assertion `fabs(cur_isc->x-m_cur_intersection->x) +... · b408b1bb
      Alexey Botchkov authored
      Fix for bug #848901 Assertion `fabs(cur_isc->x-m_cur_intersection->x) + fabs(cur_isc->y-m_cur_intersection->y) < 0.000000000001' failed in Gcalc_scan_iterator::intersection_scan() in maria-5.3-gis
      
              That assertion's check was too tight. Released it a bit.
      
      per-file comments:
        mysql-test/r/gis-precise.result
              Fix for bug #848901
              test result updated.
        mysql-test/t/gis-precise.test
              Fix for bug #848901
              test case added.
        sql/gcalc_slicescan.cc
              Fix for bug #848901
              The DBUG_ASSERT check is too tight here.
      
      b408b1bb
    • Alexey Botchkov's avatar
      Fix for few similar bugs: · 3882c5d6
      Alexey Botchkov authored
        #841622 Assertion `t->rp->type == Gcalc_function::shape_line' failed in Gcalc_operation_reducer::end_line in maria-5.3-gi
        #841625 Assertion `m_poly_borders->next' failed in Gcalc_operation_reducer::count_slice in maria-5.3-gis
        #841638 Assertion `!m_prev || m_prev->x != x || m_prev->y != y' failed in Gcalc_shape_transporter::int_add_point in maria-5.3-gis
        #841662 Third assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos
        #841745 Assertion `!sp0->is_bottom()' failed in Gcalc_scan_iterator::find_intersections in maria-5.3-gis
      
        They mostly was caused by inprecision of double arithmetic.
        Fixed by changes in how to handle multiple intersections to keep their order right.
      
        Also ST_DISTANCE(GEOM, EMPTY_GEOM) was defined as NULL.
      
      
      per-file comments:
        mysql-test/r/gis-precise.result
         GIS bugfixes.
              test result updated.
        mysql-test/t/gis-precise.test
         GIS bugfixes.
              test cases added.
        sql/gcalc_slicescan.cc
         GIS bugfixes.
              If intersections are close, add order checks to cope with the
              double calcualtions imprecision.
        sql/gcalc_slicescan.h
         GIS bugfixes.
              n_row parameter added to intersection to check their order.
        sql/item_geofunc.cc
         GIS bugfixes.
              ST_DISTANCE(GEOM, EMPTY_GEOM) returns NULL.
      3882c5d6
  10. 05 Sep, 2011 2 commits
    • Alexey Botchkov's avatar
      bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and MULTIPOLYGONs in 5.3-gis. · a1315808
      Alexey Botchkov authored
              When edges of a polygon coicide, it can form an pike, that is turned into a line after an operation.
              In this case a former polygon point can be an end of a single line, and that case wasn't properly handled.
      
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and MULTIPOLYGONs in 5.3-gis.
              test result updated.
      
        mysql-test/t/gis-precise.test
      bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and MULTIPOLYGONs in 5.3-gis.
              test case added.
      
        sql/gcalc_tools.cc
      bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and MULTIPOLYGONs in 5.3-gis.
              in the scev_two_ends case check if we have single line ending on a polygon node.
      a1315808
    • Alexey Botchkov's avatar
      bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and... · 97eae1cd
      Alexey Botchkov authored
      bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and MULTILINESTRING in maria-5.3-gis.
              wrong variable was used as a result of inattentive copypaste.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and MULTILINESTRING in maria-5.3-gis.
           test result updated.
      
        mysql-test/t/gis-precise.test
      bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and MULTILINESTRING in maria-5.3-gis.
           test case added.
      
        sql/item_geofunc.cc
      bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and MULTILINESTRING in maria-5.3-gis.
           use 'ev' variable instead of the 'evpos'.
      
      97eae1cd
  11. 04 Sep, 2011 2 commits
    • Alexey Botchkov's avatar
      bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis. · 6dfa30e9
      Alexey Botchkov authored
          Line loops weren't recognized when collect results.
          Fixed by checking if we got the same beginning point of the line.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis.
            test result updated.
        mysql-test/t/gis-precise.test
      bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis.
            test case added.
        sql/gcalc_tools.cc
      bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis.
            check if we get the beginning node of the linestring, then cut the loop.
      6dfa30e9
    • Alexey Botchkov's avatar
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis. · eefff876
      Alexey Botchkov authored
          We didn't implement an empty geometry. And returning NULL instead of it is not
          quite correct. So here is the implementation of the empty value as GEOMETRYCOLLECTION().
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          test result updated.
      
        mysql-test/r/gis.result
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          test result updated.
      
        mysql-test/t/gis-precise.test
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          test case added.
      
        mysql-test/t/gis.test
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          test case added.
      
        sql/field.cc
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          store GEOMETRYCOLLECTION() properly.
      
        sql/gcalc_tools.cc
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          create the GEOMETRYCOLLECTION() for the empty result.
      
        sql/gstream.h
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          next_symbol() added.
      
        sql/spatial.cc
      bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis.
          code modified to handle 0 geometries in the GEOMETRYCOLLECTION properly.
      eefff876
  12. 02 Sep, 2011 1 commit
    • Alexey Botchkov's avatar
      bugs #801560 and #802194 · c937b758
      Alexey Botchkov authored
      tests added.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bugs #801560 and #802194
              test result updated.
      
        mysql-test/t/gis-precise.test
      bugs #801560 and #802194
              test case added.
      c937b758
  13. 01 Sep, 2011 1 commit
  14. 13 Jul, 2011 1 commit
    • Alexey Botchkov's avatar
      Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION. · 90c4df7a
      Alexey Botchkov authored
              Second smaller hole in the polygon got link to the bigger one as it's the
              outer ring. Fixed by specifying the outer ring explicitly.
      
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
              test result updated.
      
        mysql-test/t/gis-precise.test
      Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
              test case added.
      
        sql/gcalc_tools.cc
      Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
              specify the outer ring explicitly in the get_polygon_result parameter.
      
        sql/gcalc_tools.h
      Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
              add the outer ring as a parameter to the get_polygon_result.
      90c4df7a
  15. 12 Jul, 2011 1 commit
    • Alexey Botchkov's avatar
      Fix for bug #801217 Assertion `t1->result_range' in Gcalc_operation_reducer::end_couple. · e7c9f52f
      Alexey Botchkov authored
              We cannot cut a line from a polygon. So if the polygon fits the condition, and
              the intersection of a line and the polygon doesn't, we just skip the line.
              That rule wasn't applied if the line start was inside the polygon, which leaded
              to the assertion.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug #801217 Assertion `t1->result_range' in Gcalc_operation_reducer::end_couple.
              test result updated.
        mysql-test/t/gis-precise.test
      Fix for bug #801217 Assertion `t1->result_range' in Gcalc_operation_reducer::end_couple.
              test case added.
        sql/gcalc_tools.cc
      Fix for bug #801217 Assertion `t1->result_range' in Gcalc_operation_reducer::end_couple.
              Don't mark the line as a border if it's inside a polygon that fits the result condition.
      e7c9f52f
  16. 08 Jul, 2011 1 commit
    • Alexey Botchkov's avatar
      Fix for bug #804259 Second assertion in Gis_geometry_collection::init_from_opresult. · 67e93709
      Alexey Botchkov authored
              A polygon has no right to have holes that are actually points.
              So just skip them when we collect the result of an operation.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug #804259 Second assertion in Gis_geometry_collection::init_from_opresult.
              test result updated.
        mysql-test/t/gis-precise.test
      Fix for bug #804259 Second assertion in Gis_geometry_collection::init_from_opresult.
              test case added.
        sql/gcalc_tools.cc
      Fix for bug #804259 Second assertion in Gis_geometry_collection::init_from_opresult.
              Skip the point in the result if it's the hole inside a polygon.
      67e93709
  17. 07 Jul, 2011 2 commits
    • Alexey Botchkov's avatar
      Fix for bug #805860 Second assertion Assertion `n > 0 && n <... · e182ae27
      Alexey Botchkov authored
      Fix for bug #805860 Second assertion Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos.
              Just typo-style mistake. Should be '||' instead of '&&'.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug #805860 Second assertion Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos.
              test result updated.
        mysql-test/t/gis-precise.test
      Fix for bug #805860 Second assertion Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos.
              test case added.
        sql/item_geofunc.cc
      Fix for bug #805860 Second assertion Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos.
              condition fixed.
      
      e182ae27
    • Alexey Botchkov's avatar
      Fix for bug #804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection · 13f6e111
      Alexey Botchkov authored
              There were actually two bugs. One was when the line that intersects itself
              the intersection point treated as it doesn't belong to the line.
              Second when edges partly coincide, wrong result produced when we try to find their
              intersection.
      
      
      per-file comments:
        mysql-test/r/gis-precise.result
      Fix for bug #804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection
              test result updated.
      
        mysql-test/t/gis-precise.test
      Fix for bug #804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection
              test case added.
      
        sql/gcalc_slicescan.cc
      Fix for bug #804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection
              skip the intersection if it just line that intersects itself.
      
        sql/gcalc_tools.cc
      Fix for bug #804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection
              if edges coincide, just pick the first coinciding poing as an intersection.
      13f6e111
  18. 05 Jul, 2011 1 commit
    • Alexey Botchkov's avatar
      bug #804305 Crash in wkb_get_double with ST_INTERSECTION. · f3b850a7
      Alexey Botchkov authored
              That crash happened with the complicated topology of the result.
              If we found a hole in a polygon whose outside border was already
              found, we need to paste the hole right after it and respectively
              shift polygons after it. Also we need to update poly_position fields
              in these polygons. That last thing wasn't properly done that led to the
              crash.
              To fix that we keep the list of the found polygons and update the
              poly_positions that are bigger or equal to where we placed the next hole.
      
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug #804305 Crash in wkb_get_double with ST_INTERSECTION.
              test result updated.
        mysql-test/t/gis-precise.test
      bug #804305 Crash in wkb_get_double with ST_INTERSECTION.
              test result added.
        sql/gcalc_tools.cc
      bug #804305 Crash in wkb_get_double with ST_INTERSECTION.
              keep the list of the found polygons and update their poly_position fields respectively.
        sql/gcalc_tools.h
      bug #804305 Crash in wkb_get_double with ST_INTERSECTION.
              Gcalc_result_receiver::move_hole interface changed.
      f3b850a7
  19. 04 Jul, 2011 2 commits
    • Alexey Botchkov's avatar
      fix for bug #801212 Assertion with ST_INTERSECTION on NULL values · 7f55ea12
      Alexey Botchkov authored
              The ::val_str() method has to return NULL if it calculated
              the null_value, not just set the related flag.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      fix for bug #801212 Assertion with ST_INTERSECTION on NULL values
              test result updated.
        mysql-test/t/gis-precise.test
      fix for bug #801212 Assertion with ST_INTERSECTION on NULL values
              test case added.
        sql/item_geofunc.cc
      fix for bug #801212 Assertion with ST_INTERSECTION on NULL values
              return NULL from the val_str if we get the null_value.
      7f55ea12
    • Alexey Botchkov's avatar
      bug #801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT · 0e6c889c
      Alexey Botchkov authored
              Collections were treated mistakenly, so the counter for the final UNION operation
              received the wrong value.
              As a fix we implement Item_func_buffer::Transporter::start_collection() method,
              where we set the proper operation and the operand counter.
              start_poly() and start_line() were also modified to function correctly for the 
              polygon as a part of a collection.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      bug #801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT
              test result updated.
      
        mysql-test/t/gis-precise.test
      bug #801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT
              test case added.
      
        sql/item_geofunc.cc
      bug #801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT
              start_collection() implemented.
      
        sql/item_geofunc.h
      bug #801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT
              Item_func_buffer::Transporter::start_collection() defined.
      0e6c889c
  20. 30 Jun, 2011 2 commits
    • Alexey Botchkov's avatar
      fix for bug #201189 ST_BUFFER asserts if radius = 0. · a9a6597d
      Alexey Botchkov authored
              Internal caclucations can't handle zero distance properly.
              As the ST_BUFFER(geom, 0) is in fact NOOP, we'll just return the
              'geom' as the result here.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      fix for bug #201189 ST_BUFFER asserts if radius = 0.
              test result updated.
      
        mysql-test/t/gis-precise.test
      fix for bug #201189 ST_BUFFER asserts if radius = 0.
              test case added.
      
        sql/item_geofunc.cc
      fix for bug #201189 ST_BUFFER asserts if radius = 0.
              return the first argument as the result of the ST_BUFFER, if
              the distance is 0 there.
      a9a6597d
    • Alexey Botchkov's avatar
      fix for bug #801243 Assertion `(0)' failed in... · 4f49cdf8
      Alexey Botchkov authored
      fix for bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION 
              If the result contains a polygon with a hole, consequitive shapes weren't calculated
              properly, as the hole appeared as shape in the result, but actually it's a single shape
              with the surrounding polygon. It's more natural to use the size of the result as
              a border instead of the number of resulting shapes.
      
      per-file comments:
        mysql-test/r/gis-precise.result
      fix for bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION 
              test result updated.
        mysql-test/t/gis-precise.test
      fix for bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION 
              test case added.
        sql/spatial.cc
      fix for bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION 
              check the data lenght instead of number of shapes.
        sql/spatial.h
      fix for bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION 
              check the data lenght instead of number of shapes.
      
      4f49cdf8
  21. 19 Jun, 2011 1 commit
  22. 17 Jun, 2011 2 commits
  23. 16 Jun, 2011 1 commit
  24. 15 Jun, 2011 3 commits