returning.slt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. # This test may seem simple, but it is surprisingly good at verifying that
  10. # logical timestamp handling for internal inputs is sane.
  11. mode cockroach
  12. statement ok
  13. CREATE TABLE t (a INT, b INT DEFAULT 11)
  14. query I
  15. INSERT INTO t (b, a) VALUES (2, 1) RETURNING a
  16. ----
  17. 1
  18. query I
  19. INSERT INTO t VALUES (2, 1) RETURNING (a)
  20. ----
  21. 2
  22. query III
  23. INSERT INTO t VALUES (3, 4) RETURNING a, *
  24. ----
  25. 3 3 4
  26. query IIITII rowsort,colnames
  27. INSERT INTO t VALUES (5, 6), (9, 10) RETURNING *, a + 10 AS ten, 'c', *
  28. ----
  29. a b ten ?column? a b
  30. 5 6 15 c 5 6
  31. 9 10 19 c 9 10
  32. query I
  33. INSERT INTO t VALUES (7, 8) RETURNING 1
  34. ----
  35. 1
  36. query I
  37. INSERT INTO t (a) VALUES (10) RETURNING b
  38. ----
  39. 11
  40. query I
  41. INSERT INTO t (b) VALUES (10) RETURNING a
  42. ----
  43. NULL
  44. query II
  45. INSERT INTO t DEFAULT VALUES RETURNING a, b
  46. ----
  47. NULL 11
  48. query I
  49. INSERT INTO t (a) VALUES (100) RETURNING t.a
  50. ----
  51. 100
  52. query I
  53. INSERT INTO t SELECT count(*), 0 FROM t AS t RETURNING a
  54. ----
  55. 10
  56. query I
  57. INSERT INTO t SELECT count(*), 0 FROM t RETURNING a
  58. ----
  59. 11
  60. # TODO(mjibson): This works in Postgres.
  61. statement error Expected right parenthesis
  62. INSERT INTO t (SELECT count(*), 0 FROM t) RETURNING a
  63. statement error column "c" does not exist
  64. INSERT INTO t VALUES (7, 8) RETURNING c
  65. statement error column "t2.a" does not exist
  66. INSERT INTO t VALUES (7, 8) RETURNING t2.a
  67. statement error division by zero
  68. INSERT INTO t VALUES (7, 8) RETURNING 1/0
  69. statement error column "z" does not exist
  70. INSERT INTO t VALUES (7, 8) RETURNING z
  71. statement error db error: ERROR: aggregate functions are not allowed in RETURNING clause \(function pg_catalog\.count\)
  72. INSERT INTO t VALUES (7, 8) RETURNING count(*)
  73. statement error db error: ERROR: window functions are not allowed in RETURNING clause \(function pg_catalog\.row_number\)
  74. INSERT INTO t VALUES (7, 8) RETURNING row_number()
  75. statement error RETURNING clause does not allow subqueries
  76. INSERT INTO t VALUES (7, 8) RETURNING (SELECT 1)
  77. statement error RETURNING clause does not allow subqueries
  78. INSERT INTO t VALUES (7, 8) RETURNING a + b + (SELECT 1)
  79. statement error expected expression, but found reserved keyword
  80. INSERT INTO t VALUES (7, 8) RETURNING SELECT 1
  81. statement error Expected end of statement, found AS
  82. INSERT INTO t VALUES (7, 8) RETURNING * AS a
  83. statement error Unexpected EOF
  84. INSERT INTO t VALUES (7, 8) RETURNING
  85. statement error Expected end of statement, found RETURNING
  86. UPDATE t SET a = 0 RETURNING b
  87. statement error Expected end of statement, found RETURNING
  88. DELETE FROM t AS t RETURNING *
  89. statement error cannot evaluate unmaterializable function
  90. INSERT INTO t VALUES (7, 8) RETURNING now()
  91. statement error db error: ERROR: calls to mz_now in write statements are not supported
  92. INSERT INTO t VALUES (7, 8) RETURNING mz_now()
  93. # Verify the above errors didn't have any side effects.
  94. query II
  95. SELECT * FROM t ORDER BY a, b
  96. ----
  97. 1 2
  98. 2 1
  99. 3 4
  100. 5 6
  101. 7 8
  102. 9 10
  103. 10 0
  104. 10 11
  105. 11 0
  106. 100 11
  107. NULL 10
  108. NULL 11