unified-compute-introspection.td 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. # Test for a subset of the information returned by unified compute
  10. # introspection relations.
  11. #
  12. # Note that we count on the retry behavior of testdrive in this test
  13. # since introspection sources may take some time to catch up.
  14. $ set-arg-default default-replica-size=1
  15. # Test dataflow error introspection.
  16. > CREATE CLUSTER test SIZE '${arg.default-replica-size}'
  17. > SET cluster = test
  18. > CREATE TABLE zeros (a int)
  19. > CREATE VIEW v_div_by_zero AS SELECT 1 / a AS x FROM zeros
  20. > CREATE INDEX idx1_div_by_zero ON v_div_by_zero (x)
  21. > CREATE MATERIALIZED VIEW mv_div_by_zero AS SELECT 1 / a AS x FROM zeros
  22. > CREATE INDEX idx2_div_by_zero ON mv_div_by_zero (x)
  23. > SELECT o.name, r.name, c.count
  24. FROM mz_internal.mz_compute_error_counts_raw_unified c
  25. JOIN mz_objects o ON c.object_id = o.id
  26. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  27. WHERE c.count != 0
  28. > INSERT INTO zeros VALUES (0)
  29. > SELECT o.name, r.name, c.count
  30. FROM mz_internal.mz_compute_error_counts_raw_unified c
  31. JOIN mz_objects o ON c.object_id = o.id
  32. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  33. WHERE c.count != 0
  34. idx1_div_by_zero r1 1
  35. idx2_div_by_zero r1 1
  36. mv_div_by_zero r1 1
  37. > INSERT INTO zeros VALUES (0), (0)
  38. > SELECT o.name, r.name, c.count
  39. FROM mz_internal.mz_compute_error_counts_raw_unified c
  40. JOIN mz_objects o ON c.object_id = o.id
  41. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  42. WHERE c.count != 0
  43. idx1_div_by_zero r1 3
  44. idx2_div_by_zero r1 3
  45. mv_div_by_zero r1 3
  46. > DELETE FROM zeros
  47. > SELECT o.name, r.name, c.count
  48. FROM mz_internal.mz_compute_error_counts_raw_unified c
  49. JOIN mz_objects o ON c.object_id = o.id
  50. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  51. WHERE c.count != 0
  52. # Test that errors are inserted for new replicas.
  53. > INSERT INTO zeros VALUES (0), (0)
  54. > SELECT o.name, r.name, c.count
  55. FROM mz_internal.mz_compute_error_counts_raw_unified c
  56. JOIN mz_objects o ON c.object_id = o.id
  57. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  58. WHERE c.count != 0
  59. idx1_div_by_zero r1 2
  60. idx2_div_by_zero r1 2
  61. mv_div_by_zero r1 2
  62. > ALTER CLUSTER test SET (REPLICATION FACTOR 2)
  63. > SELECT o.name, r.name, c.count
  64. FROM mz_internal.mz_compute_error_counts_raw_unified c
  65. JOIN mz_objects o ON c.object_id = o.id
  66. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  67. WHERE c.count != 0
  68. idx1_div_by_zero r1 2
  69. idx1_div_by_zero r2 2
  70. idx2_div_by_zero r1 2
  71. idx2_div_by_zero r2 2
  72. mv_div_by_zero r1 2
  73. mv_div_by_zero r2 2
  74. # Test that error logging is retracted when replicas are dropped.
  75. > ALTER CLUSTER test SET (REPLICATION FACTOR 1)
  76. > SELECT o.name, r.name, c.count
  77. FROM mz_internal.mz_compute_error_counts_raw_unified c
  78. JOIN mz_objects o ON c.object_id = o.id
  79. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  80. WHERE c.count != 0
  81. idx1_div_by_zero r1 2
  82. idx2_div_by_zero r1 2
  83. mv_div_by_zero r1 2
  84. # Test that error logging is retracted when objects are dropped.
  85. > DROP INDEX idx1_div_by_zero
  86. > SELECT o.name, r.name, c.count
  87. FROM mz_internal.mz_compute_error_counts_raw_unified c
  88. JOIN mz_objects o ON c.object_id = o.id
  89. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  90. WHERE c.count != 0
  91. idx2_div_by_zero r1 2
  92. mv_div_by_zero r1 2
  93. > DROP MATERIALIZED VIEW mv_div_by_zero
  94. > SELECT o.name, r.name, c.count
  95. FROM mz_internal.mz_compute_error_counts_raw_unified c
  96. JOIN mz_objects o ON c.object_id = o.id
  97. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  98. WHERE c.count != 0
  99. # Test logging of errors in indexes that advance to the empty frontier.
  100. #
  101. # Note that the same is not expected to work for MVs that advance to the empty
  102. # frontier. There is no reason to keep completed MV dataflows around, so we
  103. # drop them immediately, removing all their associated logging in the process.
  104. > CREATE MATERIALIZED VIEW mv_zero AS SELECT 0 AS x
  105. > CREATE VIEW div_by_zero AS SELECT 1 / x FROM mv_zero
  106. > CREATE INDEX idx_div_by_zero ON div_by_zero ()
  107. > SELECT o.name, r.name, c.count
  108. FROM mz_internal.mz_compute_error_counts_raw_unified c
  109. JOIN mz_objects o ON c.object_id = o.id
  110. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  111. WHERE c.count != 0
  112. idx_div_by_zero r1 1
  113. > DROP MATERIALIZED VIEW mv_zero CASCADE
  114. > DROP TABLE zeros CASCADE
  115. > SELECT o.name, r.name, c.count
  116. FROM mz_internal.mz_compute_error_counts_raw_unified c
  117. JOIN mz_objects o ON c.object_id = o.id
  118. JOIN mz_cluster_replicas r ON c.replica_id = r.id
  119. WHERE c.count != 0
  120. # Clean up.
  121. > DROP CLUSTER test