suboperators.slt 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. # Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
  2. # Copyright Materialize, Inc. and contributors. All rights reserved.
  3. #
  4. # Use of this software is governed by the Business Source License
  5. # included in the LICENSE file at the root of this repository.
  6. #
  7. # As of the Change Date specified in that file, in accordance with
  8. # the Business Source License, use of this software will be governed
  9. # by the Apache License, Version 2.0.
  10. #
  11. # This file is derived from the logic test suite in CockroachDB. The
  12. # original file was retrieved on June 10, 2019 from:
  13. #
  14. # https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/suboperators
  15. #
  16. # The original source code is subject to the terms of the Apache
  17. # 2.0 license, a copy of which can be found in the LICENSE file at the
  18. # root of this repository.
  19. mode cockroach
  20. statement ok
  21. CREATE TABLE abc (a INT, b INT, C INT)
  22. statement ok
  23. INSERT INTO abc VALUES (1, 10, 100), (2, 20, 200), (3, 30, 300), (NULL, NULL, NULL)
  24. # ANY/SOME with arrays.
  25. query B
  26. SELECT 1 = ANY(ARRAY[1, 2])
  27. ----
  28. true
  29. query B
  30. SELECT 1 = ANY (((ARRAY[1, 2])))
  31. ----
  32. true
  33. query B
  34. SELECT 1 = SOME(ARRAY[1, 2])
  35. ----
  36. true
  37. query B
  38. SELECT 1 = ANY(ARRAY[3, 4])
  39. ----
  40. false
  41. query B
  42. SELECT 1 = ANY (((ARRAY[3, 4])))
  43. ----
  44. false
  45. query B
  46. SELECT 1 < ANY(ARRAY[0, 5])
  47. ----
  48. true
  49. query B
  50. SELECT 1 < ANY(ARRAY[0, 1])
  51. ----
  52. false
  53. query B
  54. SELECT 1 = ANY(ARRAY[1.0, 1.1])
  55. ----
  56. true
  57. query B
  58. SELECT 1 < ANY(ARRAY[1.0, 1.1])
  59. ----
  60. true
  61. query B
  62. SELECT 1 = ANY(ARRAY[1, NULL])
  63. ----
  64. true
  65. query T
  66. SELECT 1 = ANY(ARRAY[2, NULL])
  67. ----
  68. NULL
  69. query T
  70. SELECT 1 = ANY(ARRAY[NULL, NULL])
  71. ----
  72. NULL
  73. query B
  74. SELECT 1 = ANY(ARRAY[1,2] || 3)
  75. ----
  76. true
  77. query B
  78. SELECT 1 = ANY(ARRAY[2,3] || 1)
  79. ----
  80. true
  81. query B
  82. SELECT 1 = ANY(ARRAY[2,3] || 4)
  83. ----
  84. false
  85. query III
  86. SELECT * FROM abc WHERE a = ANY(ARRAY[1,3]) ORDER BY a
  87. ----
  88. 1 10 100
  89. 3 30 300
  90. query III
  91. SELECT * FROM abc WHERE a = ANY(ARRAY[4, 5])
  92. ----
  93. query III
  94. SELECT * FROM abc WHERE a = ANY(ARRAY[1, NULL])
  95. ----
  96. 1 10 100
  97. query III
  98. SELECT * FROM abc WHERE a = ANY(ARRAY[4, NULL])
  99. ----
  100. query III
  101. SELECT * FROM abc WHERE a = ANY(ARRAY[NULL, NULL])
  102. ----
  103. query error unsupported comparison operator: 1 = ANY ARRAY\['foo', 'bar'\]
  104. SELECT 1 = ANY(ARRAY['foo', 'bar'])
  105. query error unsupported comparison operator: <int> = ANY <string\[\]>
  106. SELECT 1 = ANY(ARRAY['foo'] || 'bar')
  107. # ANY/SOME with subqueries.
  108. query B
  109. SELECT 1 = ANY(SELECT * FROM generate_series(1,3))
  110. ----
  111. true
  112. query B
  113. SELECT 1 = ANY(SELECT * FROM generate_series(2,4))
  114. ----
  115. false
  116. query B
  117. SELECT 1 < ANY(SELECT * FROM generate_series(1,3))
  118. ----
  119. true
  120. query B
  121. SELECT 1 < ANY(SELECT * FROM generate_series(0,1))
  122. ----
  123. false
  124. query B
  125. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY[1.0, 1.1]))
  126. ----
  127. true
  128. query B
  129. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY[1.0, 1.1]))
  130. ----
  131. true
  132. query B
  133. SELECT 1.0 < ANY(SELECT * FROM unnest(ARRAY[1.0, 1.1]))
  134. ----
  135. true
  136. query B
  137. SELECT 1.0 = ANY(SELECT * FROM unnest(ARRAY[1.0001, 2]))
  138. ----
  139. false
  140. query B
  141. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY[1, NULL]))
  142. ----
  143. true
  144. query T
  145. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY[2, NULL]))
  146. ----
  147. NULL
  148. query T
  149. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY[NULL, NULL]))
  150. ----
  151. NULL
  152. query III
  153. SELECT * FROM abc WHERE a = ANY(SELECT a FROM abc WHERE b = 10)
  154. ----
  155. 1 10 100
  156. query III
  157. SELECT * FROM abc WHERE a < ANY(SELECT a FROM abc WHERE b = 30) ORDER BY a
  158. ----
  159. 1 10 100
  160. 2 20 200
  161. query III
  162. SELECT * FROM abc WHERE a > ANY(SELECT a FROM abc WHERE b = 30)
  163. ----
  164. # ANY predicate in disjunction.
  165. query III rowsort
  166. SELECT * FROM abc WHERE a > ANY(SELECT a FROM abc WHERE b = 20) OR b IS NULL
  167. ----
  168. NULL NULL NULL
  169. 3 30 300
  170. # ALL predicate in disjunction.
  171. query III rowsort
  172. SELECT * FROM abc WHERE a >= ALL(SELECT a FROM abc WHERE a IS NOT NULL) OR b=10
  173. ----
  174. 1 10 100
  175. 3 30 300
  176. # ANY predicate in NOT NULL expression.
  177. query III rowsort
  178. SELECT * FROM abc WHERE a > ANY(SELECT a FROM abc WHERE b = 20) IS NULL
  179. ----
  180. NULL NULL NULL
  181. query III
  182. SELECT * FROM abc WHERE a = ANY(SELECT * FROM unnest(ARRAY[1, NULL]))
  183. ----
  184. 1 10 100
  185. query III
  186. SELECT * FROM abc WHERE a = ANY(SELECT * FROM unnest(ARRAY[4, NULL]))
  187. ----
  188. query III
  189. SELECT * FROM abc WHERE a = ANY(SELECT * FROM unnest(ARRAY[NULL, NULL]))
  190. ----
  191. query error unsupported comparison operator: <int> = ANY <tuple\{string\}>
  192. SELECT 1 = ANY(SELECT * FROM unnest(ARRAY['foo', 'bar']))
  193. # ALL with arrays.
  194. query B
  195. SELECT 1 = ALL(ARRAY[1, 1, 1.0])
  196. ----
  197. true
  198. query B
  199. SELECT 1 = ALL(ARRAY[1, 1.001, 1.0])
  200. ----
  201. false
  202. query B
  203. SELECT 5 > ALL(ARRAY[1, 2, 3])
  204. ----
  205. true
  206. query B
  207. SELECT 5 > ALL(ARRAY[6, 7, 8])
  208. ----
  209. false
  210. query B
  211. SELECT 5 > ALL(ARRAY[4, 6, 7])
  212. ----
  213. false
  214. query B
  215. SELECT 1 = ALL(ARRAY[2, NULL])
  216. ----
  217. false
  218. query T
  219. SELECT 1 = ALL(ARRAY[1, NULL])
  220. ----
  221. NULL
  222. query T
  223. SELECT 1 = ALL(ARRAY[NULL, NULL])
  224. ----
  225. NULL
  226. query B
  227. SELECT 5 > ALL(ARRAY[1, 2] || 3)
  228. ----
  229. true
  230. query B
  231. SELECT 5 > ALL(ARRAY[6, 7] || 8)
  232. ----
  233. false
  234. query III
  235. SELECT * FROM abc WHERE a > ALL(ARRAY[0, 1]) ORDER BY a
  236. ----
  237. 2 20 200
  238. 3 30 300
  239. query III
  240. SELECT * FROM abc WHERE a > ALL(ARRAY[1, 4])
  241. ----
  242. query III
  243. SELECT * FROM abc WHERE a > ALL(ARRAY[1, NULL])
  244. ----
  245. query III
  246. SELECT * FROM abc WHERE a > ALL(ARRAY[NULL, NULL])
  247. ----
  248. query error unsupported comparison operator: 1 = ALL ARRAY\['foo', 'bar'\]
  249. SELECT 1 = ALL(ARRAY['foo', 'bar'])
  250. query error unsupported comparison operator: <int> = ALL <string\[\]>
  251. SELECT 1 = ALL(ARRAY['foo'] || 'bar')
  252. # ALL with subqueries.
  253. query B
  254. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY[1,1,1]))
  255. ----
  256. true
  257. query B
  258. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY[1,2,3]))
  259. ----
  260. false
  261. query B
  262. SELECT 1 < ALL(SELECT * FROM generate_series(2,5))
  263. ----
  264. true
  265. query B
  266. SELECT 1 < ALL(SELECT * FROM generate_series(1,3))
  267. ----
  268. false
  269. query B
  270. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY[2, NULL]))
  271. ----
  272. false
  273. query T
  274. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY[1, NULL]))
  275. ----
  276. NULL
  277. query T
  278. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY[NULL, NULL]))
  279. ----
  280. NULL
  281. query III
  282. SELECT * FROM abc WHERE a < ALL(SELECT b FROM abc WHERE b IS NOT NULL) ORDER BY a
  283. ----
  284. 1 10 100
  285. 2 20 200
  286. 3 30 300
  287. query III
  288. SELECT * FROM abc WHERE a < ALL(SELECT a FROM abc WHERE a >= 2)
  289. ----
  290. 1 10 100
  291. query III
  292. SELECT * FROM abc WHERE a < ALL(SELECT a FROM abc)
  293. ----
  294. query III
  295. SELECT * FROM abc WHERE a > ALL(SELECT * FROM unnest(ARRAY[1, NULL]))
  296. ----
  297. query III
  298. SELECT * FROM abc WHERE a > ALL(SELECT * FROM unnest(ARRAY[NULL, NULL]))
  299. ----
  300. query error unsupported comparison operator: <int> = ALL <tuple\{string\}>
  301. SELECT 1 = ALL(SELECT * FROM unnest(ARRAY['foo', 'bar']))
  302. # ANY/ALL with tuples.
  303. query B
  304. SELECT 1 = ANY (1, 2, 3)
  305. ----
  306. true
  307. query error unsupported comparison operator: <int> = <string>
  308. SELECT 1 = ANY (1, 2, 3.3, 'foo')
  309. query B
  310. SELECT 1 = ANY (((1, 2, 3)))
  311. ----
  312. true
  313. query B
  314. SELECT 1 = ANY (2, 3, 4)
  315. ----
  316. false
  317. query B
  318. SELECT 1 = ANY (((2, 3, 4)))
  319. ----
  320. false
  321. query B
  322. SELECT 1 = ANY (1, 1.1)
  323. ----
  324. true
  325. query B
  326. SELECT 1::decimal = ANY (1, 1.1)
  327. ----
  328. true
  329. query B
  330. SELECT 1 = ANY (1.0, 1.1)
  331. ----
  332. true
  333. query B
  334. SELECT 1 = ANY (((1.0, 1.1)))
  335. ----
  336. true
  337. query B
  338. SELECT 1::decimal = ANY (1.0, 1.1)
  339. ----
  340. true
  341. query B
  342. SELECT 1::decimal = ANY (((1.0, 1.1)))
  343. ----
  344. true
  345. query error unsupported comparison operator: <int> = <string>
  346. SELECT 1 = ANY (1, 'hello', 3)
  347. query B
  348. SELECT 1 = ANY ROW()
  349. ----
  350. false