1# 2022-05-04 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# 12# This file implements tests for JOINs that use Bloom filters. 13# 14# The test case output is all generated by PostgreSQL 14. This test module 15# was created as follows: 16# 17# 1. Run a TCL script (included at the bottom of this file) that 18# generates an input script for "psql" that will run man 19# diverse tests on joins. 20# 21# 2. Run the script from step (1) through psql and collect the 22# output. 23# 24# 3. Make a few minor global search-and-replace operations to convert 25# the psql output into a form suitable for this test module. 26# 27# 4. Add this header, and the script content at the footer. 28# 29set testdir [file dirname $argv0] 30source $testdir/tester.tcl 31db nullvalue - 32db eval { 33 CREATE TABLE t1(a INT, b INT, c INT, d INT); 34 WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95) 35 INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c; 36 CREATE TABLE t2(b INT, x INT); 37 INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0; 38 CREATE INDEX t2b ON t2(b); 39 CREATE TABLE t3(c INT, y INT); 40 INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0; 41 CREATE INDEX t3c ON t3(c); 42 CREATE TABLE t4(d INT, z INT); 43 INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0; 44 CREATE INDEX t4d ON t4(d); 45 INSERT INTO t1(a,b,c,d) VALUES 46 (96,NULL,296,396), 47 (97,197,NULL,397), 48 (98,198,298,NULL), 49 (99,NULL,NULL,NULL); 50 ANALYZE; 51} 52do_execsql_test joinD-1 { 53 SELECT t1.*, t2.*, t3.*, t4.* 54 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 55 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 56 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 57 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 58} { 59 30 130 230 330 130 30 230 30 330 30 60 60 160 260 360 160 60 260 60 360 60 61 90 190 290 390 190 90 290 90 390 90 62} 63do_execsql_test joinD-2 { 64 SELECT t1.*, t2.*, t3.*, t4.* 65 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 66 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 67 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 68 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 69} { 70 6 106 206 306 106 6 206 6 - - 71 12 112 212 312 112 12 212 12 - - 72 18 118 218 318 118 18 218 18 - - 73 24 124 224 324 124 24 224 24 - - 74 30 130 230 330 130 30 230 30 330 30 75 36 136 236 336 136 36 236 36 - - 76 42 142 242 342 142 42 242 42 - - 77 48 148 248 348 148 48 248 48 - - 78 54 154 254 354 154 54 254 54 - - 79 60 160 260 360 160 60 260 60 360 60 80 66 166 266 366 166 66 266 66 - - 81 72 172 272 372 172 72 272 72 - - 82 78 178 278 378 178 78 278 78 - - 83 84 184 284 384 184 84 284 84 - - 84 90 190 290 390 190 90 290 90 390 90 85} 86do_execsql_test joinD-3 { 87 SELECT t1.*, t2.*, t3.*, t4.* 88 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 89 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 90 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 91 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 92} { 93 30 130 230 330 130 30 230 30 330 30 94 60 160 260 360 160 60 260 60 360 60 95 90 190 290 390 190 90 290 90 390 90 96 - - - - - - - - 300 0 97 - - - - - - - - 305 5 98 - - - - - - - - 310 10 99 - - - - - - - - 315 15 100 - - - - - - - - 320 20 101 - - - - - - - - 325 25 102 - - - - - - - - 335 35 103 - - - - - - - - 340 40 104 - - - - - - - - 345 45 105 - - - - - - - - 350 50 106 - - - - - - - - 355 55 107 - - - - - - - - 365 65 108 - - - - - - - - 370 70 109 - - - - - - - - 375 75 110 - - - - - - - - 380 80 111 - - - - - - - - 385 85 112 - - - - - - - - 395 95 113} 114do_execsql_test joinD-4 { 115 SELECT t1.*, t2.*, t3.*, t4.* 116 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 117 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 118 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 119 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 120} { 121 6 106 206 306 106 6 206 6 - - 122 12 112 212 312 112 12 212 12 - - 123 18 118 218 318 118 18 218 18 - - 124 24 124 224 324 124 24 224 24 - - 125 30 130 230 330 130 30 230 30 330 30 126 36 136 236 336 136 36 236 36 - - 127 42 142 242 342 142 42 242 42 - - 128 48 148 248 348 148 48 248 48 - - 129 54 154 254 354 154 54 254 54 - - 130 60 160 260 360 160 60 260 60 360 60 131 66 166 266 366 166 66 266 66 - - 132 72 172 272 372 172 72 272 72 - - 133 78 178 278 378 178 78 278 78 - - 134 84 184 284 384 184 84 284 84 - - 135 90 190 290 390 190 90 290 90 390 90 136 - - - - - - - - 300 0 137 - - - - - - - - 305 5 138 - - - - - - - - 310 10 139 - - - - - - - - 315 15 140 - - - - - - - - 320 20 141 - - - - - - - - 325 25 142 - - - - - - - - 335 35 143 - - - - - - - - 340 40 144 - - - - - - - - 345 45 145 - - - - - - - - 350 50 146 - - - - - - - - 355 55 147 - - - - - - - - 365 65 148 - - - - - - - - 370 70 149 - - - - - - - - 375 75 150 - - - - - - - - 380 80 151 - - - - - - - - 385 85 152 - - - - - - - - 395 95 153} 154do_execsql_test joinD-5 { 155 SELECT t1.*, t2.*, t3.*, t4.* 156 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 157 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 158 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 159 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 160} { 161 10 110 210 310 110 10 - - 310 10 162 20 120 220 320 120 20 - - 320 20 163 30 130 230 330 130 30 230 30 330 30 164 40 140 240 340 140 40 - - 340 40 165 50 150 250 350 150 50 - - 350 50 166 60 160 260 360 160 60 260 60 360 60 167 70 170 270 370 170 70 - - 370 70 168 80 180 280 380 180 80 - - 380 80 169 90 190 290 390 190 90 290 90 390 90 170} 171do_execsql_test joinD-6 { 172 SELECT t1.*, t2.*, t3.*, t4.* 173 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 174 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 175 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 176 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 177} { 178 2 102 202 302 102 2 - - - - 179 4 104 204 304 104 4 - - - - 180 6 106 206 306 106 6 206 6 - - 181 8 108 208 308 108 8 - - - - 182 10 110 210 310 110 10 - - 310 10 183 12 112 212 312 112 12 212 12 - - 184 14 114 214 314 114 14 - - - - 185 16 116 216 316 116 16 - - - - 186 18 118 218 318 118 18 218 18 - - 187 20 120 220 320 120 20 - - 320 20 188 22 122 222 322 122 22 - - - - 189 24 124 224 324 124 24 224 24 - - 190 26 126 226 326 126 26 - - - - 191 28 128 228 328 128 28 - - - - 192 30 130 230 330 130 30 230 30 330 30 193 32 132 232 332 132 32 - - - - 194 34 134 234 334 134 34 - - - - 195 36 136 236 336 136 36 236 36 - - 196 38 138 238 338 138 38 - - - - 197 40 140 240 340 140 40 - - 340 40 198 42 142 242 342 142 42 242 42 - - 199 44 144 244 344 144 44 - - - - 200 46 146 246 346 146 46 - - - - 201 48 148 248 348 148 48 248 48 - - 202 50 150 250 350 150 50 - - 350 50 203 52 152 252 352 152 52 - - - - 204 54 154 254 354 154 54 254 54 - - 205 56 156 256 356 156 56 - - - - 206 58 158 258 358 158 58 - - - - 207 60 160 260 360 160 60 260 60 360 60 208 62 162 262 362 162 62 - - - - 209 64 164 264 364 164 64 - - - - 210 66 166 266 366 166 66 266 66 - - 211 68 168 268 368 168 68 - - - - 212 70 170 270 370 170 70 - - 370 70 213 72 172 272 372 172 72 272 72 - - 214 74 174 274 374 174 74 - - - - 215 76 176 276 376 176 76 - - - - 216 78 178 278 378 178 78 278 78 - - 217 80 180 280 380 180 80 - - 380 80 218 82 182 282 382 182 82 - - - - 219 84 184 284 384 184 84 284 84 - - 220 86 186 286 386 186 86 - - - - 221 88 188 288 388 188 88 - - - - 222 90 190 290 390 190 90 290 90 390 90 223 92 192 292 392 192 92 - - - - 224 94 194 294 394 194 94 - - - - 225} 226do_execsql_test joinD-7 { 227 SELECT t1.*, t2.*, t3.*, t4.* 228 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 229 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 230 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 231 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 232} { 233 10 110 210 310 110 10 - - 310 10 234 20 120 220 320 120 20 - - 320 20 235 30 130 230 330 130 30 230 30 330 30 236 40 140 240 340 140 40 - - 340 40 237 50 150 250 350 150 50 - - 350 50 238 60 160 260 360 160 60 260 60 360 60 239 70 170 270 370 170 70 - - 370 70 240 80 180 280 380 180 80 - - 380 80 241 90 190 290 390 190 90 290 90 390 90 242 - - - - - - - - 300 0 243 - - - - - - - - 305 5 244 - - - - - - - - 315 15 245 - - - - - - - - 325 25 246 - - - - - - - - 335 35 247 - - - - - - - - 345 45 248 - - - - - - - - 355 55 249 - - - - - - - - 365 65 250 - - - - - - - - 375 75 251 - - - - - - - - 385 85 252 - - - - - - - - 395 95 253} 254do_execsql_test joinD-8 { 255 SELECT t1.*, t2.*, t3.*, t4.* 256 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 257 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 258 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 259 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 260} { 261 2 102 202 302 102 2 - - - - 262 4 104 204 304 104 4 - - - - 263 6 106 206 306 106 6 206 6 - - 264 8 108 208 308 108 8 - - - - 265 10 110 210 310 110 10 - - 310 10 266 12 112 212 312 112 12 212 12 - - 267 14 114 214 314 114 14 - - - - 268 16 116 216 316 116 16 - - - - 269 18 118 218 318 118 18 218 18 - - 270 20 120 220 320 120 20 - - 320 20 271 22 122 222 322 122 22 - - - - 272 24 124 224 324 124 24 224 24 - - 273 26 126 226 326 126 26 - - - - 274 28 128 228 328 128 28 - - - - 275 30 130 230 330 130 30 230 30 330 30 276 32 132 232 332 132 32 - - - - 277 34 134 234 334 134 34 - - - - 278 36 136 236 336 136 36 236 36 - - 279 38 138 238 338 138 38 - - - - 280 40 140 240 340 140 40 - - 340 40 281 42 142 242 342 142 42 242 42 - - 282 44 144 244 344 144 44 - - - - 283 46 146 246 346 146 46 - - - - 284 48 148 248 348 148 48 248 48 - - 285 50 150 250 350 150 50 - - 350 50 286 52 152 252 352 152 52 - - - - 287 54 154 254 354 154 54 254 54 - - 288 56 156 256 356 156 56 - - - - 289 58 158 258 358 158 58 - - - - 290 60 160 260 360 160 60 260 60 360 60 291 62 162 262 362 162 62 - - - - 292 64 164 264 364 164 64 - - - - 293 66 166 266 366 166 66 266 66 - - 294 68 168 268 368 168 68 - - - - 295 70 170 270 370 170 70 - - 370 70 296 72 172 272 372 172 72 272 72 - - 297 74 174 274 374 174 74 - - - - 298 76 176 276 376 176 76 - - - - 299 78 178 278 378 178 78 278 78 - - 300 80 180 280 380 180 80 - - 380 80 301 82 182 282 382 182 82 - - - - 302 84 184 284 384 184 84 284 84 - - 303 86 186 286 386 186 86 - - - - 304 88 188 288 388 188 88 - - - - 305 90 190 290 390 190 90 290 90 390 90 306 92 192 292 392 192 92 - - - - 307 94 194 294 394 194 94 - - - - 308 - - - - - - - - 300 0 309 - - - - - - - - 305 5 310 - - - - - - - - 315 15 311 - - - - - - - - 325 25 312 - - - - - - - - 335 35 313 - - - - - - - - 345 45 314 - - - - - - - - 355 55 315 - - - - - - - - 365 65 316 - - - - - - - - 375 75 317 - - - - - - - - 385 85 318 - - - - - - - - 395 95 319} 320do_execsql_test joinD-9 { 321 SELECT t1.*, t2.*, t3.*, t4.* 322 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 323 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 324 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 325 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 326} { 327 30 130 230 330 130 30 230 30 330 30 328 60 160 260 360 160 60 260 60 360 60 329 90 190 290 390 190 90 290 90 390 90 330} 331do_execsql_test joinD-10 { 332 SELECT t1.*, t2.*, t3.*, t4.* 333 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 334 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 335 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 336 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 337} { 338 6 106 206 306 106 6 206 6 - - 339 12 112 212 312 112 12 212 12 - - 340 18 118 218 318 118 18 218 18 - - 341 24 124 224 324 124 24 224 24 - - 342 30 130 230 330 130 30 230 30 330 30 343 36 136 236 336 136 36 236 36 - - 344 42 142 242 342 142 42 242 42 - - 345 48 148 248 348 148 48 248 48 - - 346 54 154 254 354 154 54 254 54 - - 347 60 160 260 360 160 60 260 60 360 60 348 66 166 266 366 166 66 266 66 - - 349 72 172 272 372 172 72 272 72 - - 350 78 178 278 378 178 78 278 78 - - 351 84 184 284 384 184 84 284 84 - - 352 90 190 290 390 190 90 290 90 390 90 353 - - - - - - 200 0 - - 354 - - - - - - 203 3 - - 355 - - - - - - 209 9 - - 356 - - - - - - 215 15 - - 357 - - - - - - 221 21 - - 358 - - - - - - 227 27 - - 359 - - - - - - 233 33 - - 360 - - - - - - 239 39 - - 361 - - - - - - 245 45 - - 362 - - - - - - 251 51 - - 363 - - - - - - 257 57 - - 364 - - - - - - 263 63 - - 365 - - - - - - 269 69 - - 366 - - - - - - 275 75 - - 367 - - - - - - 281 81 - - 368 - - - - - - 287 87 - - 369 - - - - - - 293 93 - - 370} 371do_execsql_test joinD-11 { 372 SELECT t1.*, t2.*, t3.*, t4.* 373 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 374 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 375 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 376 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 377} { 378 30 130 230 330 130 30 230 30 330 30 379 60 160 260 360 160 60 260 60 360 60 380 90 190 290 390 190 90 290 90 390 90 381 - - - - - - - - 300 0 382 - - - - - - - - 305 5 383 - - - - - - - - 310 10 384 - - - - - - - - 315 15 385 - - - - - - - - 320 20 386 - - - - - - - - 325 25 387 - - - - - - - - 335 35 388 - - - - - - - - 340 40 389 - - - - - - - - 345 45 390 - - - - - - - - 350 50 391 - - - - - - - - 355 55 392 - - - - - - - - 365 65 393 - - - - - - - - 370 70 394 - - - - - - - - 375 75 395 - - - - - - - - 380 80 396 - - - - - - - - 385 85 397 - - - - - - - - 395 95 398} 399do_execsql_test joinD-12 { 400 SELECT t1.*, t2.*, t3.*, t4.* 401 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 402 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 403 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 404 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 405} { 406 6 106 206 306 106 6 206 6 - - 407 12 112 212 312 112 12 212 12 - - 408 18 118 218 318 118 18 218 18 - - 409 24 124 224 324 124 24 224 24 - - 410 30 130 230 330 130 30 230 30 330 30 411 36 136 236 336 136 36 236 36 - - 412 42 142 242 342 142 42 242 42 - - 413 48 148 248 348 148 48 248 48 - - 414 54 154 254 354 154 54 254 54 - - 415 60 160 260 360 160 60 260 60 360 60 416 66 166 266 366 166 66 266 66 - - 417 72 172 272 372 172 72 272 72 - - 418 78 178 278 378 178 78 278 78 - - 419 84 184 284 384 184 84 284 84 - - 420 90 190 290 390 190 90 290 90 390 90 421 - - - - - - 200 0 - - 422 - - - - - - 203 3 - - 423 - - - - - - 209 9 - - 424 - - - - - - 215 15 - - 425 - - - - - - 221 21 - - 426 - - - - - - 227 27 - - 427 - - - - - - 233 33 - - 428 - - - - - - 239 39 - - 429 - - - - - - 245 45 - - 430 - - - - - - 251 51 - - 431 - - - - - - 257 57 - - 432 - - - - - - 263 63 - - 433 - - - - - - 269 69 - - 434 - - - - - - 275 75 - - 435 - - - - - - 281 81 - - 436 - - - - - - 287 87 - - 437 - - - - - - 293 93 - - 438 - - - - - - - - 300 0 439 - - - - - - - - 305 5 440 - - - - - - - - 310 10 441 - - - - - - - - 315 15 442 - - - - - - - - 320 20 443 - - - - - - - - 325 25 444 - - - - - - - - 335 35 445 - - - - - - - - 340 40 446 - - - - - - - - 345 45 447 - - - - - - - - 350 50 448 - - - - - - - - 355 55 449 - - - - - - - - 365 65 450 - - - - - - - - 370 70 451 - - - - - - - - 375 75 452 - - - - - - - - 380 80 453 - - - - - - - - 385 85 454 - - - - - - - - 395 95 455} 456do_execsql_test joinD-13 { 457 SELECT t1.*, t2.*, t3.*, t4.* 458 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 459 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 460 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 461 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 462} { 463 10 110 210 310 110 10 - - 310 10 464 20 120 220 320 120 20 - - 320 20 465 30 130 230 330 130 30 230 30 330 30 466 40 140 240 340 140 40 - - 340 40 467 50 150 250 350 150 50 - - 350 50 468 60 160 260 360 160 60 260 60 360 60 469 70 170 270 370 170 70 - - 370 70 470 80 180 280 380 180 80 - - 380 80 471 90 190 290 390 190 90 290 90 390 90 472} 473do_execsql_test joinD-14 { 474 SELECT t1.*, t2.*, t3.*, t4.* 475 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 476 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 477 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 478 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 479} { 480 2 102 202 302 102 2 - - - - 481 4 104 204 304 104 4 - - - - 482 6 106 206 306 106 6 206 6 - - 483 8 108 208 308 108 8 - - - - 484 10 110 210 310 110 10 - - 310 10 485 12 112 212 312 112 12 212 12 - - 486 14 114 214 314 114 14 - - - - 487 16 116 216 316 116 16 - - - - 488 18 118 218 318 118 18 218 18 - - 489 20 120 220 320 120 20 - - 320 20 490 22 122 222 322 122 22 - - - - 491 24 124 224 324 124 24 224 24 - - 492 26 126 226 326 126 26 - - - - 493 28 128 228 328 128 28 - - - - 494 30 130 230 330 130 30 230 30 330 30 495 32 132 232 332 132 32 - - - - 496 34 134 234 334 134 34 - - - - 497 36 136 236 336 136 36 236 36 - - 498 38 138 238 338 138 38 - - - - 499 40 140 240 340 140 40 - - 340 40 500 42 142 242 342 142 42 242 42 - - 501 44 144 244 344 144 44 - - - - 502 46 146 246 346 146 46 - - - - 503 48 148 248 348 148 48 248 48 - - 504 50 150 250 350 150 50 - - 350 50 505 52 152 252 352 152 52 - - - - 506 54 154 254 354 154 54 254 54 - - 507 56 156 256 356 156 56 - - - - 508 58 158 258 358 158 58 - - - - 509 60 160 260 360 160 60 260 60 360 60 510 62 162 262 362 162 62 - - - - 511 64 164 264 364 164 64 - - - - 512 66 166 266 366 166 66 266 66 - - 513 68 168 268 368 168 68 - - - - 514 70 170 270 370 170 70 - - 370 70 515 72 172 272 372 172 72 272 72 - - 516 74 174 274 374 174 74 - - - - 517 76 176 276 376 176 76 - - - - 518 78 178 278 378 178 78 278 78 - - 519 80 180 280 380 180 80 - - 380 80 520 82 182 282 382 182 82 - - - - 521 84 184 284 384 184 84 284 84 - - 522 86 186 286 386 186 86 - - - - 523 88 188 288 388 188 88 - - - - 524 90 190 290 390 190 90 290 90 390 90 525 92 192 292 392 192 92 - - - - 526 94 194 294 394 194 94 - - - - 527 - - - - - - 200 0 - - 528 - - - - - - 203 3 - - 529 - - - - - - 209 9 - - 530 - - - - - - 215 15 - - 531 - - - - - - 221 21 - - 532 - - - - - - 227 27 - - 533 - - - - - - 233 33 - - 534 - - - - - - 239 39 - - 535 - - - - - - 245 45 - - 536 - - - - - - 251 51 - - 537 - - - - - - 257 57 - - 538 - - - - - - 263 63 - - 539 - - - - - - 269 69 - - 540 - - - - - - 275 75 - - 541 - - - - - - 281 81 - - 542 - - - - - - 287 87 - - 543 - - - - - - 293 93 - - 544} 545do_execsql_test joinD-15 { 546 SELECT t1.*, t2.*, t3.*, t4.* 547 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 548 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 549 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 550 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 551} { 552 10 110 210 310 110 10 - - 310 10 553 20 120 220 320 120 20 - - 320 20 554 30 130 230 330 130 30 230 30 330 30 555 40 140 240 340 140 40 - - 340 40 556 50 150 250 350 150 50 - - 350 50 557 60 160 260 360 160 60 260 60 360 60 558 70 170 270 370 170 70 - - 370 70 559 80 180 280 380 180 80 - - 380 80 560 90 190 290 390 190 90 290 90 390 90 561 - - - - - - - - 300 0 562 - - - - - - - - 305 5 563 - - - - - - - - 315 15 564 - - - - - - - - 325 25 565 - - - - - - - - 335 35 566 - - - - - - - - 345 45 567 - - - - - - - - 355 55 568 - - - - - - - - 365 65 569 - - - - - - - - 375 75 570 - - - - - - - - 385 85 571 - - - - - - - - 395 95 572} 573do_execsql_test joinD-16 { 574 SELECT t1.*, t2.*, t3.*, t4.* 575 FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0 576 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 577 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 578 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 579} { 580 2 102 202 302 102 2 - - - - 581 4 104 204 304 104 4 - - - - 582 6 106 206 306 106 6 206 6 - - 583 8 108 208 308 108 8 - - - - 584 10 110 210 310 110 10 - - 310 10 585 12 112 212 312 112 12 212 12 - - 586 14 114 214 314 114 14 - - - - 587 16 116 216 316 116 16 - - - - 588 18 118 218 318 118 18 218 18 - - 589 20 120 220 320 120 20 - - 320 20 590 22 122 222 322 122 22 - - - - 591 24 124 224 324 124 24 224 24 - - 592 26 126 226 326 126 26 - - - - 593 28 128 228 328 128 28 - - - - 594 30 130 230 330 130 30 230 30 330 30 595 32 132 232 332 132 32 - - - - 596 34 134 234 334 134 34 - - - - 597 36 136 236 336 136 36 236 36 - - 598 38 138 238 338 138 38 - - - - 599 40 140 240 340 140 40 - - 340 40 600 42 142 242 342 142 42 242 42 - - 601 44 144 244 344 144 44 - - - - 602 46 146 246 346 146 46 - - - - 603 48 148 248 348 148 48 248 48 - - 604 50 150 250 350 150 50 - - 350 50 605 52 152 252 352 152 52 - - - - 606 54 154 254 354 154 54 254 54 - - 607 56 156 256 356 156 56 - - - - 608 58 158 258 358 158 58 - - - - 609 60 160 260 360 160 60 260 60 360 60 610 62 162 262 362 162 62 - - - - 611 64 164 264 364 164 64 - - - - 612 66 166 266 366 166 66 266 66 - - 613 68 168 268 368 168 68 - - - - 614 70 170 270 370 170 70 - - 370 70 615 72 172 272 372 172 72 272 72 - - 616 74 174 274 374 174 74 - - - - 617 76 176 276 376 176 76 - - - - 618 78 178 278 378 178 78 278 78 - - 619 80 180 280 380 180 80 - - 380 80 620 82 182 282 382 182 82 - - - - 621 84 184 284 384 184 84 284 84 - - 622 86 186 286 386 186 86 - - - - 623 88 188 288 388 188 88 - - - - 624 90 190 290 390 190 90 290 90 390 90 625 92 192 292 392 192 92 - - - - 626 94 194 294 394 194 94 - - - - 627 - - - - - - 200 0 - - 628 - - - - - - 203 3 - - 629 - - - - - - 209 9 - - 630 - - - - - - 215 15 - - 631 - - - - - - 221 21 - - 632 - - - - - - 227 27 - - 633 - - - - - - 233 33 - - 634 - - - - - - 239 39 - - 635 - - - - - - 245 45 - - 636 - - - - - - 251 51 - - 637 - - - - - - 257 57 - - 638 - - - - - - 263 63 - - 639 - - - - - - 269 69 - - 640 - - - - - - 275 75 - - 641 - - - - - - 281 81 - - 642 - - - - - - 287 87 - - 643 - - - - - - 293 93 - - 644 - - - - - - - - 300 0 645 - - - - - - - - 305 5 646 - - - - - - - - 315 15 647 - - - - - - - - 325 25 648 - - - - - - - - 335 35 649 - - - - - - - - 345 45 650 - - - - - - - - 355 55 651 - - - - - - - - 365 65 652 - - - - - - - - 375 75 653 - - - - - - - - 385 85 654 - - - - - - - - 395 95 655} 656do_execsql_test joinD-17 { 657 SELECT t1.*, t2.*, t3.*, t4.* 658 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 659 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 660 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 661 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 662} { 663 15 115 215 315 - - 215 15 315 15 664 30 130 230 330 130 30 230 30 330 30 665 45 145 245 345 - - 245 45 345 45 666 60 160 260 360 160 60 260 60 360 60 667 75 175 275 375 - - 275 75 375 75 668 90 190 290 390 190 90 290 90 390 90 669} 670do_execsql_test joinD-18 { 671 SELECT t1.*, t2.*, t3.*, t4.* 672 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 673 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 674 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 675 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 676} { 677 3 103 203 303 - - 203 3 - - 678 6 106 206 306 106 6 206 6 - - 679 9 109 209 309 - - 209 9 - - 680 12 112 212 312 112 12 212 12 - - 681 15 115 215 315 - - 215 15 315 15 682 18 118 218 318 118 18 218 18 - - 683 21 121 221 321 - - 221 21 - - 684 24 124 224 324 124 24 224 24 - - 685 27 127 227 327 - - 227 27 - - 686 30 130 230 330 130 30 230 30 330 30 687 33 133 233 333 - - 233 33 - - 688 36 136 236 336 136 36 236 36 - - 689 39 139 239 339 - - 239 39 - - 690 42 142 242 342 142 42 242 42 - - 691 45 145 245 345 - - 245 45 345 45 692 48 148 248 348 148 48 248 48 - - 693 51 151 251 351 - - 251 51 - - 694 54 154 254 354 154 54 254 54 - - 695 57 157 257 357 - - 257 57 - - 696 60 160 260 360 160 60 260 60 360 60 697 63 163 263 363 - - 263 63 - - 698 66 166 266 366 166 66 266 66 - - 699 69 169 269 369 - - 269 69 - - 700 72 172 272 372 172 72 272 72 - - 701 75 175 275 375 - - 275 75 375 75 702 78 178 278 378 178 78 278 78 - - 703 81 181 281 381 - - 281 81 - - 704 84 184 284 384 184 84 284 84 - - 705 87 187 287 387 - - 287 87 - - 706 90 190 290 390 190 90 290 90 390 90 707 93 193 293 393 - - 293 93 - - 708} 709do_execsql_test joinD-19 { 710 SELECT t1.*, t2.*, t3.*, t4.* 711 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 712 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 713 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 714 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 715} { 716 15 115 215 315 - - 215 15 315 15 717 30 130 230 330 130 30 230 30 330 30 718 45 145 245 345 - - 245 45 345 45 719 60 160 260 360 160 60 260 60 360 60 720 75 175 275 375 - - 275 75 375 75 721 90 190 290 390 190 90 290 90 390 90 722 - - - - - - - - 300 0 723 - - - - - - - - 305 5 724 - - - - - - - - 310 10 725 - - - - - - - - 320 20 726 - - - - - - - - 325 25 727 - - - - - - - - 335 35 728 - - - - - - - - 340 40 729 - - - - - - - - 350 50 730 - - - - - - - - 355 55 731 - - - - - - - - 365 65 732 - - - - - - - - 370 70 733 - - - - - - - - 380 80 734 - - - - - - - - 385 85 735 - - - - - - - - 395 95 736} 737do_execsql_test joinD-20 { 738 SELECT t1.*, t2.*, t3.*, t4.* 739 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 740 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 741 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 742 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 743} { 744 3 103 203 303 - - 203 3 - - 745 6 106 206 306 106 6 206 6 - - 746 9 109 209 309 - - 209 9 - - 747 12 112 212 312 112 12 212 12 - - 748 15 115 215 315 - - 215 15 315 15 749 18 118 218 318 118 18 218 18 - - 750 21 121 221 321 - - 221 21 - - 751 24 124 224 324 124 24 224 24 - - 752 27 127 227 327 - - 227 27 - - 753 30 130 230 330 130 30 230 30 330 30 754 33 133 233 333 - - 233 33 - - 755 36 136 236 336 136 36 236 36 - - 756 39 139 239 339 - - 239 39 - - 757 42 142 242 342 142 42 242 42 - - 758 45 145 245 345 - - 245 45 345 45 759 48 148 248 348 148 48 248 48 - - 760 51 151 251 351 - - 251 51 - - 761 54 154 254 354 154 54 254 54 - - 762 57 157 257 357 - - 257 57 - - 763 60 160 260 360 160 60 260 60 360 60 764 63 163 263 363 - - 263 63 - - 765 66 166 266 366 166 66 266 66 - - 766 69 169 269 369 - - 269 69 - - 767 72 172 272 372 172 72 272 72 - - 768 75 175 275 375 - - 275 75 375 75 769 78 178 278 378 178 78 278 78 - - 770 81 181 281 381 - - 281 81 - - 771 84 184 284 384 184 84 284 84 - - 772 87 187 287 387 - - 287 87 - - 773 90 190 290 390 190 90 290 90 390 90 774 93 193 293 393 - - 293 93 - - 775 - - - - - - - - 300 0 776 - - - - - - - - 305 5 777 - - - - - - - - 310 10 778 - - - - - - - - 320 20 779 - - - - - - - - 325 25 780 - - - - - - - - 335 35 781 - - - - - - - - 340 40 782 - - - - - - - - 350 50 783 - - - - - - - - 355 55 784 - - - - - - - - 365 65 785 - - - - - - - - 370 70 786 - - - - - - - - 380 80 787 - - - - - - - - 385 85 788 - - - - - - - - 395 95 789} 790do_execsql_test joinD-21 { 791 SELECT t1.*, t2.*, t3.*, t4.* 792 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 793 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 794 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 795 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 796} { 797 5 105 205 305 - - - - 305 5 798 10 110 210 310 110 10 - - 310 10 799 15 115 215 315 - - 215 15 315 15 800 20 120 220 320 120 20 - - 320 20 801 25 125 225 325 - - - - 325 25 802 30 130 230 330 130 30 230 30 330 30 803 35 135 235 335 - - - - 335 35 804 40 140 240 340 140 40 - - 340 40 805 45 145 245 345 - - 245 45 345 45 806 50 150 250 350 150 50 - - 350 50 807 55 155 255 355 - - - - 355 55 808 60 160 260 360 160 60 260 60 360 60 809 65 165 265 365 - - - - 365 65 810 70 170 270 370 170 70 - - 370 70 811 75 175 275 375 - - 275 75 375 75 812 80 180 280 380 180 80 - - 380 80 813 85 185 285 385 - - - - 385 85 814 90 190 290 390 190 90 290 90 390 90 815 95 195 295 395 - - - - 395 95 816} 817do_execsql_test joinD-22 { 818 SELECT t1.*, t2.*, t3.*, t4.* 819 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 820 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 821 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 822 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 823} { 824 0 100 200 300 - - - - - - 825 1 101 201 301 - - - - - - 826 2 102 202 302 102 2 - - - - 827 3 103 203 303 - - 203 3 - - 828 4 104 204 304 104 4 - - - - 829 5 105 205 305 - - - - 305 5 830 6 106 206 306 106 6 206 6 - - 831 7 107 207 307 - - - - - - 832 8 108 208 308 108 8 - - - - 833 9 109 209 309 - - 209 9 - - 834 10 110 210 310 110 10 - - 310 10 835 11 111 211 311 - - - - - - 836 12 112 212 312 112 12 212 12 - - 837 13 113 213 313 - - - - - - 838 14 114 214 314 114 14 - - - - 839 15 115 215 315 - - 215 15 315 15 840 16 116 216 316 116 16 - - - - 841 17 117 217 317 - - - - - - 842 18 118 218 318 118 18 218 18 - - 843 19 119 219 319 - - - - - - 844 20 120 220 320 120 20 - - 320 20 845 21 121 221 321 - - 221 21 - - 846 22 122 222 322 122 22 - - - - 847 23 123 223 323 - - - - - - 848 24 124 224 324 124 24 224 24 - - 849 25 125 225 325 - - - - 325 25 850 26 126 226 326 126 26 - - - - 851 27 127 227 327 - - 227 27 - - 852 28 128 228 328 128 28 - - - - 853 29 129 229 329 - - - - - - 854 30 130 230 330 130 30 230 30 330 30 855 31 131 231 331 - - - - - - 856 32 132 232 332 132 32 - - - - 857 33 133 233 333 - - 233 33 - - 858 34 134 234 334 134 34 - - - - 859 35 135 235 335 - - - - 335 35 860 36 136 236 336 136 36 236 36 - - 861 37 137 237 337 - - - - - - 862 38 138 238 338 138 38 - - - - 863 39 139 239 339 - - 239 39 - - 864 40 140 240 340 140 40 - - 340 40 865 41 141 241 341 - - - - - - 866 42 142 242 342 142 42 242 42 - - 867 43 143 243 343 - - - - - - 868 44 144 244 344 144 44 - - - - 869 45 145 245 345 - - 245 45 345 45 870 46 146 246 346 146 46 - - - - 871 47 147 247 347 - - - - - - 872 48 148 248 348 148 48 248 48 - - 873 49 149 249 349 - - - - - - 874 50 150 250 350 150 50 - - 350 50 875 51 151 251 351 - - 251 51 - - 876 52 152 252 352 152 52 - - - - 877 53 153 253 353 - - - - - - 878 54 154 254 354 154 54 254 54 - - 879 55 155 255 355 - - - - 355 55 880 56 156 256 356 156 56 - - - - 881 57 157 257 357 - - 257 57 - - 882 58 158 258 358 158 58 - - - - 883 59 159 259 359 - - - - - - 884 60 160 260 360 160 60 260 60 360 60 885 61 161 261 361 - - - - - - 886 62 162 262 362 162 62 - - - - 887 63 163 263 363 - - 263 63 - - 888 64 164 264 364 164 64 - - - - 889 65 165 265 365 - - - - 365 65 890 66 166 266 366 166 66 266 66 - - 891 67 167 267 367 - - - - - - 892 68 168 268 368 168 68 - - - - 893 69 169 269 369 - - 269 69 - - 894 70 170 270 370 170 70 - - 370 70 895 71 171 271 371 - - - - - - 896 72 172 272 372 172 72 272 72 - - 897 73 173 273 373 - - - - - - 898 74 174 274 374 174 74 - - - - 899 75 175 275 375 - - 275 75 375 75 900 76 176 276 376 176 76 - - - - 901 77 177 277 377 - - - - - - 902 78 178 278 378 178 78 278 78 - - 903 79 179 279 379 - - - - - - 904 80 180 280 380 180 80 - - 380 80 905 81 181 281 381 - - 281 81 - - 906 82 182 282 382 182 82 - - - - 907 83 183 283 383 - - - - - - 908 84 184 284 384 184 84 284 84 - - 909 85 185 285 385 - - - - 385 85 910 86 186 286 386 186 86 - - - - 911 87 187 287 387 - - 287 87 - - 912 88 188 288 388 188 88 - - - - 913 89 189 289 389 - - - - - - 914 90 190 290 390 190 90 290 90 390 90 915 91 191 291 391 - - - - - - 916 92 192 292 392 192 92 - - - - 917 93 193 293 393 - - 293 93 - - 918 94 194 294 394 194 94 - - - - 919 95 195 295 395 - - - - 395 95 920 96 - 296 396 - - - - - - 921 97 197 - 397 - - - - - - 922 98 198 298 - - - - - - - 923 99 - - - - - - - - - 924} 925do_execsql_test joinD-23 { 926 SELECT t1.*, t2.*, t3.*, t4.* 927 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 928 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 929 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 930 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 931} { 932 5 105 205 305 - - - - 305 5 933 10 110 210 310 110 10 - - 310 10 934 15 115 215 315 - - 215 15 315 15 935 20 120 220 320 120 20 - - 320 20 936 25 125 225 325 - - - - 325 25 937 30 130 230 330 130 30 230 30 330 30 938 35 135 235 335 - - - - 335 35 939 40 140 240 340 140 40 - - 340 40 940 45 145 245 345 - - 245 45 345 45 941 50 150 250 350 150 50 - - 350 50 942 55 155 255 355 - - - - 355 55 943 60 160 260 360 160 60 260 60 360 60 944 65 165 265 365 - - - - 365 65 945 70 170 270 370 170 70 - - 370 70 946 75 175 275 375 - - 275 75 375 75 947 80 180 280 380 180 80 - - 380 80 948 85 185 285 385 - - - - 385 85 949 90 190 290 390 190 90 290 90 390 90 950 95 195 295 395 - - - - 395 95 951 - - - - - - - - 300 0 952} 953do_execsql_test joinD-24 { 954 SELECT t1.*, t2.*, t3.*, t4.* 955 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 956 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 957 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 958 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 959} { 960 0 100 200 300 - - - - - - 961 1 101 201 301 - - - - - - 962 2 102 202 302 102 2 - - - - 963 3 103 203 303 - - 203 3 - - 964 4 104 204 304 104 4 - - - - 965 5 105 205 305 - - - - 305 5 966 6 106 206 306 106 6 206 6 - - 967 7 107 207 307 - - - - - - 968 8 108 208 308 108 8 - - - - 969 9 109 209 309 - - 209 9 - - 970 10 110 210 310 110 10 - - 310 10 971 11 111 211 311 - - - - - - 972 12 112 212 312 112 12 212 12 - - 973 13 113 213 313 - - - - - - 974 14 114 214 314 114 14 - - - - 975 15 115 215 315 - - 215 15 315 15 976 16 116 216 316 116 16 - - - - 977 17 117 217 317 - - - - - - 978 18 118 218 318 118 18 218 18 - - 979 19 119 219 319 - - - - - - 980 20 120 220 320 120 20 - - 320 20 981 21 121 221 321 - - 221 21 - - 982 22 122 222 322 122 22 - - - - 983 23 123 223 323 - - - - - - 984 24 124 224 324 124 24 224 24 - - 985 25 125 225 325 - - - - 325 25 986 26 126 226 326 126 26 - - - - 987 27 127 227 327 - - 227 27 - - 988 28 128 228 328 128 28 - - - - 989 29 129 229 329 - - - - - - 990 30 130 230 330 130 30 230 30 330 30 991 31 131 231 331 - - - - - - 992 32 132 232 332 132 32 - - - - 993 33 133 233 333 - - 233 33 - - 994 34 134 234 334 134 34 - - - - 995 35 135 235 335 - - - - 335 35 996 36 136 236 336 136 36 236 36 - - 997 37 137 237 337 - - - - - - 998 38 138 238 338 138 38 - - - - 999 39 139 239 339 - - 239 39 - - 1000 40 140 240 340 140 40 - - 340 40 1001 41 141 241 341 - - - - - - 1002 42 142 242 342 142 42 242 42 - - 1003 43 143 243 343 - - - - - - 1004 44 144 244 344 144 44 - - - - 1005 45 145 245 345 - - 245 45 345 45 1006 46 146 246 346 146 46 - - - - 1007 47 147 247 347 - - - - - - 1008 48 148 248 348 148 48 248 48 - - 1009 49 149 249 349 - - - - - - 1010 50 150 250 350 150 50 - - 350 50 1011 51 151 251 351 - - 251 51 - - 1012 52 152 252 352 152 52 - - - - 1013 53 153 253 353 - - - - - - 1014 54 154 254 354 154 54 254 54 - - 1015 55 155 255 355 - - - - 355 55 1016 56 156 256 356 156 56 - - - - 1017 57 157 257 357 - - 257 57 - - 1018 58 158 258 358 158 58 - - - - 1019 59 159 259 359 - - - - - - 1020 60 160 260 360 160 60 260 60 360 60 1021 61 161 261 361 - - - - - - 1022 62 162 262 362 162 62 - - - - 1023 63 163 263 363 - - 263 63 - - 1024 64 164 264 364 164 64 - - - - 1025 65 165 265 365 - - - - 365 65 1026 66 166 266 366 166 66 266 66 - - 1027 67 167 267 367 - - - - - - 1028 68 168 268 368 168 68 - - - - 1029 69 169 269 369 - - 269 69 - - 1030 70 170 270 370 170 70 - - 370 70 1031 71 171 271 371 - - - - - - 1032 72 172 272 372 172 72 272 72 - - 1033 73 173 273 373 - - - - - - 1034 74 174 274 374 174 74 - - - - 1035 75 175 275 375 - - 275 75 375 75 1036 76 176 276 376 176 76 - - - - 1037 77 177 277 377 - - - - - - 1038 78 178 278 378 178 78 278 78 - - 1039 79 179 279 379 - - - - - - 1040 80 180 280 380 180 80 - - 380 80 1041 81 181 281 381 - - 281 81 - - 1042 82 182 282 382 182 82 - - - - 1043 83 183 283 383 - - - - - - 1044 84 184 284 384 184 84 284 84 - - 1045 85 185 285 385 - - - - 385 85 1046 86 186 286 386 186 86 - - - - 1047 87 187 287 387 - - 287 87 - - 1048 88 188 288 388 188 88 - - - - 1049 89 189 289 389 - - - - - - 1050 90 190 290 390 190 90 290 90 390 90 1051 91 191 291 391 - - - - - - 1052 92 192 292 392 192 92 - - - - 1053 93 193 293 393 - - 293 93 - - 1054 94 194 294 394 194 94 - - - - 1055 95 195 295 395 - - - - 395 95 1056 96 - 296 396 - - - - - - 1057 97 197 - 397 - - - - - - 1058 98 198 298 - - - - - - - 1059 99 - - - - - - - - - 1060 - - - - - - - - 300 0 1061} 1062do_execsql_test joinD-25 { 1063 SELECT t1.*, t2.*, t3.*, t4.* 1064 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1065 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1066 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1067 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1068} { 1069 15 115 215 315 - - 215 15 315 15 1070 30 130 230 330 130 30 230 30 330 30 1071 45 145 245 345 - - 245 45 345 45 1072 60 160 260 360 160 60 260 60 360 60 1073 75 175 275 375 - - 275 75 375 75 1074 90 190 290 390 190 90 290 90 390 90 1075} 1076do_execsql_test joinD-26 { 1077 SELECT t1.*, t2.*, t3.*, t4.* 1078 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1079 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1080 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1081 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1082} { 1083 3 103 203 303 - - 203 3 - - 1084 6 106 206 306 106 6 206 6 - - 1085 9 109 209 309 - - 209 9 - - 1086 12 112 212 312 112 12 212 12 - - 1087 15 115 215 315 - - 215 15 315 15 1088 18 118 218 318 118 18 218 18 - - 1089 21 121 221 321 - - 221 21 - - 1090 24 124 224 324 124 24 224 24 - - 1091 27 127 227 327 - - 227 27 - - 1092 30 130 230 330 130 30 230 30 330 30 1093 33 133 233 333 - - 233 33 - - 1094 36 136 236 336 136 36 236 36 - - 1095 39 139 239 339 - - 239 39 - - 1096 42 142 242 342 142 42 242 42 - - 1097 45 145 245 345 - - 245 45 345 45 1098 48 148 248 348 148 48 248 48 - - 1099 51 151 251 351 - - 251 51 - - 1100 54 154 254 354 154 54 254 54 - - 1101 57 157 257 357 - - 257 57 - - 1102 60 160 260 360 160 60 260 60 360 60 1103 63 163 263 363 - - 263 63 - - 1104 66 166 266 366 166 66 266 66 - - 1105 69 169 269 369 - - 269 69 - - 1106 72 172 272 372 172 72 272 72 - - 1107 75 175 275 375 - - 275 75 375 75 1108 78 178 278 378 178 78 278 78 - - 1109 81 181 281 381 - - 281 81 - - 1110 84 184 284 384 184 84 284 84 - - 1111 87 187 287 387 - - 287 87 - - 1112 90 190 290 390 190 90 290 90 390 90 1113 93 193 293 393 - - 293 93 - - 1114 - - - - - - 200 0 - - 1115} 1116do_execsql_test joinD-27 { 1117 SELECT t1.*, t2.*, t3.*, t4.* 1118 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1119 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1120 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1121 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1122} { 1123 15 115 215 315 - - 215 15 315 15 1124 30 130 230 330 130 30 230 30 330 30 1125 45 145 245 345 - - 245 45 345 45 1126 60 160 260 360 160 60 260 60 360 60 1127 75 175 275 375 - - 275 75 375 75 1128 90 190 290 390 190 90 290 90 390 90 1129 - - - - - - - - 300 0 1130 - - - - - - - - 305 5 1131 - - - - - - - - 310 10 1132 - - - - - - - - 320 20 1133 - - - - - - - - 325 25 1134 - - - - - - - - 335 35 1135 - - - - - - - - 340 40 1136 - - - - - - - - 350 50 1137 - - - - - - - - 355 55 1138 - - - - - - - - 365 65 1139 - - - - - - - - 370 70 1140 - - - - - - - - 380 80 1141 - - - - - - - - 385 85 1142 - - - - - - - - 395 95 1143} 1144do_execsql_test joinD-28 { 1145 SELECT t1.*, t2.*, t3.*, t4.* 1146 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1147 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1148 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 1149 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1150} { 1151 3 103 203 303 - - 203 3 - - 1152 6 106 206 306 106 6 206 6 - - 1153 9 109 209 309 - - 209 9 - - 1154 12 112 212 312 112 12 212 12 - - 1155 15 115 215 315 - - 215 15 315 15 1156 18 118 218 318 118 18 218 18 - - 1157 21 121 221 321 - - 221 21 - - 1158 24 124 224 324 124 24 224 24 - - 1159 27 127 227 327 - - 227 27 - - 1160 30 130 230 330 130 30 230 30 330 30 1161 33 133 233 333 - - 233 33 - - 1162 36 136 236 336 136 36 236 36 - - 1163 39 139 239 339 - - 239 39 - - 1164 42 142 242 342 142 42 242 42 - - 1165 45 145 245 345 - - 245 45 345 45 1166 48 148 248 348 148 48 248 48 - - 1167 51 151 251 351 - - 251 51 - - 1168 54 154 254 354 154 54 254 54 - - 1169 57 157 257 357 - - 257 57 - - 1170 60 160 260 360 160 60 260 60 360 60 1171 63 163 263 363 - - 263 63 - - 1172 66 166 266 366 166 66 266 66 - - 1173 69 169 269 369 - - 269 69 - - 1174 72 172 272 372 172 72 272 72 - - 1175 75 175 275 375 - - 275 75 375 75 1176 78 178 278 378 178 78 278 78 - - 1177 81 181 281 381 - - 281 81 - - 1178 84 184 284 384 184 84 284 84 - - 1179 87 187 287 387 - - 287 87 - - 1180 90 190 290 390 190 90 290 90 390 90 1181 93 193 293 393 - - 293 93 - - 1182 - - - - - - 200 0 - - 1183 - - - - - - - - 300 0 1184 - - - - - - - - 305 5 1185 - - - - - - - - 310 10 1186 - - - - - - - - 320 20 1187 - - - - - - - - 325 25 1188 - - - - - - - - 335 35 1189 - - - - - - - - 340 40 1190 - - - - - - - - 350 50 1191 - - - - - - - - 355 55 1192 - - - - - - - - 365 65 1193 - - - - - - - - 370 70 1194 - - - - - - - - 380 80 1195 - - - - - - - - 385 85 1196 - - - - - - - - 395 95 1197} 1198do_execsql_test joinD-29 { 1199 SELECT t1.*, t2.*, t3.*, t4.* 1200 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1201 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1202 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1203 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1204} { 1205 5 105 205 305 - - - - 305 5 1206 10 110 210 310 110 10 - - 310 10 1207 15 115 215 315 - - 215 15 315 15 1208 20 120 220 320 120 20 - - 320 20 1209 25 125 225 325 - - - - 325 25 1210 30 130 230 330 130 30 230 30 330 30 1211 35 135 235 335 - - - - 335 35 1212 40 140 240 340 140 40 - - 340 40 1213 45 145 245 345 - - 245 45 345 45 1214 50 150 250 350 150 50 - - 350 50 1215 55 155 255 355 - - - - 355 55 1216 60 160 260 360 160 60 260 60 360 60 1217 65 165 265 365 - - - - 365 65 1218 70 170 270 370 170 70 - - 370 70 1219 75 175 275 375 - - 275 75 375 75 1220 80 180 280 380 180 80 - - 380 80 1221 85 185 285 385 - - - - 385 85 1222 90 190 290 390 190 90 290 90 390 90 1223 95 195 295 395 - - - - 395 95 1224} 1225do_execsql_test joinD-30 { 1226 SELECT t1.*, t2.*, t3.*, t4.* 1227 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1228 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1229 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1230 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1231} { 1232 0 100 200 300 - - - - - - 1233 1 101 201 301 - - - - - - 1234 2 102 202 302 102 2 - - - - 1235 3 103 203 303 - - 203 3 - - 1236 4 104 204 304 104 4 - - - - 1237 5 105 205 305 - - - - 305 5 1238 6 106 206 306 106 6 206 6 - - 1239 7 107 207 307 - - - - - - 1240 8 108 208 308 108 8 - - - - 1241 9 109 209 309 - - 209 9 - - 1242 10 110 210 310 110 10 - - 310 10 1243 11 111 211 311 - - - - - - 1244 12 112 212 312 112 12 212 12 - - 1245 13 113 213 313 - - - - - - 1246 14 114 214 314 114 14 - - - - 1247 15 115 215 315 - - 215 15 315 15 1248 16 116 216 316 116 16 - - - - 1249 17 117 217 317 - - - - - - 1250 18 118 218 318 118 18 218 18 - - 1251 19 119 219 319 - - - - - - 1252 20 120 220 320 120 20 - - 320 20 1253 21 121 221 321 - - 221 21 - - 1254 22 122 222 322 122 22 - - - - 1255 23 123 223 323 - - - - - - 1256 24 124 224 324 124 24 224 24 - - 1257 25 125 225 325 - - - - 325 25 1258 26 126 226 326 126 26 - - - - 1259 27 127 227 327 - - 227 27 - - 1260 28 128 228 328 128 28 - - - - 1261 29 129 229 329 - - - - - - 1262 30 130 230 330 130 30 230 30 330 30 1263 31 131 231 331 - - - - - - 1264 32 132 232 332 132 32 - - - - 1265 33 133 233 333 - - 233 33 - - 1266 34 134 234 334 134 34 - - - - 1267 35 135 235 335 - - - - 335 35 1268 36 136 236 336 136 36 236 36 - - 1269 37 137 237 337 - - - - - - 1270 38 138 238 338 138 38 - - - - 1271 39 139 239 339 - - 239 39 - - 1272 40 140 240 340 140 40 - - 340 40 1273 41 141 241 341 - - - - - - 1274 42 142 242 342 142 42 242 42 - - 1275 43 143 243 343 - - - - - - 1276 44 144 244 344 144 44 - - - - 1277 45 145 245 345 - - 245 45 345 45 1278 46 146 246 346 146 46 - - - - 1279 47 147 247 347 - - - - - - 1280 48 148 248 348 148 48 248 48 - - 1281 49 149 249 349 - - - - - - 1282 50 150 250 350 150 50 - - 350 50 1283 51 151 251 351 - - 251 51 - - 1284 52 152 252 352 152 52 - - - - 1285 53 153 253 353 - - - - - - 1286 54 154 254 354 154 54 254 54 - - 1287 55 155 255 355 - - - - 355 55 1288 56 156 256 356 156 56 - - - - 1289 57 157 257 357 - - 257 57 - - 1290 58 158 258 358 158 58 - - - - 1291 59 159 259 359 - - - - - - 1292 60 160 260 360 160 60 260 60 360 60 1293 61 161 261 361 - - - - - - 1294 62 162 262 362 162 62 - - - - 1295 63 163 263 363 - - 263 63 - - 1296 64 164 264 364 164 64 - - - - 1297 65 165 265 365 - - - - 365 65 1298 66 166 266 366 166 66 266 66 - - 1299 67 167 267 367 - - - - - - 1300 68 168 268 368 168 68 - - - - 1301 69 169 269 369 - - 269 69 - - 1302 70 170 270 370 170 70 - - 370 70 1303 71 171 271 371 - - - - - - 1304 72 172 272 372 172 72 272 72 - - 1305 73 173 273 373 - - - - - - 1306 74 174 274 374 174 74 - - - - 1307 75 175 275 375 - - 275 75 375 75 1308 76 176 276 376 176 76 - - - - 1309 77 177 277 377 - - - - - - 1310 78 178 278 378 178 78 278 78 - - 1311 79 179 279 379 - - - - - - 1312 80 180 280 380 180 80 - - 380 80 1313 81 181 281 381 - - 281 81 - - 1314 82 182 282 382 182 82 - - - - 1315 83 183 283 383 - - - - - - 1316 84 184 284 384 184 84 284 84 - - 1317 85 185 285 385 - - - - 385 85 1318 86 186 286 386 186 86 - - - - 1319 87 187 287 387 - - 287 87 - - 1320 88 188 288 388 188 88 - - - - 1321 89 189 289 389 - - - - - - 1322 90 190 290 390 190 90 290 90 390 90 1323 91 191 291 391 - - - - - - 1324 92 192 292 392 192 92 - - - - 1325 93 193 293 393 - - 293 93 - - 1326 94 194 294 394 194 94 - - - - 1327 95 195 295 395 - - - - 395 95 1328 96 - 296 396 - - - - - - 1329 97 197 - 397 - - - - - - 1330 98 198 298 - - - - - - - 1331 99 - - - - - - - - - 1332 - - - - - - 200 0 - - 1333} 1334do_execsql_test joinD-31 { 1335 SELECT t1.*, t2.*, t3.*, t4.* 1336 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1337 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1338 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1339 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1340} { 1341 5 105 205 305 - - - - 305 5 1342 10 110 210 310 110 10 - - 310 10 1343 15 115 215 315 - - 215 15 315 15 1344 20 120 220 320 120 20 - - 320 20 1345 25 125 225 325 - - - - 325 25 1346 30 130 230 330 130 30 230 30 330 30 1347 35 135 235 335 - - - - 335 35 1348 40 140 240 340 140 40 - - 340 40 1349 45 145 245 345 - - 245 45 345 45 1350 50 150 250 350 150 50 - - 350 50 1351 55 155 255 355 - - - - 355 55 1352 60 160 260 360 160 60 260 60 360 60 1353 65 165 265 365 - - - - 365 65 1354 70 170 270 370 170 70 - - 370 70 1355 75 175 275 375 - - 275 75 375 75 1356 80 180 280 380 180 80 - - 380 80 1357 85 185 285 385 - - - - 385 85 1358 90 190 290 390 190 90 290 90 390 90 1359 95 195 295 395 - - - - 395 95 1360 - - - - - - - - 300 0 1361} 1362do_execsql_test joinD-32 { 1363 SELECT t1.*, t2.*, t3.*, t4.* 1364 FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0 1365 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1366 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 1367 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1368} { 1369 0 100 200 300 - - - - - - 1370 1 101 201 301 - - - - - - 1371 2 102 202 302 102 2 - - - - 1372 3 103 203 303 - - 203 3 - - 1373 4 104 204 304 104 4 - - - - 1374 5 105 205 305 - - - - 305 5 1375 6 106 206 306 106 6 206 6 - - 1376 7 107 207 307 - - - - - - 1377 8 108 208 308 108 8 - - - - 1378 9 109 209 309 - - 209 9 - - 1379 10 110 210 310 110 10 - - 310 10 1380 11 111 211 311 - - - - - - 1381 12 112 212 312 112 12 212 12 - - 1382 13 113 213 313 - - - - - - 1383 14 114 214 314 114 14 - - - - 1384 15 115 215 315 - - 215 15 315 15 1385 16 116 216 316 116 16 - - - - 1386 17 117 217 317 - - - - - - 1387 18 118 218 318 118 18 218 18 - - 1388 19 119 219 319 - - - - - - 1389 20 120 220 320 120 20 - - 320 20 1390 21 121 221 321 - - 221 21 - - 1391 22 122 222 322 122 22 - - - - 1392 23 123 223 323 - - - - - - 1393 24 124 224 324 124 24 224 24 - - 1394 25 125 225 325 - - - - 325 25 1395 26 126 226 326 126 26 - - - - 1396 27 127 227 327 - - 227 27 - - 1397 28 128 228 328 128 28 - - - - 1398 29 129 229 329 - - - - - - 1399 30 130 230 330 130 30 230 30 330 30 1400 31 131 231 331 - - - - - - 1401 32 132 232 332 132 32 - - - - 1402 33 133 233 333 - - 233 33 - - 1403 34 134 234 334 134 34 - - - - 1404 35 135 235 335 - - - - 335 35 1405 36 136 236 336 136 36 236 36 - - 1406 37 137 237 337 - - - - - - 1407 38 138 238 338 138 38 - - - - 1408 39 139 239 339 - - 239 39 - - 1409 40 140 240 340 140 40 - - 340 40 1410 41 141 241 341 - - - - - - 1411 42 142 242 342 142 42 242 42 - - 1412 43 143 243 343 - - - - - - 1413 44 144 244 344 144 44 - - - - 1414 45 145 245 345 - - 245 45 345 45 1415 46 146 246 346 146 46 - - - - 1416 47 147 247 347 - - - - - - 1417 48 148 248 348 148 48 248 48 - - 1418 49 149 249 349 - - - - - - 1419 50 150 250 350 150 50 - - 350 50 1420 51 151 251 351 - - 251 51 - - 1421 52 152 252 352 152 52 - - - - 1422 53 153 253 353 - - - - - - 1423 54 154 254 354 154 54 254 54 - - 1424 55 155 255 355 - - - - 355 55 1425 56 156 256 356 156 56 - - - - 1426 57 157 257 357 - - 257 57 - - 1427 58 158 258 358 158 58 - - - - 1428 59 159 259 359 - - - - - - 1429 60 160 260 360 160 60 260 60 360 60 1430 61 161 261 361 - - - - - - 1431 62 162 262 362 162 62 - - - - 1432 63 163 263 363 - - 263 63 - - 1433 64 164 264 364 164 64 - - - - 1434 65 165 265 365 - - - - 365 65 1435 66 166 266 366 166 66 266 66 - - 1436 67 167 267 367 - - - - - - 1437 68 168 268 368 168 68 - - - - 1438 69 169 269 369 - - 269 69 - - 1439 70 170 270 370 170 70 - - 370 70 1440 71 171 271 371 - - - - - - 1441 72 172 272 372 172 72 272 72 - - 1442 73 173 273 373 - - - - - - 1443 74 174 274 374 174 74 - - - - 1444 75 175 275 375 - - 275 75 375 75 1445 76 176 276 376 176 76 - - - - 1446 77 177 277 377 - - - - - - 1447 78 178 278 378 178 78 278 78 - - 1448 79 179 279 379 - - - - - - 1449 80 180 280 380 180 80 - - 380 80 1450 81 181 281 381 - - 281 81 - - 1451 82 182 282 382 182 82 - - - - 1452 83 183 283 383 - - - - - - 1453 84 184 284 384 184 84 284 84 - - 1454 85 185 285 385 - - - - 385 85 1455 86 186 286 386 186 86 - - - - 1456 87 187 287 387 - - 287 87 - - 1457 88 188 288 388 188 88 - - - - 1458 89 189 289 389 - - - - - - 1459 90 190 290 390 190 90 290 90 390 90 1460 91 191 291 391 - - - - - - 1461 92 192 292 392 192 92 - - - - 1462 93 193 293 393 - - 293 93 - - 1463 94 194 294 394 194 94 - - - - 1464 95 195 295 395 - - - - 395 95 1465 96 - 296 396 - - - - - - 1466 97 197 - 397 - - - - - - 1467 98 198 298 - - - - - - - 1468 99 - - - - - - - - - 1469 - - - - - - 200 0 - - 1470 - - - - - - - - 300 0 1471} 1472do_execsql_test joinD-33 { 1473 SELECT t1.*, t2.*, t3.*, t4.* 1474 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1475 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 1476 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1477 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1478} { 1479 30 130 230 330 130 30 230 30 330 30 1480 60 160 260 360 160 60 260 60 360 60 1481 90 190 290 390 190 90 290 90 390 90 1482} 1483do_execsql_test joinD-34 { 1484 SELECT t1.*, t2.*, t3.*, t4.* 1485 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1486 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 1487 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1488 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1489} { 1490 6 106 206 306 106 6 206 6 - - 1491 12 112 212 312 112 12 212 12 - - 1492 18 118 218 318 118 18 218 18 - - 1493 24 124 224 324 124 24 224 24 - - 1494 30 130 230 330 130 30 230 30 330 30 1495 36 136 236 336 136 36 236 36 - - 1496 42 142 242 342 142 42 242 42 - - 1497 48 148 248 348 148 48 248 48 - - 1498 54 154 254 354 154 54 254 54 - - 1499 60 160 260 360 160 60 260 60 360 60 1500 66 166 266 366 166 66 266 66 - - 1501 72 172 272 372 172 72 272 72 - - 1502 78 178 278 378 178 78 278 78 - - 1503 84 184 284 384 184 84 284 84 - - 1504 90 190 290 390 190 90 290 90 390 90 1505} 1506do_execsql_test joinD-35 { 1507 SELECT t1.*, t2.*, t3.*, t4.* 1508 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1509 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 1510 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1511 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1512} { 1513 30 130 230 330 130 30 230 30 330 30 1514 60 160 260 360 160 60 260 60 360 60 1515 90 190 290 390 190 90 290 90 390 90 1516 - - - - - - - - 300 0 1517 - - - - - - - - 305 5 1518 - - - - - - - - 310 10 1519 - - - - - - - - 315 15 1520 - - - - - - - - 320 20 1521 - - - - - - - - 325 25 1522 - - - - - - - - 335 35 1523 - - - - - - - - 340 40 1524 - - - - - - - - 345 45 1525 - - - - - - - - 350 50 1526 - - - - - - - - 355 55 1527 - - - - - - - - 365 65 1528 - - - - - - - - 370 70 1529 - - - - - - - - 375 75 1530 - - - - - - - - 380 80 1531 - - - - - - - - 385 85 1532 - - - - - - - - 395 95 1533} 1534do_execsql_test joinD-36 { 1535 SELECT t1.*, t2.*, t3.*, t4.* 1536 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1537 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 1538 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 1539 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1540} { 1541 6 106 206 306 106 6 206 6 - - 1542 12 112 212 312 112 12 212 12 - - 1543 18 118 218 318 118 18 218 18 - - 1544 24 124 224 324 124 24 224 24 - - 1545 30 130 230 330 130 30 230 30 330 30 1546 36 136 236 336 136 36 236 36 - - 1547 42 142 242 342 142 42 242 42 - - 1548 48 148 248 348 148 48 248 48 - - 1549 54 154 254 354 154 54 254 54 - - 1550 60 160 260 360 160 60 260 60 360 60 1551 66 166 266 366 166 66 266 66 - - 1552 72 172 272 372 172 72 272 72 - - 1553 78 178 278 378 178 78 278 78 - - 1554 84 184 284 384 184 84 284 84 - - 1555 90 190 290 390 190 90 290 90 390 90 1556 - - - - - - - - 300 0 1557 - - - - - - - - 305 5 1558 - - - - - - - - 310 10 1559 - - - - - - - - 315 15 1560 - - - - - - - - 320 20 1561 - - - - - - - - 325 25 1562 - - - - - - - - 335 35 1563 - - - - - - - - 340 40 1564 - - - - - - - - 345 45 1565 - - - - - - - - 350 50 1566 - - - - - - - - 355 55 1567 - - - - - - - - 365 65 1568 - - - - - - - - 370 70 1569 - - - - - - - - 375 75 1570 - - - - - - - - 380 80 1571 - - - - - - - - 385 85 1572 - - - - - - - - 395 95 1573} 1574do_execsql_test joinD-37 { 1575 SELECT t1.*, t2.*, t3.*, t4.* 1576 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1577 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 1578 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1579 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1580} { 1581 10 110 210 310 110 10 - - 310 10 1582 20 120 220 320 120 20 - - 320 20 1583 30 130 230 330 130 30 230 30 330 30 1584 40 140 240 340 140 40 - - 340 40 1585 50 150 250 350 150 50 - - 350 50 1586 60 160 260 360 160 60 260 60 360 60 1587 70 170 270 370 170 70 - - 370 70 1588 80 180 280 380 180 80 - - 380 80 1589 90 190 290 390 190 90 290 90 390 90 1590} 1591do_execsql_test joinD-38 { 1592 SELECT t1.*, t2.*, t3.*, t4.* 1593 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1594 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 1595 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1596 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1597} { 1598 2 102 202 302 102 2 - - - - 1599 4 104 204 304 104 4 - - - - 1600 6 106 206 306 106 6 206 6 - - 1601 8 108 208 308 108 8 - - - - 1602 10 110 210 310 110 10 - - 310 10 1603 12 112 212 312 112 12 212 12 - - 1604 14 114 214 314 114 14 - - - - 1605 16 116 216 316 116 16 - - - - 1606 18 118 218 318 118 18 218 18 - - 1607 20 120 220 320 120 20 - - 320 20 1608 22 122 222 322 122 22 - - - - 1609 24 124 224 324 124 24 224 24 - - 1610 26 126 226 326 126 26 - - - - 1611 28 128 228 328 128 28 - - - - 1612 30 130 230 330 130 30 230 30 330 30 1613 32 132 232 332 132 32 - - - - 1614 34 134 234 334 134 34 - - - - 1615 36 136 236 336 136 36 236 36 - - 1616 38 138 238 338 138 38 - - - - 1617 40 140 240 340 140 40 - - 340 40 1618 42 142 242 342 142 42 242 42 - - 1619 44 144 244 344 144 44 - - - - 1620 46 146 246 346 146 46 - - - - 1621 48 148 248 348 148 48 248 48 - - 1622 50 150 250 350 150 50 - - 350 50 1623 52 152 252 352 152 52 - - - - 1624 54 154 254 354 154 54 254 54 - - 1625 56 156 256 356 156 56 - - - - 1626 58 158 258 358 158 58 - - - - 1627 60 160 260 360 160 60 260 60 360 60 1628 62 162 262 362 162 62 - - - - 1629 64 164 264 364 164 64 - - - - 1630 66 166 266 366 166 66 266 66 - - 1631 68 168 268 368 168 68 - - - - 1632 70 170 270 370 170 70 - - 370 70 1633 72 172 272 372 172 72 272 72 - - 1634 74 174 274 374 174 74 - - - - 1635 76 176 276 376 176 76 - - - - 1636 78 178 278 378 178 78 278 78 - - 1637 80 180 280 380 180 80 - - 380 80 1638 82 182 282 382 182 82 - - - - 1639 84 184 284 384 184 84 284 84 - - 1640 86 186 286 386 186 86 - - - - 1641 88 188 288 388 188 88 - - - - 1642 90 190 290 390 190 90 290 90 390 90 1643 92 192 292 392 192 92 - - - - 1644 94 194 294 394 194 94 - - - - 1645 - - - - 100 0 - - - - 1646} 1647do_execsql_test joinD-39 { 1648 SELECT t1.*, t2.*, t3.*, t4.* 1649 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1650 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 1651 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1652 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1653} { 1654 10 110 210 310 110 10 - - 310 10 1655 20 120 220 320 120 20 - - 320 20 1656 30 130 230 330 130 30 230 30 330 30 1657 40 140 240 340 140 40 - - 340 40 1658 50 150 250 350 150 50 - - 350 50 1659 60 160 260 360 160 60 260 60 360 60 1660 70 170 270 370 170 70 - - 370 70 1661 80 180 280 380 180 80 - - 380 80 1662 90 190 290 390 190 90 290 90 390 90 1663 - - - - - - - - 300 0 1664 - - - - - - - - 305 5 1665 - - - - - - - - 315 15 1666 - - - - - - - - 325 25 1667 - - - - - - - - 335 35 1668 - - - - - - - - 345 45 1669 - - - - - - - - 355 55 1670 - - - - - - - - 365 65 1671 - - - - - - - - 375 75 1672 - - - - - - - - 385 85 1673 - - - - - - - - 395 95 1674} 1675do_execsql_test joinD-40 { 1676 SELECT t1.*, t2.*, t3.*, t4.* 1677 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1678 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 1679 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 1680 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1681} { 1682 2 102 202 302 102 2 - - - - 1683 4 104 204 304 104 4 - - - - 1684 6 106 206 306 106 6 206 6 - - 1685 8 108 208 308 108 8 - - - - 1686 10 110 210 310 110 10 - - 310 10 1687 12 112 212 312 112 12 212 12 - - 1688 14 114 214 314 114 14 - - - - 1689 16 116 216 316 116 16 - - - - 1690 18 118 218 318 118 18 218 18 - - 1691 20 120 220 320 120 20 - - 320 20 1692 22 122 222 322 122 22 - - - - 1693 24 124 224 324 124 24 224 24 - - 1694 26 126 226 326 126 26 - - - - 1695 28 128 228 328 128 28 - - - - 1696 30 130 230 330 130 30 230 30 330 30 1697 32 132 232 332 132 32 - - - - 1698 34 134 234 334 134 34 - - - - 1699 36 136 236 336 136 36 236 36 - - 1700 38 138 238 338 138 38 - - - - 1701 40 140 240 340 140 40 - - 340 40 1702 42 142 242 342 142 42 242 42 - - 1703 44 144 244 344 144 44 - - - - 1704 46 146 246 346 146 46 - - - - 1705 48 148 248 348 148 48 248 48 - - 1706 50 150 250 350 150 50 - - 350 50 1707 52 152 252 352 152 52 - - - - 1708 54 154 254 354 154 54 254 54 - - 1709 56 156 256 356 156 56 - - - - 1710 58 158 258 358 158 58 - - - - 1711 60 160 260 360 160 60 260 60 360 60 1712 62 162 262 362 162 62 - - - - 1713 64 164 264 364 164 64 - - - - 1714 66 166 266 366 166 66 266 66 - - 1715 68 168 268 368 168 68 - - - - 1716 70 170 270 370 170 70 - - 370 70 1717 72 172 272 372 172 72 272 72 - - 1718 74 174 274 374 174 74 - - - - 1719 76 176 276 376 176 76 - - - - 1720 78 178 278 378 178 78 278 78 - - 1721 80 180 280 380 180 80 - - 380 80 1722 82 182 282 382 182 82 - - - - 1723 84 184 284 384 184 84 284 84 - - 1724 86 186 286 386 186 86 - - - - 1725 88 188 288 388 188 88 - - - - 1726 90 190 290 390 190 90 290 90 390 90 1727 92 192 292 392 192 92 - - - - 1728 94 194 294 394 194 94 - - - - 1729 - - - - 100 0 - - - - 1730 - - - - - - - - 300 0 1731 - - - - - - - - 305 5 1732 - - - - - - - - 315 15 1733 - - - - - - - - 325 25 1734 - - - - - - - - 335 35 1735 - - - - - - - - 345 45 1736 - - - - - - - - 355 55 1737 - - - - - - - - 365 65 1738 - - - - - - - - 375 75 1739 - - - - - - - - 385 85 1740 - - - - - - - - 395 95 1741} 1742do_execsql_test joinD-41 { 1743 SELECT t1.*, t2.*, t3.*, t4.* 1744 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1745 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1746 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1747 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1748} { 1749 30 130 230 330 130 30 230 30 330 30 1750 60 160 260 360 160 60 260 60 360 60 1751 90 190 290 390 190 90 290 90 390 90 1752} 1753do_execsql_test joinD-42 { 1754 SELECT t1.*, t2.*, t3.*, t4.* 1755 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1756 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1757 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1758 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1759} { 1760 6 106 206 306 106 6 206 6 - - 1761 12 112 212 312 112 12 212 12 - - 1762 18 118 218 318 118 18 218 18 - - 1763 24 124 224 324 124 24 224 24 - - 1764 30 130 230 330 130 30 230 30 330 30 1765 36 136 236 336 136 36 236 36 - - 1766 42 142 242 342 142 42 242 42 - - 1767 48 148 248 348 148 48 248 48 - - 1768 54 154 254 354 154 54 254 54 - - 1769 60 160 260 360 160 60 260 60 360 60 1770 66 166 266 366 166 66 266 66 - - 1771 72 172 272 372 172 72 272 72 - - 1772 78 178 278 378 178 78 278 78 - - 1773 84 184 284 384 184 84 284 84 - - 1774 90 190 290 390 190 90 290 90 390 90 1775 - - - - - - 200 0 - - 1776 - - - - - - 203 3 - - 1777 - - - - - - 209 9 - - 1778 - - - - - - 215 15 - - 1779 - - - - - - 221 21 - - 1780 - - - - - - 227 27 - - 1781 - - - - - - 233 33 - - 1782 - - - - - - 239 39 - - 1783 - - - - - - 245 45 - - 1784 - - - - - - 251 51 - - 1785 - - - - - - 257 57 - - 1786 - - - - - - 263 63 - - 1787 - - - - - - 269 69 - - 1788 - - - - - - 275 75 - - 1789 - - - - - - 281 81 - - 1790 - - - - - - 287 87 - - 1791 - - - - - - 293 93 - - 1792} 1793do_execsql_test joinD-43 { 1794 SELECT t1.*, t2.*, t3.*, t4.* 1795 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1796 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1797 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1798 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1799} { 1800 30 130 230 330 130 30 230 30 330 30 1801 60 160 260 360 160 60 260 60 360 60 1802 90 190 290 390 190 90 290 90 390 90 1803 - - - - - - - - 300 0 1804 - - - - - - - - 305 5 1805 - - - - - - - - 310 10 1806 - - - - - - - - 315 15 1807 - - - - - - - - 320 20 1808 - - - - - - - - 325 25 1809 - - - - - - - - 335 35 1810 - - - - - - - - 340 40 1811 - - - - - - - - 345 45 1812 - - - - - - - - 350 50 1813 - - - - - - - - 355 55 1814 - - - - - - - - 365 65 1815 - - - - - - - - 370 70 1816 - - - - - - - - 375 75 1817 - - - - - - - - 380 80 1818 - - - - - - - - 385 85 1819 - - - - - - - - 395 95 1820} 1821do_execsql_test joinD-44 { 1822 SELECT t1.*, t2.*, t3.*, t4.* 1823 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1824 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 1825 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 1826 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1827} { 1828 6 106 206 306 106 6 206 6 - - 1829 12 112 212 312 112 12 212 12 - - 1830 18 118 218 318 118 18 218 18 - - 1831 24 124 224 324 124 24 224 24 - - 1832 30 130 230 330 130 30 230 30 330 30 1833 36 136 236 336 136 36 236 36 - - 1834 42 142 242 342 142 42 242 42 - - 1835 48 148 248 348 148 48 248 48 - - 1836 54 154 254 354 154 54 254 54 - - 1837 60 160 260 360 160 60 260 60 360 60 1838 66 166 266 366 166 66 266 66 - - 1839 72 172 272 372 172 72 272 72 - - 1840 78 178 278 378 178 78 278 78 - - 1841 84 184 284 384 184 84 284 84 - - 1842 90 190 290 390 190 90 290 90 390 90 1843 - - - - - - 200 0 - - 1844 - - - - - - 203 3 - - 1845 - - - - - - 209 9 - - 1846 - - - - - - 215 15 - - 1847 - - - - - - 221 21 - - 1848 - - - - - - 227 27 - - 1849 - - - - - - 233 33 - - 1850 - - - - - - 239 39 - - 1851 - - - - - - 245 45 - - 1852 - - - - - - 251 51 - - 1853 - - - - - - 257 57 - - 1854 - - - - - - 263 63 - - 1855 - - - - - - 269 69 - - 1856 - - - - - - 275 75 - - 1857 - - - - - - 281 81 - - 1858 - - - - - - 287 87 - - 1859 - - - - - - 293 93 - - 1860 - - - - - - - - 300 0 1861 - - - - - - - - 305 5 1862 - - - - - - - - 310 10 1863 - - - - - - - - 315 15 1864 - - - - - - - - 320 20 1865 - - - - - - - - 325 25 1866 - - - - - - - - 335 35 1867 - - - - - - - - 340 40 1868 - - - - - - - - 345 45 1869 - - - - - - - - 350 50 1870 - - - - - - - - 355 55 1871 - - - - - - - - 365 65 1872 - - - - - - - - 370 70 1873 - - - - - - - - 375 75 1874 - - - - - - - - 380 80 1875 - - - - - - - - 385 85 1876 - - - - - - - - 395 95 1877} 1878do_execsql_test joinD-45 { 1879 SELECT t1.*, t2.*, t3.*, t4.* 1880 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1881 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1882 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 1883 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1884} { 1885 10 110 210 310 110 10 - - 310 10 1886 20 120 220 320 120 20 - - 320 20 1887 30 130 230 330 130 30 230 30 330 30 1888 40 140 240 340 140 40 - - 340 40 1889 50 150 250 350 150 50 - - 350 50 1890 60 160 260 360 160 60 260 60 360 60 1891 70 170 270 370 170 70 - - 370 70 1892 80 180 280 380 180 80 - - 380 80 1893 90 190 290 390 190 90 290 90 390 90 1894} 1895do_execsql_test joinD-46 { 1896 SELECT t1.*, t2.*, t3.*, t4.* 1897 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1898 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1899 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 1900 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1901} { 1902 2 102 202 302 102 2 - - - - 1903 4 104 204 304 104 4 - - - - 1904 6 106 206 306 106 6 206 6 - - 1905 8 108 208 308 108 8 - - - - 1906 10 110 210 310 110 10 - - 310 10 1907 12 112 212 312 112 12 212 12 - - 1908 14 114 214 314 114 14 - - - - 1909 16 116 216 316 116 16 - - - - 1910 18 118 218 318 118 18 218 18 - - 1911 20 120 220 320 120 20 - - 320 20 1912 22 122 222 322 122 22 - - - - 1913 24 124 224 324 124 24 224 24 - - 1914 26 126 226 326 126 26 - - - - 1915 28 128 228 328 128 28 - - - - 1916 30 130 230 330 130 30 230 30 330 30 1917 32 132 232 332 132 32 - - - - 1918 34 134 234 334 134 34 - - - - 1919 36 136 236 336 136 36 236 36 - - 1920 38 138 238 338 138 38 - - - - 1921 40 140 240 340 140 40 - - 340 40 1922 42 142 242 342 142 42 242 42 - - 1923 44 144 244 344 144 44 - - - - 1924 46 146 246 346 146 46 - - - - 1925 48 148 248 348 148 48 248 48 - - 1926 50 150 250 350 150 50 - - 350 50 1927 52 152 252 352 152 52 - - - - 1928 54 154 254 354 154 54 254 54 - - 1929 56 156 256 356 156 56 - - - - 1930 58 158 258 358 158 58 - - - - 1931 60 160 260 360 160 60 260 60 360 60 1932 62 162 262 362 162 62 - - - - 1933 64 164 264 364 164 64 - - - - 1934 66 166 266 366 166 66 266 66 - - 1935 68 168 268 368 168 68 - - - - 1936 70 170 270 370 170 70 - - 370 70 1937 72 172 272 372 172 72 272 72 - - 1938 74 174 274 374 174 74 - - - - 1939 76 176 276 376 176 76 - - - - 1940 78 178 278 378 178 78 278 78 - - 1941 80 180 280 380 180 80 - - 380 80 1942 82 182 282 382 182 82 - - - - 1943 84 184 284 384 184 84 284 84 - - 1944 86 186 286 386 186 86 - - - - 1945 88 188 288 388 188 88 - - - - 1946 90 190 290 390 190 90 290 90 390 90 1947 92 192 292 392 192 92 - - - - 1948 94 194 294 394 194 94 - - - - 1949 - - - - 100 0 - - - - 1950 - - - - - - 200 0 - - 1951 - - - - - - 203 3 - - 1952 - - - - - - 209 9 - - 1953 - - - - - - 215 15 - - 1954 - - - - - - 221 21 - - 1955 - - - - - - 227 27 - - 1956 - - - - - - 233 33 - - 1957 - - - - - - 239 39 - - 1958 - - - - - - 245 45 - - 1959 - - - - - - 251 51 - - 1960 - - - - - - 257 57 - - 1961 - - - - - - 263 63 - - 1962 - - - - - - 269 69 - - 1963 - - - - - - 275 75 - - 1964 - - - - - - 281 81 - - 1965 - - - - - - 287 87 - - 1966 - - - - - - 293 93 - - 1967} 1968do_execsql_test joinD-47 { 1969 SELECT t1.*, t2.*, t3.*, t4.* 1970 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1971 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 1972 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 1973 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 1974} { 1975 10 110 210 310 110 10 - - 310 10 1976 20 120 220 320 120 20 - - 320 20 1977 30 130 230 330 130 30 230 30 330 30 1978 40 140 240 340 140 40 - - 340 40 1979 50 150 250 350 150 50 - - 350 50 1980 60 160 260 360 160 60 260 60 360 60 1981 70 170 270 370 170 70 - - 370 70 1982 80 180 280 380 180 80 - - 380 80 1983 90 190 290 390 190 90 290 90 390 90 1984 - - - - - - - - 300 0 1985 - - - - - - - - 305 5 1986 - - - - - - - - 315 15 1987 - - - - - - - - 325 25 1988 - - - - - - - - 335 35 1989 - - - - - - - - 345 45 1990 - - - - - - - - 355 55 1991 - - - - - - - - 365 65 1992 - - - - - - - - 375 75 1993 - - - - - - - - 385 85 1994 - - - - - - - - 395 95 1995} 1996do_execsql_test joinD-48 { 1997 SELECT t1.*, t2.*, t3.*, t4.* 1998 FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0 1999 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 2000 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 2001 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2002} { 2003 2 102 202 302 102 2 - - - - 2004 4 104 204 304 104 4 - - - - 2005 6 106 206 306 106 6 206 6 - - 2006 8 108 208 308 108 8 - - - - 2007 10 110 210 310 110 10 - - 310 10 2008 12 112 212 312 112 12 212 12 - - 2009 14 114 214 314 114 14 - - - - 2010 16 116 216 316 116 16 - - - - 2011 18 118 218 318 118 18 218 18 - - 2012 20 120 220 320 120 20 - - 320 20 2013 22 122 222 322 122 22 - - - - 2014 24 124 224 324 124 24 224 24 - - 2015 26 126 226 326 126 26 - - - - 2016 28 128 228 328 128 28 - - - - 2017 30 130 230 330 130 30 230 30 330 30 2018 32 132 232 332 132 32 - - - - 2019 34 134 234 334 134 34 - - - - 2020 36 136 236 336 136 36 236 36 - - 2021 38 138 238 338 138 38 - - - - 2022 40 140 240 340 140 40 - - 340 40 2023 42 142 242 342 142 42 242 42 - - 2024 44 144 244 344 144 44 - - - - 2025 46 146 246 346 146 46 - - - - 2026 48 148 248 348 148 48 248 48 - - 2027 50 150 250 350 150 50 - - 350 50 2028 52 152 252 352 152 52 - - - - 2029 54 154 254 354 154 54 254 54 - - 2030 56 156 256 356 156 56 - - - - 2031 58 158 258 358 158 58 - - - - 2032 60 160 260 360 160 60 260 60 360 60 2033 62 162 262 362 162 62 - - - - 2034 64 164 264 364 164 64 - - - - 2035 66 166 266 366 166 66 266 66 - - 2036 68 168 268 368 168 68 - - - - 2037 70 170 270 370 170 70 - - 370 70 2038 72 172 272 372 172 72 272 72 - - 2039 74 174 274 374 174 74 - - - - 2040 76 176 276 376 176 76 - - - - 2041 78 178 278 378 178 78 278 78 - - 2042 80 180 280 380 180 80 - - 380 80 2043 82 182 282 382 182 82 - - - - 2044 84 184 284 384 184 84 284 84 - - 2045 86 186 286 386 186 86 - - - - 2046 88 188 288 388 188 88 - - - - 2047 90 190 290 390 190 90 290 90 390 90 2048 92 192 292 392 192 92 - - - - 2049 94 194 294 394 194 94 - - - - 2050 - - - - 100 0 - - - - 2051 - - - - - - 200 0 - - 2052 - - - - - - 203 3 - - 2053 - - - - - - 209 9 - - 2054 - - - - - - 215 15 - - 2055 - - - - - - 221 21 - - 2056 - - - - - - 227 27 - - 2057 - - - - - - 233 33 - - 2058 - - - - - - 239 39 - - 2059 - - - - - - 245 45 - - 2060 - - - - - - 251 51 - - 2061 - - - - - - 257 57 - - 2062 - - - - - - 263 63 - - 2063 - - - - - - 269 69 - - 2064 - - - - - - 275 75 - - 2065 - - - - - - 281 81 - - 2066 - - - - - - 287 87 - - 2067 - - - - - - 293 93 - - 2068 - - - - - - - - 300 0 2069 - - - - - - - - 305 5 2070 - - - - - - - - 315 15 2071 - - - - - - - - 325 25 2072 - - - - - - - - 335 35 2073 - - - - - - - - 345 45 2074 - - - - - - - - 355 55 2075 - - - - - - - - 365 65 2076 - - - - - - - - 375 75 2077 - - - - - - - - 385 85 2078 - - - - - - - - 395 95 2079} 2080do_execsql_test joinD-49 { 2081 SELECT t1.*, t2.*, t3.*, t4.* 2082 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2083 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 2084 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 2085 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2086} { 2087 15 115 215 315 - - 215 15 315 15 2088 30 130 230 330 130 30 230 30 330 30 2089 45 145 245 345 - - 245 45 345 45 2090 60 160 260 360 160 60 260 60 360 60 2091 75 175 275 375 - - 275 75 375 75 2092 90 190 290 390 190 90 290 90 390 90 2093} 2094do_execsql_test joinD-50 { 2095 SELECT t1.*, t2.*, t3.*, t4.* 2096 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2097 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 2098 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 2099 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2100} { 2101 3 103 203 303 - - 203 3 - - 2102 6 106 206 306 106 6 206 6 - - 2103 9 109 209 309 - - 209 9 - - 2104 12 112 212 312 112 12 212 12 - - 2105 15 115 215 315 - - 215 15 315 15 2106 18 118 218 318 118 18 218 18 - - 2107 21 121 221 321 - - 221 21 - - 2108 24 124 224 324 124 24 224 24 - - 2109 27 127 227 327 - - 227 27 - - 2110 30 130 230 330 130 30 230 30 330 30 2111 33 133 233 333 - - 233 33 - - 2112 36 136 236 336 136 36 236 36 - - 2113 39 139 239 339 - - 239 39 - - 2114 42 142 242 342 142 42 242 42 - - 2115 45 145 245 345 - - 245 45 345 45 2116 48 148 248 348 148 48 248 48 - - 2117 51 151 251 351 - - 251 51 - - 2118 54 154 254 354 154 54 254 54 - - 2119 57 157 257 357 - - 257 57 - - 2120 60 160 260 360 160 60 260 60 360 60 2121 63 163 263 363 - - 263 63 - - 2122 66 166 266 366 166 66 266 66 - - 2123 69 169 269 369 - - 269 69 - - 2124 72 172 272 372 172 72 272 72 - - 2125 75 175 275 375 - - 275 75 375 75 2126 78 178 278 378 178 78 278 78 - - 2127 81 181 281 381 - - 281 81 - - 2128 84 184 284 384 184 84 284 84 - - 2129 87 187 287 387 - - 287 87 - - 2130 90 190 290 390 190 90 290 90 390 90 2131 93 193 293 393 - - 293 93 - - 2132} 2133do_execsql_test joinD-51 { 2134 SELECT t1.*, t2.*, t3.*, t4.* 2135 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2136 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 2137 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 2138 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2139} { 2140 15 115 215 315 - - 215 15 315 15 2141 30 130 230 330 130 30 230 30 330 30 2142 45 145 245 345 - - 245 45 345 45 2143 60 160 260 360 160 60 260 60 360 60 2144 75 175 275 375 - - 275 75 375 75 2145 90 190 290 390 190 90 290 90 390 90 2146 - - - - - - - - 300 0 2147 - - - - - - - - 305 5 2148 - - - - - - - - 310 10 2149 - - - - - - - - 320 20 2150 - - - - - - - - 325 25 2151 - - - - - - - - 335 35 2152 - - - - - - - - 340 40 2153 - - - - - - - - 350 50 2154 - - - - - - - - 355 55 2155 - - - - - - - - 365 65 2156 - - - - - - - - 370 70 2157 - - - - - - - - 380 80 2158 - - - - - - - - 385 85 2159 - - - - - - - - 395 95 2160} 2161do_execsql_test joinD-52 { 2162 SELECT t1.*, t2.*, t3.*, t4.* 2163 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2164 INNER JOIN t3 ON t1.c=t3.c AND t3.y>0 2165 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 2166 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2167} { 2168 3 103 203 303 - - 203 3 - - 2169 6 106 206 306 106 6 206 6 - - 2170 9 109 209 309 - - 209 9 - - 2171 12 112 212 312 112 12 212 12 - - 2172 15 115 215 315 - - 215 15 315 15 2173 18 118 218 318 118 18 218 18 - - 2174 21 121 221 321 - - 221 21 - - 2175 24 124 224 324 124 24 224 24 - - 2176 27 127 227 327 - - 227 27 - - 2177 30 130 230 330 130 30 230 30 330 30 2178 33 133 233 333 - - 233 33 - - 2179 36 136 236 336 136 36 236 36 - - 2180 39 139 239 339 - - 239 39 - - 2181 42 142 242 342 142 42 242 42 - - 2182 45 145 245 345 - - 245 45 345 45 2183 48 148 248 348 148 48 248 48 - - 2184 51 151 251 351 - - 251 51 - - 2185 54 154 254 354 154 54 254 54 - - 2186 57 157 257 357 - - 257 57 - - 2187 60 160 260 360 160 60 260 60 360 60 2188 63 163 263 363 - - 263 63 - - 2189 66 166 266 366 166 66 266 66 - - 2190 69 169 269 369 - - 269 69 - - 2191 72 172 272 372 172 72 272 72 - - 2192 75 175 275 375 - - 275 75 375 75 2193 78 178 278 378 178 78 278 78 - - 2194 81 181 281 381 - - 281 81 - - 2195 84 184 284 384 184 84 284 84 - - 2196 87 187 287 387 - - 287 87 - - 2197 90 190 290 390 190 90 290 90 390 90 2198 93 193 293 393 - - 293 93 - - 2199 - - - - - - - - 300 0 2200 - - - - - - - - 305 5 2201 - - - - - - - - 310 10 2202 - - - - - - - - 320 20 2203 - - - - - - - - 325 25 2204 - - - - - - - - 335 35 2205 - - - - - - - - 340 40 2206 - - - - - - - - 350 50 2207 - - - - - - - - 355 55 2208 - - - - - - - - 365 65 2209 - - - - - - - - 370 70 2210 - - - - - - - - 380 80 2211 - - - - - - - - 385 85 2212 - - - - - - - - 395 95 2213} 2214do_execsql_test joinD-53 { 2215 SELECT t1.*, t2.*, t3.*, t4.* 2216 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2217 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 2218 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 2219 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2220} { 2221 5 105 205 305 - - - - 305 5 2222 10 110 210 310 110 10 - - 310 10 2223 15 115 215 315 - - 215 15 315 15 2224 20 120 220 320 120 20 - - 320 20 2225 25 125 225 325 - - - - 325 25 2226 30 130 230 330 130 30 230 30 330 30 2227 35 135 235 335 - - - - 335 35 2228 40 140 240 340 140 40 - - 340 40 2229 45 145 245 345 - - 245 45 345 45 2230 50 150 250 350 150 50 - - 350 50 2231 55 155 255 355 - - - - 355 55 2232 60 160 260 360 160 60 260 60 360 60 2233 65 165 265 365 - - - - 365 65 2234 70 170 270 370 170 70 - - 370 70 2235 75 175 275 375 - - 275 75 375 75 2236 80 180 280 380 180 80 - - 380 80 2237 85 185 285 385 - - - - 385 85 2238 90 190 290 390 190 90 290 90 390 90 2239 95 195 295 395 - - - - 395 95 2240} 2241do_execsql_test joinD-54 { 2242 SELECT t1.*, t2.*, t3.*, t4.* 2243 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2244 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 2245 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 2246 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2247} { 2248 0 100 200 300 - - - - - - 2249 1 101 201 301 - - - - - - 2250 2 102 202 302 102 2 - - - - 2251 3 103 203 303 - - 203 3 - - 2252 4 104 204 304 104 4 - - - - 2253 5 105 205 305 - - - - 305 5 2254 6 106 206 306 106 6 206 6 - - 2255 7 107 207 307 - - - - - - 2256 8 108 208 308 108 8 - - - - 2257 9 109 209 309 - - 209 9 - - 2258 10 110 210 310 110 10 - - 310 10 2259 11 111 211 311 - - - - - - 2260 12 112 212 312 112 12 212 12 - - 2261 13 113 213 313 - - - - - - 2262 14 114 214 314 114 14 - - - - 2263 15 115 215 315 - - 215 15 315 15 2264 16 116 216 316 116 16 - - - - 2265 17 117 217 317 - - - - - - 2266 18 118 218 318 118 18 218 18 - - 2267 19 119 219 319 - - - - - - 2268 20 120 220 320 120 20 - - 320 20 2269 21 121 221 321 - - 221 21 - - 2270 22 122 222 322 122 22 - - - - 2271 23 123 223 323 - - - - - - 2272 24 124 224 324 124 24 224 24 - - 2273 25 125 225 325 - - - - 325 25 2274 26 126 226 326 126 26 - - - - 2275 27 127 227 327 - - 227 27 - - 2276 28 128 228 328 128 28 - - - - 2277 29 129 229 329 - - - - - - 2278 30 130 230 330 130 30 230 30 330 30 2279 31 131 231 331 - - - - - - 2280 32 132 232 332 132 32 - - - - 2281 33 133 233 333 - - 233 33 - - 2282 34 134 234 334 134 34 - - - - 2283 35 135 235 335 - - - - 335 35 2284 36 136 236 336 136 36 236 36 - - 2285 37 137 237 337 - - - - - - 2286 38 138 238 338 138 38 - - - - 2287 39 139 239 339 - - 239 39 - - 2288 40 140 240 340 140 40 - - 340 40 2289 41 141 241 341 - - - - - - 2290 42 142 242 342 142 42 242 42 - - 2291 43 143 243 343 - - - - - - 2292 44 144 244 344 144 44 - - - - 2293 45 145 245 345 - - 245 45 345 45 2294 46 146 246 346 146 46 - - - - 2295 47 147 247 347 - - - - - - 2296 48 148 248 348 148 48 248 48 - - 2297 49 149 249 349 - - - - - - 2298 50 150 250 350 150 50 - - 350 50 2299 51 151 251 351 - - 251 51 - - 2300 52 152 252 352 152 52 - - - - 2301 53 153 253 353 - - - - - - 2302 54 154 254 354 154 54 254 54 - - 2303 55 155 255 355 - - - - 355 55 2304 56 156 256 356 156 56 - - - - 2305 57 157 257 357 - - 257 57 - - 2306 58 158 258 358 158 58 - - - - 2307 59 159 259 359 - - - - - - 2308 60 160 260 360 160 60 260 60 360 60 2309 61 161 261 361 - - - - - - 2310 62 162 262 362 162 62 - - - - 2311 63 163 263 363 - - 263 63 - - 2312 64 164 264 364 164 64 - - - - 2313 65 165 265 365 - - - - 365 65 2314 66 166 266 366 166 66 266 66 - - 2315 67 167 267 367 - - - - - - 2316 68 168 268 368 168 68 - - - - 2317 69 169 269 369 - - 269 69 - - 2318 70 170 270 370 170 70 - - 370 70 2319 71 171 271 371 - - - - - - 2320 72 172 272 372 172 72 272 72 - - 2321 73 173 273 373 - - - - - - 2322 74 174 274 374 174 74 - - - - 2323 75 175 275 375 - - 275 75 375 75 2324 76 176 276 376 176 76 - - - - 2325 77 177 277 377 - - - - - - 2326 78 178 278 378 178 78 278 78 - - 2327 79 179 279 379 - - - - - - 2328 80 180 280 380 180 80 - - 380 80 2329 81 181 281 381 - - 281 81 - - 2330 82 182 282 382 182 82 - - - - 2331 83 183 283 383 - - - - - - 2332 84 184 284 384 184 84 284 84 - - 2333 85 185 285 385 - - - - 385 85 2334 86 186 286 386 186 86 - - - - 2335 87 187 287 387 - - 287 87 - - 2336 88 188 288 388 188 88 - - - - 2337 89 189 289 389 - - - - - - 2338 90 190 290 390 190 90 290 90 390 90 2339 91 191 291 391 - - - - - - 2340 92 192 292 392 192 92 - - - - 2341 93 193 293 393 - - 293 93 - - 2342 94 194 294 394 194 94 - - - - 2343 95 195 295 395 - - - - 395 95 2344 96 - 296 396 - - - - - - 2345 97 197 - 397 - - - - - - 2346 98 198 298 - - - - - - - 2347 99 - - - - - - - - - 2348 - - - - 100 0 - - - - 2349} 2350do_execsql_test joinD-55 { 2351 SELECT t1.*, t2.*, t3.*, t4.* 2352 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2353 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 2354 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 2355 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2356} { 2357 5 105 205 305 - - - - 305 5 2358 10 110 210 310 110 10 - - 310 10 2359 15 115 215 315 - - 215 15 315 15 2360 20 120 220 320 120 20 - - 320 20 2361 25 125 225 325 - - - - 325 25 2362 30 130 230 330 130 30 230 30 330 30 2363 35 135 235 335 - - - - 335 35 2364 40 140 240 340 140 40 - - 340 40 2365 45 145 245 345 - - 245 45 345 45 2366 50 150 250 350 150 50 - - 350 50 2367 55 155 255 355 - - - - 355 55 2368 60 160 260 360 160 60 260 60 360 60 2369 65 165 265 365 - - - - 365 65 2370 70 170 270 370 170 70 - - 370 70 2371 75 175 275 375 - - 275 75 375 75 2372 80 180 280 380 180 80 - - 380 80 2373 85 185 285 385 - - - - 385 85 2374 90 190 290 390 190 90 290 90 390 90 2375 95 195 295 395 - - - - 395 95 2376 - - - - - - - - 300 0 2377} 2378do_execsql_test joinD-56 { 2379 SELECT t1.*, t2.*, t3.*, t4.* 2380 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2381 LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0 2382 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 2383 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2384} { 2385 0 100 200 300 - - - - - - 2386 1 101 201 301 - - - - - - 2387 2 102 202 302 102 2 - - - - 2388 3 103 203 303 - - 203 3 - - 2389 4 104 204 304 104 4 - - - - 2390 5 105 205 305 - - - - 305 5 2391 6 106 206 306 106 6 206 6 - - 2392 7 107 207 307 - - - - - - 2393 8 108 208 308 108 8 - - - - 2394 9 109 209 309 - - 209 9 - - 2395 10 110 210 310 110 10 - - 310 10 2396 11 111 211 311 - - - - - - 2397 12 112 212 312 112 12 212 12 - - 2398 13 113 213 313 - - - - - - 2399 14 114 214 314 114 14 - - - - 2400 15 115 215 315 - - 215 15 315 15 2401 16 116 216 316 116 16 - - - - 2402 17 117 217 317 - - - - - - 2403 18 118 218 318 118 18 218 18 - - 2404 19 119 219 319 - - - - - - 2405 20 120 220 320 120 20 - - 320 20 2406 21 121 221 321 - - 221 21 - - 2407 22 122 222 322 122 22 - - - - 2408 23 123 223 323 - - - - - - 2409 24 124 224 324 124 24 224 24 - - 2410 25 125 225 325 - - - - 325 25 2411 26 126 226 326 126 26 - - - - 2412 27 127 227 327 - - 227 27 - - 2413 28 128 228 328 128 28 - - - - 2414 29 129 229 329 - - - - - - 2415 30 130 230 330 130 30 230 30 330 30 2416 31 131 231 331 - - - - - - 2417 32 132 232 332 132 32 - - - - 2418 33 133 233 333 - - 233 33 - - 2419 34 134 234 334 134 34 - - - - 2420 35 135 235 335 - - - - 335 35 2421 36 136 236 336 136 36 236 36 - - 2422 37 137 237 337 - - - - - - 2423 38 138 238 338 138 38 - - - - 2424 39 139 239 339 - - 239 39 - - 2425 40 140 240 340 140 40 - - 340 40 2426 41 141 241 341 - - - - - - 2427 42 142 242 342 142 42 242 42 - - 2428 43 143 243 343 - - - - - - 2429 44 144 244 344 144 44 - - - - 2430 45 145 245 345 - - 245 45 345 45 2431 46 146 246 346 146 46 - - - - 2432 47 147 247 347 - - - - - - 2433 48 148 248 348 148 48 248 48 - - 2434 49 149 249 349 - - - - - - 2435 50 150 250 350 150 50 - - 350 50 2436 51 151 251 351 - - 251 51 - - 2437 52 152 252 352 152 52 - - - - 2438 53 153 253 353 - - - - - - 2439 54 154 254 354 154 54 254 54 - - 2440 55 155 255 355 - - - - 355 55 2441 56 156 256 356 156 56 - - - - 2442 57 157 257 357 - - 257 57 - - 2443 58 158 258 358 158 58 - - - - 2444 59 159 259 359 - - - - - - 2445 60 160 260 360 160 60 260 60 360 60 2446 61 161 261 361 - - - - - - 2447 62 162 262 362 162 62 - - - - 2448 63 163 263 363 - - 263 63 - - 2449 64 164 264 364 164 64 - - - - 2450 65 165 265 365 - - - - 365 65 2451 66 166 266 366 166 66 266 66 - - 2452 67 167 267 367 - - - - - - 2453 68 168 268 368 168 68 - - - - 2454 69 169 269 369 - - 269 69 - - 2455 70 170 270 370 170 70 - - 370 70 2456 71 171 271 371 - - - - - - 2457 72 172 272 372 172 72 272 72 - - 2458 73 173 273 373 - - - - - - 2459 74 174 274 374 174 74 - - - - 2460 75 175 275 375 - - 275 75 375 75 2461 76 176 276 376 176 76 - - - - 2462 77 177 277 377 - - - - - - 2463 78 178 278 378 178 78 278 78 - - 2464 79 179 279 379 - - - - - - 2465 80 180 280 380 180 80 - - 380 80 2466 81 181 281 381 - - 281 81 - - 2467 82 182 282 382 182 82 - - - - 2468 83 183 283 383 - - - - - - 2469 84 184 284 384 184 84 284 84 - - 2470 85 185 285 385 - - - - 385 85 2471 86 186 286 386 186 86 - - - - 2472 87 187 287 387 - - 287 87 - - 2473 88 188 288 388 188 88 - - - - 2474 89 189 289 389 - - - - - - 2475 90 190 290 390 190 90 290 90 390 90 2476 91 191 291 391 - - - - - - 2477 92 192 292 392 192 92 - - - - 2478 93 193 293 393 - - 293 93 - - 2479 94 194 294 394 194 94 - - - - 2480 95 195 295 395 - - - - 395 95 2481 96 - 296 396 - - - - - - 2482 97 197 - 397 - - - - - - 2483 98 198 298 - - - - - - - 2484 99 - - - - - - - - - 2485 - - - - 100 0 - - - - 2486 - - - - - - - - 300 0 2487} 2488do_execsql_test joinD-57 { 2489 SELECT t1.*, t2.*, t3.*, t4.* 2490 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2491 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 2492 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 2493 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2494} { 2495 15 115 215 315 - - 215 15 315 15 2496 30 130 230 330 130 30 230 30 330 30 2497 45 145 245 345 - - 245 45 345 45 2498 60 160 260 360 160 60 260 60 360 60 2499 75 175 275 375 - - 275 75 375 75 2500 90 190 290 390 190 90 290 90 390 90 2501} 2502do_execsql_test joinD-58 { 2503 SELECT t1.*, t2.*, t3.*, t4.* 2504 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2505 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 2506 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 2507 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2508} { 2509 3 103 203 303 - - 203 3 - - 2510 6 106 206 306 106 6 206 6 - - 2511 9 109 209 309 - - 209 9 - - 2512 12 112 212 312 112 12 212 12 - - 2513 15 115 215 315 - - 215 15 315 15 2514 18 118 218 318 118 18 218 18 - - 2515 21 121 221 321 - - 221 21 - - 2516 24 124 224 324 124 24 224 24 - - 2517 27 127 227 327 - - 227 27 - - 2518 30 130 230 330 130 30 230 30 330 30 2519 33 133 233 333 - - 233 33 - - 2520 36 136 236 336 136 36 236 36 - - 2521 39 139 239 339 - - 239 39 - - 2522 42 142 242 342 142 42 242 42 - - 2523 45 145 245 345 - - 245 45 345 45 2524 48 148 248 348 148 48 248 48 - - 2525 51 151 251 351 - - 251 51 - - 2526 54 154 254 354 154 54 254 54 - - 2527 57 157 257 357 - - 257 57 - - 2528 60 160 260 360 160 60 260 60 360 60 2529 63 163 263 363 - - 263 63 - - 2530 66 166 266 366 166 66 266 66 - - 2531 69 169 269 369 - - 269 69 - - 2532 72 172 272 372 172 72 272 72 - - 2533 75 175 275 375 - - 275 75 375 75 2534 78 178 278 378 178 78 278 78 - - 2535 81 181 281 381 - - 281 81 - - 2536 84 184 284 384 184 84 284 84 - - 2537 87 187 287 387 - - 287 87 - - 2538 90 190 290 390 190 90 290 90 390 90 2539 93 193 293 393 - - 293 93 - - 2540 - - - - - - 200 0 - - 2541} 2542do_execsql_test joinD-59 { 2543 SELECT t1.*, t2.*, t3.*, t4.* 2544 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2545 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 2546 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 2547 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2548} { 2549 15 115 215 315 - - 215 15 315 15 2550 30 130 230 330 130 30 230 30 330 30 2551 45 145 245 345 - - 245 45 345 45 2552 60 160 260 360 160 60 260 60 360 60 2553 75 175 275 375 - - 275 75 375 75 2554 90 190 290 390 190 90 290 90 390 90 2555 - - - - - - - - 300 0 2556 - - - - - - - - 305 5 2557 - - - - - - - - 310 10 2558 - - - - - - - - 320 20 2559 - - - - - - - - 325 25 2560 - - - - - - - - 335 35 2561 - - - - - - - - 340 40 2562 - - - - - - - - 350 50 2563 - - - - - - - - 355 55 2564 - - - - - - - - 365 65 2565 - - - - - - - - 370 70 2566 - - - - - - - - 380 80 2567 - - - - - - - - 385 85 2568 - - - - - - - - 395 95 2569} 2570do_execsql_test joinD-60 { 2571 SELECT t1.*, t2.*, t3.*, t4.* 2572 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2573 RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0 2574 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 2575 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2576} { 2577 3 103 203 303 - - 203 3 - - 2578 6 106 206 306 106 6 206 6 - - 2579 9 109 209 309 - - 209 9 - - 2580 12 112 212 312 112 12 212 12 - - 2581 15 115 215 315 - - 215 15 315 15 2582 18 118 218 318 118 18 218 18 - - 2583 21 121 221 321 - - 221 21 - - 2584 24 124 224 324 124 24 224 24 - - 2585 27 127 227 327 - - 227 27 - - 2586 30 130 230 330 130 30 230 30 330 30 2587 33 133 233 333 - - 233 33 - - 2588 36 136 236 336 136 36 236 36 - - 2589 39 139 239 339 - - 239 39 - - 2590 42 142 242 342 142 42 242 42 - - 2591 45 145 245 345 - - 245 45 345 45 2592 48 148 248 348 148 48 248 48 - - 2593 51 151 251 351 - - 251 51 - - 2594 54 154 254 354 154 54 254 54 - - 2595 57 157 257 357 - - 257 57 - - 2596 60 160 260 360 160 60 260 60 360 60 2597 63 163 263 363 - - 263 63 - - 2598 66 166 266 366 166 66 266 66 - - 2599 69 169 269 369 - - 269 69 - - 2600 72 172 272 372 172 72 272 72 - - 2601 75 175 275 375 - - 275 75 375 75 2602 78 178 278 378 178 78 278 78 - - 2603 81 181 281 381 - - 281 81 - - 2604 84 184 284 384 184 84 284 84 - - 2605 87 187 287 387 - - 287 87 - - 2606 90 190 290 390 190 90 290 90 390 90 2607 93 193 293 393 - - 293 93 - - 2608 - - - - - - 200 0 - - 2609 - - - - - - - - 300 0 2610 - - - - - - - - 305 5 2611 - - - - - - - - 310 10 2612 - - - - - - - - 320 20 2613 - - - - - - - - 325 25 2614 - - - - - - - - 335 35 2615 - - - - - - - - 340 40 2616 - - - - - - - - 350 50 2617 - - - - - - - - 355 55 2618 - - - - - - - - 365 65 2619 - - - - - - - - 370 70 2620 - - - - - - - - 380 80 2621 - - - - - - - - 385 85 2622 - - - - - - - - 395 95 2623} 2624do_execsql_test joinD-61 { 2625 SELECT t1.*, t2.*, t3.*, t4.* 2626 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2627 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 2628 INNER JOIN t4 ON t1.d=t4.d AND t4.z>0 2629 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2630} { 2631 5 105 205 305 - - - - 305 5 2632 10 110 210 310 110 10 - - 310 10 2633 15 115 215 315 - - 215 15 315 15 2634 20 120 220 320 120 20 - - 320 20 2635 25 125 225 325 - - - - 325 25 2636 30 130 230 330 130 30 230 30 330 30 2637 35 135 235 335 - - - - 335 35 2638 40 140 240 340 140 40 - - 340 40 2639 45 145 245 345 - - 245 45 345 45 2640 50 150 250 350 150 50 - - 350 50 2641 55 155 255 355 - - - - 355 55 2642 60 160 260 360 160 60 260 60 360 60 2643 65 165 265 365 - - - - 365 65 2644 70 170 270 370 170 70 - - 370 70 2645 75 175 275 375 - - 275 75 375 75 2646 80 180 280 380 180 80 - - 380 80 2647 85 185 285 385 - - - - 385 85 2648 90 190 290 390 190 90 290 90 390 90 2649 95 195 295 395 - - - - 395 95 2650} 2651do_execsql_test joinD-62 { 2652 SELECT t1.*, t2.*, t3.*, t4.* 2653 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2654 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 2655 LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0 2656 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2657} { 2658 0 100 200 300 - - - - - - 2659 1 101 201 301 - - - - - - 2660 2 102 202 302 102 2 - - - - 2661 3 103 203 303 - - 203 3 - - 2662 4 104 204 304 104 4 - - - - 2663 5 105 205 305 - - - - 305 5 2664 6 106 206 306 106 6 206 6 - - 2665 7 107 207 307 - - - - - - 2666 8 108 208 308 108 8 - - - - 2667 9 109 209 309 - - 209 9 - - 2668 10 110 210 310 110 10 - - 310 10 2669 11 111 211 311 - - - - - - 2670 12 112 212 312 112 12 212 12 - - 2671 13 113 213 313 - - - - - - 2672 14 114 214 314 114 14 - - - - 2673 15 115 215 315 - - 215 15 315 15 2674 16 116 216 316 116 16 - - - - 2675 17 117 217 317 - - - - - - 2676 18 118 218 318 118 18 218 18 - - 2677 19 119 219 319 - - - - - - 2678 20 120 220 320 120 20 - - 320 20 2679 21 121 221 321 - - 221 21 - - 2680 22 122 222 322 122 22 - - - - 2681 23 123 223 323 - - - - - - 2682 24 124 224 324 124 24 224 24 - - 2683 25 125 225 325 - - - - 325 25 2684 26 126 226 326 126 26 - - - - 2685 27 127 227 327 - - 227 27 - - 2686 28 128 228 328 128 28 - - - - 2687 29 129 229 329 - - - - - - 2688 30 130 230 330 130 30 230 30 330 30 2689 31 131 231 331 - - - - - - 2690 32 132 232 332 132 32 - - - - 2691 33 133 233 333 - - 233 33 - - 2692 34 134 234 334 134 34 - - - - 2693 35 135 235 335 - - - - 335 35 2694 36 136 236 336 136 36 236 36 - - 2695 37 137 237 337 - - - - - - 2696 38 138 238 338 138 38 - - - - 2697 39 139 239 339 - - 239 39 - - 2698 40 140 240 340 140 40 - - 340 40 2699 41 141 241 341 - - - - - - 2700 42 142 242 342 142 42 242 42 - - 2701 43 143 243 343 - - - - - - 2702 44 144 244 344 144 44 - - - - 2703 45 145 245 345 - - 245 45 345 45 2704 46 146 246 346 146 46 - - - - 2705 47 147 247 347 - - - - - - 2706 48 148 248 348 148 48 248 48 - - 2707 49 149 249 349 - - - - - - 2708 50 150 250 350 150 50 - - 350 50 2709 51 151 251 351 - - 251 51 - - 2710 52 152 252 352 152 52 - - - - 2711 53 153 253 353 - - - - - - 2712 54 154 254 354 154 54 254 54 - - 2713 55 155 255 355 - - - - 355 55 2714 56 156 256 356 156 56 - - - - 2715 57 157 257 357 - - 257 57 - - 2716 58 158 258 358 158 58 - - - - 2717 59 159 259 359 - - - - - - 2718 60 160 260 360 160 60 260 60 360 60 2719 61 161 261 361 - - - - - - 2720 62 162 262 362 162 62 - - - - 2721 63 163 263 363 - - 263 63 - - 2722 64 164 264 364 164 64 - - - - 2723 65 165 265 365 - - - - 365 65 2724 66 166 266 366 166 66 266 66 - - 2725 67 167 267 367 - - - - - - 2726 68 168 268 368 168 68 - - - - 2727 69 169 269 369 - - 269 69 - - 2728 70 170 270 370 170 70 - - 370 70 2729 71 171 271 371 - - - - - - 2730 72 172 272 372 172 72 272 72 - - 2731 73 173 273 373 - - - - - - 2732 74 174 274 374 174 74 - - - - 2733 75 175 275 375 - - 275 75 375 75 2734 76 176 276 376 176 76 - - - - 2735 77 177 277 377 - - - - - - 2736 78 178 278 378 178 78 278 78 - - 2737 79 179 279 379 - - - - - - 2738 80 180 280 380 180 80 - - 380 80 2739 81 181 281 381 - - 281 81 - - 2740 82 182 282 382 182 82 - - - - 2741 83 183 283 383 - - - - - - 2742 84 184 284 384 184 84 284 84 - - 2743 85 185 285 385 - - - - 385 85 2744 86 186 286 386 186 86 - - - - 2745 87 187 287 387 - - 287 87 - - 2746 88 188 288 388 188 88 - - - - 2747 89 189 289 389 - - - - - - 2748 90 190 290 390 190 90 290 90 390 90 2749 91 191 291 391 - - - - - - 2750 92 192 292 392 192 92 - - - - 2751 93 193 293 393 - - 293 93 - - 2752 94 194 294 394 194 94 - - - - 2753 95 195 295 395 - - - - 395 95 2754 96 - 296 396 - - - - - - 2755 97 197 - 397 - - - - - - 2756 98 198 298 - - - - - - - 2757 99 - - - - - - - - - 2758 - - - - 100 0 - - - - 2759 - - - - - - 200 0 - - 2760} 2761do_execsql_test joinD-63 { 2762 SELECT t1.*, t2.*, t3.*, t4.* 2763 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2764 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 2765 RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0 2766 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2767} { 2768 5 105 205 305 - - - - 305 5 2769 10 110 210 310 110 10 - - 310 10 2770 15 115 215 315 - - 215 15 315 15 2771 20 120 220 320 120 20 - - 320 20 2772 25 125 225 325 - - - - 325 25 2773 30 130 230 330 130 30 230 30 330 30 2774 35 135 235 335 - - - - 335 35 2775 40 140 240 340 140 40 - - 340 40 2776 45 145 245 345 - - 245 45 345 45 2777 50 150 250 350 150 50 - - 350 50 2778 55 155 255 355 - - - - 355 55 2779 60 160 260 360 160 60 260 60 360 60 2780 65 165 265 365 - - - - 365 65 2781 70 170 270 370 170 70 - - 370 70 2782 75 175 275 375 - - 275 75 375 75 2783 80 180 280 380 180 80 - - 380 80 2784 85 185 285 385 - - - - 385 85 2785 90 190 290 390 190 90 290 90 390 90 2786 95 195 295 395 - - - - 395 95 2787 - - - - - - - - 300 0 2788} 2789do_execsql_test joinD-64 { 2790 SELECT t1.*, t2.*, t3.*, t4.* 2791 FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0 2792 FULL JOIN t3 ON t1.c=t3.c AND t3.y>0 2793 FULL JOIN t4 ON t1.d=t4.d AND t4.z>0 2794 ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0); 2795} { 2796 0 100 200 300 - - - - - - 2797 1 101 201 301 - - - - - - 2798 2 102 202 302 102 2 - - - - 2799 3 103 203 303 - - 203 3 - - 2800 4 104 204 304 104 4 - - - - 2801 5 105 205 305 - - - - 305 5 2802 6 106 206 306 106 6 206 6 - - 2803 7 107 207 307 - - - - - - 2804 8 108 208 308 108 8 - - - - 2805 9 109 209 309 - - 209 9 - - 2806 10 110 210 310 110 10 - - 310 10 2807 11 111 211 311 - - - - - - 2808 12 112 212 312 112 12 212 12 - - 2809 13 113 213 313 - - - - - - 2810 14 114 214 314 114 14 - - - - 2811 15 115 215 315 - - 215 15 315 15 2812 16 116 216 316 116 16 - - - - 2813 17 117 217 317 - - - - - - 2814 18 118 218 318 118 18 218 18 - - 2815 19 119 219 319 - - - - - - 2816 20 120 220 320 120 20 - - 320 20 2817 21 121 221 321 - - 221 21 - - 2818 22 122 222 322 122 22 - - - - 2819 23 123 223 323 - - - - - - 2820 24 124 224 324 124 24 224 24 - - 2821 25 125 225 325 - - - - 325 25 2822 26 126 226 326 126 26 - - - - 2823 27 127 227 327 - - 227 27 - - 2824 28 128 228 328 128 28 - - - - 2825 29 129 229 329 - - - - - - 2826 30 130 230 330 130 30 230 30 330 30 2827 31 131 231 331 - - - - - - 2828 32 132 232 332 132 32 - - - - 2829 33 133 233 333 - - 233 33 - - 2830 34 134 234 334 134 34 - - - - 2831 35 135 235 335 - - - - 335 35 2832 36 136 236 336 136 36 236 36 - - 2833 37 137 237 337 - - - - - - 2834 38 138 238 338 138 38 - - - - 2835 39 139 239 339 - - 239 39 - - 2836 40 140 240 340 140 40 - - 340 40 2837 41 141 241 341 - - - - - - 2838 42 142 242 342 142 42 242 42 - - 2839 43 143 243 343 - - - - - - 2840 44 144 244 344 144 44 - - - - 2841 45 145 245 345 - - 245 45 345 45 2842 46 146 246 346 146 46 - - - - 2843 47 147 247 347 - - - - - - 2844 48 148 248 348 148 48 248 48 - - 2845 49 149 249 349 - - - - - - 2846 50 150 250 350 150 50 - - 350 50 2847 51 151 251 351 - - 251 51 - - 2848 52 152 252 352 152 52 - - - - 2849 53 153 253 353 - - - - - - 2850 54 154 254 354 154 54 254 54 - - 2851 55 155 255 355 - - - - 355 55 2852 56 156 256 356 156 56 - - - - 2853 57 157 257 357 - - 257 57 - - 2854 58 158 258 358 158 58 - - - - 2855 59 159 259 359 - - - - - - 2856 60 160 260 360 160 60 260 60 360 60 2857 61 161 261 361 - - - - - - 2858 62 162 262 362 162 62 - - - - 2859 63 163 263 363 - - 263 63 - - 2860 64 164 264 364 164 64 - - - - 2861 65 165 265 365 - - - - 365 65 2862 66 166 266 366 166 66 266 66 - - 2863 67 167 267 367 - - - - - - 2864 68 168 268 368 168 68 - - - - 2865 69 169 269 369 - - 269 69 - - 2866 70 170 270 370 170 70 - - 370 70 2867 71 171 271 371 - - - - - - 2868 72 172 272 372 172 72 272 72 - - 2869 73 173 273 373 - - - - - - 2870 74 174 274 374 174 74 - - - - 2871 75 175 275 375 - - 275 75 375 75 2872 76 176 276 376 176 76 - - - - 2873 77 177 277 377 - - - - - - 2874 78 178 278 378 178 78 278 78 - - 2875 79 179 279 379 - - - - - - 2876 80 180 280 380 180 80 - - 380 80 2877 81 181 281 381 - - 281 81 - - 2878 82 182 282 382 182 82 - - - - 2879 83 183 283 383 - - - - - - 2880 84 184 284 384 184 84 284 84 - - 2881 85 185 285 385 - - - - 385 85 2882 86 186 286 386 186 86 - - - - 2883 87 187 287 387 - - 287 87 - - 2884 88 188 288 388 188 88 - - - - 2885 89 189 289 389 - - - - - - 2886 90 190 290 390 190 90 290 90 390 90 2887 91 191 291 391 - - - - - - 2888 92 192 292 392 192 92 - - - - 2889 93 193 293 393 - - 293 93 - - 2890 94 194 294 394 194 94 - - - - 2891 95 195 295 395 - - - - 395 95 2892 96 - 296 396 - - - - - - 2893 97 197 - 397 - - - - - - 2894 98 198 298 - - - - - - - 2895 99 - - - - - - - - - 2896 - - - - 100 0 - - - - 2897 - - - - - - 200 0 - - 2898 - - - - - - - - 300 0 2899} 2900finish_test 2901############################################################################# 2902# This is the TCL script used to generate the psql script that generated 2903# the data above. 2904# 2905# puts " 2906# \\pset border off 2907# \\pset tuples_only on 2908# \\pset null - 2909# 2910# DROP TABLE IF EXISTS t1; 2911# DROP TABLE IF EXISTS t2; 2912# DROP TABLE IF EXISTS t3; 2913# DROP TABLE IF EXISTS t4; 2914# CREATE TABLE t1(a INT, b INT, c INT, d INT); 2915# WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95) 2916# INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c; 2917# CREATE TABLE t2(b INT, x INT); 2918# INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0; 2919# CREATE INDEX t2b ON t2(b); 2920# CREATE TABLE t3(c INT, y INT); 2921# INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0; 2922# CREATE INDEX t3c ON t3(c); 2923# CREATE TABLE t4(d INT, z INT); 2924# INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0; 2925# CREATE INDEX t4d ON t4(d); 2926# INSERT INTO t1(a,b,c,d) VALUES 2927# (96,NULL,296,396), 2928# (97,197,NULL,397), 2929# (98,198,298,NULL), 2930# (99,NULL,NULL,NULL); 2931# " 2932# 2933# proc echo {prefix txt} { 2934# regsub -all {\n} $txt \n$prefix txt 2935# puts "$prefix$txt" 2936# } 2937# 2938# set n 0 2939# set k 0 2940# foreach j1 {INNER LEFT RIGHT FULL} { 2941# foreach j2 {INNER LEFT RIGHT FULL} { 2942# foreach j3 {INNER LEFT RIGHT FULL} { 2943# 2944# incr n 2945# incr k 2946# set q1 "" 2947# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n" 2948# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n" 2949# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n" 2950# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n" 2951# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);" 2952# 2953# echo "\\qecho " "do_execsql_test joinB-$n \{" 2954# echo "\\qecho X " $q1 2955# echo "\\qecho " "\} \{" 2956# puts $q1 2957# echo "\\qecho " "\}" 2958# 2959# } 2960# } 2961# } 2962