• 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
gcalc_slicescan.cc 23.9 KB