drop_database.slt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  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/drop_database
  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 DATABASE "foo-bar"
  24. query T
  25. SHOW DATABASES
  26. ----
  27. materialize
  28. foo-bar
  29. postgres
  30. system
  31. test
  32. statement ok
  33. CREATE TABLE "foo-bar".t(x INT)
  34. statement error database.*is not empty and RESTRICT was specified
  35. DROP DATABASE "foo-bar" RESTRICT
  36. statement ok
  37. DROP DATABASE "foo-bar" CASCADE
  38. query TTT
  39. SELECT name, database_name, state FROM crdb_internal.tables WHERE name = 't'
  40. ----
  41. t [53] DROP
  42. query T
  43. SHOW DATABASES
  44. ----
  45. materialize
  46. postgres
  47. system
  48. test
  49. query TT
  50. SELECT status, running_status FROM [SHOW JOBS]
  51. ----
  52. running waiting for GC TTL
  53. statement ok
  54. CREATE DATABASE "foo bar"
  55. query T
  56. SHOW DATABASES
  57. ----
  58. materialize
  59. foo bar
  60. postgres
  61. system
  62. test
  63. statement ok
  64. DROP DATABASE "foo bar" CASCADE
  65. query T
  66. SHOW DATABASES
  67. ----
  68. materialize
  69. postgres
  70. system
  71. test
  72. statement ok
  73. CREATE DATABASE d1
  74. statement ok
  75. CREATE DATABASE d2
  76. statement ok
  77. CREATE TABLE d1.t1 (k STRING PRIMARY KEY, v STRING)
  78. statement OK
  79. CREATE TABLE d2.t1 (k STRING PRIMARY KEY, v STRING)
  80. statement ok
  81. CREATE VIEW d1.v1 AS SELECT k,v FROM d1.t1
  82. statement ok
  83. CREATE VIEW d1.v2 AS SELECT k,v FROM d1.v1
  84. statement ok
  85. CREATE VIEW d2.v1 AS SELECT k,v FROM d2.t1
  86. statement ok
  87. CREATE VIEW d2.v2 AS SELECT k,v FROM d1.t1
  88. statement ok
  89. CREATE VIEW d2.v3 AS SELECT k,v FROM d1.v2
  90. statement ok
  91. CREATE VIEW d2.v4 AS SELECT count(*) FROM d1.t1 as x JOIN d2.t1 as y ON x.k = y.k
  92. statement ok
  93. GRANT ALL ON DATABASE d1 TO testuser
  94. statement ok
  95. GRANT ALL ON d1.t1 TO testuser
  96. statement ok
  97. GRANT ALL ON d1.v1 TO testuser
  98. statement ok
  99. GRANT ALL ON d1.v2 TO testuser
  100. statement ok
  101. GRANT ALL ON d2.v2 TO testuser
  102. statement ok
  103. GRANT ALL ON d2.v3 TO testuser
  104. user testuser
  105. statement error user testuser does not have DROP privilege on relation v4
  106. DROP DATABASE d1 CASCADE
  107. user root
  108. query TT
  109. SELECT * FROM d1.v2
  110. ----
  111. query TT
  112. SELECT * FROM d2.v1
  113. ----
  114. query TT
  115. SELECT * FROM d2.v2
  116. ----
  117. query TT
  118. SELECT * FROM d2.v3
  119. ----
  120. query I
  121. SELECT * FROM d2.v4
  122. ----
  123. 0
  124. query T
  125. SHOW DATABASES
  126. ----
  127. d1
  128. d2
  129. materialize
  130. postgres
  131. system
  132. test
  133. statement ok
  134. DROP DATABASE d1 CASCADE
  135. query T
  136. SHOW DATABASES
  137. ----
  138. d2
  139. materialize
  140. postgres
  141. system
  142. test
  143. query error pgcode 42P01 relation "d1.v2" does not exist
  144. SELECT * FROM d1.v2
  145. query error pgcode 42P01 relation "d2.v2" does not exist
  146. SELECT * FROM d2.v2
  147. query error pgcode 42P01 relation "d2.v3" does not exist
  148. SELECT * FROM d2.v3
  149. query error pgcode 42P01 relation "d2.v4" does not exist
  150. SELECT * FROM d2.v4
  151. query TT
  152. SELECT * FROM d2.v1
  153. ----
  154. statement ok
  155. DROP DATABASE d2 CASCADE
  156. query T
  157. SHOW DATABASES
  158. ----
  159. materialize
  160. postgres
  161. system
  162. test
  163. query error pgcode 42P01 relation "d2.v1" does not exist
  164. SELECT * FROM d2.v1
  165. ## drop a database containing tables with foreign key constraints, e.g. materialize#8497
  166. statement ok
  167. CREATE DATABASE constraint_db
  168. statement ok
  169. CREATE TABLE constraint_db.t1 (
  170. p FLOAT PRIMARY KEY,
  171. a INT UNIQUE CHECK (a > 4),
  172. CONSTRAINT c2 CHECK (a < 99)
  173. )
  174. statement ok
  175. CREATE TABLE constraint_db.t2 (
  176. t1_ID INT,
  177. CONSTRAINT fk FOREIGN KEY (t1_ID) REFERENCES constraint_db.t1(a),
  178. INDEX (t1_ID)
  179. )
  180. statement ok
  181. DROP DATABASE constraint_db CASCADE
  182. query T
  183. SHOW DATABASES
  184. ----
  185. materialize
  186. postgres
  187. system
  188. test
  189. query error pgcode 42P01 relation "constraint_db.t1" does not exist
  190. SELECT * FROM constraint_db.t1
  191. # Check that the default option is CASCADE, but that safe_updates blocks it
  192. statement ok
  193. CREATE DATABASE foo; CREATE TABLE foo.bar(x INT);
  194. statement ok
  195. SET sql_safe_updates = TRUE;
  196. statement error DROP DATABASE on current database
  197. DROP DATABASE test
  198. statement error DROP DATABASE on non-empty database without explicit CASCADE
  199. DROP DATABASE foo
  200. statement ok
  201. SET sql_safe_updates = FALSE; DROP DATABASE foo
  202. # Check that the default databases can be dropped and re-created like any other.
  203. statement OK
  204. DROP DATABASE materialize; DROP DATABASE postgres
  205. statement ok
  206. CREATE DATABASE materialize; CREATE DATABASE postgres