select_implicit.err.1 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <sql-statement>
  2. --
  3. -- SELECT_IMPLICIT
  4. -- Test cases for queries with ordering terms missing from the target list.
  5. -- This used to be called "junkfilter.sql".
  6. -- The parser uses the term "resjunk" to handle these cases.
  7. -- - thomas 1998-07-09
  8. --
  9. -- load test data
  10. CREATE TABLE test_missing_target (a int, b int, c char(8), d char);
  11. </sql-statement>
  12. <sql-statement>
  13. INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A');
  14. </sql-statement>
  15. <sql-statement>
  16. INSERT INTO test_missing_target VALUES (1, 2, 'ABAB', 'b');
  17. </sql-statement>
  18. <sql-statement>
  19. INSERT INTO test_missing_target VALUES (2, 2, 'ABAB', 'c');
  20. </sql-statement>
  21. <sql-statement>
  22. INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D');
  23. </sql-statement>
  24. <sql-statement>
  25. INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e');
  26. </sql-statement>
  27. <sql-statement>
  28. INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F');
  29. </sql-statement>
  30. <sql-statement>
  31. INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g');
  32. </sql-statement>
  33. <sql-statement>
  34. INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h');
  35. </sql-statement>
  36. <sql-statement>
  37. INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I');
  38. </sql-statement>
  39. <sql-statement>
  40. INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j');
  41. </sql-statement>
  42. <sql-statement>
  43. -- w/ existing GROUP BY target
  44. SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
  45. </sql-statement>
  46. <sql-statement>
  47. -- w/o existing GROUP BY target using a relation name in GROUP BY clause
  48. SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c;
  49. </sql-statement>
  50. <sql-statement>
  51. -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
  52. -- failure expected
  53. SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
  54. </sql-statement>
  55. -stdin-:<main>: Error: Type annotation
  56. -stdin-:<main>:1:1: Error: At function: AssumeColumnOrder, At function: OrderedMap, At function: Sort
  57. -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
  58. ^
  59. -stdin-:<main>:3:62: Error: At function: Member
  60. SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
  61. ^
  62. -stdin-:<main>:3:62: Error: Member not found: _alias_test_missing_target.b
  63. SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
  64. ^
  65. <sql-statement>
  66. -- w/o existing GROUP BY target and w/o existing same ORDER BY target
  67. SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b;
  68. </sql-statement>
  69. <sql-statement>
  70. -- w/ existing GROUP BY target using a relation name in target
  71. SELECT test_missing_target.b, count(*)
  72. FROM test_missing_target GROUP BY b ORDER BY b;
  73. </sql-statement>
  74. <sql-statement>
  75. -- w/o existing GROUP BY target
  76. SELECT c FROM test_missing_target ORDER BY a;
  77. </sql-statement>
  78. <sql-statement>
  79. -- w/o existing ORDER BY target
  80. SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc;
  81. </sql-statement>
  82. <sql-statement>
  83. -- group using reference number
  84. SELECT count(*) FROM test_missing_target ORDER BY 1 desc;
  85. </sql-statement>
  86. <sql-statement>
  87. -- order using reference number
  88. SELECT c, count(*) FROM test_missing_target GROUP BY 1 ORDER BY 1;
  89. </sql-statement>
  90. <sql-statement>
  91. -- group using reference number out of range
  92. -- failure expected
  93. SELECT c, count(*) FROM test_missing_target GROUP BY 3;
  94. </sql-statement>
  95. -stdin-:<main>: Error: Type annotation
  96. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  97. -- group using reference number out of range
  98. ^
  99. -stdin-:<main>:3:54: Error: GROUP BY: position 3 is not in select list
  100. SELECT c, count(*) FROM test_missing_target GROUP BY 3;
  101. ^
  102. -stdin-:<main>: Fatal: ydb/library/yql/ast/yql_expr.h:1785: no children
  103. <sql-statement>
  104. -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
  105. -- failure expected
  106. SELECT count(*) FROM test_missing_target x, test_missing_target y
  107. WHERE x.a = y.a
  108. GROUP BY b ORDER BY b;
  109. </sql-statement>
  110. -stdin-:<main>: Error: Type annotation
  111. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  112. -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
  113. ^
  114. -stdin-:<main>:5:11: Error: Column reference is ambiguous: b
  115. GROUP BY b ORDER BY b;
  116. ^
  117. <sql-statement>
  118. -- order w/ target under ambiguous condition
  119. -- failure NOT expected
  120. SELECT a, a FROM test_missing_target
  121. ORDER BY a;
  122. </sql-statement>
  123. -stdin-:<main>: Error: Type annotation
  124. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  125. -- order w/ target under ambiguous condition
  126. ^
  127. -stdin-:<main>:1:1: Error: Duplicated member: a
  128. -- order w/ target under ambiguous condition
  129. ^
  130. <sql-statement>
  131. -- order expression w/ target under ambiguous condition
  132. -- failure NOT expected
  133. SELECT a/2, a/2 FROM test_missing_target
  134. ORDER BY a/2;
  135. </sql-statement>
  136. <sql-statement>
  137. -- group expression w/ target under ambiguous condition
  138. -- failure NOT expected
  139. SELECT a/2, a/2 FROM test_missing_target
  140. GROUP BY a/2 ORDER BY a/2;
  141. </sql-statement>
  142. <sql-statement>
  143. -- group w/ existing GROUP BY target under ambiguous condition
  144. SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y
  145. WHERE x.a = y.a
  146. GROUP BY x.b ORDER BY x.b;
  147. </sql-statement>
  148. <sql-statement>
  149. -- group w/o existing GROUP BY target under ambiguous condition
  150. SELECT count(*) FROM test_missing_target x, test_missing_target y
  151. WHERE x.a = y.a
  152. GROUP BY x.b ORDER BY x.b;
  153. </sql-statement>
  154. <sql-statement>
  155. -- group w/o existing GROUP BY target under ambiguous condition
  156. -- into a table
  157. CREATE TABLE test_missing_target2 AS
  158. SELECT count(*)
  159. FROM test_missing_target x, test_missing_target y
  160. WHERE x.a = y.a
  161. GROUP BY x.b ORDER BY x.b;
  162. </sql-statement>
  163. -stdin-:<main>: Error: Parse Sql
  164. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 277
  165. -- group w/o existing GROUP BY target under ambiguous condition
  166. ^
  167. <sql-statement>
  168. SELECT * FROM test_missing_target2;
  169. </sql-statement>
  170. -stdin-:<main>: Fatal: Table metadata loading
  171. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.test_missing_target2
  172. <sql-statement>
  173. -- Functions and expressions
  174. -- w/ existing GROUP BY target
  175. SELECT a%2, count(b) FROM test_missing_target
  176. GROUP BY test_missing_target.a%2
  177. ORDER BY test_missing_target.a%2;
  178. </sql-statement>
  179. <sql-statement>
  180. -- w/o existing GROUP BY target using a relation name in GROUP BY clause
  181. SELECT count(c) FROM test_missing_target
  182. GROUP BY lower(test_missing_target.c)
  183. ORDER BY lower(test_missing_target.c);
  184. </sql-statement>
  185. <sql-statement>
  186. -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
  187. -- failure expected
  188. SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
  189. </sql-statement>
  190. -stdin-:<main>: Error: Type annotation
  191. -stdin-:<main>:1:1: Error: At function: AssumeColumnOrder, At function: OrderedMap, At function: Sort
  192. -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
  193. ^
  194. -stdin-:<main>:3:62: Error: At function: Member
  195. SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
  196. ^
  197. -stdin-:<main>:3:62: Error: Member not found: _alias_test_missing_target.b
  198. SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
  199. ^
  200. <sql-statement>
  201. -- w/o existing GROUP BY target and w/o existing same ORDER BY target
  202. SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2;
  203. </sql-statement>
  204. <sql-statement>
  205. -- w/ existing GROUP BY target using a relation name in target
  206. SELECT lower(test_missing_target.c), count(c)
  207. FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c);
  208. </sql-statement>
  209. <sql-statement>
  210. -- w/o existing GROUP BY target
  211. SELECT a FROM test_missing_target ORDER BY upper(d);
  212. </sql-statement>
  213. <sql-statement>
  214. -- w/o existing ORDER BY target
  215. SELECT count(b) FROM test_missing_target
  216. GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
  217. </sql-statement>
  218. <sql-statement>
  219. -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
  220. -- failure expected
  221. SELECT count(x.a) FROM test_missing_target x, test_missing_target y
  222. WHERE x.a = y.a
  223. GROUP BY b/2 ORDER BY b/2;
  224. </sql-statement>
  225. -stdin-:<main>: Error: Type annotation
  226. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  227. -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
  228. ^
  229. -stdin-:<main>:5:11: Error: Column reference is ambiguous: b
  230. GROUP BY b/2 ORDER BY b/2;
  231. ^
  232. <sql-statement>
  233. -- group w/ existing GROUP BY target under ambiguous condition
  234. SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y
  235. WHERE x.a = y.a
  236. GROUP BY x.b/2 ORDER BY x.b/2;
  237. </sql-statement>
  238. <sql-statement>
  239. -- group w/o existing GROUP BY target under ambiguous condition
  240. -- failure expected due to ambiguous b in count(b)
  241. SELECT count(b) FROM test_missing_target x, test_missing_target y
  242. WHERE x.a = y.a
  243. GROUP BY x.b/2;
  244. </sql-statement>
  245. -stdin-:<main>: Error: Type annotation
  246. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  247. -- group w/o existing GROUP BY target under ambiguous condition
  248. ^
  249. -stdin-:<main>:3:14: Error: Column reference is ambiguous: b
  250. SELECT count(b) FROM test_missing_target x, test_missing_target y
  251. ^
  252. <sql-statement>
  253. -- group w/o existing GROUP BY target under ambiguous condition
  254. -- into a table
  255. CREATE TABLE test_missing_target3 AS
  256. SELECT count(x.b)
  257. FROM test_missing_target x, test_missing_target y
  258. WHERE x.a = y.a
  259. GROUP BY x.b/2 ORDER BY x.b/2;
  260. </sql-statement>
  261. -stdin-:<main>: Error: Parse Sql
  262. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 277
  263. -- group w/o existing GROUP BY target under ambiguous condition
  264. ^
  265. <sql-statement>
  266. SELECT * FROM test_missing_target3;
  267. </sql-statement>
  268. -stdin-:<main>: Fatal: Table metadata loading
  269. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.test_missing_target3
  270. <sql-statement>
  271. -- Cleanup
  272. DROP TABLE test_missing_target;
  273. </sql-statement>
  274. <sql-statement>
  275. DROP TABLE test_missing_target2;
  276. </sql-statement>
  277. <sql-statement>
  278. DROP TABLE test_missing_target3;
  279. </sql-statement>