broken_statements.slt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. # Tests for panics in the optimizer pipeline. Unfortunately we don't have a good
  10. # way to inject a panic after the global optimization stage, which is why we
  11. # only test that:
  12. #
  13. # 1. The RAW returns a result.
  14. # 2. The DECORRELATED returns a result.
  15. # 3. The OPTIMIZED plan an error.
  16. # 4. The PHYSICAL PLAN returns an error.
  17. # 5. The OPTIMIZER TRACE returns a partial.
  18. #
  19. # Further, we do this for each statement type supported as an explainee.
  20. # Enable feature flags required for this test
  21. simple conn=mz_system,user=mz_system
  22. ALTER SYSTEM SET unsafe_enable_unsafe_functions = true
  23. ----
  24. COMPLETE 0
  25. mode cockroach
  26. # EXPLAIN ... BROKEN <select>
  27. # ---------------------------
  28. # EXPLAIN RAW PLAN
  29. statement ok
  30. EXPLAIN RAW PLAN FOR BROKEN
  31. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  32. # EXPLAIN DECORRELATED PLAN
  33. statement ok
  34. EXPLAIN DECORRELATED PLAN FOR BROKEN
  35. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  36. # EXPLAIN OPTIMIZED PLAN
  37. statement error internal error: stage `optimize/global` not present
  38. EXPLAIN OPTIMIZED PLAN WITH (humanized expressions) AS VERBOSE TEXT FOR BROKEN
  39. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  40. # EXPLAIN PHYSICAL PLAN
  41. statement error internal error: stage `optimize/finalize_dataflow` not present
  42. EXPLAIN PHYSICAL PLAN AS VERBOSE TEXT FOR BROKEN
  43. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  44. # EXPLAIN OPTIMIZER TRACE
  45. statement ok
  46. EXPLAIN OPTIMIZER TRACE FOR BROKEN
  47. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  48. # EXPLAIN ... BROKEN CREATE MATERIALIZED VIEW
  49. # -------------------------------------------
  50. # EXPLAIN RAW PLAN
  51. statement ok
  52. EXPLAIN RAW PLAN FOR BROKEN
  53. CREATE MATERIALIZED VIEW mv AS
  54. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  55. # EXPLAIN DECORRELATED PLAN
  56. statement ok
  57. EXPLAIN DECORRELATED PLAN FOR BROKEN
  58. CREATE MATERIALIZED VIEW mv AS
  59. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  60. # EXPLAIN OPTIMIZED PLAN
  61. statement error internal error: stage `optimize/global` not present
  62. EXPLAIN OPTIMIZED PLAN WITH (humanized expressions) AS VERBOSE TEXT FOR BROKEN
  63. CREATE MATERIALIZED VIEW mv AS
  64. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  65. # EXPLAIN PHYSICAL PLAN
  66. statement error internal error: stage `optimize/finalize_dataflow` not present
  67. EXPLAIN PHYSICAL PLAN AS VERBOSE TEXT FOR BROKEN
  68. CREATE MATERIALIZED VIEW mv AS
  69. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  70. # EXPLAIN OPTIMIZER TRACE
  71. statement ok
  72. EXPLAIN OPTIMIZER TRACE FOR BROKEN
  73. CREATE MATERIALIZED VIEW mv AS
  74. SELECT mz_unsafe.mz_panic('forced optimizer panic');
  75. # Regression test for database-issues#7289
  76. statement error internal error: stage `optimize/global` not present
  77. EXPLAIN OPTIMIZED PLAN WITH (humanized expressions) AS VERBOSE TEXT FOR BROKEN
  78. CREATE MATERIALIZED VIEW mv AS
  79. SELECT pg_catalog.now();
  80. statement error cannot materialize call to current_timestamp
  81. EXPLAIN PHYSICAL PLAN AS VERBOSE TEXT FOR
  82. CREATE MATERIALIZED VIEW mv AS
  83. SELECT pg_catalog.now();
  84. # EXPLAIN ... BROKEN CREATE INDEX
  85. # -------------------------------
  86. # We cannot test this at the moment because there is no way to create a view
  87. # that will panic if selected without breaking the optimizer pipeline. To do
  88. # that, an `mz_panic` variant guarded by a boolean.