Fix port conversion issue in add_data_node

This change fixes an issue with port conversion in the `add_data_node`
command that results in an error when a port is not explicitly given
and PostgreSQL is configured to use a high port number. Note that this
issue does _not_ occur when the port number is given as an explicit
argument to `add_data_node`.

The underlying issue is that, without an explicit port number, the
remote port is assumed to be the same as the port configured for the
local server instance. The conversion of that port number was done
using a _signed_ two-byte integer, while the valid port range fits
within an _unsigned_ two-byte integer.

To test higher port ranges without an explicit argument to
`add_data_node`, the default port for test instances has been updated
to a high port number to test integer range overflow for small signed
integers.
This commit is contained in:
Erik Nordström 2020-01-28 13:33:00 +01:00 committed by Erik Nordström
parent 0f2d7251cf
commit 26c6e156d7
24 changed files with 144 additions and 117 deletions

View File

@ -301,7 +301,7 @@ process_create_foreign_server_start(ProcessUtilityArgs *args)
if (strcmp(EXTENSION_FDW_NAME, stmt->fdwname) == 0) if (strcmp(EXTENSION_FDW_NAME, stmt->fdwname) == 0)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("operation not supported on a TimescaleDB data node"), errmsg("operation not supported for a TimescaleDB data node"),
errhint("Use add_data_node() to add data nodes to a " errhint("Use add_data_node() to add data nodes to a "
"TimescaleDB distributed database."))); "TimescaleDB distributed database.")));
} }

View File

