+------------------------------+ 

If the geometry argument is in a Cartesian SRS: 

• ST_Buffer()  supports negative distances for Polygon  and MultiPolygon  values, and for geometry collections containing Polygon  or MultiPolygon  values. 

•If the result is reduced so much that that it disappears, the result is an empty geometry. 

•An ER_WRONG_ARGUMENTS  error occurs for ST_Buffer()  with a negative distance for Point , MultiPoint , LineString , and MultiLineString  values, and for geometry collections not containing any Polygon  or MultiPolygon  values. 

If the geometry argument is in a geographic SRS: 

•Prior to MySQL 8.0.26, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS  error occurs. 

•As of MySQL 8.0.26, Point  geometries in a geographic SRS are permitted. For non- Point geometries, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS  error still occurs. 

For MySQL versions that permit geographic Point  geometries: 

•If the distance is not negative and no strategies are specified, the function returns the geographic buffer of the Point  in its SRS. The distance argument must be in the SRS distance unit (currently always meters). 

•If the distance is negative or any strategy (except NULL ) is specified, an ER_WRONG_ARGUMENTS  error occurs. 

ST_Buffer()  permits up to three optional strategy arguments following the distance argument. Strategies influence buffer computation. These arguments are byte string values produced by the ST_Buffer_Strategy()  function, to be used for point, join, and end strategies: 

•Point strategies apply to Point  and MultiPoint  geometries. If no point strategy is specified, the default is ST_Buffer_Strategy(’point_circle’, 32) . 

•Join strategies apply to LineString , MultiLineString , Polygon , and MultiPolygon geometries. If no join strategy is specified, the default is ST_Buffer_Strategy(’join_round’, 32) . 

•End strategies apply to LineString  and MultiLineString  geometries. If no end strategy is specified, the default is ST_Buffer_Strategy(’end_round’, 32) . 

Up to one strategy of each type may be specified, and they may be given in any order. 

If the buffer strategies are invalid, an ER_WRONG_ARGUMENTS  error occurs. Strategies are invalid under any of these circumstances: 

•Multiple strategies of a given type (point, join, or end) are specified. 

•A value that is not a strategy (such as an arbitrary binary string or a number) is passed as a strategy. 

•A Point  strategy is passed and the geometry contains no Point  or MultiPoint  values. 

•An end or join strategy is passed and the geometry contains no LineString , Polygon , MultiLinestring  or MultiPolygon  values. 

