File tree Expand file tree Collapse file tree 6 files changed +158
-2
lines changed Expand file tree Collapse file tree 6 files changed +158
-2
lines changed Original file line number Diff line number Diff line change @@ -32,8 +32,8 @@ DATA = plpgsql.control plpgsql--1.0.sql plpgsql--unpackaged--1.0.sql
3232
3333REGRESS_OPTS = --dbname=$(PL_TESTDB )
3434
35- REGRESS = plpgsql_call plpgsql_control plpgsql_domain plpgsql_record \
36- plpgsql_cache plpgsql_transaction plpgsql_trap \
35+ REGRESS = plpgsql_call plpgsql_control plpgsql_copy plpgsql_domain \
36+ plpgsql_record plpgsql_cache plpgsql_transaction plpgsql_trap \
3737 plpgsql_trigger plpgsql_varprops
3838
3939# where to find gen_keywordlist.pl and subsidiary files
Original file line number Diff line number Diff line change 1+ 1 1.1
2+ 2 2.2
3+ 3 3.3
Original file line number Diff line number Diff line change 1+ /plpgsql_copy.out
Original file line number Diff line number Diff line change 1+ CREATE TABLE copy1 (a int, b float);
2+
3+ -- COPY TO/FROM not authorized from client.
4+ DO LANGUAGE plpgsql $$
5+ BEGIN
6+ COPY copy1 TO stdout;
7+ END;
8+ $$;
9+ DO LANGUAGE plpgsql $$
10+ BEGIN
11+ COPY copy1 FROM stdin;
12+ END;
13+ $$;
14+ DO LANGUAGE plpgsql $$
15+ BEGIN
16+ EXECUTE 'COPY copy1 TO stdout';
17+ END;
18+ $$;
19+ DO LANGUAGE plpgsql $$
20+ BEGIN
21+ EXECUTE 'COPY copy1 FROM stdin';
22+ END;
23+ $$;
24+
25+ -- Valid cases
26+ -- COPY FROM
27+ DO LANGUAGE plpgsql $$
28+ BEGIN
29+ COPY copy1 FROM '@abs_srcdir@/data/copy1.data';
30+ END;
31+ $$;
32+ SELECT * FROM copy1 ORDER BY 1;
33+ TRUNCATE copy1;
34+ DO LANGUAGE plpgsql $$
35+ BEGIN
36+ EXECUTE 'COPY copy1 FROM ''@abs_srcdir@/data/copy1.data''';
37+ END;
38+ $$;
39+ SELECT * FROM copy1 ORDER BY 1;
40+
41+ -- COPY TO
42+ -- Copy the data externally once, then process it back to the table.
43+ DO LANGUAGE plpgsql $$
44+ BEGIN
45+ COPY copy1 TO '@abs_builddir@/results/copy1.data';
46+ END;
47+ $$;
48+ TRUNCATE copy1;
49+ DO LANGUAGE plpgsql $$
50+ BEGIN
51+ COPY copy1 FROM '@abs_builddir@/results/copy1.data';
52+ END;
53+ $$;
54+ DO LANGUAGE plpgsql $$
55+ BEGIN
56+ EXECUTE 'COPY copy1 FROM ''@abs_builddir@/results/copy1.data''';
57+ END;
58+ $$;
59+
60+ SELECT * FROM copy1 ORDER BY 1;
61+
62+ DROP TABLE copy1;
Original file line number Diff line number Diff line change 1+ CREATE TABLE copy1 (a int, b float);
2+ -- COPY TO/FROM not authorized from client.
3+ DO LANGUAGE plpgsql $$
4+ BEGIN
5+ COPY copy1 TO stdout;
6+ END;
7+ $$;
8+ ERROR: cannot COPY to/from client in PL/pgSQL
9+ CONTEXT: PL/pgSQL function inline_code_block line 3 at SQL statement
10+ DO LANGUAGE plpgsql $$
11+ BEGIN
12+ COPY copy1 FROM stdin;
13+ END;
14+ $$;
15+ ERROR: cannot COPY to/from client in PL/pgSQL
16+ CONTEXT: PL/pgSQL function inline_code_block line 3 at SQL statement
17+ DO LANGUAGE plpgsql $$
18+ BEGIN
19+ EXECUTE 'COPY copy1 TO stdout';
20+ END;
21+ $$;
22+ ERROR: cannot COPY to/from client in PL/pgSQL
23+ CONTEXT: PL/pgSQL function inline_code_block line 3 at EXECUTE
24+ DO LANGUAGE plpgsql $$
25+ BEGIN
26+ EXECUTE 'COPY copy1 FROM stdin';
27+ END;
28+ $$;
29+ ERROR: cannot COPY to/from client in PL/pgSQL
30+ CONTEXT: PL/pgSQL function inline_code_block line 3 at EXECUTE
31+ -- Valid cases
32+ -- COPY FROM
33+ DO LANGUAGE plpgsql $$
34+ BEGIN
35+ COPY copy1 FROM '@abs_builddir@/data/copy1.data';
36+ END;
37+ $$;
38+ SELECT * FROM copy1 ORDER BY 1;
39+ a | b
40+ ---+-----
41+ 1 | 1.1
42+ 2 | 2.2
43+ 3 | 3.3
44+ (3 rows)
45+
46+ TRUNCATE copy1;
47+ DO LANGUAGE plpgsql $$
48+ BEGIN
49+ EXECUTE 'COPY copy1 FROM ''@abs_builddir@/data/copy1.data''';
50+ END;
51+ $$;
52+ SELECT * FROM copy1 ORDER BY 1;
53+ a | b
54+ ---+-----
55+ 1 | 1.1
56+ 2 | 2.2
57+ 3 | 3.3
58+ (3 rows)
59+
60+ -- COPY TO
61+ -- Copy the data externally once, then process it back to the table.
62+ DO LANGUAGE plpgsql $$
63+ BEGIN
64+ COPY copy1 TO '@abs_builddir@/results/copy1.data';
65+ END;
66+ $$;
67+ TRUNCATE copy1;
68+ DO LANGUAGE plpgsql $$
69+ BEGIN
70+ COPY copy1 FROM '@abs_builddir@/results/copy1.data';
71+ END;
72+ $$;
73+ DO LANGUAGE plpgsql $$
74+ BEGIN
75+ EXECUTE 'COPY copy1 FROM ''@abs_builddir@/results/copy1.data''';
76+ END;
77+ $$;
78+ SELECT * FROM copy1 ORDER BY 1;
79+ a | b
80+ ---+-----
81+ 1 | 1.1
82+ 1 | 1.1
83+ 2 | 2.2
84+ 2 | 2.2
85+ 3 | 3.3
86+ 3 | 3.3
87+ (6 rows)
88+
89+ DROP TABLE copy1;
Original file line number Diff line number Diff line change 1+ /plpgsql_copy.sql
You can’t perform that action at this time.
0 commit comments