Skip to content

Commit 8978a52

Browse files
committed
Merge branch '10.6' into bb-10.11-release
2 parents 1053630 + 200eb53 commit 8978a52

6 files changed

Lines changed: 45 additions & 30 deletions

File tree

mysql-test/main/gis.result

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5583,4 +5583,16 @@ set sql_mode= @orig_sql_mode;
55835583
select st_astext(st_geomfromwkb(x'0103000000020000000400000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000000005000000000000000000e03f000000000000e03f')) 'no asan error here';
55845584
no asan error here
55855585
NULL
5586+
SELECT ST_GeomFromWKB(x'0103000000020000000400000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000F03F0000000000000000000000000000000001000000') IS NOT NULL AS pg;
5587+
pg
5588+
0
5589+
SELECT ST_GeomFromWKB(x'01050000000200000001020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F01020000000100000000000000000000') IS NOT NULL AS ml;
5590+
ml
5591+
0
5592+
SELECT ST_GeomFromWKB(x'01060000000100000001030000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000') IS NOT NULL AS mp;
5593+
mp
5594+
0
5595+
SELECT ST_GeomFromWKB(x'01070000000100000001070000000100000001070000000100000001020000000100000000000000') IS NOT NULL AS gc;
5596+
gc
5597+
0
55865598
# End of 10.6 tests

mysql-test/main/gis.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3563,4 +3563,9 @@ set sql_mode= @orig_sql_mode;
35633563
--echo #
35643564
select st_astext(st_geomfromwkb(x'0103000000020000000400000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000000005000000000000000000e03f000000000000e03f')) 'no asan error here';
35653565

3566+
SELECT ST_GeomFromWKB(x'0103000000020000000400000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000F03F0000000000000000000000000000000001000000') IS NOT NULL AS pg;
3567+
SELECT ST_GeomFromWKB(x'01050000000200000001020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F01020000000100000000000000000000') IS NOT NULL AS ml;
3568+
SELECT ST_GeomFromWKB(x'01060000000100000001030000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000') IS NOT NULL AS mp;
3569+
SELECT ST_GeomFromWKB(x'01070000000100000001070000000100000001070000000100000001020000000100000000000000') IS NOT NULL AS gc;
3570+
35663571
--echo # End of 10.6 tests

mysql-test/suite/s3/debug.result

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ select count(*) from t1;
2424
count(*)
2525
100
2626
set @@global.s3_debug=0;
27-
FOUND 6 /s3_test_/ in mysqld.1.err
27+
FOUND 8 /s3_test_/ in mysqld.1.err
2828
select count(*) from t1;
2929
count(*)
3030
100
3131
drop table t1;
32-
FOUND 6 /s3_test_/ in mysqld.1.err
32+
FOUND 8 /s3_test_/ in mysqld.1.err

sql/spatial.cc

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
double my_double_round(double value, longlong dec, bool dec_unsigned,
2626
bool truncate);
2727

28+
#define advance(wkb,len,N) do { wkb+=(N); len-=(N); } while(0)
29+
2830
#ifdef HAVE_SPATIAL
2931

