90 lines
1.7 KiB
Plaintext
90 lines
1.7 KiB
Plaintext
CREATE TABLE copy1 (a int, b float);
|
|
-- COPY TO/FROM not authorized from client.
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
COPY copy1 TO stdout;
|
|
END;
|
|
$$;
|
|
ERROR: cannot COPY to/from client in PL/pgSQL
|
|
CONTEXT: PL/pgSQL function inline_code_block line 3 at SQL statement
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
COPY copy1 FROM stdin;
|
|
END;
|
|
$$;
|
|
ERROR: cannot COPY to/from client in PL/pgSQL
|
|
CONTEXT: PL/pgSQL function inline_code_block line 3 at SQL statement
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
EXECUTE 'COPY copy1 TO stdout';
|
|
END;
|
|
$$;
|
|
ERROR: cannot COPY to/from client in PL/pgSQL
|
|
CONTEXT: PL/pgSQL function inline_code_block line 3 at EXECUTE
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
EXECUTE 'COPY copy1 FROM stdin';
|
|
END;
|
|
$$;
|
|
ERROR: cannot COPY to/from client in PL/pgSQL
|
|
CONTEXT: PL/pgSQL function inline_code_block line 3 at EXECUTE
|
|
-- Valid cases
|
|
-- COPY FROM
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
COPY copy1 FROM '@abs_srcdir@/data/copy1.data';
|
|
END;
|
|
$$;
|
|
SELECT * FROM copy1 ORDER BY 1;
|
|
a | b
|
|
---+-----
|
|
1 | 1.1
|
|
2 | 2.2
|
|
3 | 3.3
|
|
(3 rows)
|
|
|
|
TRUNCATE copy1;
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
EXECUTE 'COPY copy1 FROM ''@abs_srcdir@/data/copy1.data''';
|
|
END;
|
|
$$;
|
|
SELECT * FROM copy1 ORDER BY 1;
|
|
a | b
|
|
---+-----
|
|
1 | 1.1
|
|
2 | 2.2
|
|
3 | 3.3
|
|
(3 rows)
|
|
|
|
-- COPY TO
|
|
-- Copy the data externally once, then process it back to the table.
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
COPY copy1 TO '@abs_builddir@/results/copy1.data';
|
|
END;
|
|
$$;
|
|
TRUNCATE copy1;
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
COPY copy1 FROM '@abs_builddir@/results/copy1.data';
|
|
END;
|
|
$$;
|
|
DO LANGUAGE plpgsql $$
|
|
BEGIN
|
|
EXECUTE 'COPY copy1 FROM ''@abs_builddir@/results/copy1.data''';
|
|
END;
|
|
$$;
|
|
SELECT * FROM copy1 ORDER BY 1;
|
|
a | b
|
|
---+-----
|
|
1 | 1.1
|
|
1 | 1.1
|
|
2 | 2.2
|
|
2 | 2.2
|
|
3 | 3.3
|
|
3 | 3.3
|
|
(6 rows)
|
|
|
|
DROP TABLE copy1;
|