delete.slt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  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/delete
  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. # not supported yet
  20. halt
  21. mode cockroach
  22. statement ok
  23. CREATE TABLE kv (
  24. k INT PRIMARY KEY,
  25. v INT,
  26. UNIQUE INDEX foo (v),
  27. INDEX bar (k, v)
  28. )
  29. statement ok
  30. CREATE TABLE unindexed (
  31. k INT PRIMARY KEY,
  32. v INT
  33. )
  34. statement count 4
  35. INSERT INTO kv VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  36. statement count 4
  37. INSERT INTO unindexed VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  38. query II rowsort
  39. SELECT * FROM kv
  40. ----
  41. 1 2
  42. 3 4
  43. 5 6
  44. 7 8
  45. statement ok
  46. CREATE VIEW kview AS SELECT k,v FROM kv
  47. query II rowsort
  48. SELECT * FROM kview
  49. ----
  50. 1 2
  51. 3 4
  52. 5 6
  53. 7 8
  54. statement error "kview" is not a table
  55. DELETE FROM kview
  56. query II rowsort
  57. SELECT * FROM kview
  58. ----
  59. 1 2
  60. 3 4
  61. 5 6
  62. 7 8
  63. statement count 2
  64. DELETE FROM kv WHERE k=3 OR v=6
  65. query II rowsort
  66. SELECT * FROM kv
  67. ----
  68. 1 2
  69. 7 8
  70. # delete a non-existent value.
  71. statement count 0
  72. DELETE FROM kv WHERE k=5
  73. query II
  74. DELETE FROM kv RETURNING k, v
  75. ----
  76. 1 2
  77. 7 8
  78. query II
  79. SELECT * FROM kv
  80. ----
  81. statement error column "nonexistent" does not exist
  82. DELETE FROM kv WHERE nonexistent = 1
  83. statement count 2
  84. DELETE FROM unindexed WHERE k=3 OR v=6
  85. query II rowsort
  86. SELECT * FROM unindexed
  87. ----
  88. 1 2
  89. 7 8
  90. query II
  91. DELETE FROM unindexed RETURNING k, v
  92. ----
  93. 1 2
  94. 7 8
  95. query II
  96. SELECT * FROM unindexed
  97. ----
  98. statement count 4
  99. INSERT INTO unindexed VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  100. query II colnames
  101. DELETE FROM unindexed WHERE k=3 or v=6 RETURNING *
  102. ----
  103. k v
  104. 3 4
  105. 5 6
  106. query II colnames
  107. DELETE FROM unindexed RETURNING unindexed.*
  108. ----
  109. k v
  110. 1 2
  111. 7 8
  112. statement count 4
  113. INSERT INTO unindexed VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  114. query II colnames,rowsort
  115. SELECT k, v FROM unindexed
  116. ----
  117. k v
  118. 1 2
  119. 3 4
  120. 5 6
  121. 7 8
  122. statement count 4
  123. DELETE FROM unindexed
  124. # Delete of range with limit.
  125. statement count 4
  126. INSERT INTO unindexed VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  127. statement count 1
  128. DELETE FROM unindexed WHERE k >= 4 ORDER BY k LIMIT 1
  129. query II colnames,rowsort
  130. SELECT k, v FROM unindexed
  131. ----
  132. k v
  133. 1 2
  134. 3 4
  135. 7 8
  136. statement count 3
  137. DELETE FROM unindexed
  138. query II colnames
  139. SELECT k, v FROM unindexed
  140. ----
  141. k v
  142. statement ok
  143. CREATE TABLE indexed (id int primary key, value int, other int, index (value))
  144. statement count 0
  145. DELETE FROM indexed WHERE value = 5
  146. # Check DELETE with ORDER BY clause (MySQL extension)
  147. statement ok
  148. INSERT INTO unindexed VALUES (1, 9), (8, 2), (3, 7), (6, 4)
  149. query II
  150. DELETE FROM unindexed WHERE k > 1 AND v < 7 ORDER BY v DESC LIMIT 2 RETURNING v,k
  151. ----
  152. 4 6
  153. 2 8
  154. query II
  155. DELETE FROM unindexed ORDER BY v LIMIT 2 RETURNING k,v
  156. ----
  157. 3 7
  158. 1 9
  159. # Check DELETE with LIMIT clause (MySQL extension)
  160. statement count 4
  161. INSERT INTO unindexed VALUES (1, 2), (3, 4), (5, 6), (7, 8)
  162. query I
  163. SELECT count(*) FROM [DELETE FROM unindexed LIMIT 2 RETURNING v]
  164. ----
  165. 2
  166. query I
  167. SELECT count(*) FROM [DELETE FROM unindexed LIMIT 1 RETURNING v]
  168. ----
  169. 1
  170. query I
  171. SELECT count(*) FROM [DELETE FROM unindexed LIMIT 5 RETURNING v]
  172. ----
  173. 1
  174. subtest regression_29494
  175. statement ok
  176. CREATE TABLE t29494(x INT PRIMARY KEY); INSERT INTO t29494 VALUES (12)
  177. statement ok
  178. BEGIN; ALTER TABLE t29494 ADD COLUMN y INT NOT NULL DEFAULT 123
  179. # Check that the new column is not visible
  180. query T
  181. SELECT create_statement FROM [SHOW CREATE t29494]
  182. ----
  183. CREATE TABLE t29494 (
  184. x INT8 NOT NULL,
  185. CONSTRAINT "primary" PRIMARY KEY (x ASC),
  186. FAMILY "primary" (x)
  187. )
  188. # Check that the new column is not usable in RETURNING
  189. statement error column "y" does not exist
  190. DELETE FROM t29494 RETURNING y
  191. statement ok
  192. ROLLBACK
  193. statement ok
  194. BEGIN; ALTER TABLE t29494 ADD COLUMN y INT NOT NULL DEFAULT 123
  195. query I
  196. DELETE FROM t29494 RETURNING *
  197. ----
  198. 12
  199. statement ok
  200. COMMIT
  201. subtest regression_33361
  202. # Disable automatic stats to avoid flakiness (sometimes causes retry errors).
  203. statement ok
  204. SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false
  205. statement ok
  206. CREATE TABLE t33361(x INT PRIMARY KEY, y INT UNIQUE, z INT); INSERT INTO t33361 VALUES (1, 2, 3)
  207. statement ok
  208. BEGIN; ALTER TABLE t33361 DROP COLUMN y
  209. statement error column "y" does not exist
  210. DELETE FROM t33361 RETURNING y
  211. statement ok
  212. ROLLBACK
  213. statement ok
  214. BEGIN; ALTER TABLE t33361 DROP COLUMN y
  215. query II
  216. DELETE FROM t33361 RETURNING *; COMMIT
  217. ----
  218. 1 3
  219. # Test that delete works with column families (no indexes, so fast path).
  220. statement ok
  221. CREATE TABLE family (
  222. x INT PRIMARY KEY,
  223. y INT,
  224. FAMILY (x),
  225. FAMILY (y)
  226. );
  227. INSERT INTO family VALUES (1, 1), (2, 2), (3, 3)
  228. statement ok
  229. BEGIN; ALTER TABLE family ADD COLUMN z INT CREATE FAMILY
  230. statement ok
  231. DELETE FROM family WHERE x=2
  232. statement ok
  233. COMMIT
  234. query III rowsort
  235. SELECT x, y, z FROM family
  236. ----
  237. 1 1 NULL
  238. 3 3 NULL