File tree 6 files changed +158
-2
lines changed
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
32
32
33
33
REGRESS_OPTS = --dbname=$(PL_TESTDB )
34
34
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 \
37
37
plpgsql_trigger plpgsql_varprops
38
38
39
39
# 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