@ -17,7 +17,7 @@ set(TEST_PGPORT_LOCAL 5432 CACHE STRING "The port of a running PostgreSQL instan
set(TEST_PGHOST localhost CACHE STRING "The hostname of a running PostgreSQL instance") set(TEST_PGHOST localhost CACHE STRING "The hostname of a running PostgreSQL instance")
set(TEST_PGUSER ${TEST_ROLE_DEFAULT_PERM_USER} CACHE STRING "The PostgreSQL test user") set(TEST_PGUSER ${TEST_ROLE_DEFAULT_PERM_USER} CACHE STRING "The PostgreSQL test user")
set(TEST_DBNAME single CACHE STRING "The database name to use for tests") set(TEST_DBNAME single CACHE STRING "The database name to use for tests")
set(TEST_PGPORT_TEMP_INSTANCE 15432 CACHE STRING "The port to run a temporary test PostgreSQL instance on") set(TEST_PGPORT_TEMP_INSTANCE 55432 CACHE STRING "The port to run a temporary test PostgreSQL instance on")
set(TEST_SCHEDULE ${CMAKE_CURRENT_BINARY_DIR}/test_schedule) set(TEST_SCHEDULE ${CMAKE_CURRENT_BINARY_DIR}/test_schedule)
set(TEST_SCHEDULE_SHARED ${CMAKE_CURRENT_BINARY_DIR}/shared/test_schedule_shared) set(TEST_SCHEDULE_SHARED ${CMAKE_CURRENT_BINARY_DIR}/shared/test_schedule_shared)
set(ISOLATION_TEST_SCHEDULE ${CMAKE_CURRENT_BINARY_DIR}/isolation_test_schedule) set(ISOLATION_TEST_SCHEDULE ${CMAKE_CURRENT_BINARY_DIR}/isolation_test_schedule)
@ -135,4 +135,3 @@ if (${PG_VERSION_MAJOR} GREATER "9")
else () else ()
set(TEST_VERSION_SUFFIX ${PG_VERSION_MAJOR}.${PG_VERSION_MINOR}) set(TEST_VERSION_SUFFIX ${PG_VERSION_MAJOR}.${PG_VERSION_MINOR})
endif () endif ()

View File

@ -591,7 +591,7 @@ get_server_port()
{ {
const char *const portstr = const char *const portstr =
GetConfigOption("port", /* missing_ok= */ false, /* restrict_privileged= */ false); GetConfigOption("port", /* missing_ok= */ false, /* restrict_privileged= */ false);
return pg_atoi(portstr, 2, 0); return pg_atoi(portstr, sizeof(int32), 0);
} }
/* set_distid may need to be false for some otherwise invalid configurations /* set_distid may need to be false for some otherwise invalid configurations
@ -604,7 +604,7 @@ data_node_add_internal(PG_FUNCTION_ARGS, bool set_distid)
const char *node_name = PG_ARGISNULL(0) ? NULL : PG_GETARG_CSTRING(0); const char *node_name = PG_ARGISNULL(0) ? NULL : PG_GETARG_CSTRING(0);
const char *host = PG_ARGISNULL(1) ? NULL : TextDatumGetCString(PG_GETARG_DATUM(1)); const char *host = PG_ARGISNULL(1) ? NULL : TextDatumGetCString(PG_GETARG_DATUM(1));
const char *dbname = PG_ARGISNULL(2) ? get_database_name(MyDatabaseId) : PG_GETARG_CSTRING(2); const char *dbname = PG_ARGISNULL(2) ? get_database_name(MyDatabaseId) : PG_GETARG_CSTRING(2);
long port = PG_ARGISNULL(3) ? get_server_port() : PG_GETARG_INT32(3); int32 port = PG_ARGISNULL(3) ? get_server_port() : PG_GETARG_INT32(3);
bool if_not_exists = PG_ARGISNULL(4) ? false : PG_GETARG_BOOL(4); bool if_not_exists = PG_ARGISNULL(4) ? false : PG_GETARG_BOOL(4);
bool bootstrap = PG_ARGISNULL(5) ? true : PG_GETARG_BOOL(5); bool bootstrap = PG_ARGISNULL(5) ? true : PG_GETARG_BOOL(5);
bool server_created = false; bool server_created = false;
@ -633,7 +633,7 @@ data_node_add_internal(PG_FUNCTION_ARGS, bool set_distid)
if (port < 1 || port > PG_UINT16_MAX) if (port < 1 || port > PG_UINT16_MAX)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
(errmsg("invalid port"), (errmsg("invalid port number %d", port),
errhint("The port number must be between 1 and %u", PG_UINT16_MAX)))); errhint("The port number must be between 1 and %u", PG_UINT16_MAX))));
result = get_database_info(MyDatabaseId, &database); result = get_database_info(MyDatabaseId, &database);

View File

@ -210,14 +210,14 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
GRANT USAGE GRANT USAGE

View File

@ -24,21 +24,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
CREATE TABLE disttable(time timestamptz, device int, temp float); CREATE TABLE disttable(time timestamptz, device int, temp float);

View File

@ -17,14 +17,14 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', 'localhost', SELECT * FROM add_data_node('data_node_2', 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
@ -42,10 +42,24 @@ SELECT * FROM add_data_node(NULL, host => 'localhost');
ERROR: invalid data node name ERROR: invalid data node name
SELECT * FROM add_data_node(NULL, NULL); SELECT * FROM add_data_node(NULL, NULL);
ERROR: a host needs to be specified ERROR: a host needs to be specified
-- Test invalid port numbers
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => 65536,
database => 'data_node_3');
ERROR: invalid port number 65536
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => 0,
database => 'data_node_3');
ERROR: invalid port number 0
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => -1,
database => 'data_node_3');
ERROR: invalid port number -1
SELECT inet_server_port() as PGPORT \gset
-- Adding a data node via ADD SERVER is blocked -- Adding a data node via ADD SERVER is blocked
CREATE SERVER data_node_4 FOREIGN DATA WRAPPER timescaledb_fdw CREATE SERVER data_node_4 FOREIGN DATA WRAPPER timescaledb_fdw
OPTIONS (host 'localhost', port '15432', dbname 'data_node_4'); OPTIONS (host 'localhost', port ':PGPORT', dbname 'data_node_4');
ERROR: operation not supported on a TimescaleDB data node ERROR: operation not supported for a TimescaleDB data node
-- Dropping a data node via DROP SERVER is also blocked -- Dropping a data node via DROP SERVER is also blocked
DROP SERVER data_node_1, data_node_2; DROP SERVER data_node_1, data_node_2;
ERROR: operation not supported on a TimescaleDB data node ERROR: operation not supported on a TimescaleDB data node
@ -56,13 +70,13 @@ SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'dat
NOTICE: data node "data_node_2" already exists, skipping NOTICE: data node "data_node_2" already exists, skipping
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | f | f | f data_node_2 | localhost | 55432 | data_node_2 | f | f | f
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', database => 'data_node_3'); SELECT * FROM add_data_node('data_node_3', host => 'localhost', database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
-- Test altering server command is blocked -- Test altering server command is blocked
@ -80,9 +94,9 @@ ERROR: alter owner not supported on a TimescaleDB data node
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
-- Delete a data node -- Delete a data node
@ -96,8 +110,8 @@ SELECT * FROM delete_data_node('data_node_3');
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
(2 rows) (2 rows)
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
@ -116,8 +130,8 @@ NOTICE: data node "data_node_3" does not exist, skipping
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
(2 rows) (2 rows)
SELECT * FROM delete_data_node('data_node_1'); SELECT * FROM delete_data_node('data_node_1');
@ -149,21 +163,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
-- Allow ROLE_1 to create distributed tables on these data nodes. -- Allow ROLE_1 to create distributed tables on these data nodes.
@ -178,9 +192,9 @@ SELECT node_name, "options"
ORDER BY node_name; ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
SELECT object_name, object_type, ARRAY_AGG(privilege_type) SELECT object_name, object_type, ARRAY_AGG(privilege_type)
@ -311,9 +325,9 @@ INSERT INTO disttable VALUES ('2019-02-02 10:45', 1, 23.4);
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
DROP TABLE disttable; DROP TABLE disttable;
@ -663,7 +677,7 @@ SELECT * FROM add_data_node('data_node_4', host => 'localhost', database => 'dat
if_not_exists => true); if_not_exists => true);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_4 | localhost | 15432 | data_node_4 | t | t | t data_node_4 | localhost | 55432 | data_node_4 | t | t | t
(1 row) (1 row)
SELECT * FROM attach_data_node('data_node_4', 'disttable'); SELECT * FROM attach_data_node('data_node_4', 'disttable');
@ -752,21 +766,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
@ -1126,13 +1140,13 @@ SET ROLE :ROLE_CLUSTER_SUPERUSER;
SELECT * FROM add_data_node('data_node_4', host => 'localhost', database => 'data_node_4'); SELECT * FROM add_data_node('data_node_4', host => 'localhost', database => 'data_node_4');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_4 | localhost | 15432 | data_node_4 | t | t | t data_node_4 | localhost | 55432 | data_node_4 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_5', host => 'localhost', database => 'data_node_5'); SELECT * FROM add_data_node('data_node_5', host => 'localhost', database => 'data_node_5');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_5 | localhost | 15432 | data_node_5 | t | t | t data_node_5 | localhost | 55432 | data_node_5 | t | t | t
(1 row) (1 row)
GRANT ALL ON FOREIGN SERVER data_node_4, data_node_5 TO PUBLIC; GRANT ALL ON FOREIGN SERVER data_node_4, data_node_5 TO PUBLIC;

View File

@ -21,7 +21,7 @@ SET client_min_messages TO NOTICE;
SELECT * FROM add_data_node('bootstrap_test', host => 'localhost', database => 'bootstrap_test'); SELECT * FROM add_data_node('bootstrap_test', host => 'localhost', database => 'bootstrap_test');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | t | t bootstrap_test | localhost | 55432 | bootstrap_test | t | t | t
(1 row) (1 row)
-- Ensure database and extensions are installed and have the correct -- Ensure database and extensions are installed and have the correct
@ -79,13 +79,13 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost',
database => 'bootstrap_test', bootstrap => true); database => 'bootstrap_test', bootstrap => true);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | t | t bootstrap_test | localhost | 55432 | bootstrap_test | t | t | t
(1 row) (1 row)
SELECT * FROM show_data_nodes(); SELECT * FROM show_data_nodes();
data_node_name | host | port | dbname data_node_name | host | port | dbname
----------------+-----------+-------+---------------- ----------------+-----------+-------+----------------
bootstrap_test | localhost | 15432 | bootstrap_test bootstrap_test | localhost | 55432 | bootstrap_test
(1 row) (1 row)
\c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER; \c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER;
@ -112,7 +112,7 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost',
database => 'bootstrap_test', bootstrap => false); database => 'bootstrap_test', bootstrap => false);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | f | f bootstrap_test | localhost | 55432 | bootstrap_test | t | f | f
(1 row) (1 row)
SELECT * FROM delete_data_node('bootstrap_test'); SELECT * FROM delete_data_node('bootstrap_test');
@ -137,7 +137,7 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost',
database => 'bootstrap_test', bootstrap => false); database => 'bootstrap_test', bootstrap => false);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | f | f bootstrap_test | localhost | 55432 | bootstrap_test | t | f | f
(1 row) (1 row)
SELECT * FROM delete_data_node('bootstrap_test'); SELECT * FROM delete_data_node('bootstrap_test');
@ -165,7 +165,7 @@ NOTICE: database "bootstrap_test" already exists on data node, skipping
NOTICE: extension "timescaledb" already exists on data node, skipping NOTICE: extension "timescaledb" already exists on data node, skipping
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | f | f bootstrap_test | localhost | 55432 | bootstrap_test | t | f | f
(1 row) (1 row)
SELECT * FROM delete_data_node('bootstrap_test'); SELECT * FROM delete_data_node('bootstrap_test');
@ -271,13 +271,13 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost',
database => 'bootstrap_test', bootstrap => true); database => 'bootstrap_test', bootstrap => true);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | t | t bootstrap_test | localhost | 55432 | bootstrap_test | t | t | t
(1 row) (1 row)
SELECT * FROM show_data_nodes(); SELECT * FROM show_data_nodes();
data_node_name | host | port | dbname data_node_name | host | port | dbname
----------------+-----------+-------+---------------- ----------------+-----------+-------+----------------
bootstrap_test | localhost | 15432 | bootstrap_test bootstrap_test | localhost | 55432 | bootstrap_test
(1 row) (1 row)
SELECT * FROM delete_data_node('bootstrap_test'); SELECT * FROM delete_data_node('bootstrap_test');
@ -302,7 +302,7 @@ SELECT * FROM add_data_node('bootstrap_test', host => 'localhost',
database => 'bootstrap_test', bootstrap => true); database => 'bootstrap_test', bootstrap => true);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
----------------+-----------+-------+----------------+--------------+------------------+------------------- ----------------+-----------+-------+----------------+--------------+------------------+-------------------
bootstrap_test | localhost | 15432 | bootstrap_test | t | t | t bootstrap_test | localhost | 55432 | bootstrap_test | t | t | t
(1 row) (1 row)
SELECT * FROM delete_data_node('bootstrap_test'); SELECT * FROM delete_data_node('bootstrap_test');
@ -433,7 +433,7 @@ SELECT label FROM pg_shseclabel
SELECT * FROM add_data_node('drop_db_test_dn', host => 'localhost', database => 'drop_db_test_dn'); SELECT * FROM add_data_node('drop_db_test_dn', host => 'localhost', database => 'drop_db_test_dn');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-----------------+-----------+-------+-----------------+--------------+------------------+------------------- -----------------+-----------+-------+-----------------+--------------+------------------+-------------------
drop_db_test_dn | localhost | 15432 | drop_db_test_dn | t | t | t drop_db_test_dn | localhost | 55432 | drop_db_test_dn | t | t | t
(1 row) (1 row)
-- Make sure security label is created -- Make sure security label is created

View File

@ -19,19 +19,19 @@ SET client_min_messages TO NOTICE;
SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'data_node_1'); SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'data_node_2'); SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', database => 'data_node_3'); SELECT * FROM add_data_node('data_node_3', host => 'localhost', database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;

View File

@ -16,21 +16,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
@ -38,11 +38,11 @@ GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
List of foreign servers List of foreign servers
Name | Owner | Foreign-data wrapper | Access privileges | Type | Version | FDW options | Description Name | Owner | Foreign-data wrapper | Access privileges | Type | Version | FDW options | Description
-------------+--------------------+----------------------+-----------------------------------------+------+---------+--------------------------------------------------------+------------- -------------+--------------------+----------------------+-----------------------------------------+------+---------+--------------------------------------------------------+-------------
data_node_1 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '15432', dbname 'data_node_1') | data_node_1 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '55432', dbname 'data_node_1') |
| | | =U/cluster_super_user | | | | | | | =U/cluster_super_user | | | |
data_node_2 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '15432', dbname 'data_node_2') | data_node_2 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '55432', dbname 'data_node_2') |
| | | =U/cluster_super_user | | | | | | | =U/cluster_super_user | | | |
data_node_3 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '15432', dbname 'data_node_3') | data_node_3 | cluster_super_user | timescaledb_fdw | cluster_super_user=U/cluster_super_user+| | | (host 'localhost', port '55432', dbname 'data_node_3') |
| | | =U/cluster_super_user | | | | | | | =U/cluster_super_user | | | |
(3 rows) (3 rows)

View File

@ -23,21 +23,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1;

View File

@ -17,21 +17,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;

View File

@ -10,19 +10,19 @@ NOTICE: table "conditions" does not exist, skipping
SELECT * FROM add_data_node('data1', host => 'localhost', database => 'data1'); SELECT * FROM add_data_node('data1', host => 'localhost', database => 'data1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-----------+-----------+-------+----------+--------------+------------------+------------------- -----------+-----------+-------+----------+--------------+------------------+-------------------
data1 | localhost | 15432 | data1 | t | t | t data1 | localhost | 55432 | data1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data2', host => 'localhost', database => 'data2'); SELECT * FROM add_data_node('data2', host => 'localhost', database => 'data2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-----------+-----------+-------+----------+--------------+------------------+------------------- -----------+-----------+-------+----------+--------------+------------------+-------------------
data2 | localhost | 15432 | data2 | t | t | t data2 | localhost | 55432 | data2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data3', host => 'localhost', database => 'data3'); SELECT * FROM add_data_node('data3', host => 'localhost', database => 'data3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-----------+-----------+-------+----------+--------------+------------------+------------------- -----------+-----------+-------+----------+--------------+------------------+-------------------
data3 | localhost | 15432 | data3 | t | t | t data3 | localhost | 55432 | data3 | t | t | t
(1 row) (1 row)
CREATE TABLE conditions(time TIMESTAMPTZ NOT NULL, device INTEGER, temperature FLOAT, humidity FLOAT); CREATE TABLE conditions(time TIMESTAMPTZ NOT NULL, device INTEGER, temperature FLOAT, humidity FLOAT);

View File

@ -18,21 +18,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
@ -41,9 +41,9 @@ SET ROLE :ROLE_1;
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
@ -381,9 +381,9 @@ Sun Jul 01 08:01:00 2018 PDT| 29| 1.5
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
SELECT * FROM hypertable_data_node_relation_size('disttable'); SELECT * FROM hypertable_data_node_relation_size('disttable');

View File

@ -18,21 +18,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
@ -41,9 +41,9 @@ SET ROLE :ROLE_1;
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
@ -381,9 +381,9 @@ Sun Jul 01 08:01:00 2018 PDT| 29| 1.5
SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name; SELECT node_name, "options" FROM timescaledb_information.data_node ORDER BY node_name;
node_name | options node_name | options
-------------+------------------------------------------------ -------------+------------------------------------------------
data_node_1 | {host=localhost,port=15432,dbname=data_node_1} data_node_1 | {host=localhost,port=55432,dbname=data_node_1}
data_node_2 | {host=localhost,port=15432,dbname=data_node_2} data_node_2 | {host=localhost,port=55432,dbname=data_node_2}
data_node_3 | {host=localhost,port=15432,dbname=data_node_3} data_node_3 | {host=localhost,port=55432,dbname=data_node_3}
(3 rows) (3 rows)
SELECT * FROM hypertable_data_node_relation_size('disttable'); SELECT * FROM hypertable_data_node_relation_size('disttable');

View File

@ -48,21 +48,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1;

View File

@ -34,21 +34,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1;

View File

@ -34,21 +34,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO :ROLE_1;

View File

@ -88,7 +88,7 @@ SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid';
SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'backend_1_1'); SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'backend_1_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | backend_1_1 | t | t | t data_node_1 | localhost | 55432 | backend_1_1 | t | t | t
(1 row) (1 row)
SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid'; SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid';
@ -113,7 +113,7 @@ SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid';
SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'backend_2_1'); SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'backend_2_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | backend_2_1 | t | t | t data_node_1 | localhost | 55432 | backend_2_1 | t | t | t
(1 row) (1 row)
SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid'; SELECT key, value FROM _timescaledb_catalog.metadata WHERE key LIKE '%uuid';
@ -167,7 +167,7 @@ ERROR: invalid_data_node is not valid as data node
SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'backend_x_2', bootstrap => true); SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'backend_x_2', bootstrap => true);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | backend_x_2 | t | t | t data_node_2 | localhost | 55432 | backend_x_2 | t | t | t
(1 row) (1 row)
-- dist_uuid should be added to the metadata on the data node -- dist_uuid should be added to the metadata on the data node
@ -202,7 +202,7 @@ DELETE FROM _timescaledb_catalog.metadata WHERE key = 'dist_uuid';
SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'backend_x_2', bootstrap => false); SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'backend_x_2', bootstrap => false);
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | backend_x_2 | t | f | f data_node_2 | localhost | 55432 | backend_x_2 | t | f | f
(1 row) (1 row)
-- dist_uuid should be added to the metadata on the data node -- dist_uuid should be added to the metadata on the data node
@ -241,11 +241,11 @@ INSERT INTO disttable VALUES
('2018-01-02 08:01', 2, 1.3), ('2018-01-02 08:01', 2, 1.3),
('2019-01-01 09:11', 3, 2.1), ('2019-01-01 09:11', 3, 2.1),
('2017-01-01 06:05', 1, 1.4); ('2017-01-01 06:05', 1, 1.4);
SELECT * FROM timescaledb_information.data_node; SELECT * FROM timescaledb_information.data_node ORDER BY node_name;
node_name | owner | options | node_up | num_dist_tables | num_dist_chunks | total_dist_size node_name | owner | options | node_up | num_dist_tables | num_dist_chunks | total_dist_size
-------------+--------------------+------------------------------------------------+---------+-----------------+-----------------+----------------- -------------+--------------------+------------------------------------------------+---------+-----------------+-----------------+-----------------
data_node_1 | cluster_super_user | {host=localhost,port=15432,dbname=backend_2_1} | t | 1 | 2 | 48 kB data_node_1 | cluster_super_user | {host=localhost,port=55432,dbname=backend_2_1} | t | 1 | 2 | 48 kB
data_node_2 | cluster_super_user | {host=localhost,port=15432,dbname=backend_x_2} | t | 1 | 1 | 24 kB data_node_2 | cluster_super_user | {host=localhost,port=55432,dbname=backend_x_2} | t | 1 | 1 | 24 kB
(2 rows) (2 rows)
SELECT * FROM timescaledb_information.hypertable; SELECT * FROM timescaledb_information.hypertable;
@ -267,14 +267,14 @@ SELECT * FROM hypertable_relation_size('nondisttable');
24576 | 49152 | | 73728 24576 | 49152 | | 73728
(1 row) (1 row)
SELECT * FROM hypertable_data_node_relation_size('disttable'); SELECT * FROM hypertable_data_node_relation_size('disttable') ORDER BY node_name;
node_name | num_chunks | table_size | index_size | toast_size | total_size node_name | num_chunks | table_size | index_size | toast_size | total_size
-------------+------------+------------+------------+------------+------------ -------------+------------+------------+------------+------------+------------
data_node_1 | 2 | 16 kB | 32 kB | | 48 kB data_node_1 | 2 | 16 kB | 32 kB | | 48 kB
data_node_2 | 1 | 8192 bytes | 16 kB | | 24 kB data_node_2 | 1 | 8192 bytes | 16 kB | | 24 kB
(2 rows) (2 rows)
SELECT * FROM hypertable_data_node_relation_size('nondisttable'); SELECT * FROM hypertable_data_node_relation_size('nondisttable') ORDER BY node_name;
NOTICE: calling hypertable_data_node_relation_size on a non-distributed hypertable NOTICE: calling hypertable_data_node_relation_size on a non-distributed hypertable
node_name | num_chunks | table_size | index_size | toast_size | total_size node_name | num_chunks | table_size | index_size | toast_size | total_size
-----------+------------+------------+------------+------------+------------ -----------+------------+------------+------------+------------+------------

View File

@ -11,21 +11,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE GRANT USAGE

View File

@ -13,21 +13,21 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_2', host => 'localhost', SELECT * FROM add_data_node('data_node_2', host => 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
SELECT * FROM add_data_node('data_node_3', host => 'localhost', SELECT * FROM add_data_node('data_node_3', host => 'localhost',
database => 'data_node_3'); database => 'data_node_3');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_3 | localhost | 15432 | data_node_3 | t | t | t data_node_3 | localhost | 55432 | data_node_3 | t | t | t
(1 row) (1 row)
GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC; GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;

View File

@ -39,13 +39,13 @@ LANGUAGE C;
SELECT * FROM add_loopback_server('loopback', database => :'TEST_DBNAME', bootstrap => false); SELECT * FROM add_loopback_server('loopback', database => :'TEST_DBNAME', bootstrap => false);
server_name | host | port | database | server_created | database_created | extension_created server_name | host | port | database | server_created | database_created | extension_created
-------------+-----------+-------+---------------+----------------+------------------+------------------- -------------+-----------+-------+---------------+----------------+------------------+-------------------
loopback | localhost | 15432 | db_remote_txn | t | f | f loopback | localhost | 55432 | db_remote_txn | t | f | f
(1 row) (1 row)
SELECT * FROM add_loopback_server('loopback2', database => :'TEST_DBNAME', bootstrap => false); SELECT * FROM add_loopback_server('loopback2', database => :'TEST_DBNAME', bootstrap => false);
server_name | host | port | database | server_created | database_created | extension_created server_name | host | port | database | server_created | database_created | extension_created
-------------+-----------+-------+---------------+----------------+------------------+------------------- -------------+-----------+-------+---------------+----------------+------------------+-------------------
loopback2 | localhost | 15432 | db_remote_txn | t | f | f loopback2 | localhost | 55432 | db_remote_txn | t | f | f
(1 row) (1 row)
-- =================================================================== -- ===================================================================

View File

@ -17,7 +17,7 @@ SELECT * FROM add_data_node('data_node_1', host => 'localhost',
database => 'data_node_1'); database => 'data_node_1');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_1 | localhost | 15432 | data_node_1 | t | t | t data_node_1 | localhost | 55432 | data_node_1 | t | t | t
(1 row) (1 row)
SELECT json_object_field(get_telemetry_report(always_display_report := true)::json, 'distributed_db'); SELECT json_object_field(get_telemetry_report(always_display_report := true)::json, 'distributed_db');
@ -39,7 +39,7 @@ SELECT * FROM add_data_node('data_node_2', 'localhost',
database => 'data_node_2'); database => 'data_node_2');
node_name | host | port | database | node_created | database_created | extension_created node_name | host | port | database | node_created | database_created | extension_created
-------------+-----------+-------+-------------+--------------+------------------+------------------- -------------+-----------+-------+-------------+--------------+------------------+-------------------
data_node_2 | localhost | 15432 | data_node_2 | t | t | t data_node_2 | localhost | 55432 | data_node_2 | t | t | t
(1 row) (1 row)
-- Add hypertables -- Add hypertables

View File

@ -34,9 +34,23 @@ SELECT * FROM add_data_node(NULL);
-- Add NULL data_node -- Add NULL data_node
SELECT * FROM add_data_node(NULL, host => 'localhost'); SELECT * FROM add_data_node(NULL, host => 'localhost');
SELECT * FROM add_data_node(NULL, NULL); SELECT * FROM add_data_node(NULL, NULL);
-- Test invalid port numbers
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => 65536,
database => 'data_node_3');
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => 0,
database => 'data_node_3');
SELECT * FROM add_data_node('data_node_3', 'localhost',
port => -1,
database => 'data_node_3');
SELECT inet_server_port() as PGPORT \gset
-- Adding a data node via ADD SERVER is blocked -- Adding a data node via ADD SERVER is blocked
CREATE SERVER data_node_4 FOREIGN DATA WRAPPER timescaledb_fdw CREATE SERVER data_node_4 FOREIGN DATA WRAPPER timescaledb_fdw
OPTIONS (host 'localhost', port '15432', dbname 'data_node_4'); OPTIONS (host 'localhost', port ':PGPORT', dbname 'data_node_4');
-- Dropping a data node via DROP SERVER is also blocked -- Dropping a data node via DROP SERVER is also blocked
DROP SERVER data_node_1, data_node_2; DROP SERVER data_node_1, data_node_2;
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1

View File

@ -136,9 +136,9 @@ INSERT INTO disttable VALUES
('2019-01-01 09:11', 3, 2.1), ('2019-01-01 09:11', 3, 2.1),
('2017-01-01 06:05', 1, 1.4); ('2017-01-01 06:05', 1, 1.4);
SELECT * FROM timescaledb_information.data_node; SELECT * FROM timescaledb_information.data_node ORDER BY node_name;
SELECT * FROM timescaledb_information.hypertable; SELECT * FROM timescaledb_information.hypertable;
SELECT * FROM hypertable_relation_size('disttable'); SELECT * FROM hypertable_relation_size('disttable');
SELECT * FROM hypertable_relation_size('nondisttable'); SELECT * FROM hypertable_relation_size('nondisttable');
SELECT * FROM hypertable_data_node_relation_size('disttable'); SELECT * FROM hypertable_data_node_relation_size('disttable') ORDER BY node_name;
SELECT * FROM hypertable_data_node_relation_size('nondisttable'); SELECT * FROM hypertable_data_node_relation_size('nondisttable') ORDER BY node_name;