diff --git a/server/src-lib/Hasura/RQL/DDL/Relationship.hs b/server/src-lib/Hasura/RQL/DDL/Relationship.hs index f383a354d0311..8afde224ac055 100644 --- a/server/src-lib/Hasura/RQL/DDL/Relationship.hs +++ b/server/src-lib/Hasura/RQL/DDL/Relationship.hs @@ -189,6 +189,7 @@ objRelP2Setup qt (RelDef rn ru _) = do , SchemaDependency (SOTableObj qt $ TOCol cn) "using_col" ] refqt = QualifiedTable refsn reftn + void $ askTabInfo refqt return $ RelInfo rn ObjRel colMapping refqt deps _ -> throw400 ConstraintError "more than one foreign key constraint exists on the given column" diff --git a/server/test/Spec.hs b/server/test/Spec.hs index f2c7cf8c020e1..cf4beeafad25e 100644 --- a/server/test/Spec.hs +++ b/server/test/Spec.hs @@ -34,6 +34,7 @@ querySpecFiles = , "track_tables.yaml" , "create_author_article_relationship.yaml" , "create_author_article_permissions.yaml" + , "create_address_resident_relationship_error.yaml" ] gqlSpecFiles :: [FilePath] diff --git a/server/test/testcases/create_address_resident_relationship_error.yaml b/server/test/testcases/create_address_resident_relationship_error.yaml new file mode 100644 index 0000000000000..75925a8061f20 --- /dev/null +++ b/server/test/testcases/create_address_resident_relationship_error.yaml @@ -0,0 +1,10 @@ +description: Create address to resident object relationship. But resident table is not tracked, so expecting a 400 error +url: /v1/query +status: 400 +query: + type: create_object_relationship + args: + table: address + name: resident + using: + foreign_key_constraint_on: resident_id diff --git a/server/test/testcases/create_tables.yaml b/server/test/testcases/create_tables.yaml index 9bdcb667ac0a2..3c85842a5df5e 100644 --- a/server/test/testcases/create_tables.yaml +++ b/server/test/testcases/create_tables.yaml @@ -32,3 +32,21 @@ query: id SERIAL PRIMARY KEY, name TEXT NOT NULL ) + - type: run_sql + args: + sql: | + CREATE TABLE resident ( + id SERIAL PRIMARY KEY, + name TEXT NOT NULL, + age INTEGER NOT NULL + ) + - type: run_sql + args: + sql: | + CREATE TABLE address ( + id SERIAL PRIMARY KEY, + door_no TEXT NOT NULL, + street TEXT NOT NULL, + city TEXT NOT NULL, + resident_id INTEGER REFERENCES resident(id) + ) diff --git a/server/test/testcases/track_tables.yaml b/server/test/testcases/track_tables.yaml index e111cadce6a46..69687347697c1 100644 --- a/server/test/testcases/track_tables.yaml +++ b/server/test/testcases/track_tables.yaml @@ -20,3 +20,8 @@ query: args: schema: public name: dollar$test + - type: track_table + args: + schema: public + name: address +