*** a/src/test/regress/expected/delete.out --- b/src/test/regress/expected/delete.out *************** *** 1,11 **** CREATE TABLE delete_test ( id SERIAL PRIMARY KEY, ! a INT ); NOTICE: CREATE TABLE will create implicit sequence "delete_test_id_seq" for serial column "delete_test.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "delete_test_pkey" for table "delete_test" INSERT INTO delete_test (a) VALUES (10); ! INSERT INTO delete_test (a) VALUES (50); INSERT INTO delete_test (a) VALUES (100); -- allow an alias to be specified for DELETE's target table DELETE FROM delete_test AS dt WHERE dt.a > 75; --- 1,12 ---- CREATE TABLE delete_test ( id SERIAL PRIMARY KEY, ! a INT, ! b text ); NOTICE: CREATE TABLE will create implicit sequence "delete_test_id_seq" for serial column "delete_test.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "delete_test_pkey" for table "delete_test" INSERT INTO delete_test (a) VALUES (10); ! INSERT INTO delete_test (a, b) VALUES (50, repeat('x', 10000)); INSERT INTO delete_test (a) VALUES (100); -- allow an alias to be specified for DELETE's target table DELETE FROM delete_test AS dt WHERE dt.a > 75; *************** *** 16,26 **** ERROR: invalid reference to FROM-clause entry for table "delete_test" LINE 1: DELETE FROM delete_test dt WHERE delete_test.a > 25; ^ HINT: Perhaps you meant to reference the table alias "dt". ! SELECT * FROM delete_test; ! id | a ! ----+---- ! 1 | 10 ! 2 | 50 (2 rows) DROP TABLE delete_test; --- 17,35 ---- LINE 1: DELETE FROM delete_test dt WHERE delete_test.a > 25; ^ HINT: Perhaps you meant to reference the table alias "dt". ! SELECT id, a, char_length(b) FROM delete_test; ! id | a | char_length ! ----+----+------------- ! 1 | 10 | ! 2 | 50 | 10000 (2 rows) + -- delete a row with a TOASTed value + DELETE FROM delete_test WHERE a > 25; + SELECT id, a, char_length(b) FROM delete_test; + id | a | char_length + ----+----+------------- + 1 | 10 | + (1 row) + DROP TABLE delete_test; *** a/src/test/regress/expected/insert.out --- b/src/test/regress/expected/insert.out *************** *** 62,65 **** select * from inserttest; --- 62,82 ---- 2 | 3 | values are fun! (7 rows) + -- + -- TOASTed value test + -- + insert into inserttest values(30, 50, repeat('x', 10000)); + select col1, col2, char_length(col3) from inserttest; + col1 | col2 | char_length + ------+------+------------- + | 3 | 7 + | 5 | 7 + | 5 | 4 + | 7 | 7 + 10 | 20 | 2 + -1 | 2 | 7 + 2 | 3 | 15 + 30 | 50 | 10000 + (8 rows) + drop table inserttest; *** a/src/test/regress/expected/update.out --- b/src/test/regress/expected/update.out *************** *** 87,90 **** ERROR: invalid reference to FROM-clause entry for table "update_test" --- 87,99 ---- LINE 1: UPDATE update_test AS t SET b = update_test.b + 10 WHERE t.a... ^ HINT: Perhaps you meant to reference the table alias "t". + -- Make sure that we can update to a TOASTed value. + UPDATE update_test SET c = repeat('x', 10000) WHERE c = 'car'; + SELECT a, b, char_length(c) FROM update_test; + a | b | char_length + -----+----+------------- + 100 | 20 | + 11 | 41 | 10000 + (2 rows) + DROP TABLE update_test; *** a/src/test/regress/sql/delete.sql --- b/src/test/regress/sql/delete.sql *************** *** 1,10 **** CREATE TABLE delete_test ( id SERIAL PRIMARY KEY, ! a INT ); INSERT INTO delete_test (a) VALUES (10); ! INSERT INTO delete_test (a) VALUES (50); INSERT INTO delete_test (a) VALUES (100); -- allow an alias to be specified for DELETE's target table --- 1,11 ---- CREATE TABLE delete_test ( id SERIAL PRIMARY KEY, ! a INT, ! b text ); INSERT INTO delete_test (a) VALUES (10); ! INSERT INTO delete_test (a, b) VALUES (50, repeat('x', 10000)); INSERT INTO delete_test (a) VALUES (100); -- allow an alias to be specified for DELETE's target table *************** *** 14,19 **** DELETE FROM delete_test AS dt WHERE dt.a > 75; -- to be referenced DELETE FROM delete_test dt WHERE delete_test.a > 25; ! SELECT * FROM delete_test; DROP TABLE delete_test; --- 15,25 ---- -- to be referenced DELETE FROM delete_test dt WHERE delete_test.a > 25; ! SELECT id, a, char_length(b) FROM delete_test; ! ! -- delete a row with a TOASTed value ! DELETE FROM delete_test WHERE a > 25; ! ! SELECT id, a, char_length(b) FROM delete_test; DROP TABLE delete_test; *** a/src/test/regress/sql/insert.sql --- b/src/test/regress/sql/insert.sql *************** *** 28,31 **** insert into inserttest values(10, 20, '40'), (-1, 2, DEFAULT), --- 28,38 ---- select * from inserttest; + -- + -- TOASTed value test + -- + insert into inserttest values(30, 50, repeat('x', 10000)); + + select col1, col2, char_length(col3) from inserttest; + drop table inserttest; *** a/src/test/regress/sql/update.sql --- b/src/test/regress/sql/update.sql *************** *** 54,57 **** UPDATE update_test SET (a,b) = (select a,b FROM update_test where c = 'foo') --- 54,61 ---- -- to the original table name UPDATE update_test AS t SET b = update_test.b + 10 WHERE t.a = 10; + -- Make sure that we can update to a TOASTed value. + UPDATE update_test SET c = repeat('x', 10000) WHERE c = 'car'; + SELECT a, b, char_length(c) FROM update_test; + DROP TABLE update_test;