select_implicit.sql 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. --
  2. -- SELECT_IMPLICIT
  3. -- Test cases for queries with ordering terms missing from the target list.
  4. -- This used to be called "junkfilter.sql".
  5. -- The parser uses the term "resjunk" to handle these cases.
  6. -- - thomas 1998-07-09
  7. --
  8. -- load test data
  9. CREATE TABLE test_missing_target (a int, b int, c char(8), d char);
  10. INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A');
  11. INSERT INTO test_missing_target VALUES (1, 2, 'ABAB', 'b');
  12. INSERT INTO test_missing_target VALUES (2, 2, 'ABAB', 'c');
  13. INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D');
  14. INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e');
  15. INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F');
  16. INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g');
  17. INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h');
  18. INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I');
  19. INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j');
  20. -- w/ existing GROUP BY target
  21. SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
  22. -- w/o existing GROUP BY target using a relation name in GROUP BY clause
  23. SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
  24. -- w/o existing GROUP BY target and w/o existing same ORDER BY target
  25. SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b;
  26. -- w/ existing GROUP BY target using a relation name in target
  27. SELECT test_missing_target.b, count(*)
  28. FROM test_missing_target GROUP BY b ORDER BY b;
  29. -- w/o existing GROUP BY target
  30. SELECT c FROM test_missing_target ORDER BY a;
  31. -- w/o existing ORDER BY target
  32. SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc;
  33. -- group using reference number
  34. SELECT count(*) FROM test_missing_target ORDER BY 1 desc;
  35. -- order using reference number
  36. SELECT c, count(*) FROM test_missing_target GROUP BY 1 ORDER BY 1;
  37. -- order expression w/ target under ambiguous condition
  38. -- failure NOT expected
  39. SELECT a/2, a/2 FROM test_missing_target
  40. ORDER BY a/2;
  41. -- group expression w/ target under ambiguous condition
  42. -- failure NOT expected
  43. SELECT a/2, a/2 FROM test_missing_target
  44. GROUP BY a/2 ORDER BY a/2;
  45. -- group w/ existing GROUP BY target under ambiguous condition
  46. SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y
  47. WHERE x.a = y.a
  48. GROUP BY x.b ORDER BY x.b;
  49. -- group w/o existing GROUP BY target under ambiguous condition
  50. SELECT count(*) FROM test_missing_target x, test_missing_target y
  51. WHERE x.a = y.a
  52. GROUP BY x.b ORDER BY x.b;
  53. -- Functions and expressions
  54. -- w/ existing GROUP BY target
  55. SELECT a%2, count(b) FROM test_missing_target
  56. GROUP BY test_missing_target.a%2
  57. ORDER BY test_missing_target.a%2;
  58. -- w/o existing GROUP BY target using a relation name in GROUP BY clause
  59. SELECT count(c) FROM test_missing_target
  60. GROUP BY lower(test_missing_target.c)
  61. ORDER BY lower(test_missing_target.c);
  62. -- w/o existing GROUP BY target and w/o existing same ORDER BY target
  63. SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2;
  64. -- w/ existing GROUP BY target using a relation name in target
  65. SELECT lower(test_missing_target.c), count(c)
  66. FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c);
  67. -- w/o existing GROUP BY target
  68. SELECT a FROM test_missing_target ORDER BY upper(d);
  69. -- w/o existing ORDER BY target
  70. SELECT count(b) FROM test_missing_target
  71. GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
  72. -- group w/ existing GROUP BY target under ambiguous condition
  73. SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y
  74. WHERE x.a = y.a
  75. GROUP BY x.b/2 ORDER BY x.b/2;
  76. -- Cleanup
  77. DROP TABLE test_missing_target;