01258530ff
- Removes DB_Federated_Server_List_Registered_Tables in favor of CDB_Federated_Server_List_Remote_Tables that now returns both registered and unregistered tables and, when they are registered, the information about the associated view
103 lines
6.3 KiB
Plaintext
103 lines
6.3 KiB
Plaintext
C1|
|
|
## Registering an existing table works
|
|
R1|
|
|
S1|1|POINT(1 1)|patata
|
|
S1|2|POINT(2 2)|patata2
|
|
t|remote_geom|public.remote_geom|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
f|remote_geom2|||||[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
## Registering another existing table works
|
|
R2|
|
|
S2|3|POINT(3 3)|patata
|
|
t|remote_geom|public.remote_geom|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
t|remote_geom2|public."myFullTable"|id|geom|geom_mercator|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
## Re-registering a table works
|
|
R3|
|
|
ERROR: relation "myFullTable" does not exist at character 49
|
|
S3_new|3|patata
|
|
## Unregistering works
|
|
U1|
|
|
ERROR: relation "remote_geom" does not exist at character 71
|
|
f|remote_geom|||||[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
t|remote_geom2|public.different_name|id|geom_mercator|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
## Registering a table: Invalid server fails
|
|
ERROR: Server "Does not exist" does not exist
|
|
## Registering a table: NULL server fails
|
|
ERROR: Server name cannot be NULL
|
|
## Registering a table: Invalid schema fails
|
|
ERROR: Could not import schema "Does not exist" of server "loopback"
|
|
## Registering a table: NULL schema fails
|
|
ERROR: Schema name cannot be NULL
|
|
## Registering a table: Invalid table fails
|
|
ERROR: Could not import table "remote_schema.Does not exist" of server "loopback"
|
|
## Registering a table: NULL table fails
|
|
ERROR: Remote table name cannot be NULL
|
|
## Registering a table: Invalid id fails
|
|
ERROR: non integer id_column "Does not exist"
|
|
## Registering a table: NULL id fails
|
|
ERROR: non integer id_column "<NULL>"
|
|
## Registering a table: Invalid geom_column fails
|
|
ERROR: non geometry column "Does not exists"
|
|
## Registering a table: NULL geom_column is OK
|
|
|
|
|
|
## Registering a table: Invalid webmercator_column fails
|
|
ERROR: non geometry column "Does not exists"
|
|
## Registering a table: NULL webmercator_column is OK
|
|
|
|
|
|
## Target conflict is handled nicely: Table
|
|
CREATE TABLE
|
|
ERROR: Could not import table "remote_geom" as "localtable": "localtable" already exists
|
|
## Target conflict is handled nicely: View
|
|
CREATE VIEW
|
|
ERROR: Could not import table "remote_geom" as "localtable2": "localtable2" already exists
|
|
DROP VIEW
|
|
DROP TABLE
|
|
## Registering tables does not work without permissions
|
|
You are now connected to database "contrib_regression" as user "cdb_fs_tester".
|
|
ERROR: Not enough permissions to access the server "loopback"
|
|
## Listing remote tables does not work without permissions
|
|
ERROR: Not enough permissions to access the server "loopback"
|
|
## Registering tables works with granted permissions
|
|
You are now connected to database "contrib_regression" as user "postgres".
|
|
|
|
You are now connected to database "contrib_regression" as user "cdb_fs_tester".
|
|
|
|
## Listing remote tables works with granted permissions
|
|
t|remote_geom|public.localtable|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
t|remote_geom2|public.different_name|id|geom_mercator|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
## Selecting from a registered table with granted permissions works
|
|
1|POINT(1 1)
|
|
2|POINT(2 2)
|
|
## Selecting from a registered table without permissions does not work
|
|
You are now connected to database "contrib_regression" as user "cdb_fs_tester2".
|
|
CREATE FUNCTION
|
|
t
|
|
DROP FUNCTION
|
|
## Deleting a registered table without permissions does not work
|
|
ERROR: Not enough permissions to access the server "loopback"
|
|
## Only the owner can grant permissions over the server
|
|
ERROR: You do not have rights to grant access on "loopback"
|
|
## Everything works for a different user when granted permissions
|
|
You are now connected to database "contrib_regression" as user "postgres".
|
|
|
|
You are now connected to database "contrib_regression" as user "cdb_fs_tester2".
|
|
t|remote_geom|public.localtable|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
t|remote_geom2|public.different_name|id|geom_mercator|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
1|POINT(1 1)
|
|
2|POINT(2 2)
|
|
## A different user can unregister a table
|
|
NOTICE: drop cascades to view localtable
|
|
|
|
f|remote_geom|||||[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
t|remote_geom2|public.different_name|id|geom_mercator|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "geom_mercator", "Type" : "GEOMETRY,3857"}, {"Name" : "id", "Type" : "bigint"}]
|
|
f|remote_other|||||[{"Name" : "field", "Type" : "text"}, {"Name" : "field2", "Type" : "text"}, {"Name" : "id", "Type" : "bigint"}]
|
|
## Only the owner can revoke permissions over the server
|
|
ERROR: You do not have rights to revoke access on "loopback"
|
|
D1|
|