|
| 1 | +CREATE TABLE geohashes (gid INT NOT NULL PRIMARY KEY, hash_value VARCHAR(255)); |
| 2 | +INSERT INTO geohashes VALUES |
| 3 | +(1, "000000000000000000000"), |
| 4 | +(2, "zzzzzzzzzzzzzzzzzzzzz"), |
| 5 | +(3, NULL), |
| 6 | +(4, "s00t"), |
| 7 | +(5, "7zzzm"), |
| 8 | +(6, "s00d"), |
| 9 | +(7, "0"), |
| 10 | +(8, "z"), |
| 11 | +(9, "3ejh6z75ddt2d839zh2u"), |
| 12 | +(10, "twtsuqg3q7vh3nrbt0nn"), |
| 13 | +(11, "yw8s10dxddhe4s06nsph"), |
| 14 | +(12, "h4g4h9yrjtgzvewxm0ru"), |
| 15 | +(13, "9kqbredcnhq1b44ue48s"), |
| 16 | +(14, "1pckwjkqw3km0v6ye5d2"), |
| 17 | +(15, "wm313fnr92ggsysm64e6"), |
| 18 | +(16, "vqghx20fx6d8r5vfkbgf"), |
| 19 | +(17, "wvetm3u23kr9r6663k31"), |
| 20 | +(18, "e5t2p7sk291vpyb08pwu"); |
| 21 | +# valid characters |
| 22 | +SELECT ST_LATFROMGEOHASH("0"); |
| 23 | +ST_LATFROMGEOHASH("0") |
| 24 | +-68 |
| 25 | +SELECT ST_LATFROMGEOHASH("z"); |
| 26 | +ST_LATFROMGEOHASH("z") |
| 27 | +68 |
| 28 | +SELECT ST_LATFROMGEOHASH("0z"); |
| 29 | +ST_LATFROMGEOHASH("0z") |
| 30 | +-48 |
| 31 | +SELECT ST_LATFROMGEOHASH("xbpb"); |
| 32 | +ST_LATFROMGEOHASH("xbpb") |
| 33 | +0 |
| 34 | +SELECT ST_LATFROMGEOHASH("8000"); |
| 35 | +ST_LATFROMGEOHASH("8000") |
| 36 | +0 |
| 37 | +SELECT ST_LATFROMGEOHASH("s000"); |
| 38 | +ST_LATFROMGEOHASH("s000") |
| 39 | +0 |
| 40 | +SELECT ST_LATFROMGEOHASH("0123456789"); |
| 41 | +ST_LATFROMGEOHASH("0123456789") |
| 42 | +-82.774507 |
| 43 | +SELECT ST_LATFROMGEOHASH("9876543210"); |
| 44 | +ST_LATFROMGEOHASH("9876543210") |
| 45 | +1.770175 |
| 46 | +SELECT ST_LATFROMGEOHASH("bcdefghjkmnpqrstuvwxyz"); |
| 47 | +ST_LATFROMGEOHASH("bcdefghjkmnpqrstuvwxyz") |
| 48 | +54.11408847964353 |
| 49 | +SELECT ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb"); |
| 50 | +ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb") |
| 51 | +82.77450549262497 |
| 52 | +SELECT ST_LATFROMGEOHASH("zzzzzzzzzzzzzzzzzzzz"); |
| 53 | +ST_LATFROMGEOHASH("zzzzzzzzzzzzzzzzzzzz") |
| 54 | +90 |
| 55 | +SELECT ST_LATFROMGEOHASH("bpbpbpbpbpbpbpbpbpbp"); |
| 56 | +ST_LATFROMGEOHASH("bpbpbpbpbpbpbpbpbpbp") |
| 57 | +90 |
| 58 | +SELECT ST_LATFROMGEOHASH("pbpbpbpbpbpbpbpbpbpb"); |
| 59 | +ST_LATFROMGEOHASH("pbpbpbpbpbpbpbpbpbpb") |
| 60 | +-90 |
| 61 | +SELECT ST_LATFROMGEOHASH("00000000000000000000"); |
| 62 | +ST_LATFROMGEOHASH("00000000000000000000") |
| 63 | +-90 |
| 64 | +SELECT ST_LATFROMGEOHASH("gzzzzzzzzzzzzzzzzzzz"); |
| 65 | +ST_LATFROMGEOHASH("gzzzzzzzzzzzzzzzzzzz") |
| 66 | +90 |
| 67 | +SELECT ST_LATFROMGEOHASH("5bpbpbpbpbpbpbpbpbpb"); |
| 68 | +ST_LATFROMGEOHASH("5bpbpbpbpbpbpbpbpbpb") |
| 69 | +-90 |
| 70 | +SELECT ST_LATFROMGEOHASH("7zzzzzzzzzzzzzzzzzzz"); |
| 71 | +ST_LATFROMGEOHASH("7zzzzzzzzzzzzzzzzzzz") |
| 72 | +0 |
| 73 | +SELECT ST_LATFROMGEOHASH("rzzzzzzzzzzzzzzzzzzz"); |
| 74 | +ST_LATFROMGEOHASH("rzzzzzzzzzzzzzzzzzzz") |
| 75 | +0 |
| 76 | +SELECT ST_LATFROMGEOHASH("2pbpbpbpbpbpbpbpbpbp"); |
| 77 | +ST_LATFROMGEOHASH("2pbpbpbpbpbpbpbpbpbp") |
| 78 | +0 |
| 79 | +SELECT ST_LATFROMGEOHASH("0000000000zzzzzzzzzz"); |
| 80 | +ST_LATFROMGEOHASH("0000000000zzzzzzzzzz") |
| 81 | +-89.999994635582 |
| 82 | +SELECT ST_LATFROMGEOHASH("zzzzzzzzzz0000000000"); |
| 83 | +ST_LATFROMGEOHASH("zzzzzzzzzz0000000000") |
| 84 | +89.999994635582 |
| 85 | +SELECT ST_LATFROMGEOHASH("s000000001z7wsg7zzm6"); |
| 86 | +ST_LATFROMGEOHASH("s000000001z7wsg7zzm6") |
| 87 | +0.00001 |
| 88 | +SELECT ST_LATFROMGEOHASH("ebpbpbpbpcbe9kuebp6d"); |
| 89 | +ST_LATFROMGEOHASH("ebpbpbpbpcbe9kuebp6d") |
| 90 | +0.00001 |
| 91 | +SELECT ST_LATFROMGEOHASH("kpbpbpbpbnpkqe5kpbtm"); |
| 92 | +ST_LATFROMGEOHASH("kpbpbpbpbnpkqe5kpbtm") |
| 93 | +-0.00001 |
| 94 | +SELECT ST_LATFROMGEOHASH("7zzzzzzzzy0s37hs00dt"); |
| 95 | +ST_LATFROMGEOHASH("7zzzzzzzzy0s37hs00dt") |
| 96 | +-0.00001 |
| 97 | +SELECT ST_LATFROMGEOHASH("tzzzzzzzzzzzzzzzzzzz"); |
| 98 | +ST_LATFROMGEOHASH("tzzzzzzzzzzzzzzzzzzz") |
| 99 | +45 |
| 100 | +SELECT ST_LATFROMGEOHASH("9zzzzzzzzzzzzzzzzzzz"); |
| 101 | +ST_LATFROMGEOHASH("9zzzzzzzzzzzzzzzzzzz") |
| 102 | +45 |
| 103 | +SELECT ST_LATFROMGEOHASH("jzzzzzzzzzzzzzzzzzzz"); |
| 104 | +ST_LATFROMGEOHASH("jzzzzzzzzzzzzzzzzzzz") |
| 105 | +-45 |
| 106 | +SELECT ST_LATFROMGEOHASH("1zzzzzzzzzzzzzzzzzzz"); |
| 107 | +ST_LATFROMGEOHASH("1zzzzzzzzzzzzzzzzzzz") |
| 108 | +-45 |
| 109 | +SELECT ST_LATFROMGEOHASH("zbzurypzpgxczbzurypz"); |
| 110 | +ST_LATFROMGEOHASH("zbzurypzpgxczbzurypz") |
| 111 | +50 |
| 112 | +SELECT ST_LATFROMGEOHASH("5zpgxczbzurypzpgxczb"); |
| 113 | +ST_LATFROMGEOHASH("5zpgxczbzurypzpgxczb") |
| 114 | +-50 |
| 115 | +SELECT ST_LATFROMGEOHASH("0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z"); |
| 116 | +ST_LATFROMGEOHASH("0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z") |
| 117 | +-49.35483870967742 |
| 118 | +SELECT ST_LATFROMGEOHASH("0123456789bcdefghjkmnpqrstuvwxyz"); |
| 119 | +ST_LATFROMGEOHASH("0123456789bcdefghjkmnpqrstuvwxyz") |
| 120 | +-82.77450549262497 |
| 121 | +SELECT ST_LATFROMGEOHASH("0123456789BCDEFGHJKMNPQRSTUVWXYZ"); |
| 122 | +ST_LATFROMGEOHASH("0123456789BCDEFGHJKMNPQRSTUVWXYZ") |
| 123 | +-82.77450549262497 |
| 124 | +SELECT ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb9876543210"); |
| 125 | +ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb9876543210") |
| 126 | +82.77450549262497 |
| 127 | +SELECT ST_LATFROMGEOHASH("ZYXWVUTSRQPNMKJHGFEDCB9876543210"); |
| 128 | +ST_LATFROMGEOHASH("ZYXWVUTSRQPNMKJHGFEDCB9876543210") |
| 129 | +82.77450549262497 |
| 130 | +SELECT ST_LATFROMGEOHASH("1e1"); |
| 131 | +ST_LATFROMGEOHASH("1e1") |
| 132 | +-72 |
| 133 | +SELECT ST_LATFROMGEOHASH("100"); |
| 134 | +ST_LATFROMGEOHASH("100") |
| 135 | +-89 |
| 136 | +SELECT ST_LATFROMGEOHASH(CAST(100 AS CHAR)); |
| 137 | +ST_LATFROMGEOHASH(CAST(100 AS CHAR)) |
| 138 | +-89 |
| 139 | +SELECT ST_LATFROMGEOHASH("10111000110001111001"); |
| 140 | +ST_LATFROMGEOHASH("10111000110001111001") |
| 141 | +-89.8242133801793 |
| 142 | +SELECT ST_LATFROMGEOHASH("11111111111111111111"); |
| 143 | +ST_LATFROMGEOHASH("11111111111111111111") |
| 144 | +-84.1935483870967 |
| 145 | +SELECT ST_LATFROMGEOHASH("99999999999999999999"); |
| 146 | +ST_LATFROMGEOHASH("99999999999999999999") |
| 147 | +8.7096774193548 |
| 148 | +SELECT ST_LATFROMGEOHASH(NULL); |
| 149 | +ST_LATFROMGEOHASH(NULL) |
| 150 | +NULL |
| 151 | +SELECT ST_LATFROMGEOHASH(null); |
| 152 | +ST_LATFROMGEOHASH(null) |
| 153 | +NULL |
| 154 | +SELECT ST_LATFROMGEOHASH(CAST("012" AS BINARY)); |
| 155 | +ST_LATFROMGEOHASH(CAST("012" AS BINARY)) |
| 156 | +-82 |
| 157 | +# invalid characters and inputs |
| 158 | +SELECT ST_LATFROMGEOHASH("0123a45"); |
| 159 | +ERROR HY000: Incorrect geohash value: '0123a45' for function st_latfromgeohash |
| 160 | +SELECT ST_LATFROMGEOHASH("xyzi"); |
| 161 | +ERROR HY000: Incorrect geohash value: 'xyzi' for function st_latfromgeohash |
| 162 | +SELECT ST_LATFROMGEOHASH("zyxLwv"); |
| 163 | +ERROR HY000: Incorrect geohash value: 'zyxLwv' for function st_latfromgeohash |
| 164 | +SELECT ST_LATFROMGEOHASH("bcdjo"); |
| 165 | +ERROR HY000: Incorrect geohash value: 'bcdjo' for function st_latfromgeohash |
| 166 | +SELECT ST_LATFROMGEOHASH("zyx**wv"); |
| 167 | +ERROR HY000: Incorrect geohash value: 'zyx**wv' for function st_latfromgeohash |
| 168 | +SELECT ST_LATFROMGEOHASH("1 2 3 4"); |
| 169 | +ERROR HY000: Incorrect geohash value: '1 2 3 4' for function st_latfromgeohash |
| 170 | +SELECT ST_LATFROMGEOHASH("1''2345"); |
| 171 | +ERROR HY000: Incorrect geohash value: '1''2345' for function st_latfromgeohash |
| 172 | +SELECT ST_LATFROMGEOHASH("12.345"); |
| 173 | +ERROR HY000: Incorrect geohash value: '12.345' for function st_latfromgeohash |
| 174 | +SELECT ST_LATFROMGEOHASH(" "); |
| 175 | +ERROR HY000: Incorrect geohash value: ' ' for function st_latfromgeohash |
| 176 | +SELECT ST_LATFROMGEOHASH("NULL"); |
| 177 | +ERROR HY000: Incorrect geohash value: 'NULL' for function st_latfromgeohash |
| 178 | +SELECT ST_LATFROMGEOHASH("-100"); |
| 179 | +ERROR HY000: Incorrect geohash value: '-100' for function st_latfromgeohash |
| 180 | +SELECT ST_LATFROMGEOHASH(""); |
| 181 | +ERROR HY000: Incorrect geohash value: '' for function st_latfromgeohash |
| 182 | +SELECT ST_LATFROMGEOHASH(9876543210); |
| 183 | +ERROR 22023: Invalid GIS data provided to function ST_LatFromGeohash. |
| 184 | +SELECT ST_LATFROMGEOHASH(0123456789); |
| 185 | +ERROR 22023: Invalid GIS data provided to function ST_LatFromGeohash. |
| 186 | +SELECT ST_LATFROMGEOHASH(1e1); |
| 187 | +ERROR 22023: Invalid GIS data provided to function ST_LatFromGeohash. |
| 188 | +SELECT ST_LATFROMGEOHASH(); |
| 189 | +ERROR 42000: Incorrect parameter count in the call to native function 'ST_LATFROMGEOHASH' |
| 190 | +SELECT ST_LATFROMGEOHASH("123","456"); |
| 191 | +ERROR 42000: Incorrect parameter count in the call to native function 'ST_LATFROMGEOHASH' |
| 192 | +SELECT ST_LATFROMGEOHASH("123",); |
| 193 | +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1 |
| 194 | +SELECT ST_LATFROMGEOHASH(,"456"); |
| 195 | +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"456")' at line 1 |
| 196 | +SELECT ST_LATFROMGEOHASH(,); |
| 197 | +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1 |
| 198 | +SELECT ST_LATFROMGEOHASH("0123456"789); |
| 199 | +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '789)' at line 1 |
| 200 | +SELECT ST_LATFROMGEOHASH(abcdef); |
| 201 | +ERROR 42S22: Unknown column 'abcdef' in 'field list' |
| 202 | +# very long geohash |
| 203 | +SELECT ST_LATFROMGEOHASH("0123456789bcdefghjkmnpqrstuvwxyz0123456789bcdefghjkmn" |
| 204 | + "pqrstuvwxyz0123456789bcdefghjkmnpqrstuvwxyz0123456789" |
| 205 | + "bcdefghjkmnpqrstuvwxyz"); |
| 206 | +ST_LATFROMGEOHASH("0123456789bcdefghjkmnpqrstuvwxyz0123456789bcdefghjkmn" |
| 207 | + "pqrstuvwxyz0123456789bcdefghjkmnpqrstuvwxyz0123456789" |
| 208 | + "bcdefghjkmnpqrstuvwxyz") |
| 209 | +-82.77450549262497 |
| 210 | +SELECT ST_LATFROMGEOHASH("0123456789BCDEFGHJKMNPQRSTUVWXYZ0123456789BCDEFGHJKMN" |
| 211 | + "PQRSTUVWXYZ0123456789BCDEFGHJKMNPQRSTUVWXYZ0123456789" |
| 212 | + "BCDEFGHJKMNPQRSTUVWXYZ"); |
| 213 | +ST_LATFROMGEOHASH("0123456789BCDEFGHJKMNPQRSTUVWXYZ0123456789BCDEFGHJKMN" |
| 214 | + "PQRSTUVWXYZ0123456789BCDEFGHJKMNPQRSTUVWXYZ0123456789" |
| 215 | + "BCDEFGHJKMNPQRSTUVWXYZ") |
| 216 | +-82.77450549262497 |
| 217 | +SELECT ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb9876543210zyxwvutsrqpnmkjhgfedc" |
| 218 | + "b9876543210zyxwvutsrqpnmkjhgfedcb9876543210zyxwvutsrq" |
| 219 | + "pnmkjhgfedcb9876543210"); |
| 220 | +ST_LATFROMGEOHASH("zyxwvutsrqpnmkjhgfedcb9876543210zyxwvutsrqpnmkjhgfedc" |
| 221 | + "b9876543210zyxwvutsrqpnmkjhgfedcb9876543210zyxwvutsrq" |
| 222 | + "pnmkjhgfedcb9876543210") |
| 223 | +82.77450549262497 |
| 224 | +SELECT ST_LATFROMGEOHASH("ZYXWVUTSRQPNMKJHGFEDCB9876543210ZYXWVUTSRQPNMKJHGFEDC" |
| 225 | + "B9876543210ZYXWVUTSRQPNMKJHGFEDCB9876543210ZYXWVUTSRQ" |
| 226 | + "PNMKJHGFEDCB9876543210"); |
| 227 | +ST_LATFROMGEOHASH("ZYXWVUTSRQPNMKJHGFEDCB9876543210ZYXWVUTSRQPNMKJHGFEDC" |
| 228 | + "B9876543210ZYXWVUTSRQPNMKJHGFEDCB9876543210ZYXWVUTSRQ" |
| 229 | + "PNMKJHGFEDCB9876543210") |
| 230 | +82.77450549262497 |
| 231 | +# different random geohash values |
| 232 | +SELECT ST_LATFROMGEOHASH(hash_value) FROM geohashes; |
| 233 | +ST_LATFROMGEOHASH(hash_value) |
| 234 | +-90 |
| 235 | +90 |
| 236 | +NULL |
| 237 | +1 |
| 238 | +-0.1 |
| 239 | +0.4 |
| 240 | +-68 |
| 241 | +68 |
| 242 | +-27.3374899367448 |
| 243 | +37.4347752334972 |
| 244 | +82.269670295412 |
| 245 | +-74.168840669129 |
| 246 | +23.9696161514665 |
| 247 | +-45.5852718924236 |
| 248 | +29.763254995923 |
| 249 | +83.7602082514146 |
| 250 | +31.8700305354552 |
| 251 | +19.7074618731612 |
1 | 252 | # valid inputs
|
2 | 253 | SELECT ST_GEOHASH(0,0,1);
|
3 | 254 | ST_GEOHASH(0,0,1)
|
@@ -362,3 +613,5 @@ SELECT ST_GEOHASH(ST_DIFFERENCE(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT
|
362 | 613 | ERROR 22023: Invalid GIS data provided to function ST_GeoHash.
|
363 | 614 | SELECT ST_GEOHASH(ST_SYMDIFFERENCE(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('POINT(0 0)')),20);
|
364 | 615 | ERROR 22023: Invalid GIS data provided to function ST_GeoHash.
|
| 616 | +# Clean up |
| 617 | +DROP TABLE geohashes; |
0 commit comments