mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-28 09:46:44 +08:00
- Added creation_time attribute to timescaledb catalog table "chunk". Also, updated corresponding view timescaledb_information.chunks to include chunk_creation_time attribute. - A newly created chunk is assigned the creation time during chunk creation to handle new partition range for give dimension (Time/ SERIAL/BIGSERIAL/INT/...). - In case of an already existing chunk, the creation time is updated as part of running upgrade script. The current timestamp (now()) at the time of upgrade has been assigned as chunk creation time. - Similarly, downgrade script is updated to drop the attribute creation_time from catalog table "chunk". - All relevant queries/views/test output have been updated accordingly. Co-authored-by: Nikhil Sontakke <nikhil@timescale.com>
297 lines
19 KiB
SQL
297 lines
19 KiB
SQL
-- This file and its contents are licensed under the Timescale License.
|
||
-- Please see the included NOTICE for copyright information and
|
||
-- LICENSE-TIMESCALE for a copy of the license.
|
||
|
||
\c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER;
|
||
|
||
\set DATA_NODE_1 :TEST_DBNAME _1
|
||
\set DATA_NODE_2 :TEST_DBNAME _2
|
||
\set DATA_NODE_3 :TEST_DBNAME _3
|
||
|
||
-- Add data nodes using the TimescaleDB node management API
|
||
SELECT node_name, database, node_created, database_created, extension_created
|
||
FROM (
|
||
SELECT (add_data_node(name, host => 'localhost', DATABASE => name)).*
|
||
FROM (VALUES (:'DATA_NODE_1'), (:'DATA_NODE_2'), (:'DATA_NODE_3')) v(name)
|
||
) a;
|
||
GRANT USAGE ON FOREIGN SERVER :DATA_NODE_1, :DATA_NODE_2, :DATA_NODE_3 TO PUBLIC;
|
||
GRANT CREATE ON SCHEMA public TO :ROLE_1;
|
||
SET timescaledb.hide_data_node_name_in_errors = 'on';
|
||
|
||
-- Start out testing text copy code
|
||
SET timescaledb.enable_connection_binary_data=false;
|
||
|
||
SET ROLE :ROLE_1;
|
||
|
||
-- Use some horrible names to make sure the parsing code works
|
||
CREATE TABLE "+ri(k33_')" (
|
||
"thyme" bigint NOT NULL,
|
||
"))_" double precision NOT NULL,
|
||
"flavor" text DEFAULT 'mint',
|
||
"pH" float DEFAULT 7.0,
|
||
optional text
|
||
);
|
||
|
||
SELECT create_hypertable('"+ri(k33_'')"', 'thyme', partitioning_column=>'pH', number_partitions=>4, chunk_time_interval => 100, replication_factor => 2);
|
||
|
||
-- Use local table as an etalon
|
||
create table copy_local(like "+ri(k33_')");
|
||
|
||
COPY copy_local FROM STDIN;
|
||
1 11 strawberry 2.3 stuff
|
||
\.
|
||
|
||
\copy copy_local("pH", "))_", thyme) fROm stdIN deLIMitER '-';
|
||
.01-40-208
|
||
10.-37-315
|
||
\.
|
||
|
||
cOpy copy_local(thYme, "pH", "))_", "flavor") FrOm
|
||
StDiN wiTH dElImITeR ','
|
||
;
|
||
15,1,403,\N
|
||
203,1.0,3.21321,something like lemon
|
||
333,1.00,2309424231, _''garbled*(#\\)@#$*)
|
||
\.
|
||
|
||
COPY copy_local FROM STDIN (FORCE_NULL (flavor, "))_"), QUOTE '`', FORMAT csv, NULL 'empties', FORCE_NOT_NULL ("pH", "thyme"));
|
||
120321,4.4324424324254352345345,``,0,empties
|
||
4201,3333333333333333333333333333,"",1.0000000000000000000000000000000001,`empties`
|
||
342,4324,"empties",4,\N
|
||
\.
|
||
|
||
select * from copy_local order by 1;
|
||
|
||
-- Run some successful copies
|
||
COPY "+ri(k33_')" FROM STDIN;
|
||
1 11 strawberry 2.3 stuff
|
||
\.
|
||
|
||
\copy public . "+ri(k33_')" ("pH", "))_" , thyme) fROm stdIN deLIMitER '-';
|
||
.01-40-208
|
||
10.-37-315
|
||
\.
|
||
|
||
cOpy public."+ri(k33_')" (thYme, "pH", "))_", "flavor") FrOm
|
||
StDiN wiTH dElImITeR ','
|
||
;
|
||
15,1,403,\N
|
||
203,1.0,3.21321,something like lemon
|
||
333,1.00,2309424231, _''garbled*(#\\)@#$*)
|
||
\.
|
||
|
||
COPY "+ri(k33_')" FROM STDIN (FORCE_NULL (flavor, "))_"), QUOTE '`', FREEZE, FORMAT csv, NULL 'empties', FORCE_NOT_NULL ("pH", "thyme"));
|
||
120321,4.4324424324254352345345,``,0,empties
|
||
4201,3333333333333333333333333333,"",1.0000000000000000000000000000000001,`empties`
|
||
342,4324,"empties",4,\N
|
||
\.
|
||
|
||
select * from copy_local order by 1;
|
||
|
||
-- Run some error cases
|
||
\set ON_ERROR_STOP 0
|
||
|
||
-- Bad input
|
||
COPY "+ri(k33_')" FROM STDIN WITH DELIMITER ',';
|
||
1,white,blue,grey,teal
|
||
\.
|
||
|
||
-- Missing paritioning column
|
||
COPY "+ri(k33_')" (thYme, "))_", "flavor") FROM STDIN;
|
||
1234,\N,resentment
|
||
\.
|
||
|
||
-- Missing required column, these generate a WARNING with a transaction id in them (too flimsy to output)
|
||
SET client_min_messages TO ERROR;
|
||
COPY "+ri(k33_')" (thyme, flavor, "pH") FROM STDIN WITH DELIMITER ',';
|
||
5,blue,2.0
|
||
\.
|
||
COPY "+ri(k33_')" FROM STDIN WITH DELIMITER ',';
|
||
5,\N,blue,1,blah
|
||
\.
|
||
SET client_min_messages TO INFO;
|
||
|
||
-- Invalid data after new chunk creation, data and chunks should be rolled back
|
||
COPY "+ri(k33_')" FROM STDIN WITH DELIMITER ',';
|
||
700,7,neopolitan,7,seven
|
||
800,8,pesto,8,eight
|
||
900,9,salami,9,nine
|
||
1000,white,blue,ten,hi
|
||
\.
|
||
|
||
\set ON_ERROR_STOP 1
|
||
|
||
-- Now do some testing of the binary frontend/backend path.
|
||
SET timescaledb.enable_connection_binary_data=true;
|
||
|
||
COPY "+ri(k33_')" FROM STDIN;
|
||
10 11 strawberry 12.3 stuff
|
||
\.
|
||
|
||
\copy public . "+ri(k33_')" ("pH", "))_" , thyme) fROm stdIN deLIMitER '-';
|
||
.001-40-2080
|
||
100.-37-3150
|
||
\.
|
||
|
||
cOpy public."+ri(k33_')" (thYme, "pH", "))_", "flavor") FrOm
|
||
StDiN wiTH dElImITeR ','
|
||
;
|
||
150,10,403,\N
|
||
2030,10.0,3.21321,something like lemon
|
||
3330,10.00,2309424231, _''garbled*(#\\)@#$*)
|
||
\.
|
||
|
||
COPY "+ri(k33_')" FROM STDIN (FORCE_NULL (flavor, "))_"), QUOTE '`', FREEZE, FORMAT csv, NULL 'empties', FORCE_NOT_NULL ("pH", "thyme"));
|
||
1203210,4.4324424324254352345345,``,0,empties
|
||
42010,3333333333333333333333333333,"",1.00000000000000000000000000000000001,`empties`
|
||
3420,4324,"empties",40,\N
|
||
\.
|
||
|
||
SELECT * FROM "+ri(k33_')" ORDER BY 1;
|
||
SELECT id, hypertable_id, schema_name, table_name, compressed_chunk_id, dropped, status, osm_chunk FROM _timescaledb_catalog.chunk ORDER BY 1;
|
||
SELECT * FROM _timescaledb_catalog.chunk_data_node ORDER BY 1, 3;
|
||
SELECT * FROM _timescaledb_catalog.hypertable_data_node ORDER BY 3;
|
||
select * from show_chunks('"+ri(k33_'')"') ORDER BY 1;
|
||
\c :DATA_NODE_1
|
||
SELECT * FROM "+ri(k33_')" ORDER BY 1;
|
||
select * from show_chunks('"+ri(k33_'')"') ORDER BY 1;
|
||
\c :DATA_NODE_2
|
||
SELECT * FROM "+ri(k33_')" ORDER BY 1;
|
||
select * from show_chunks('"+ri(k33_'')"') ORDER BY 1;
|
||
\c :DATA_NODE_3
|
||
SELECT * FROM "+ri(k33_')" ORDER BY 1;
|
||
select * from show_chunks('"+ri(k33_'')"') ORDER BY 1;
|
||
\c :TEST_DBNAME :ROLE_SUPERUSER;
|
||
SET ROLE :ROLE_1;
|
||
|
||
DROP TABLE "+ri(k33_')" CASCADE;
|
||
|
||
-- Some more test for escaping and quoting
|
||
set timescaledb.enable_connection_binary_data = true;
|
||
set timescaledb.dist_copy_transfer_format = 'text';
|
||
create table escapes(t int, value text);
|
||
select create_distributed_hypertable('escapes', 't', 'value', chunk_time_interval => 100);
|
||
|
||
\copy escapes from stdin
|
||
1 \t\b\f\n\r\t\v\\
|
||
2 \t
|
||
3 a\nb
|
||
4 ddddd
|
||
5 \\
|
||
7 \\N
|
||
9 end
|
||
10 "'"'"
|
||
11 '"'"'
|
||
12 '
|
||
\.
|
||
|
||
\copy (select * from escapes order by escapes) to stdout
|
||
|
||
-- Null values not allowed for partitioning columns
|
||
\set ON_ERROR_STOP off
|
||
|
||
\copy escapes from stdin
|
||
6 \N
|
||
\.
|
||
|
||
\copy escapes from program 'printf "8\n\\.\n"'
|
||
|
||
\copy escapes from program 'printf "8\t\n\\.\n"'
|
||
|
||
\copy (select * from escapes order by escapes) to stdout
|
||
|
||
\set ON_ERROR_STOP on
|
||
|
||
-- Test null values.
|
||
create table null_values(t int, value text);
|
||
select create_distributed_hypertable('null_values', 't', chunk_time_interval => 100);
|
||
\copy null_values from program 'printf "6\t\\N\n8\t\n\\.\n"'
|
||
\copy (select * from null_values order by null_values) to stdout
|
||
|
||
-- CSV
|
||
\copy (select * from escapes order by escapes) to stdout with (format csv);
|
||
\copy (select * from escapes order by escapes) to 'remote-copy-escapes.tsv';
|
||
|
||
\copy (select * from escapes order by escapes) to 'remote-copy-escapes.csv' with (format csv);
|
||
truncate escapes;
|
||
\copy escapes from 'remote-copy-escapes.csv' with (format csv);
|
||
\copy (select * from escapes order by escapes) to stdout;
|
||
-- Check the result with diff
|
||
\copy (select * from escapes order by escapes) to program 'diff -- remote-copy-escapes.tsv -';
|
||
|
||
-- Different delimiter
|
||
\copy (select * from escapes order by escapes) to stdout with (format csv, delimiter '"', quote '''');
|
||
\copy (select * from escapes order by escapes) to 'remote-copy-escapes.csv' with (format csv, delimiter '"', quote '''', null ',');
|
||
truncate escapes;
|
||
\copy escapes from 'remote-copy-escapes.csv' with (format csv, delimiter '"', quote '''', null ',');
|
||
\copy (select * from escapes order by escapes) to stdout;
|
||
-- Check the result with diff
|
||
\copy (select * from escapes order by escapes) to program 'diff -- remote-copy-escapes.tsv -';
|
||
|
||
-- Longer values
|
||
truncate table escapes;
|
||
\copy escapes from stdin
|
||
1 a
|
||
2 aa
|
||
3 aaaa
|
||
4 aaaaaaaa
|
||
5 aaaaaaaaaaaaaaaa
|
||
6 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
8 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
9 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
11 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
12 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
13 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
\.
|
||
|
||
\copy escapes from stdin
|
||
14 \t
|
||
15 \t\t
|
||
16 \t\t\t\t
|
||
17 \t\t\t\t\t\t\t\t
|
||
18 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
19 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
20 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
21 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
22 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
23 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
||
\.
|
||
|
||
select sum(t), sum(length(value)) from escapes;
|
||
|
||
-- Check different file encoding
|
||
truncate table escapes;
|
||
\copy escapes from stdin
|
||
1 PostgreSQL(ポストグレス キューエル)は、拡張性とSQL準拠を強調するフリーでオープンソースの関係データベース管理システム(RDBMS)である
|
||
2 Postgresとしても知られている
|
||
4 1996年に、プロジェクトはSQLのサポートを反映してPostgreSQLに改名された
|
||
\.
|
||
|
||
\copy (select * from escapes order by escapes) to 'remote-copy-sjis.tsv' with (encoding 'SJIS');
|
||
\copy (select * from escapes order by escapes) to 'remote-copy-utf8.tsv' with (encoding 'UTF8');
|
||
|
||
-- Check that output encoding works at all, and the UTF8 and SJIS files are
|
||
-- different. If you set SQL_ASCII as the server encoding, it just silently
|
||
-- ignores the encoding options.
|
||
\set ON_ERROR_STOP 0
|
||
\copy (select * from escapes order by escapes) to program 'diff -q -- remote-copy-utf8.tsv -' with (encoding 'SJIS');
|
||
\set ON_ERROR_STOP 1
|
||
|
||
truncate escapes;
|
||
|
||
\copy escapes from 'remote-copy-sjis.tsv' with (encoding 'SJIS');
|
||
\copy (select * from escapes order by escapes) to program 'diff -- remote-copy-utf8.tsv -' with (encoding 'UTF8');
|
||
|
||
drop table null_values;
|
||
drop table escapes;
|
||
|
||
SET ROLE :ROLE_CLUSTER_SUPERUSER;
|
||
SELECT * FROM delete_data_node(:'DATA_NODE_1');
|
||
SELECT * FROM delete_data_node(:'DATA_NODE_2');
|
||
SELECT * FROM delete_data_node(:'DATA_NODE_3');
|
||
DROP DATABASE :DATA_NODE_1 WITH (FORCE);
|
||
DROP DATABASE :DATA_NODE_2 WITH (FORCE);
|
||
DROP DATABASE :DATA_NODE_3 WITH (FORCE);
|