retain_history.slt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. mode cockroach
  10. simple conn=mz_system,user=mz_system
  11. ALTER SYSTEM SET enable_index_options = on;
  12. ----
  13. COMPLETE 0
  14. statement ok
  15. CREATE TABLE tab_a (a INT)
  16. statement ok
  17. CREATE VIEW view_a AS SELECT a FROM tab_a
  18. statement ok
  19. CREATE INDEX idx_a ON view_a (a) WITH (RETAIN HISTORY FOR '1m')
  20. statement ok
  21. CREATE VIEW view_b AS SELECT a AS b FROM view_a
  22. statement ok
  23. CREATE INDEX idx_b ON view_b (b)
  24. statement ok
  25. DROP INDEX idx_b
  26. statement ok
  27. DROP INDEX idx_a
  28. # Default retain history.
  29. statement ok
  30. CREATE INDEX idx_a ON view_a (a)
  31. statement ok
  32. CREATE INDEX idx_b ON view_b (b) WITH (RETAIN HISTORY FOR '1001ms')
  33. statement ok
  34. ALTER INDEX idx_a SET (RETAIN HISTORY FOR '5m')
  35. statement ok
  36. ALTER INDEX idx_b SET (RETAIN HISTORY FOR '3m')
  37. statement ok
  38. CREATE VIEW view_c AS SELECT * FROM view_b
  39. statement ok
  40. CREATE INDEX idx_c ON view_c (b)
  41. statement ok
  42. ALTER INDEX idx_c SET (RETAIN HISTORY FOR '1m')
  43. query TTT
  44. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  45. JOIN mz_objects o ON o.id = h.id
  46. WHERE o.id LIKE 'u%' AND o.name LIKE 'idx_%'
  47. ORDER BY o.name
  48. ----
  49. idx_a FOR 300000
  50. idx_b FOR 180000
  51. idx_c FOR 60000
  52. statement ok
  53. ALTER INDEX idx_a SET (RETAIN HISTORY FOR '7m')
  54. query TTT
  55. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  56. JOIN mz_objects o ON o.id = h.id
  57. WHERE o.id LIKE 'u%' AND o.name LIKE 'idx_%'
  58. ORDER BY o.name
  59. ----
  60. idx_a FOR 420000
  61. idx_b FOR 180000
  62. idx_c FOR 60000
  63. statement ok
  64. ALTER INDEX idx_b SET (RETAIN HISTORY FOR '6m')
  65. statement ok
  66. ALTER INDEX idx_c SET (RETAIN HISTORY FOR '4m')
  67. query TTT
  68. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  69. JOIN mz_objects o ON o.id = h.id
  70. WHERE o.id LIKE 'u%' AND o.name LIKE 'idx_%'
  71. ORDER BY o.name
  72. ----
  73. idx_a FOR 420000
  74. idx_b FOR 360000
  75. idx_c FOR 240000
  76. # Test subsource propagation. Test sources with and without subsources and view dependencies to
  77. # ensure the alter code correctly ignores the views.
  78. statement ok
  79. CREATE SOURCE auction_house FROM LOAD GENERATOR AUCTION
  80. ----
  81. statement ok
  82. CREATE TABLE accounts FROM SOURCE auction_house (REFERENCE accounts);
  83. statement ok
  84. CREATE TABLE auctions FROM SOURCE auction_house (REFERENCE auctions);
  85. statement ok
  86. CREATE TABLE bids FROM SOURCE auction_house (REFERENCE bids);
  87. statement ok
  88. CREATE TABLE organizations FROM SOURCE auction_house (REFERENCE organizations);
  89. statement ok
  90. CREATE TABLE users FROM SOURCE auction_house (REFERENCE users);
  91. statement ok
  92. CREATE VIEW auction_house_view AS SELECT * FROM users
  93. ----
  94. statement ok
  95. CREATE SOURCE counter FROM LOAD GENERATOR COUNTER
  96. ----
  97. statement ok
  98. CREATE VIEW counter_view AS SELECT * FROM counter
  99. ----
  100. query TTT
  101. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  102. JOIN mz_objects o ON o.id = h.id
  103. WHERE o.id LIKE 'u%'
  104. ORDER BY o.name
  105. ----
  106. accounts FOR 1000
  107. auction_house FOR 1000
  108. auction_house_progress FOR 1000
  109. auctions FOR 1000
  110. bids FOR 1000
  111. counter FOR 1000
  112. counter_progress FOR 1000
  113. idx_a FOR 420000
  114. idx_b FOR 360000
  115. idx_c FOR 240000
  116. organizations FOR 1000
  117. tab_a FOR 1000
  118. users FOR 1000
  119. statement ok
  120. ALTER SOURCE auction_house SET (RETAIN HISTORY FOR '1m')
  121. ----
  122. statement ok
  123. ALTER SOURCE counter SET (RETAIN HISTORY FOR '1m')
  124. ----
  125. query TTT
  126. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  127. JOIN mz_objects o ON o.id = h.id
  128. WHERE o.id LIKE 'u%'
  129. ORDER BY o.name
  130. ----
  131. accounts FOR 60000
  132. auction_house FOR 60000
  133. auction_house_progress FOR 1000
  134. auctions FOR 60000
  135. bids FOR 60000
  136. counter FOR 60000
  137. counter_progress FOR 1000
  138. idx_a FOR 420000
  139. idx_b FOR 360000
  140. idx_c FOR 240000
  141. organizations FOR 60000
  142. tab_a FOR 1000
  143. users FOR 60000
  144. statement ok
  145. ALTER SOURCE counter RESET (RETAIN HISTORY)
  146. statement ok
  147. ALTER SOURCE auction_house RESET (RETAIN HISTORY)
  148. statement ok
  149. ALTER INDEX idx_c RESET (RETAIN HISTORY)
  150. statement ok
  151. ALTER INDEX idx_b RESET (RETAIN HISTORY)
  152. query TTT
  153. SELECT o.name, h.strategy, h.value FROM mz_internal.mz_history_retention_strategies h
  154. JOIN mz_objects o ON o.id = h.id
  155. WHERE o.id LIKE 'u%'
  156. ORDER BY o.name
  157. ----
  158. accounts FOR 1000
  159. auction_house FOR 1000
  160. auction_house_progress FOR 1000
  161. auctions FOR 1000
  162. bids FOR 1000
  163. counter FOR 1000
  164. counter_progress FOR 1000
  165. idx_a FOR 420000
  166. idx_b FOR 1000
  167. idx_c FOR 1000
  168. organizations FOR 1000
  169. tab_a FOR 1000
  170. users FOR 1000
  171. # Check retain history lower bounds.
  172. statement error db error: ERROR: RETAIN HISTORY cannot be set lower than 1000ms
  173. ALTER SOURCE counter SET (RETAIN HISTORY FOR '1ms')
  174. statement error db error: ERROR: RETAIN HISTORY cannot be disabled or set to 0
  175. ALTER SOURCE counter SET (RETAIN HISTORY FOR '0')
  176. statement error db error: ERROR: RETAIN HISTORY cannot be set lower than 1000ms
  177. CREATE SOURCE low_rh FROM LOAD GENERATOR COUNTER WITH (RETAIN HISTORY FOR '1ms')
  178. statement error db error: ERROR: RETAIN HISTORY cannot be disabled or set to 0
  179. CREATE SOURCE low_rh FROM LOAD GENERATOR COUNTER WITH (RETAIN HISTORY FOR '0')