managed_cluster.slt 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Basic tests of the `CREATE CLUSTER` and `DROP CLUSTER` DDL statements.
  10. mode cockroach
  11. # Start from a pristine state
  12. reset-server
  13. statement ok
  14. CREATE CLUSTER foo SIZE '1'
  15. statement error db error: ERROR: Expected one of OWNER or RENAME or RESET or SET or SWAP, found dot
  16. ALTER CLUSTER foo.bar SET (SIZE '2')
  17. statement ok
  18. ALTER CLUSTER foo RESET (REPLICATION FACTOR)
  19. statement error db error: ERROR: SIZE has no default value
  20. ALTER CLUSTER foo RESET (SIZE)
  21. statement ok
  22. ALTER CLUSTER foo RESET (AVAILABILITY ZONES)
  23. statement ok
  24. ALTER CLUSTER foo RESET (INTROSPECTION DEBUGGING)
  25. statement ok
  26. ALTER CLUSTER foo RESET (INTROSPECTION INTERVAL)
  27. statement ok
  28. DROP CLUSTER foo
  29. statement error db error: ERROR: Expected left parenthesis, found REPLICATION
  30. ALTER CLUSTER foo SET REPLICATION FACTOR 2
  31. statement error db error: ERROR: Expected left parenthesis, found REPLICATION
  32. ALTER CLUSTER foo RESET REPLICATION FACTOR
  33. statement error db error: ERROR: unknown cluster 'foo'
  34. ALTER CLUSTER foo SET (REPLICATION FACTOR 2)
  35. query TTTTT rowsort
  36. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name != 'quickstart'
  37. ----
  38. s1 mz_system true 1 2
  39. s2 mz_catalog_server true 1 2
  40. s3 mz_probe true 1 2
  41. s4 mz_support true 0 2
  42. s5 mz_analytics true 0 2
  43. query T rowsort
  44. SELECT name FROM (SHOW CLUSTERS)
  45. ----
  46. mz_analytics
  47. mz_system
  48. mz_support
  49. mz_probe
  50. mz_catalog_server
  51. quickstart
  52. # Test invalid option combinations.
  53. statement error db error: ERROR: REPLICAS not supported for managed clusters
  54. CREATE CLUSTER baz REPLICAS (), MANAGED
  55. statement ok
  56. CREATE CLUSTER baz REPLICAS (), MANAGED = false
  57. statement error db error: ERROR: REPLICATION FACTOR not supported for unmanaged clusters
  58. ALTER CLUSTER baz SET (REPLICATION FACTOR 2)
  59. statement error db error: ERROR: SIZE not supported for unmanaged clusters
  60. ALTER CLUSTER baz SET (SIZE '2')
  61. statement ok
  62. ALTER CLUSTER baz RESET (REPLICAS)
  63. statement error db error: ERROR: Cannot change REPLICATION FACTOR of unmanaged clusters
  64. ALTER CLUSTER baz RESET (REPLICATION FACTOR)
  65. statement error db error: ERROR: Cannot change SIZE of unmanaged clusters
  66. ALTER CLUSTER baz RESET (SIZE)
  67. statement error db error: ERROR: Cannot change AVAILABILITY ZONES of unmanaged clusters
  68. ALTER CLUSTER baz RESET (AVAILABILITY ZONES)
  69. statement error db error: ERROR: Cannot change INTROSPECTION DEGUBBING of unmanaged clusters
  70. ALTER CLUSTER baz RESET (INTROSPECTION DEBUGGING)
  71. statement error db error: ERROR: Cannot change INTROSPECTION INTERVAL of unmanaged clusters
  72. ALTER CLUSTER baz RESET (INTROSPECTION INTERVAL)
  73. statement error db error: ERROR: Missing SIZE for empty cluster
  74. ALTER CLUSTER baz SET (MANAGED)
  75. statement ok
  76. ALTER CLUSTER baz SET (MANAGED, SIZE '1')
  77. statement ok
  78. DROP CLUSTER baz
  79. statement error db error: ERROR: SIZE not supported for unmanaged clusters
  80. CREATE CLUSTER baz REPLICAS (), SIZE '1'
  81. statement error db error: ERROR: REPLICATION FACTOR not supported for unmanaged clusters
  82. CREATE CLUSTER baz REPLICAS (), REPLICATION FACTOR 0
  83. statement error db error: ERROR: INTROSPECTION DEBUGGING not supported for unmanaged clusters
  84. CREATE CLUSTER baz REPLICAS (), INTROSPECTION DEBUGGING = true
  85. statement error db error: ERROR: INTROSPECTION INTERVAL not supported for unmanaged clusters
  86. CREATE CLUSTER baz REPLICAS (), INTROSPECTION INTERVAL 1
  87. query TTT
  88. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  89. ----
  90. mz_catalog_server r1 2
  91. mz_probe r1 2
  92. mz_system r1 2
  93. statement error db error: ERROR: unknown cluster replica size abc
  94. CREATE CLUSTER foo SIZE 'abc', REPLICATION FACTOR 3
  95. statement ok
  96. CREATE CLUSTER foo SIZE '1', REPLICATION FACTOR 3
  97. query TTT
  98. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  99. ----
  100. foo r1 1
  101. foo r2 1
  102. foo r3 1
  103. mz_catalog_server r1 2
  104. mz_probe r1 2
  105. mz_system r1 2
  106. query TTTTT rowsort
  107. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  108. ----
  109. u5 foo true 3 1
  110. statement ok
  111. ALTER CLUSTER foo SET (MANAGED = false)
  112. query TTT
  113. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  114. ----
  115. foo r1 1
  116. foo r2 1
  117. foo r3 1
  118. mz_catalog_server r1 2
  119. mz_probe r1 2
  120. mz_system r1 2
  121. query TTTTT rowsort
  122. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  123. ----
  124. u5 foo false NULL NULL
  125. statement error db error: ERROR: REPLICATION FACTOR 4 does not match number of replicas \(3\)
  126. ALTER CLUSTER foo SET (MANAGED, REPLICATION FACTOR 4)
  127. statement error db error: ERROR: Cluster replicas of size 1 do not match expected SIZE 2
  128. ALTER CLUSTER foo SET (MANAGED, SIZE '2')
  129. statement error db error: ERROR: Cluster replicas of size 1 do not match expected SIZE abc
  130. ALTER CLUSTER foo SET (MANAGED, SIZE abc)
  131. statement ok
  132. ALTER CLUSTER foo SET (MANAGED, SIZE '1')
  133. query TTT
  134. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS WHERE cluster != 'quickstart') ORDER BY 1, 2, 3
  135. ----
  136. foo r1 1
  137. foo r2 1
  138. foo r3 1
  139. mz_catalog_server r1 2
  140. mz_probe r1 2
  141. mz_system r1 2
  142. query TTTTT rowsort
  143. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  144. ----
  145. u5 foo true 3 1
  146. query TT
  147. SELECT mz_clusters.name, mz_cluster_replicas.name FROM mz_cluster_replicas JOIN mz_clusters ON mz_cluster_replicas.cluster_id = mz_clusters.id WHERE mz_clusters.name != 'quickstart' ORDER BY 1, 2
  148. ----
  149. foo r1
  150. foo r2
  151. foo r3
  152. mz_catalog_server r1
  153. mz_probe r1
  154. mz_system r1
  155. statement error db error: ERROR: cannot drop replica of managed cluster
  156. DROP CLUSTER REPLICA foo.r1
  157. statement error db error: ERROR: cannot modify managed cluster foo
  158. ALTER CLUSTER REPLICA foo.r2 RENAME TO bar
  159. statement ok
  160. ALTER CLUSTER foo SET (REPLICATION FACTOR 1)
  161. query TTT
  162. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  163. ----
  164. foo r1 1
  165. mz_catalog_server r1 2
  166. mz_probe r1 2
  167. mz_system r1 2
  168. query TTTTT rowsort
  169. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  170. ----
  171. u5 foo true 1 1
  172. statement ok
  173. ALTER CLUSTER foo SET (REPLICATION FACTOR 2)
  174. query TTT
  175. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  176. ----
  177. foo r1 1
  178. foo r2 1
  179. mz_catalog_server r1 2
  180. mz_probe r1 2
  181. mz_system r1 2
  182. query TTTTT rowsort
  183. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  184. ----
  185. u5 foo true 2 1
  186. statement ok
  187. ALTER CLUSTER foo RESET (REPLICATION FACTOR)
  188. query TTT
  189. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  190. ----
  191. foo r1 1
  192. mz_catalog_server r1 2
  193. mz_probe r1 2
  194. mz_system r1 2
  195. query TTTTT rowsort
  196. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  197. ----
  198. u5 foo true 1 1
  199. statement ok
  200. ALTER CLUSTER foo SET (SIZE '2')
  201. query TTT
  202. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  203. ----
  204. foo r1 2
  205. mz_catalog_server r1 2
  206. mz_probe r1 2
  207. mz_system r1 2
  208. query TTTTT rowsort
  209. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  210. ----
  211. u5 foo true 1 2
  212. statement ok
  213. ALTER CLUSTER foo SET (SIZE '1', REPLICATION FACTOR 1)
  214. query TTT
  215. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  216. ----
  217. foo r1 1
  218. mz_catalog_server r1 2
  219. mz_probe r1 2
  220. mz_system r1 2
  221. query TTTTT rowsort
  222. SELECT id, name, managed, replication_factor, size FROM mz_clusters WHERE name LIKE 'foo'
  223. ----
  224. u5 foo true 1 1
  225. statement error db error: ERROR: cannot drop replica of managed cluster
  226. DROP CLUSTER REPLICA foo.r1
  227. statement ok
  228. ALTER CLUSTER foo SET (REPLICATION FACTOR 0)
  229. statement error db error: ERROR: unknown cluster replica size invalid_size
  230. ALTER CLUSTER foo SET (SIZE invalid_size)
  231. statement ok
  232. DROP CLUSTER REPLICA IF EXISTS quickstart.bar
  233. statement ok
  234. DROP CLUSTER REPLICA IF EXISTS bar.foo
  235. statement ok
  236. DROP CLUSTER REPLICA IF EXISTS quickstart.foo
  237. statement error db error: ERROR: CLUSTER foo has no CLUSTER REPLICA named "r1"
  238. DROP CLUSTER REPLICA foo.r1
  239. query TTT
  240. SELECT cluster, replica, size FROM (SHOW CLUSTER REPLICAS) WHERE cluster != 'quickstart' ORDER BY 1, 2, 3
  241. ----
  242. mz_catalog_server r1 2
  243. mz_probe r1 2
  244. mz_system r1 2
  245. query TTTTTTT
  246. SELECT r.name, r.size, s.processes, s.cpu_nano_cores, s.memory_bytes, s.workers, s.credits_per_hour FROM mz_cluster_replicas r JOIN mz_catalog.mz_cluster_replica_sizes s ON r.size = s.size JOIN mz_clusters ON r.cluster_id = mz_clusters.id WHERE mz_clusters.name != 'quickstart' ORDER BY r.name
  247. ----
  248. r1 2 1 18446744073709000000 18446744073709551615 2 1
  249. r1 2 1 18446744073709000000 18446744073709551615 2 1
  250. r1 2 1 18446744073709000000 18446744073709551615 2 1
  251. statement ok
  252. DROP CLUSTER foo CASCADE
  253. statement ok
  254. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1'), r2 (SIZE '2'))
  255. statement error db error: ERROR: Cannot convert unmanaged cluster to managed, non\-unique replica sizes: 1, 2
  256. ALTER CLUSTER foo SET (MANAGED)
  257. statement ok
  258. DROP CLUSTER foo CASCADE
  259. statement ok
  260. CREATE CLUSTER foo REPLICAS (c1 (SIZE '1'), r2 (SIZE '1'))
  261. statement error db error: ERROR: Cannot convert unmanaged cluster to managed, invalid replica names: c1
  262. ALTER CLUSTER foo SET (MANAGED)
  263. statement ok
  264. DROP CLUSTER foo CASCADE
  265. statement ok
  266. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1'), r2 (SIZE '1'))
  267. statement ok
  268. ALTER CLUSTER foo RESET (MANAGED)
  269. statement ok
  270. DROP CLUSTER foo CASCADE
  271. statement ok
  272. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1'), r2 (SIZE '1'))
  273. statement error db error: ERROR: Cluster replicas of size 1 do not match expected SIZE 2
  274. ALTER CLUSTER foo SET (MANAGED, SIZE '2')
  275. statement error db error: ERROR: REPLICATION FACTOR 1 does not match number of replicas \(2\)
  276. ALTER CLUSTER foo SET (MANAGED, REPLICATION FACTOR 1)
  277. statement ok
  278. ALTER CLUSTER foo SET (MANAGED, REPLICATION FACTOR 2)
  279. statement ok
  280. DROP CLUSTER foo CASCADE
  281. statement error db error: ERROR: creating cluster replica would violate max_replicas_per_cluster limit \(desired: 99, limit: 5, current: 0\)
  282. CREATE CLUSTER foo SIZE '1', replication factor 99
  283. statement ok
  284. CREATE CLUSTER foo SIZE '1', replication factor 1
  285. statement error db error: ERROR: cluster 'foo' already exists
  286. CREATE CLUSTER foo SIZE '1', replication factor 1
  287. statement ok
  288. CREATE SOURCE loadgen IN CLUSTER foo FROM LOAD GENERATOR COUNTER
  289. statement ok
  290. ALTER CLUSTER foo SET (REPLICATION FACTOR 2)
  291. statement ok
  292. ALTER CLUSTER foo SET (REPLICATION FACTOR 0)
  293. statement ok
  294. DROP CLUSTER foo CASCADE
  295. statement error db error: ERROR: unknown cluster replica size invalid_size
  296. CREATE CLUSTER foo SIZE invalid_size, REPLICATION FACTOR 0
  297. # Test for database-issues#6046 . Without the fix, this query will hang indefinitely
  298. statement error db error: ERROR: creating cluster replica would violate max_replicas_per_cluster limit \(desired: 9999999, limit: 5, current: 0\)
  299. CREATE CLUSTER foo SIZE '1', replication factor 9999999;
  300. simple conn=mz_system,user=mz_system
  301. ALTER SYSTEM SET enable_disk_cluster_replicas = true;
  302. ----
  303. COMPLETE 0
  304. statement ok
  305. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1'), r2 (SIZE '1', DISK))
  306. statement error db error: ERROR: Cluster replicas with DISK true do not match expected DISK false
  307. ALTER CLUSTER foo SET (MANAGED, DISK=False, SIZE '1')
  308. statement ok
  309. DROP CLUSTER foo
  310. statement ok
  311. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1'))
  312. statement error db error: ERROR: Cluster replicas with DISK true do not match expected DISK false
  313. ALTER CLUSTER foo SET (MANAGED, SIZE '1', DISK=False)
  314. statement ok
  315. DROP CLUSTER foo
  316. statement ok
  317. CREATE CLUSTER foo REPLICAS (r1 (SIZE '1', DISK), r2 (SIZE '1', DISK))
  318. statement ok
  319. ALTER CLUSTER foo SET (MANAGED, SIZE '1', DISK)
  320. statement ok
  321. DROP CLUSTER foo
  322. simple conn=mz_system,user=mz_system
  323. ALTER SYSTEM SET enable_zero_downtime_cluster_reconfiguration = true;
  324. ----
  325. COMPLETE 0
  326. statement ok
  327. CREATE CLUSTER foo (SIZE '1')
  328. statement ok
  329. ALTER CLUSTER foo set (SIZE '2') WITH (WAIT FOR '0s')
  330. statement ok
  331. ALTER CLUSTER foo set (SIZE '4') WITH (WAIT UNTIL READY (TIMEOUT '0s', ON TIMEOUT 'COMMIT') )
  332. statement ok
  333. ALTER CLUSTER foo set (SIZE '4') WITH (WAIT UNTIL READY (TIMEOUT '10ms', ON TIMEOUT 'ROLLBACK') )
  334. # Restore pristine server state
  335. reset-server