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