CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
joinE.test444 linesDownload Raw Back to test
1# 2022-05-132#3# The author disclaims copyright to this source code.  In place of4# 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.  This15# test module was created as follows:16#17#   1.   Run a TCL script (included at the bottom of this file) that18#        generates an input script for "psql" that will run man19#        diverse tests on joins.20#21#   2.   Run the script from step (1) through psql and collect the22#        output.23#24#   3.   Make a few minor global search-and-replace operations to convert25#        the psql output into a form suitable for this test module.26#27#   4.   Add this header, and the script content at the footer.28#29set testdir [file dirname $argv0]30source $testdir/tester.tcl31db nullvalue -32db eval {33  CREATE TABLE t1(a INT);34  INSERT INTO t1 VALUES(1),(NULL);35  CREATE TABLE t2(b INT);36  INSERT INTO t2 VALUES(2),(NULL);37}38do_execsql_test joinE-1 {39  SELECT a, b40  FROM t1 INNER JOIN t2 ON true41  ORDER BY coalesce(a,b,3);42} {43  1 244  1 -45  - 246  - -47}48do_execsql_test joinE-2 {49  SELECT a, b50  FROM t1 INNER JOIN t2 ON true WHERE a IS NULL51  ORDER BY coalesce(a,b,3);52} {53  - 254  - -55}56do_execsql_test joinE-3 {57  SELECT a, b58  FROM t1 INNER JOIN t2 ON a IS NULL59  ORDER BY coalesce(a,b,3);60} {61  - 262  - -63}64do_execsql_test joinE-4 {65  SELECT a, b66  FROM t1 INNER JOIN t2 ON true WHERE b IS NULL67  ORDER BY coalesce(a,b,3);68} {69  1 -70  - -71}72do_execsql_test joinE-5 {73  SELECT a, b74  FROM t1 INNER JOIN t2 ON b IS NULL75  ORDER BY coalesce(a,b,3);76} {77  1 -78  - -79}80do_execsql_test joinE-6 {81  SELECT a, b82  FROM t1 LEFT JOIN t2 ON true83  ORDER BY coalesce(a,b,3);84} {85  1 286  1 -87  - 288  - -89}90do_execsql_test joinE-7 {91  SELECT a, b92  FROM t1 LEFT JOIN t2 ON true WHERE a IS NULL93  ORDER BY coalesce(a,b,3);94} {95  - 296  - -97}98do_execsql_test joinE-8 {99  SELECT a, b100  FROM t1 LEFT JOIN t2 ON a IS NULL101  ORDER BY coalesce(a,b,3);102} {103  1 -104  - 2105  - -106}107do_execsql_test joinE-9 {108  SELECT a, b109  FROM t1 LEFT JOIN t2 ON true WHERE b IS NULL110  ORDER BY coalesce(a,b,3);111} {112  1 -113  - -114}115do_execsql_test joinE-10 {116  SELECT a, b117  FROM t1 LEFT JOIN t2 ON b IS NULL118  ORDER BY coalesce(a,b,3);119} {120  1 -121  - -122}123do_execsql_test joinE-11 {124  SELECT a, b125  FROM t1 RIGHT JOIN t2 ON true126  ORDER BY coalesce(a,b,3);127} {128  1 2129  1 -130  - 2131  - -132}133do_execsql_test joinE-12 {134  SELECT a, b135  FROM t1 RIGHT JOIN t2 ON true WHERE a IS NULL136  ORDER BY coalesce(a,b,3);137} {138  - 2139  - -140}141do_execsql_test joinE-13 {142  SELECT a, b143  FROM t1 RIGHT JOIN t2 ON a IS NULL144  ORDER BY coalesce(a,b,3);145} {146  - 2147  - -148}149do_execsql_test joinE-14 {150  SELECT a, b151  FROM t1 RIGHT JOIN t2 ON true WHERE b IS NULL152  ORDER BY coalesce(a,b,3);153} {154  1 -155  - -156}157do_execsql_test joinE-15 {158  SELECT a, b159  FROM t1 RIGHT JOIN t2 ON b IS NULL160  ORDER BY coalesce(a,b,3);161} {162  1 -163  - 2164  - -165}166do_execsql_test joinE-16 {167  SELECT a, b168  FROM t1 FULL JOIN t2 ON true169  ORDER BY coalesce(a,b,3);170} {171  1 2172  1 -173  - 2174  - -175}176do_execsql_test joinE-17 {177  SELECT a, b178  FROM t1 FULL JOIN t2 ON true WHERE a IS NULL179  ORDER BY coalesce(a,b,3);180} {181  - 2182  - -183}184 185# PG-14 is unable to perform this join.  It says:  FULL JOIN is only186# supported with merge-joinable or hash-joinable join conditions187#   188# do_execsql_test joinE-18 {189#  SELECT a, b190#  FROM t1 FULL JOIN t2 ON a IS NULL191#  ORDER BY coalesce(a,b,3);192# } {193# }194 195do_execsql_test joinE-19 {196  SELECT a, b197  FROM t1 FULL JOIN t2 ON true WHERE b IS NULL198  ORDER BY coalesce(a,b,3);199} {200  1 -201  - -202}203 204# PG-14 is unable to perform this join.  It says:  FULL JOIN is only205# supported with merge-joinable or hash-joinable join conditions206#   207# do_execsql_test joinE-20 {208#   SELECT a, b209#   FROM t1 FULL JOIN t2 ON b IS NULL210#   ORDER BY coalesce(a,b,3);211# } {212# }213 214db eval {215  DELETE FROM t1;216  INSERT INTO t1 VALUES(1);217  DELETE FROM t2;218  INSERT INTO t2 VALUES(NULL);219}220 221do_execsql_test joinE-21 {222  SELECT a, b223  FROM t1 INNER JOIN t2 ON true224  ORDER BY coalesce(a,b,3);225} {226  1 -227}228do_execsql_test joinE-22 {229  SELECT a, b230  FROM t1 INNER JOIN t2 ON true WHERE a IS NULL231  ORDER BY coalesce(a,b,3);232} {233}234do_execsql_test joinE-23 {235  SELECT a, b236  FROM t1 INNER JOIN t2 ON a IS NULL237  ORDER BY coalesce(a,b,3);238} {239}240do_execsql_test joinE-24 {241  SELECT a, b242  FROM t1 INNER JOIN t2 ON true WHERE b IS NULL243  ORDER BY coalesce(a,b,3);244} {245  1 -246}247do_execsql_test joinE-25 {248  SELECT a, b249  FROM t1 INNER JOIN t2 ON b IS NULL250  ORDER BY coalesce(a,b,3);251} {252  1 -253}254do_execsql_test joinE-26 {255  SELECT a, b256  FROM t1 LEFT JOIN t2 ON true257  ORDER BY coalesce(a,b,3);258} {259  1 -260}261do_execsql_test joinE-27 {262  SELECT a, b263  FROM t1 LEFT JOIN t2 ON true WHERE a IS NULL264  ORDER BY coalesce(a,b,3);265} {266}267do_execsql_test joinE-28 {268  SELECT a, b269  FROM t1 LEFT JOIN t2 ON a IS NULL270  ORDER BY coalesce(a,b,3);271} {272  1 -273}274do_execsql_test joinE-29 {275  SELECT a, b276  FROM t1 LEFT JOIN t2 ON true WHERE b IS NULL277  ORDER BY coalesce(a,b,3);278} {279  1 -280}281do_execsql_test joinE-30 {282  SELECT a, b283  FROM t1 LEFT JOIN t2 ON b IS NULL284  ORDER BY coalesce(a,b,3);285} {286  1 -287}288do_execsql_test joinE-31 {289  SELECT a, b290  FROM t1 RIGHT JOIN t2 ON true291  ORDER BY coalesce(a,b,3);292} {293  1 -294}295 296do_execsql_test joinE-32 {297  SELECT a, b298  FROM t1 RIGHT JOIN t2 ON true WHERE a IS NULL299  ORDER BY coalesce(a,b,3);300} {301}302 303do_execsql_test joinE-33 {304  SELECT a, b305  FROM t1 RIGHT JOIN t2 ON a IS NULL306  ORDER BY coalesce(a,b,3);307} {308  - -309}310do_execsql_test joinE-34 {311  SELECT a, b312  FROM t1 RIGHT JOIN t2 ON true WHERE b IS NULL313  ORDER BY coalesce(a,b,3);314} {315  1 -316}317do_execsql_test joinE-35 {318  SELECT a, b319  FROM t1 RIGHT JOIN t2 ON b IS NULL320  ORDER BY coalesce(a,b,3);321} {322  1 -323}324do_execsql_test joinE-36 {325  SELECT a, b326  FROM t1 FULL JOIN t2 ON true327  ORDER BY coalesce(a,b,3);328} {329  1 -330}331do_execsql_test joinE-37 {332  SELECT a, b333  FROM t1 FULL JOIN t2 ON true WHERE a IS NULL334  ORDER BY coalesce(a,b,3);335} {336}337 338# PG-14 is unable339#340# do_execsql_test joinE-38 {341#   SELECT a, b342#   FROM t1 FULL JOIN t2 ON a IS NULL343#   ORDER BY coalesce(a,b,3);344# } {345# }346 347do_execsql_test joinE-39 {348  SELECT a, b349  FROM t1 FULL JOIN t2 ON true WHERE b IS NULL350  ORDER BY coalesce(a,b,3);351} {352  1 -353}354 355# PG-14 is unable356# do_execsql_test joinE-40 {357#   SELECT a, b358#   FROM t1 FULL JOIN t2 ON b IS NULL359#   ORDER BY coalesce(a,b,3);360# } {361# }362 363finish_test364 365##############################################################################366# This is the PG-14 test script generator367#368# puts "369# \\pset border off370# \\pset tuples_only on371# \\pset null -372# 373# DROP TABLE IF EXISTS t1;374# DROP TABLE IF EXISTS t2;375# CREATE TABLE t1(a INT);376# INSERT INTO t1 VALUES(1),(NULL);377# CREATE TABLE t2(b INT);378# INSERT INTO t2 VALUES(2),(NULL);379# "380# 381# proc echo {prefix txt} {382#   regsub -all {\n} $txt \n$prefix txt383#   puts "$prefix$txt"384# }385# 386# set n 0387# set k 0388# foreach j1 {INNER LEFT RIGHT FULL} {389#   foreach on1 {390#      true391#      {true WHERE a IS NULL}392#      {a IS NULL}393#      {true WHERE b IS NULL}394#      {b IS NULL}395#   } {396# 397# incr n398# incr k399# set q1 ""400# append q1 "SELECT a, b\n"401# append q1 "  FROM t1 $j1 JOIN t2 ON $on1\n"402# append q1 " ORDER BY coalesce(a,b,3);"403# 404# echo "\\qecho " "do_execsql_test joinE-$n \{"405# echo "\\qecho X  " $q1406# echo "\\qecho " "\} \{"407# puts $q1408# echo "\\qecho " "\}"409# 410#   }411# }412# 413# puts "414# DELETE FROM t1;415# INSERT INTO t1 VALUES(1);416# DELETE FROM t2;417# INSERT INTO t2 VALUES(NULL);418# "419# 420# foreach j1 {INNER LEFT RIGHT FULL} {421#   foreach on1 {422#      true423#      {true WHERE a IS NULL}424#      {a IS NULL}425#      {true WHERE b IS NULL}426#      {b IS NULL}427#   } {428# 429# incr n430# incr k431# set q1 ""432# append q1 "SELECT a, b\n"433# append q1 "  FROM t1 $j1 JOIN t2 ON $on1\n"434# append q1 " ORDER BY coalesce(a,b,3);"435# 436# echo "\\qecho " "do_execsql_test joinE-$n \{"437# echo "\\qecho X  " $q1438# echo "\\qecho " "\} \{"439# puts $q1440# echo "\\qecho " "\}"441# 442#   }443# }444