summaryrefslogtreecommitdiff
path: root/sql/gcalc_tools.cc
Commit message (Collapse)AuthorAgeFilesLines
* enable -Wenum-compare -Wenum-conversionSergei Golubchik2022-05-151-1/+1
| | | | | to make the all headers -std=c++20 clean for those, who need c++20 (some plugins)
* Merge branch '10.2' into 10.3Oleksandr Byelkin2020-08-031-2/+2
|\
| * Merge branch '10.1' into 10.2Oleksandr Byelkin2020-08-021-2/+2
| |\
| | * Code comment spellfixesIan Gilfillan2020-07-221-2/+2
| | |
* | | Merge 10.2 into 10.3Marko Mäkelä2019-05-141-1/+1
|\ \ \ | |/ /
| * | Merge 10.1 into 10.2Marko Mäkelä2019-05-131-1/+1
| |\ \ | | |/
| | * Merge branch '5.5' into 10.1Vicențiu Ciorbaru2019-05-111-1/+1
| | |\
| | | * Update FSF addressMichal Schorm2019-05-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit is based on the work of Michal Schorm, rebased on the earliest MariaDB version. Th command line used to generate this diff was: find ./ -type f \ -exec sed -i -e 's/Foundation, Inc., 59 Temple Place, Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \ -exec sed -i -e 's/Foundation, Inc. 59 Temple Place.* Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \ -exec sed -i -e 's/MA.*.....-1307.*USA/MA 02110-1335 USA/g' {} \; \ -exec sed -i -e 's/Foundation, Inc., 59 Temple/Foundation, Inc., 51 Franklin/g' {} \; \ -exec sed -i -e 's/Place, Suite 330, Boston, MA.*02111-1307.*USA/Street, Fifth Floor, Boston, MA 02110-1335 USA/g' {} \; \ -exec sed -i -e 's/MA.*.....-1307/MA 02110-1335/g' {} \;
* | | | Merge branch '10.2' into 10.3Sergei Golubchik2018-09-281-0/+11
|\ \ \ \ | |/ / /
| * | | MDEV-16050 cte + geometry functions lead to crash.Alexey Botchkov2018-09-161-0/+11
| |/ / | | | | | | | | | | | | Structures based on Gcalc_dyn_list need to be treated properly when copied in Item::get_copy().
* | | Enusure that my_global.h is included firstMichael Widenius2017-08-241-1/+1
|/ / | | | | | | | | | | | | | | | | | | - Added sql/mariadb.h file that should be included first by files in sql directory, if sql_plugin.h is not used (sql_plugin.h adds SHOW variables that must be done before my_global.h is included) - Removed a lot of include my_global.h from include files - Removed include's of some files that my_global.h automatically includes - Removed duplicated include's of my_sys.h - Replaced include my_config.h with my_global.h
* | Correct FSF addressiangilfillan2017-03-101-1/+1
| |
* | Merge branch '10.0' into 10.1Sergei Golubchik2016-02-231-3/+3
|\ \ | |/
| * compilation errors on sparc sun studio 10Sergei Golubchik2016-02-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | 1. unused static inline functions are only removed at -xO4, otherwise test binaries will depend on various mysys symbols that they don't use. Link test with libmysys. 2. Sphinx - don't instantiate (explicitly) templates before they're defined. Or, rather, don't instantiate them explicitly at all. 3. GIS - don't use anonymous unions and structs.
* | MDEV-7925 Inconsistent behavior of ST_Touches with a POINT as one of arguments.Alexey Botchkov2015-06-221-22/+57
| | | | | | | | Some cases of the feature's borders were treated incorrectly.
* | MDEV-7529 GIS: ST_Relate returns unexpected results for POINT relations.Alexey Botchkov2015-03-151-2/+2
|/ | | | | | | Problem was that we considered the point itself as the 'border' object. Instead of that the 'border' of a POINT is an empty set, and the point is the 'interior'. Another error fixed by the way - not all operations of the resulting function were properly allocated.
* 5.3 mergeSergei Golubchik2012-01-131-9/+5
|\
| * GIS issues fixed.Alexey Botchkov2011-12-161-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Failures on SUN Solaris. Buggy compiler there required some extra initialization for variables. Then the 02 optimization leads to bugs when values set through the pointer are not always taken into account. Finally, the (long long) / (long) crashes there, the explicit typeconverstion added. Failing innodb_plunin.innodb_gis.test fixed. per-file comments: mysql-test/suite/innodb_plugin/t/innodb_gis.test GIS issues fixed. sql/gcalc_slicescan.cc GIS issues fixed. sql/gcalc_tools.cc GIS issues fixed.
| * bug #901655 ST_BUFFER asserts with a coplicated shape.Alexey Botchkov2011-12-081-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Coinciding nodes can appear as a result of DOUBLE inaccuracy. We should test that before we start the loop. Also the spatial relations can be calculated faster if we check MBR relations first. And we do have the shape's MBR-s now. per-file comments: sql/gcalc_slicescan.cc set_extent() method added. bug #901655 ST_BUFFER asserts with a coplicated shape. sql/gcalc_slicescan.h set_extent() method declared. bug #901655 ST_BUFFER asserts with a coplicated shape. sql/gcalc_tools.cc bug #901655 ST_BUFFER asserts with a coplicated shape. checks for equal nodes added. sql/item_geofunc.cc bug #901655 ST_BUFFER asserts with a coplicated shape. MBR for the shapes calculated, and MBR checks added before we start the heavy calculations. sql/spatial.h bug #901655 ST_BUFFER asserts with a coplicated shape. MBR::buffer() method implemented.
* | 5.3->5.5 mergeSergei Golubchik2011-11-271-1/+1
|/
* Fix for bug #809849 spatial operations must be KILL-able.Alexey Botchkov2011-11-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Checks for thd->killed state added to the long loops in geometry calculations. per-file comments: sql/gcalc_slicescan.cc Fix for bug #809849 spatial operations must be KILL-able. checks for TERMINATED_STATE added. sql/gcalc_slicescan.h Fix for bug #809849 spatial operations must be KILL-able. defines added to include checks for termination in the library. sql/gcalc_tools.cc Fix for bug #809849 spatial operations must be KILL-able. checks for TERMINATED_STATE added. sql/gcalc_tools.h Fix for bug #809849 spatial operations must be KILL-able. TERMINATED_STATE pointers added. sql/item_geofunc.cc Fix for bug #809849 spatial operations must be KILL-able. sql/item_geofunc.h Fix for bug #809849 spatial operations must be KILL-able.
* small fixes to make compiler happy.Alexey Botchkov2011-11-171-1/+1
|
* GIS code.Alexey Botchkov2011-10-141-20/+28
| | | | | | | | | | | | 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
* Copyright notices fixed.Alexey Botchkov2011-10-061-0/+1
|
* Valgrind warning fixed.Alexey Botchkov2011-10-051-1/+1
| | | | | | | | | | | | | | | 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.
* GIS library code cleanup.Alexey Botchkov2011-10-041-174/+109
| | | | | | | | | | | | | | | 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.
* bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGsAlexey Botchkov2011-09-231-2/+2
| | | | | | | | | | | | | | | | | | | | 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
* bug #857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGONAlexey Botchkov2011-09-231-0/+4
| | | | | | | | | | | | | | | 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.
* fix for bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTsAlexey Botchkov2011-09-231-0/+2
| | | | | | | | | | | | | | | | 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.
* fixed bugsAlexey Botchkov2011-09-221-46/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* several bugs fixed here.Alexey Botchkov2011-09-211-104/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix for bug 848939 Wrong result with ST_INTERSECTION between linestrings and ↵Alexey Botchkov2011-09-131-2/+2
| | | | | | | | | | | | | | | | | | a polygon in 5.3-gis 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.
* bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and ↵Alexey Botchkov2011-09-051-3/+13
| | | | | | | | | | | | | | | | | | | | | | MULTIPOLYGONs in 5.3-gis. 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.
* bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis.Alexey Botchkov2011-09-041-0/+9
| | | | | | | | | | | | | | | | | 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.
* bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in ↵Alexey Botchkov2011-09-041-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | maria-5.3-gis. 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.
* PostGIS-style 'same point' handling.Alexey Botchkov2011-09-011-420/+495
|
* Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() ↵Alexey Botchkov2011-07-131-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | with ST_UNION. 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.
* Fix for bug #801217 Assertion `t1->result_range' in ↵Alexey Botchkov2011-07-121-2/+7
| | | | | | | | | | | | | | | | | | | | | Gcalc_operation_reducer::end_couple. 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.
* Fix for bug #804259 Second assertion in ↵Alexey Botchkov2011-07-081-0/+5
| | | | | | | | | | | | | | | | | | | Gis_geometry_collection::init_from_opresult. 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.
* Fix for bug #804324 Assertion 0 in ↵Alexey Botchkov2011-07-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Gcalc_scan_iterator::pop_suitable_intersection 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.
* bug #804305 Crash in wkb_get_double with ST_INTERSECTION.Alexey Botchkov2011-07-051-11/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Precise GIS functions added.Alexey Botchkov2011-05-041-0/+1156