|
|
|
@ -3,24 +3,24 @@ C1|
|
|
|
|
|
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"}]
|
|
|
|
|
t|remote_geom|cdb_fs_loopback.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"}]
|
|
|
|
|
t|remote_geom|cdb_fs_loopback.remote_geom|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
|
|
|
t|remote_geom2|cdb_fs_loopback."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
|
|
|
|
|
ERROR: relation "cdb_fs_loopback.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"}]
|
|
|
|
|
t|remote_geom2|cdb_fs_loopback.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
|
|
|
|
@ -50,15 +50,17 @@ ERROR: non geometry column "Does not exists"
|
|
|
|
|
|
|
|
|
|
## Target conflict is handled nicely: Table
|
|
|
|
|
CREATE TABLE
|
|
|
|
|
ERROR: Could not import table "remote_geom" as "localtable" already exists: "localtable" is not a view
|
|
|
|
|
ERROR: Could not import table "remote_geom" as "cdb_fs_loopback.localtable" already exists
|
|
|
|
|
## Target conflict is handled nicely: View
|
|
|
|
|
CREATE VIEW
|
|
|
|
|
ERROR: Could not import table "remote_geom" as "localtable2" already exists: cannot change name of view column "a" to "cartodb_id"
|
|
|
|
|
ERROR: Could not import table "remote_geom" as "cdb_fs_loopback.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"
|
|
|
|
|
## Normal users can not write in the import schema
|
|
|
|
|
ERROR: permission denied for schema cdb_fs_loopback at character 14
|
|
|
|
|
## Listing remote tables does not work without permissions
|
|
|
|
|
ERROR: Not enough permissions to access the server "loopback"
|
|
|
|
|
## Registering tables works with granted permissions
|
|
|
|
@ -67,8 +69,8 @@ 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"}]
|
|
|
|
|
t|remote_geom|cdb_fs_loopback.localtable|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
|
|
|
t|remote_geom2|cdb_fs_loopback.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)
|
|
|
|
@ -86,16 +88,16 @@ ERROR: You do not have rights to grant access on "loopback"
|
|
|
|
|
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"}]
|
|
|
|
|
t|remote_geom|cdb_fs_loopback.localtable|id|geom|geom|[{"Name" : "another_field", "Type" : "text"}, {"Name" : "geom", "Type" : "GEOMETRY,4326"}, {"Name" : "id", "Type" : "integer"}]
|
|
|
|
|
t|remote_geom2|cdb_fs_loopback.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
|
|
|
|
|
NOTICE: drop cascades to view cdb_fs_loopback.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"}]
|
|
|
|
|
t|remote_geom2|cdb_fs_loopback.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"
|
|
|
|
|