3032
/*
@@ -472,16 +474,17 @@ Geometry *Geometry::create_from_wkb(Geometry_buffer *buffer,
472474

473475
if (len < WKB_HEADER_SIZE)
474476
return NULL;
475-
geom_type= wkb_get_uint(wkb+1, (wkbByteOrder)wkb[0]);
477+
wkbByteOrder bo= (wkbByteOrder)wkb[0];
478+
geom_type= wkb_get_uint(wkb+1, bo);
476479
if (!(geom= create_by_typeid(buffer, (int) geom_type)) ||
477480
res->reserve(WKB_HEADER_SIZE, 512))
478481
return NULL;
479482

480483
res->q_append((char) wkb_ndr);
481484
res->q_append(geom_type);
482485

483-
return geom->init_from_wkb(wkb + WKB_HEADER_SIZE, len - WKB_HEADER_SIZE,
484-
(wkbByteOrder) wkb[0], res) ? geom : NULL;
486+
advance(wkb,len,WKB_HEADER_SIZE);
487+
return geom->init_from_wkb(wkb, len, bo, res) ? geom : 0;
485488
}
486489

487490

@@ -1634,8 +1637,7 @@ uint Gis_polygon::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo,
16341637

16351638
if (res->reserve(4, 512))
16361639
return 0;
1637-
wkb+= 4;
1638-
len-= 4;
1640+
advance(wkb,len,4);
16391641
res->q_append(n_linear_rings);
16401642

16411643
while (n_linear_rings--)
@@ -1652,8 +1654,7 @@ uint Gis_polygon::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo,
16521654

16531655
if (ls.is_closed(&closed) || !closed)
16541656
return 0;
1655-
wkb+= ls_len;
1656-
len-= ls_len;
1657+
advance(wkb,len,ls_len);
16571658
}
16581659

16591660
return (uint) (wkb - wkb_orig);
@@ -2518,7 +2519,7 @@ uint Gis_multi_line_string::init_from_wkb(const char *wkb, uint len,
25182519
return 0;
25192520
res->q_append(n_line_strings);
25202521

2521-
wkb+= 4;
2522+
advance(wkb,len,4);
25222523
while (n_line_strings--)
25232524
{
25242525
Gis_line_string ls;
@@ -2530,13 +2531,12 @@ uint Gis_multi_line_string::init_from_wkb(const char *wkb, uint len,
25302531

25312532
res->q_append((char) wkb_ndr);
25322533
res->q_append((uint32) wkb_linestring);
2534+
wkbByteOrder bo= (wkbByteOrder)wkb[0];
2535+
advance(wkb,len,WKB_HEADER_SIZE);
25332536

2534-
if (!(ls_len= ls.init_from_wkb(wkb + WKB_HEADER_SIZE, len,
2535-
(wkbByteOrder) wkb[0], res)))
2537+
if (!(ls_len= ls.init_from_wkb(wkb, len, bo, res)))
25362538
return 0;
2537-
ls_len+= WKB_HEADER_SIZE;;
2538-
wkb+= ls_len;
2539-
len-= ls_len;
2539+
advance(wkb,len,ls_len);
25402540
}
25412541
return (uint) (wkb - wkb_orig);
25422542
}
@@ -2893,7 +2893,7 @@ uint Gis_multi_polygon::init_from_wkb(const char *wkb, uint len,
28932893
return 0;
28942894
res->q_append(n_poly);
28952895

2896-
wkb+=4;
2896+
advance(wkb,len,4);
28972897
while (n_poly--)
28982898
{
28992899
Gis_polygon p;
@@ -2905,12 +2905,11 @@ uint Gis_multi_polygon::init_from_wkb(const char *wkb, uint len,
29052905
res->q_append((char) wkb_ndr);
29062906
res->q_append((uint32) wkb_polygon);
29072907

2908-
if (!(p_len= p.init_from_wkb(wkb + WKB_HEADER_SIZE, len,
2909-
(wkbByteOrder) wkb[0], res)))
2908+
wkbByteOrder bo= (wkbByteOrder)wkb[0];
2909+
advance(wkb,len,WKB_HEADER_SIZE);
2910+
if (!(p_len= p.init_from_wkb(wkb, len, bo, res)))
29102911
return 0;
2911-
p_len+= WKB_HEADER_SIZE;
2912-
wkb+= p_len;
2913-
len-= p_len;
2912+
advance(wkb,len,p_len);
29142913
}
29152914
return (uint) (wkb - wkb_orig);
29162915
}
@@ -3409,7 +3408,7 @@ uint Gis_geometry_collection::init_from_wkb(const char *wkb, uint len,
34093408
return 0;
34103409
res->q_append(n_geom);
34113410

3412-
wkb+= 4;
3411+
advance(wkb,len,4);
34133412
while (n_geom--)
34143413
{
34153414
Geometry_buffer buffer;
@@ -3421,17 +3420,16 @@ uint Gis_geometry_collection::init_from_wkb(const char *wkb, uint len,
34213420
res->reserve(WKB_HEADER_SIZE, 512))
34223421
return 0;
34233422

3423+
wkbByteOrder bo= (wkbByteOrder)wkb[0];
34243424
res->q_append((char) wkb_ndr);
3425-
wkb_type= wkb_get_uint(wkb+1, (wkbByteOrder) wkb[0]);
3425+
wkb_type= wkb_get_uint(wkb+1, bo);
34263426
res->q_append(wkb_type);
34273427

3428+
advance(wkb,len,WKB_HEADER_SIZE);
34283429
if (!(geom= create_by_typeid(&buffer, wkb_type)) ||
3429-
!(g_len= geom->init_from_wkb(wkb + WKB_HEADER_SIZE, len,
3430-
(wkbByteOrder) wkb[0], res)))
3430+
!(g_len= geom->init_from_wkb(wkb, len, bo, res)))
34313431
return 0;
3432-
g_len+= WKB_HEADER_SIZE;
3433-
wkb+= g_len;
3434-
len-= g_len;
3432+
advance(wkb,len,g_len);
34353433
}
34363434
return (uint) (wkb - wkb_orig);
34373435
}

sql/sql_select.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7442,7 +7442,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
74427442
{
74437443
uint and_level,i;
74447444
KEY_FIELD *key_fields, *end, *field;
7445-
uint sz;
7445+
size_t sz;
74467446
uint m= MY_MAX(select_lex->max_equal_elems,1);
74477447
DBUG_ENTER("update_ref_and_keys");
74487448
DBUG_PRINT("enter", ("normal_tables: %llx", normal_tables));

0 commit comments

Comments
 (0)