truncate.out 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. -- Test basic TRUNCATE functionality.
  2. CREATE TABLE truncate_a (col1 integer primary key);
  3. INSERT INTO truncate_a VALUES (1);
  4. INSERT INTO truncate_a VALUES (2);
  5. SELECT * FROM truncate_a;
  6. col1
  7. ------
  8. 1
  9. 2
  10. (2 rows)
  11. -- Roll truncate back
  12. BEGIN;
  13. ROLLBACK;
  14. SELECT * FROM truncate_a;
  15. col1
  16. ------
  17. 1
  18. 2
  19. (2 rows)
  20. -- Commit the truncate this time
  21. BEGIN;
  22. COMMIT;
  23. CREATE TABLE trunc_c (a serial PRIMARY KEY);
  24. -- Add some data to verify that truncating actually works ...
  25. INSERT INTO trunc_c VALUES (1);
  26. INSERT INTO truncate_a VALUES (1);
  27. -- Add data again to test TRUNCATE ... CASCADE
  28. INSERT INTO trunc_c VALUES (1);
  29. INSERT INTO truncate_a VALUES (1);
  30. -- Test TRUNCATE with inheritance
  31. CREATE TABLE trunc_f (col1 integer primary key);
  32. INSERT INTO trunc_f VALUES (1);
  33. INSERT INTO trunc_f VALUES (2);
  34. BEGIN;
  35. ROLLBACK;
  36. BEGIN;
  37. ROLLBACK;
  38. BEGIN;
  39. ROLLBACK;
  40. BEGIN;
  41. SELECT * FROM trunc_f;
  42. col1
  43. ------
  44. 1
  45. 2
  46. (2 rows)
  47. ROLLBACK;
  48. -- Test ON TRUNCATE triggers
  49. CREATE TABLE trunc_trigger_test (f1 int, f2 text, f3 text);
  50. CREATE TABLE trunc_trigger_log (tgop text, tglevel text, tgwhen text,
  51. tgargv text, tgtable name, rowcount bigint);
  52. -- basic before trigger
  53. INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux');
  54. SELECT count(*) as "Row count in test table" FROM trunc_trigger_test;
  55. Row count in test table
  56. -------------------------
  57. 2
  58. (1 row)
  59. SELECT * FROM trunc_trigger_log;
  60. tgop | tglevel | tgwhen | tgargv | tgtable | rowcount
  61. ------+---------+--------+--------+---------+----------
  62. (0 rows)
  63. -- same test with an after trigger
  64. INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux');
  65. SELECT * FROM trunc_trigger_log;
  66. tgop | tglevel | tgwhen | tgargv | tgtable | rowcount
  67. ------+---------+--------+--------+---------+----------
  68. (0 rows)
  69. DROP TABLE trunc_trigger_test;
  70. DROP TABLE trunc_trigger_log;
  71. CREATE TABLE truncate_a (id serial,
  72. id1 integer default nextval('truncate_a_id1'));
  73. -- check rollback of a RESTART IDENTITY operation
  74. BEGIN;
  75. ROLLBACK;
  76. DROP TABLE truncate_a;
  77. SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped
  78. ERROR: relation "truncate_a_id1" does not exist
  79. LINE 1: SELECT nextval('truncate_a_id1');
  80. ^
  81. CREATE TABLE truncprim (a int PRIMARY KEY);